{"_id":"warraysorted","_rev":"360-b6314c4007c061299868aa3bc8a282f8","name":"warraysorted","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","dist-tags":{"latest":"0.3.361","beta":"0.3.202","alpha":"0.3.353","gamma":"0.3.338","delta":"0.3.344","stable":"0.3.321"},"versions":{"0.3.1":{"name":"warraysorted","version":"0.3.1","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"x","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","sort"],"gitHead":"fc8db27f9e2fb7bf396ad15eae29bf4db88071f8","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.1","_shasum":"87d4034500e7cd9bf0de04a2dc02aead9c41c674","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"87d4034500e7cd9bf0de04a2dc02aead9c41c674","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.1.tgz","integrity":"sha512-Sid85oD4Ua1Po3GRvDwglV1FgpZj3SMCuC2QyoJ1/tJjCU8uhZIDrrrZuSvFYyCgwzHsu4OwzYXP4esg3SscDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2Z+Ju+H40Mnraj5JHvaAtl4zlnY0JYsmuI70CdV/h/AIgRwZHr6jlGTPNQ5JvtsIY4l5GuZKz5KUs7MaMV8RHFr0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.1.tgz_1485969130417_0.7268548493739218"}},"0.3.2":{"name":"warraysorted","version":"0.3.2","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"x","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","sort"],"gitHead":"283460540eba819a1702255c9758bf9333b782bf","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.2","_shasum":"a0df816405911db8d840e7ad9225ca6f0428a16f","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"a0df816405911db8d840e7ad9225ca6f0428a16f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.2.tgz","integrity":"sha512-EADg4Cev+Tmbi1aJ8bhbYlNRWMr54w76NuA6U7F48tHJBTtPI4OlaZ0cx+e3AGERkYsZDXX8JRvelUk9pSCFaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8sm8FK/rYyN4cLXPt92fjn+1TMzQyZpY2wvyDl8j6zwIgYcHTxnujIrCt1JtVxVAgUqmbPIpSxcpz/Z5mjj/AYsI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.2.tgz_1485969258066_0.2422404394019395"}},"0.3.3":{"name":"warraysorted","version":"0.3.3","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"x","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"a654e481464fa557df2dafd21453da316cf593ea","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.3","_shasum":"e5f53f41dbec0abaeabb83ff2c7eb4469feaf26c","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"e5f53f41dbec0abaeabb83ff2c7eb4469feaf26c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.3.tgz","integrity":"sha512-iTCq4O5rzuhu+Vzq3M6VRjL7hY6+mMOg6rwYHTZfkmu466XbFDDGwBiQJYKrjZdcXbsqqqSH9Hkybb8lao2n5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWhRSMLNQNDtSHcBVwnZRp26mF8lgQIm4tK6mtIWwXjAiEAtMMd09eyvcxJXZEDKIqshykirEaMz4a3RiQOwjkhngE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.3.tgz_1485970773048_0.5858176369220018"}},"0.3.4":{"name":"warraysorted","version":"0.3.4","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"node staging/abase/z.test/ArraySorted.test.s","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"f90b6f0416fb64d94c0f70c29dd2ac05d669c6fa","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.4","_shasum":"30f4b446db4354cc29877943300c82e842b370b5","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"30f4b446db4354cc29877943300c82e842b370b5","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.4.tgz","integrity":"sha512-+3sVE8/UFxsbRogrrsJnZYKaJkeSfFMaBEOZG6LaGFO4Q11QqNuGlfFQ+BLJNDqygV0BRnYkxERQNtdHiVfXLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENXt/miKoLYTO+EyqA2n9iFwpCKySIqNEnMdvME/0qyAiBfCn1TdNLkwrcsJ0OSKwbQIRJGAew/hqEmdk1Yt7cZ2g=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.4.tgz_1485971405669_0.5688379213679582"}},"0.3.5":{"name":"warraysorted","version":"0.3.5","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"node staging/abase/z.test/ArraySorted.test.s","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"817ab31f5e650562995388b216d3172731996eba","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.5","_shasum":"a56472cc2d3d421f6c04631be154c61d225d72a8","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"a56472cc2d3d421f6c04631be154c61d225d72a8","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.5.tgz","integrity":"sha512-eoy3u1cJuZZZpOBaT52pbcoc4IW4kVii1HfCvkmhTRXhaj+kn0mkQt3b40TpvC3pls32CcFqdJwZtn+bgEbmxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbaEoNZNwtX2d78i4Yzgldw+dKGzwnwspY2bUIkuovPAiAm9nJ3lXzPoUYYAQJx5ks0a3etUsg/4thiZ71I0kSGTw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.5.tgz_1486391360249_0.9679257848765701"}},"0.3.6":{"name":"warraysorted","version":"0.3.6","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"node staging/abase/z.test/ArraySorted.test.s","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"d902d3c21c185d2209ebf1516e1c8861455a8e2e","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.6","_shasum":"27d5b3a1d291154e454bd87c2fb51e8837acdb21","_from":".","_npmVersion":"4.1.2","_nodeVersion":"6.3.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"27d5b3a1d291154e454bd87c2fb51e8837acdb21","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.6.tgz","integrity":"sha512-uTLjjC1xG+egBTsMGKKth/t2qX0sqKhshSaGFMY4BGEvLhbHUL0cfLL5E75DQxft2i1aGLDNHkFMvDjBrWEodA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA35P9oVIYFRhVoagFWpufsbbTuzQliGpUQWlXAyzg4WAiEA94jcIleHIGq25EZEE/IjUEkBPyNfwdcmVKF4421WTbs="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.6.tgz_1489659109301_0.5985692974645644"}},"0.3.7":{"name":"warraysorted","version":"0.3.7","engine":"node >= 5.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"36af309d88dfc988877f69b4ba8bccad7b9f5f94","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.7","_shasum":"fdfe8159b399440e04fad2fdf316d98ea5195fa8","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"fdfe8159b399440e04fad2fdf316d98ea5195fa8","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.7.tgz","integrity":"sha512-EtqcscLHZBR+EtbODflHbhFOMqgSyG2Cg5IxooVtH2MlPNyLCE+BGQHBOdSVJ8ebKXbdTM7jOJfBs0paBhZX5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwJ7Gs0z47RjGyY3XDTHN2vYkWst9VALVbgRKpIVfaCQIgfh7Z0h5fsPsDDfGfLREtGO6qvCeUKbZV3R+wWxvPRaA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.7.tgz_1492968722134_0.9420810241717845"}},"0.3.8":{"name":"warraysorted","version":"0.3.8","engine":"node >= 5.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"f2a356a1c187bcbca2a6c91013331f6dbc1467b9","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.8","_shasum":"a7a1f68e989a12fa1ba3d38b15573623a31c9596","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"a7a1f68e989a12fa1ba3d38b15573623a31c9596","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.8.tgz","integrity":"sha512-jyNnSWEdnGfa/6q/ge3pkY4Ik1ZEedMEDKrojmgNr8LNQUQkDklLg+M70RM3BLeewZhX47j4lm6IOi2IxIDqcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH0bnazQt4Omocwq46YMkh2QNRjMXlE+q/RZqD2vzShcCIAplPVfOLplnzw6KzD1neQCf655VIkxcd37bQL0DR8iB"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/warraysorted-0.3.8.tgz_1492970493667_0.0671193755697459"}},"0.3.9":{"name":"warraysorted","version":"0.3.9","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wSortedArray.git"},"bugs":{"url":"https://github.com/Wandalen/wSortedArray/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"6e6b8dfb7e5a8df9fc8a844f92787999ee62bf32","homepage":"https://github.com/Wandalen/wSortedArray#readme","_id":"warraysorted@0.3.9","_shasum":"bb2e2342fdde1b32f5272e0f66c719bad827a84f","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"bb2e2342fdde1b32f5272e0f66c719bad827a84f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.9.tgz","integrity":"sha512-fVe2/u+UAnw7M4g5KQ07Ll40RLs2XAc19wmK8aH1HYnBMfUDw8DQ6EmaIvgBJB9yvctjZ7YUeia6ZbCn1OOkjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKITn443ImcApdDZ7ehjhX1bEAQYoXlwwjUIFDzpTXAAIga5FKpj80ZyScAuemNNyIodeuJEo4GbaIU0z8wliuvfA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.9.tgz_1496389533229_0.5086103128269315"}},"0.3.10":{"name":"warraysorted","version":"0.3.10","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/abase/component/ArraySorted.s","files":["staging/abase","production"],"directories":{"doc":"doc","main":"staging/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"6f8fa580563882c9a5781a3de4ac013277d69af6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.10","_shasum":"f8501cce5d5197c0946a9509eaca8c3e4cba93ed","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"f8501cce5d5197c0946a9509eaca8c3e4cba93ed","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.10.tgz","integrity":"sha512-K4kP7igdBjvK9B9HXCoNebjmTOWNLKl4duNYdKBpuOpmd4T2RE1dTayjyYPyCUj/GQjENgQprXFWEyCaSOtwvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHuhxFPO51GNWzumAI9jF3zakBzRh8aCm4EWo99iL8H3AiBA8MpcwnRtc+Yub2yBQRKPggkKpndvnjeLs2Yx4rLwHQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.10.tgz_1503667977393_0.07726575341075659"}},"0.3.11":{"name":"warraysorted","version":"0.3.11","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/component/ArraySorted.s","files":["staging/dwtools/abase","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"2efe3a98b4ed3e53e74d903ed105fdf9249dbe92","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.11","_shasum":"c08579b4a8644177295592ed42fb71888a7fff4c","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"c08579b4a8644177295592ed42fb71888a7fff4c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.11.tgz","integrity":"sha512-AqrM+kFlWdnpQctIgtSE/U8HYaoB/L/Ov/lmKSt+/Si4blTM0dXcwt41rMLax27dm4wa8eK16MAJXcEfycBUvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvfkZLjfo7o0NHcrCL9Ey5tXnEGaHcsW+Tmx/UTknTTAiA0jhtmqxprLRRiPz+MimSyLNT/Sprk1CV9E8svnDYOTA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.11.tgz_1505634905840_0.9331452627666295"}},"0.3.12":{"name":"warraysorted","version":"0.3.12","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/component/ArraySorted.s","files":["staging/dwtools/abase","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/component/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"2846fce6bc3bd3600690190b23a822cbdb83fc5b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.12","_shasum":"d86c7118ef8d8713e4957d59bf606b1e0ab88718","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"d86c7118ef8d8713e4957d59bf606b1e0ab88718","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.12.tgz","integrity":"sha512-AXefUABbHhhHm0EnowUXd2avL2OfJCZY7lNQ9UbYVx6O3N1J3ZLQxqDLDAPNFkkZZ9YY/bUNunjIIgOIAge3Hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkR8nrqt/4MVuqZ4x8YbcoKZFQJrIs72/R4yHDXByo9AiEAoLqWlwCngO78e2VNOpuZWkaa2Esrx0LzzUSHd2U4qiI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.12.tgz_1505649239246_0.07764917868189514"}},"0.3.13":{"name":"warraysorted","version":"0.3.13","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"89be4a73672c2dc2ac18ed0ac3b142d3b879658a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.13","_shasum":"53a181edf56daac013dbe3f6901ca68bfc21564c","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"53a181edf56daac013dbe3f6901ca68bfc21564c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.13.tgz","integrity":"sha512-F+uSS+9AYCNGVVMcxoKzNx8Tq7Ch+1jXrXLadcmxJuGSoMfSQTZ0nF5UD7EsVYs7cimZOEGhAxVbS+2XdKhYXQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK8DTUnD1EZ9suUartDFDECVYfimaZf2f/vgGkQ/v3AAIhAP/kMNUhzsniGAQElMXJCCOG/NbN2/bHlPTrXAxNjThL"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.13.tgz_1505649445818_0.2640638300217688"}},"0.3.14":{"name":"warraysorted","version":"0.3.14","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"2aac3c0d90c8f1044a9ed230fdbc7ac711f43313","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.14","_shasum":"ea19558ddb54157de2cbc0c1493e2ce87915ae30","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"ea19558ddb54157de2cbc0c1493e2ce87915ae30","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.14.tgz","integrity":"sha512-vIP1baPbI4K0qhkrkeuYTwpa3qWH3smUlXXzVHAtyoUqk6hW10Vx7vlZFotUaY9ACcPa06oFQ8XGDXa6AZqZFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBnHNwJsbQ/GRoe1OyvBdZ88u/mhLJM4X74WXqK9BP8XAiEAzFs/RWagaT/iRtVaIhWqgsUybCO5t4YvNrGBLaHnR9w="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.14.tgz_1505666424889_0.7918917275965214"}},"0.3.15":{"name":"warraysorted","version":"0.3.15","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"513f2164bb4ae594e87559fb54000efb556aaea0","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.15","_shasum":"13f2bf5a771b97b897301c22d6bad1e42d9f840b","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"shasum":"13f2bf5a771b97b897301c22d6bad1e42d9f840b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.15.tgz","integrity":"sha512-IUxcQ5JdCucyVphXCtvbmbD+a9XMKnac8DMRYEu1ClZhFG5NQfLo8mHZ8KSGUlt1CkMk+vqCAYM+O2C/V7YQcg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFE9/y5R0scXr2y9/LR+VbZMPS9Aq+2qqUVpP+O+XmMbAiA+iVE4KBJ5mGeZeO7axuRlLBYfSIzL/OhXoo/VR3xFRg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.15.tgz_1505667205717_0.30607543466612697"}},"0.3.16":{"name":"warraysorted","version":"0.3.16","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase/layer3","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"b95afbcb4e11043bd3c6ddd0af5771824cbaa7a6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.16","_npmVersion":"5.4.2","_nodeVersion":"8.7.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-lqh2LYZLsp8lUCCFi6e1MLkR+4BnKjrSKwL3KCqhxxUuipYsNm1HyR0/M8+ICAunSoWIrqP8KWNQ4Zw6lEjb2Q==","shasum":"64701684376c8946b3acb194ac54e045d2fe51a0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.16.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTNL0G9EyKE9pRAQR3su957LxyDOsiip2q+ARnm5Ng1gIhAID8hBVos0iPS26JGeYQM9YAXkuujniVsCLQCVrFcj3a"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted-0.3.16.tgz_1517244598988_0.4378785826265812"}},"0.3.17":{"name":"warraysorted","version":"0.3.17","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase/layer3","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"ccf2b386c033adfa7897af8c3c8660affc236127","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.17","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-55CEbYzjXonZhuVrNh4+/HkegJHIfh0tKiaSn/LcfTCXCYw7N9iZB/1QI49L/TOkeuLfslZcElM7panfTuWtyA==","shasum":"c8e497fb9141f81c7788164774658ef4f5f7654c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.17.tgz","fileCount":4,"unpackedSize":29172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAPcpM6rq1Ga/e3RkCupwXVIiHaLPr7FqcLqqMy+AzuVAiBXdtLGKHu7Nr9Tn/2TD8khFfKeH6pyj/y10WdQGnJcXA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.17_1523260567878_0.023939787281609615"},"_hasShrinkwrap":false},"0.3.18":{"name":"warraysorted","version":"0.3.18","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer3/ArraySorted.s","files":["staging/dwtools/abase/layer3","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer3/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"89a1537c02db55541ae8f7c561bb8d0dc3564928","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.18","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-WXxLXf4EvADxkeXwEZ7/AQr9j3IIHjyICX0/1ceUCWBcRTcA76be463PZSOvA/XNJxKybxtV6rCa7R0Of7Gp0w==","shasum":"a3297d90c6276060f6dc7ac042ea8e9b1acdbb1f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.18.tgz","fileCount":4,"unpackedSize":29159,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjw5onH8MWpiPgSE1gtE8DsfsaUHtY4ytd/NZMstQoIwIgF/O1Pw52mnMNsjaOuoZ+zvU4FsRLidEru+MouAu/vQk="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.18_1523563421566_0.6910476029652663"},"_hasShrinkwrap":false},"0.3.19":{"name":"warraysorted","version":"0.3.19","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"7134666d858504e282dbcba0c4e395958c8a3d48","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.19","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-esnb5ufaTiy+QuMjQdO3wUAH9IkJoimzdmt3b81rakVsWNXEqaPwKHGzMvM/5rIHsdzmmPw9R24kV4CtGULk4Q==","shasum":"aab5a103e67437b309e6d3705502606e2708ef94","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.19.tgz","fileCount":4,"unpackedSize":29160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7AOECRA9TVsSAnZWagAAdPIP/1jQkBr1PpdGuO8wwzSu\nF0Ws2e0YplHB7hDY4pneYHb0HGI0i5aB6aaUld+uWeqMcKu57fOio60Evs3O\nP6BaxTMvlSoKrJMC7r/lIeLTT4dnV/XIOTepj+W2CLuYhzBF+WHaFsqhpEUz\nUidAqkSsvgJWq56/cQJQ1gU5IeH4TfrjZZBfT37/tQa0gyfv/JABDBRlq9vZ\nces7POj/HyRN+N0T1fN5EQs607VaDFrpBGLXge2c0SQQY9Nb63GACemA9I41\niOIZsKVcjcvy60Lp8Xf0sdYVOEZJ0G4Wmh7cJdGiqJyPH17pxHABwSi20tib\n8rrPDaRK2FhiLjKGkmlPLQfqNkRmSY/85+gZo3g5xdeJNRaKskNxy52nRMIA\nw2+zQBS5jD/UNzMS6NpvZqMUbBpwM02yJ6YohSaN6rQliXu53raosZtfvZGk\nrbTvH1dqP58cHpboJTnVzRneq47ZY+XgtdamD272ctaAImp+Jg4NQ7yQ9TNN\nL0AlZod6WL1OSoEoWLa8Q2lpLWFttRkaf7rL3+soS/bMnc6QO0gu7jr1DxYc\nEAjNDAVRwcWCt1oNfEwRStCiCUv1yFiRCGg7O4+4XsxaGVp4zkU/pbIll+lN\nhmd2BZaSojcPijyceXRfw8sQVcIIkCfXOtnZhDQkupOvxd1fNlaBuo/Q2NPS\nSNmf\r\n=YNuo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAD+F4ZRYLu9qZBwfOv0jtT1tV5vaPvwSIoKbjKNjcUfAiBNEFZTetae9gPpCmC0bWxZg9zFkL/pX6KjBZe4DxuZmw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.19_1525416835379_0.14942387842654803"},"_hasShrinkwrap":false},"0.3.20":{"name":"warraysorted","version":"0.3.20","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"24f18c8ddb18f5eba97502f4dbd74cae245c0079","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.20","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-vCUSyB1gdej9BNJWpwGkcLfTFpS9cQthUhr6YcDKFqp7QelLDIQb0uGofM3hW0+HESY1fG10khk9DOlEDZUn3A==","shasum":"cd6829a2e7c064e003901c51c8c12f1827cedf05","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.20.tgz","fileCount":4,"unpackedSize":29161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD9xJCRA9TVsSAnZWagAAEHoQAI/y4L+1uKDmpLzzznGo\n/t8HPL918cjAx4Z29OAgzwx4ZtTiDfaavcQ64M7hfeGMn6YYCNyx03WLbMt8\nZcToB3NZefR1o46wzdm32vysT2vfwSICFb9zfiG6tlLW+kq+Pt775LUY0+md\nRR6WWWs1YgtC45u73Puw6O5dSB6MiWuBfXRb3CPj3mQGrMoMnUdtdIvjXGIi\nPM/10XtFAokVZKqzve7P2sevyaoRhEMfsEzA6KKuWcO/903nqMfxTZM+3DSU\nqvpravJ3MbK1wVZbFntKKkDPIEBTA54So4+T1IvDUGNrDEAVfUGH43qHSY9P\nsfK4T6Pjd6m4wePFPhXfaNekaW/0AEzW5sXu40XlYjrpeGemH23G4feFC3WS\nzD0pvx7kNexMyE+1RdRjV2ILrD7fhLdxT/nXJv1R472zXkyBFX9GFtVK/uwJ\ntoqh/76l8aR0362EYEaAqzd5VCJcIVhsX7MUCyuVVJrS63WkRWY+GCp4gy6h\nXfAoT+PB+V4BLwQq8+TdUA7TxRwjCQHcoJRFAQm5jkvjAdiQ2Cs0DWZ8MHXD\nGlQKMC0jXDJr/k0bNXvC2RzcliZtJFnjrr9omdxfc13e4K7XIXwgCTKgael0\nrbOiRc7IAH1XvjYmHVtoU614HOQiMLLYlridFFqFBK25pv/AUoWuoSmp/4kW\nzgRD\r\n=Ry5X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGS3x4BSKYq1BdY3TUFVK/eMD4OmYRFpa9iDwkHRz7gNAiBz5lG5lFDtoKQkixNip1kRZBBHfoPTfAaLdqbqX9/YWw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.20_1527766088963_0.1647796068980525"},"_hasShrinkwrap":false},"0.3.21":{"name":"warraysorted","version":"0.3.21","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"ae1d8370c35d02fd16b94fb9fc60fe1f0d1611d8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.21","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-p+UNUxgC3pgLQ8jiMFFaBAbCmXEKiXycRjyDxJOizPaRXXJDN3weyNty57YYhOoB6JFQukI7EVwEvMuIDu1kgA==","shasum":"a038e0ae05913e80591c2e657410d77719d12d27","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.21.tgz","fileCount":4,"unpackedSize":29162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFZIECRA9TVsSAnZWagAAbvAQAIIlN2ARhzssgXJUpP7q\npgivYE5OPVLy6yy8iiov5IZYImTG4wVZTsy+QFwSqsSC+AxfTtikB4PiFLhv\nRr+kula1o7qVYUhOPbETc76jRKX2Bb7FYnQfIWnPdNYYn6joladrudp9tolV\nlUmmWdNMjH9yBi53i0+PWy4C8FVIKRYJjEz+A28d7jYEx4NhdEZ/2NiCCzb7\n4rVdbzHQAVvxUwKmQYxWh4RcPS/Z/hZJquzq6WvUzFKdMDXFFHaWzbvZ+S1m\nCNOLHnGhPrUWWt4BOKyg2cXXmHoDm4EacM7ADRueSgbdMKhf+DRWiYD9V/Ll\npInkTGQGVCyGH39Q1Te+8UyqOYd2n9Qk/9dPaCSvAqegSo2v4RPZsV5ijJ0K\nQ7VtagYLdAhJnr8TMROASUzWcN1gZqLXEDRAdKceCAE0D8S57iZH0LPXE59Y\nk3b+7MC/vy7UrSfq1wbAiO5ol+f8ezKGEKrn7HtXIduLHMY00iFP77N6gpcN\np3EI3aDfTmiIlKOnMWHPI9wuuo4FFlCXRjwzO0qFQvvbhraoC9LykbepnUKV\nTXH24z3NVp2yCPL6DEYBL8LvAm4m/dcJZz1n5kfY/cQFmNzJ+GDmq5zlhIt3\nQnJqzhjkZ2tA/Y77UXNwRKwPcxbcFUDQIqCWZqeOtBka/oT/cekGl9Mv8l5N\n/cHv\r\n=uvFh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQtO9dJ2hk/EgEwGzkhSMND6IdH91uGgHLNwpuNtZdAAIgSGLHrDx+sRnsIzMK1OOu0fzso//mehvzN0aQ9Qgc89s="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.21_1528140290851_0.23554848605938883"},"_hasShrinkwrap":false},"0.3.22":{"name":"warraysorted","version":"0.3.22","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"e5e029ad787650ddaa4cb32db61718a8e7224124","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.22","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-0uRTHbK2gggptT4JLB+VddoCxqXlOWPBxhUjn4gVAzwAp0S+NbTC6O/IuiBtEmW+0Ulk0N2mmEt0xHvhNgqeeA==","shasum":"0ae23519ece81dcec1dc538a9eaf2ea19e2dd78f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.22.tgz","fileCount":4,"unpackedSize":29198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGNo4CRA9TVsSAnZWagAAVMMP/iHhhnSg0C2rVZxDjlbW\nAD1PkNhjBK++OqDWGKt3cCv4nsfDWWuPzclTfBaNyDYdd+N9JKM16gl0a5Id\nCGmjW4DKC8sGadv2IGCYzMf7uar7IVAFLiy8cvdIhZRX6dIRc1Dp+dfK0XAe\nd+iM6D25eMK7P+F54ckcqe/72zjb7JAZfLfdOwcTYX97cUmvlLTGvb+IHytY\nHN1F0Oih67t/8/XyaE/grilnaRRp0mMYSyKw4iq/4ZJsPAnAfxMvl+mtMWt2\nzzM6O7dAy7xnYE08fdKgdqoBJDI6EK1t1VrcjgkMFBk10SlRwVXt4V4n4pRz\nqi7RelOXJtdwZw5xIKMZs7jS5C1qWYzcFeVdHKKWIU2UuHRoXnVNiYFStE08\nlKZ+mvIEXUVGkJP3JqRqbEgkwItiEx9pyeIFPSHYAKDrFsn0TUgI21P5S2l9\nVsLlDkb+YwY3P4iwHJGW5RLTk6nGJDVxa5BJ1OACXUONh33CEaCrvXDXLDt2\nxWtDW3eEszH3IJ4Cje8I67uOpTX1t++eWN/LScGS6/JCfRWFqEkK8u/WMG/P\nclyNLHK+B+D4D601wFNDYzcb5VcDFqqBnHEG9H5VQNcVoePR9GdbBF9/GldD\nfYB4KKuQg9qhf5TLj+jBlK6arbsTsF3SABO3pKjtpkU+KJL9k09cNKNw4fC7\nI8Cu\r\n=d8bI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFf/nXacrGIBqbZmg1HLwfzdPg/6uabCfJDIsyJFrr7KAiEA2dgb0Jt1IQMcuL7QRpt+Oxw1xTj9WCQCwscELiMF+/0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.22_1528355383917_0.34258822312264825"},"_hasShrinkwrap":false},"0.3.26":{"name":"warraysorted","version":"0.3.26","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"5fe2a9b19a00947c80e5bd50ec96586c858a6b22","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.26","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-kuZNEHqk24PYFOlnIqjzEsuaVaIeeNqoL1RLzwRtKB1GQFCgZ6W8SWjG+HKXfXNHcFQ9KRlcJe+Z1XHj3jZxhg==","shasum":"31172c6b63ad55a4cc5ebf05c07014db4d2a4eee","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.26.tgz","fileCount":4,"unpackedSize":29195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGQcCCRA9TVsSAnZWagAA3wQP/jEB3DLl8k8YtNKgTN3c\nVfoh80/9JO8RSJt3kS6hi6EdU8GqwExtJDp3pYZX/RjnwL7woxd+Vf1mioih\nlni8RLn1W/pX2miPcvH/g7Uhuyx9uiphmldITBWRXZybK9c6gtVYI6S8lHmz\nFFWHlrhII1HWvDDCkGH0Z8QiQqfYDYdLTttsssaG2WQdOsP3w7Re53pmOf5C\nYQx8fvcj3bRVP+Gon7+TX5b2EnBS12fMeaB7mo+3pL4pVPnfdInlfBNSK1/Q\nNl2TNpA4MtvIvR3K1OJu5pgMQEVb0QNHcVEYYK1dc7nRLqe64TjAM3znrUmN\nXCHnBXU6pEeU79rrs6J7Zqi3SIyncDMCKZf10ivwI/5qtqzAOyEPjFflNRNj\n6uELs6Kddc7zpEveBE2Ly/QVCvMxWxpZcsXtjzEBrrYsobY+II68zXzTC9QZ\nBQuMQ5nE9Wl+uJOCIbXY4dmTsWOGX4Q4KURh1jnDSZ9hQAmP2Gj90YJSkazV\nbEexL9FgFB0bfwXa+WSD9uNATTm7kyHVRCkvnurGfFJlOg3dTtar+ppk4VWi\nj7lnbsygV4MrZcCbU0/cm3vQLLX3ic1yXGLHxwDUF1fLUfdmMvKdDEvbLJnd\nTFyeF1uAVUIiKkX4LIl3d3TCzN16LytNyk8dkqbACbXUqb5HymgV0MW3z1Gu\nErET\r\n=p+9Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGpsCRaIxibqfJEjkCAomwkDOFbFGL/+x20QrjSSxSMoAiAnxuAzkc9NEIXrwS2id9PmBPqmz0wGf0BY96RcoG4avQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.26_1528366849887_0.8198809532062654"},"_hasShrinkwrap":false},"0.3.27":{"name":"warraysorted","version":"0.3.27","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"9870ffdd8a621138866fdbd7ae3fa8b4d722b230","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.27","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-gS4EC/PbpuG1mGQHUk8i+8ocOYWxThwWh9E3miob1UBgvcr5t+hr0cWwqmwmEbcIN6kig5NqSas8jrfPSeaB2w==","shasum":"d4382a91413e0d642818a7b122dcf6c0702cca68","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.27.tgz","fileCount":4,"unpackedSize":29199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIWtQCRA9TVsSAnZWagAAYSgP/3yvxIjBgTmKF4SQNEax\np9gkAFjU2BmM3BWvYWNqu2M1qXNaheRrIFAbuZjkk0F8gmFAYStaYg4hYRCm\nEFCzZwxSYdN2CpnH9CC1WyetYlxr8mzoO5OLce3c+mgc+tfxdAUjhEMnSOzU\neBEJ4i9f4FwsyWJciP+xDmjoaErXWWtmvBr5arGtGwOio+dv7yr0u1W2C4oy\ngDwU8/IgBQDVj2Jz+zoiwhJCvuegsYKHexXtVIR+SxH9ZvP4wEE1W6UbL3C+\nRIN63nLcgrf83EabPtdpt+DFbCPBjmhcXE3VnarxqEYF2Qdn99WRsy6WR6Vl\nJz+Hnrr3NNfK3tOaEXLWnodlUwaThTeKyZjTpb07UxgEcKjTwmejsJY5oNTT\nhxntVHQu4x2UZhtRuhjCVZAv5bf7GG3dGZtMJSHqLwfiowCjW36itTApt7/9\nzR3T6fBmGVK9XGBIXf9/+aqUi9MwUmB2sBikVyC2iwqJ6CjBTpkV+y5Z9oX9\n3FycXJSkDWfWif82qcvLlFxU/w6kTMxALn2+EucYyPYVuEoN4IMEAEGGpIrQ\nYvX+RAW2FL4vslWBrR9mOAX4ofIgblcIO5wzXl8IeUR5qAwjCB5os9IZVry5\nfOsmAAy0kNeHrU4psFlMqzysyjXtg8tX/0DlR53zmGrffOI0/DuYsMXxoBKw\no/zQ\r\n=Blta\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkAx2q7hNytVwp924P7Fk651w5N0JFCL++UccxNSHuFAiEAqLbJbK2JEVLTUbPnLomURFCZ33BvlCwjBVQ5fzQrJHY="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.27_1528916815756_0.7266683043510931"},"_hasShrinkwrap":false},"0.3.28":{"name":"warraysorted","version":"0.3.28","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"3265c929226f03f431ef923cc54da810614b634a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.28","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-3wP7xpVXM792GLfOr2v+fto206SXZNviHGwWx293YEPxn25PvQP2IQfrdCamrRcPCOiy8xKy2G9IMTeWH3/AAA==","shasum":"1156188d1f617f3ec22aa5eec67d1b40727fce08","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.28.tgz","fileCount":4,"unpackedSize":29202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOdSoCRA9TVsSAnZWagAA+icP/i44cG7OEX146VfP8w09\n5/RP4bsYLFcwriwy987LG554uWjzcGP386+mFhYNV7j+Jka2FtlZZ5SPgeb7\n9GeJNXAMyVPpA1pFHJLvHUf8CeHoIOamGEph8AGt8gWkz6Q1iQ6+flU0GKgc\nW4BMAzZyulK531yVr4lUsm0gTMGw/U56i3sWv90DBrjtnaYcv7SlcwJ2MFec\ncmgAZt0w5DyukcIrhb94MDKU0En6l68+ElTC4fM5m0TPj9H1N4+BmKQm5xkH\nw22o2OS0OYv3UsuWHXOjVMLLtx5r+aWgVbdL/cbF213gNUeEJHXUyEEuv639\nVPgt2G9uhW8oGBaivJtKnzihZlU0jHIqqDbqAB3kNxoednw+3540ufVCHMK4\n0eOWHr+LdIVpQsT6zhT+UOuUumXGWkuqooPSlfrS0fj/1a531zETYABBOtLs\nUNudGiNtsdz2dtMB+ifQx5Wcu99MFW2b+FQDMiTVpaA98pSn9Ghm0uDWnYko\nOe+32Iw/WoV/WuUvrGM2DbcuBaYKy2Hg85vOYvg0rxHfN7BUZEGS0vV96AkN\nRdbFjNpbdlX2Gk5mk+C3ZPfqbEdoS+LKzIP17Rvnb28KRkaTebCfwz42Ab1H\nYyJ1D8VyHkhXe+EhyLW1xQcTCwpQiYmxzaVW80IMJxaSyZ+ZuiCed9E4E3+/\ncurS\r\n=pNE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE23DCX8Few/rPbd6tp/5O6oLRDOTByi0gG6+4m3PIBdAiEArTrQmz/O2wqNK8SoHMmZuXH0MjVHVwQDR6sRtTLLlLU="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.28_1530516648359_0.7213605071987161"},"_hasShrinkwrap":false},"0.3.29":{"name":"warraysorted","version":"0.3.29","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"729593400e8d22c9903920360c19a619df9453ea","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.29","_npmVersion":"5.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-8rHm96rc4+rWhixMRfTDFJSuRT5UHBj8XFHNJrwBjYf7caq0gB7EnkL3PtdAJyLiVn4s2IXUZef0rbYhN0I1VA==","shasum":"c8375d70f48cd834b81a30f5ba058af1828b8a94","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.29.tgz","fileCount":4,"unpackedSize":29815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPRWBCRA9TVsSAnZWagAA4SEQAIkMMuXeWhTkRzlfxKgR\nCO6KxBsV0fjjxlRbVDks7wSe4ScNCmHWDqkztuJDSvAXIobgYoiI1/jfyoyF\ntUQO1ldlPx/0Nfjt78EaQboIWHmnwlm9+VkNRDnXr3KVRS4v/MsucmqgwhYr\nPgg8YcQul5130BmFRC2KnGLSr/7Hp1IvdRg2IUoV8TvxM4kLBmVtzy3yI4x0\nkMoKVIDDipe2My95RQJYswfJLXg5QeK4Ap0ZzNMLRF8MinqcJe3qCq7pndAP\nzshlGxqT17WFZQ7FCOYfHpGkUaDVCRD5dwTqOknxuZHYJXlxhQahm6ihbJTi\nvmSmyej9tpwM6GZbHm/MzWIUdNi5EdiYxAZmSsK6MW/UQHQMcRdwuZPv1p7J\ndLdvlKvcOe/VbySz7TUHb+3WX+MsOB9vjMRlj2dOqdc6CnaPHXmO/xtGOe2n\niQaTtmGcF6Oryl65ulo8ooVMNpr1SK6mfoOyOe8XzLb54B6/RKUWD4RIouv/\nUbxDTjOsMWpkm+srAV/ZQ1PcZv80LYturcM7RnO6blTab4hiYO9p+EhmTT1Q\npd5mpaP/jlCxbfC68NOHvWbYRoh8femva3+Ix3H9BPEnV9t1+81BSLIT1W/k\nudDCdYyzgs6mqeMts+sDEffI96H/5DzNgne4gqmvwa+uh6zhPu2exegHCzLV\nDclK\r\n=gOkA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy89LKrUosXYMoBcufhhv183lgIUvMNt9GKob30sUchwIgTixT/Wgc/6WFuPlOO95VXNrUZZTEdf/TJTuyi7wTakQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.29_1530729857125_0.2762459528671941"},"_hasShrinkwrap":false},"0.3.30":{"name":"warraysorted","version":"0.3.30","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"f838fa895e2afed6a3e774007e5594c81ff9e9a7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.30","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-ZnxrhlPyP8McXAylNeLJjlQC7/NVOrSxylF5GNvObJnbeA/fcCtuEewbYVQfzIxXIuR74r3fNsrSfwdlXKTYbQ==","shasum":"97e29e41b4630d925423acfc6bcd14063397f4b7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.30.tgz","fileCount":4,"unpackedSize":29865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbQ2EoCRA9TVsSAnZWagAAHQwQAIZsjz8jy8oSJ6eTt8sH\nLei1SDG69g/iqktV0kmv8yDrVn0hwkwSR0grU6ENF9Mk1XWPcfn1g9DT4kWg\naBExS+yJzCvc3z1cJcrNxXD3xP7sgmxEi5VU7kk29GkEsg1XoNCPDyDVk7yJ\nCMwt7m1EXKp0MagGPvl6rMiFfxuQQ+vqCMY0hslV66dfgHdf9cYqy4WpKAkD\n6/Mf5a/QUP5m36XA8YVHD+aL5jbIjM4y+2RSP8RZkMyGeNIYVd4mb1EQzBm5\nPMdhtHUlYqMCdFN+Z8ZvTQhJ2qhjAvPr2h1pUC6EVw1MkniM//F3t7FLp4po\nCDFSOijEwHhqHPi5Mr8X/If5XVOzMelHFKbisqMLi8wum/NPY0VudvabGe8k\n7l1qvh7GYR982t0Eo6X/2ay8bFgoek+QK/BKIvbHqCNH4XFd870BpfZNkbif\nFmRGXs3c+YoY+JI9OH4bCYDjvGGXIFPU7jVamXM51CKJnA/uY4QP4EeGwhxu\naj1P2hy+g5+56Bnucp2/6rvMOcZDyahCSiO+VsmVYDrm74NRoctvWGGxtubz\nTUGhkpwdVz9NVkw8C4v1pcHGnIGltQ/ubEcyvoIqnfZg06slCCi/Owxr5BaN\nu50oL9WCMlrbYJMIJ7IvJiDX7rB5CaDjRLPjdy1kv48ivWRt3xeoOdInIpon\nUWUf\r\n=z5zc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClYW8t5AAOKue6GT8T70cnpENZtVrWZyGJwUduH5NocQIhAL1unmB5XVVYcUZeQGHfeRdjmbQAKrQmJkWL0FGV/3Oy"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.30_1531142440306_0.7473462961315995"},"_hasShrinkwrap":false},"0.3.31":{"name":"warraysorted","version":"0.3.31","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wtory.net@domainsbyproxy.com"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"645a433a017bc2d8dd8264b931c32dd472270821","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.31","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-SCDuA14DbYHKkUk1TPRrDEfRgW0xLql3lwshCctqnUoCvH1ZGXdoalO+pzHM3WalZxBAKrIVSY1sPEtv03wPtA==","shasum":"fddbb26bb6eb45e92909fda731b329a86a500c78","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.31.tgz","fileCount":4,"unpackedSize":29866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRzjTCRA9TVsSAnZWagAAGLMP/2H9kHD7oyL5V9Sgrv7t\n9EsVbon2JF3ppzst8WPIQ0+dGMPrhg7PEG5QuokmVgCrLJZFJCSOgd8OPkoF\n5Fvt8EHAAXZr4IDk3ZLS4D5AUe345aShxX3I/fMw1PnvFQYbRZaozQtL/jys\nmoJD9gurM3eQCU0XXgKC3+tlkKDCztxQ8FM4UrqYUWiJ/HeA5vOww0OXMlEl\npR9yZQLXlbtAvTOTQHOzkPE3EzQNixuGAzlUoPIPorQxWcwIz0t2bDQsHpnK\nhb/0yW+nbSQZyReUvNNYeyiZ8SwmfQGAhTD9divtmVdoJzijkOT6BcMmOl17\nwnUSDD6ZM/g1086+CjivJl9fJifmJZ9UdZFX+x4AE6cmkygifjYsaVDLsx82\n80Jea0EEJ2AzIE8D6Za7myEdcicsRKSFJn3WSljW96F4dIhQ+hYudQPC0ycY\nxHF8nN/1b7BDgVRVORbqsylNlOjaT1T0OE09o5tlp/AomdrZa5OO+sC8aeCI\nqmq9QtPLgfydGJWRaIeD7rJOg13e4w8XZp5Ud17wR0joDJ9ONTdtBA2BED23\nnxv67NP09Z5oJHDkbmnfXaYD/9CnCyb3+d+RuCJCM5e1BYag61Go22SbNcve\nX1MisoDtMLhYC+YouDQU0ukPu2HD2ySVgBRSSfhm5yuApn2xa3u5Is+iKQ77\nj9ds\r\n=34si\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfdNDdyHxPsAFRObs478urSD/KZNozc4ZxukGcC4H+bAIhAO5Kfm34xQ+FHS2kAfeWXYEqxIVv206Hx5cwvbD0XnMy"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.31_1531394259567_0.426422954672633"},"_hasShrinkwrap":false},"0.3.32":{"name":"warraysorted","version":"0.3.32","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"2f87449c5f3a53de0019f8e05cbd4147db280737","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.32","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-4SnWoCyFjO7Yhao0hNuVdG1morBd2CrW+zkZ5Dn5z+/v+XiktO1KwUzL/tKjc5VnwXc4iitF8oO7B2ZBqEpYIQ==","shasum":"0f47cca4bb042f384e55a2d90bbd31af73b39ae7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.32.tgz","fileCount":4,"unpackedSize":29845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSgHhCRA9TVsSAnZWagAAcPAP+wddWPAJKOpSkFCqv5iB\n8Gtd7eMDtZgQN9bmLcSddrqq+cp7/xhQzOEln0JjsUPQx15B76+SRb8E45LS\naOL4OSl5GbMkArwcUqSFEyNWyT6h8Dp00xHTPSlo6Y7dkvIDvbyehK/sZ2gC\nti4mNT8Ayhwj5DBwSPMleUB6cvYiFVc5jSyHircHMaDO1lVAtjTl2YZjc6s9\nnIcJC8lAqWEyiOEZqe1WW6/Xn+w5iY+N9BGBn9MVyzV7lIFegp0XSSNRhtIz\ncBpvpBfohfaiaofIhwhH79LdDHKTLzf6BYkpTn10ioEbl9Mj3IFtdgxbXYIZ\nhIoUqb5AlkS+4/cQxo4iRQKHF4B/i0XroVrGMV8fCOti7rRPm2NjcIfL33BI\nfXZrrxND5m6lbPRCqEK2nOqiyJHnNiwFh14hThzs+RDVoRowzWAWQx1WxbZR\n8Gg+ATTuqYFjATFoSQa0aLG0m7Y3N0IS9RsVPnzuZJnkTt/tbJA3KYdbkALA\n3azJih4GKxYMbqbGd3OL6BJ11d9vNIEspQ1o6ksOm7MgJ1IoB6egv1AwLAeG\nZNVz4QdUVef0t2WQXogGY7BwDO4HjnVG6cji7LwfeVpK+DhixvIppj76/ukY\ncmNbvMks0Cio2fiH7d4nYihpwZPPRGnni6SFcsEZBMWgFA1KbsCR5RAaI53D\ncNKu\r\n=Znkv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBIYDZHnC5t8/zM1ulGSJZFCyKekW719hckPK0oxrN+VAiEAl37dfsEh/DiZnGMthIJnEJ12o8Uf0Fsxg19ETpAi5aI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.32_1531576800933_0.36489079796593904"},"_hasShrinkwrap":false},"0.3.33":{"name":"warraysorted","version":"0.3.33","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"c3022e049e1a199e9fdcd67372d2f74ea15c7113","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.33","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-aL7Z6DAoAbIItWFVSjTr13eNqDHqorkON5Mdt+bC37jyQPC26LT1gFoo0l+MpJH7IM7D8VgRfm2Ogq23a1M/OA==","shasum":"0e73dcfa9e5bb16c2df31a6831efb1646f606f97","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.33.tgz","fileCount":4,"unpackedSize":29851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTLP2CRA9TVsSAnZWagAAQPQP/2f4oasmv4tcrYyYYS90\nTTZxIL0Skdsz40/AzDpkARqDEeikTebH8SD1MLbU1YXFJjJK9aePeGM0/BCP\nEsHrVNE1AUls8herKv8ZKeinXZ3+f/YRHdenLDinbnW0WWxUARvNSuzB461X\nTnrq2WKGUGkrPBhahsbGzYcrFN1unVJUlFh8khY3e5U11T56wwDjk+fjE2Kv\nXK2KuCFvQARBrXbWMqbz/r/SVlnqMf+nFfxstj4zU2DdXAkoNlIJRj2LiaSz\n29uoAF1mP3dU1S9DQYlq8EJKwvcByh690MVGT0GOOpiDx+NnCtHNmi6dUyYi\nPQJNKbGKgYtvyI1XlAvhDMhcZ3P55ogQnrAOLzBcJGaws83FQ15dlcq1NQH/\nQphItux5opP0UNeH0pm1b8TyTj/1GCFzz4IZGcwEg72VjNs9nlcOmyF66xYk\ngGQNrKxaN7ZWzgj4IfOvUjc7ZEzRIr3GCsdILuqFavoVSGEJCGH8nBdUJugE\nKzXfE5YzDXaIez3lVQaSKfag7qLwUT0stpli+w/4smjwDGYs2CGUeDiyFnOq\nszkPpZ2XvQR01AIIfpme4sQR82Q793iPPd8sjJmlNie7Es2lV/6QeICTQW6V\np+nEJpgs8CPif3J2rT4hx5q+zLALhl6DhgvrqyTXdy0Lx+qm2EawfuixCYhy\nIimD\r\n=NAzc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC9il1TRyWo+itDuQBXIwL+fm9JXM+g5Lj1a0SW7zQmAIgO9zjmhUXcP6lfnX+k6wCN9JC9JIQXX2xJdwugqTWQZk="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.33_1531753462233_0.3365581666792319"},"_hasShrinkwrap":false},"0.3.34":{"name":"warraysorted","version":"0.3.34","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0de5d9fc06933988e4089cd817bcb3086231345a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.34","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-Z4QX6qrjZg+yvHF9v6mya7NTWn93IYT6xi/4/bdDHyj2e3RUIn1PK0JZtZzCEbMhkgxKIyez5T4zMZhSrUTbiA==","shasum":"cc9d83a87156d9fb91ebde6e2890355e7c8ab82e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.34.tgz","fileCount":4,"unpackedSize":29847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTcJzCRA9TVsSAnZWagAAoPIP/3F1CjwQETLftK+AmjD/\njJpI6I6ff/idJ/ep73Hg1BVtejNwrZ0zlIWG+2FnlyMxkNfDzTkYJbEtyg4I\nxl9oNM575z1kWfxDGFf5EQkdKUzLR0LodSPreD+rLcuxDOXAKzp2+oBX8pom\nRxUL6FsA+Hz33Kfr92yjBMnGnZghkbvSSap4Qs5wv4WlK3SKTvpciQKeUjSY\nL9aJSoG7Iw7mEcsa7UGx6nV4C7WxeTYQkwXmvfM5UKFqQ5gt29nVx1Bgz1Ss\nV+43fczG+EcfH/sulxr+T4XvdM0Hk08fppvoVojN5Vp+Yyyo4f2F2Wy4luBU\nC0GmNZEXvgWhw/VzYlXnMW5HRRJy/650MYhwcvGg52nb6SsApUnX+i9oW2eV\nRd/3hyE13wzGTCPntibdpS+51Li7rCdqmvKvnc63SsKQdCtQmI4FEi/3CPsj\nlxHwnIBMkltM70+gDCHdc+/YnFfhzSGs6PXA0jR8+As3ImwTKYXb4rjn4dhi\nfVUv7hEYrPNveMa7ddwI3IFUn6XhWUjR8LwhDl0VLlP5c59hoJowtHQF1hLv\npTzQdEpfKpLxX8MCndyWeXlIQhl549iOpcE2LTYggYECArvv7RJW2zLzd5Vh\nh9CbM45T/Kn8GVQJc+OcFO6tAqiiNznecH57iEcgTLc41Mfw7AK6wylEFQmQ\nZ/cM\r\n=p96Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfY61Fw2GKYXNZ5Z7dMJf6GNXd0TWinTmZ0UHR60fscAiAH7Z5YFx9TBALannOLUVCayhNxaPgmJ53ECv+zJSwfdg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.34_1531822707511_0.9152591043230243"},"_hasShrinkwrap":false},"0.3.35":{"name":"warraysorted","version":"0.3.35","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"4b5020d1c8e069f6e523753f60b624a719741c6b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.35","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-4aSKtS1lgEsg0HCeWgMe2+eB50sM9Ww/XK263o6nKFcsRBuM54PsdeM85BCbN11wSNBQs679ajceVZnoSdHjAA==","shasum":"150cd2fdd22e719f83dcc2d6f2b18abdcc22aad9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.35.tgz","fileCount":4,"unpackedSize":29853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbThTICRA9TVsSAnZWagAA2H8P/1beyQrBw8DfIMq3d7rR\nbEami+1Uu6WGQUxrHziZgIFH8W8qHOBrkzAt78Xx/y9pj14R+lTuicMKGuDi\ncMUsLm1KUniHBK+QbGOBXr/siovycaSIMXqb6NfyDP5nS3cWvNLP6DVHd3nH\n219QsPUOPB/wW0tIOwJ3ICbKXZjPXy8I5QJubBclo26uk7oR9GS9dboovS1U\ndou0e3Htzvg30I8XW+CiAhGg44NiAWWVPYty783Jmp29NaMfhYeGWHsXZ0Y/\nUAfShxfPEN3KbjOLjaPvvtzKJ6Vpy/vZW7LXdqpnwtp2Z8n9tvJDrc6LbVUp\n+qbIYWP7h/oUuEwT9InGKoG6CrzMjkkYHia6BPXfvw11v+YTSNxezAJ+Cqdr\nPcCAMy5aVEQs5sOTiqNwNNVQyx2RKwiPRxj4AeCSeYGvsJEAPWmNT7Qh8ZWk\nNr75Vvo1+nJErIPuwafEnAjOkksaj8GzDKFATlTNFO8+XLR6fjAvyKLz6eKA\nx2KFP9NxuEy1g8j+das23T45GyWKncGuevCeyt7FHZ1uP4kK7kaHnsh6M6eV\nheKg1pXj/LxRrHzmmRc7m013aIy21IP8ZsJxS+impArWnsoHHF4epTK613Sp\njmcNrXdSsMkI5z1TEn6bOmjg17WQgJcmrwNg0tYtP4IazMJNCcSePXR5IV7B\nUwJg\r\n=TQCU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZt9Y0yBmvPhckpleKBsGNrJqQ+vgf+Xm2mnXMcUOFNAiEAuq0QnkTOCOto8MMBjEXIQUV7D2a+lNOIDg1LX31/TQs="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.35_1531843784282_0.323698772456003"},"_hasShrinkwrap":false},"0.3.36":{"name":"warraysorted","version":"0.3.36","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"04f0c8eae5fd5984c1722ceac336395eef4c5668","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.36","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-gq8JhD5kN8TKnyUNXrCz+1Z8wyV6A0oXCLu+CZU98fJ78FFYkyt/7FgKgw56AnkOBS1b7ZfW1y3RchCRcrbQJQ==","shasum":"3fd1f3b9ca46113f7ba72ec71025448dbf068c6c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.36.tgz","fileCount":4,"unpackedSize":29849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTvCUCRA9TVsSAnZWagAAr7wQAJhi0SmaCxLTdzW2RHfm\nnE0pe03F7DG1jErYquD3dJO9Q+jrV/Zivz6ypvsS20DZEsjZmtPZlkcu2rV2\nvK3iGLB9A26eyO2Gt9eb8kR+U5RKbhBKlPgyQFV11X2zJ1WBW9IYx5zO0o/e\nb3PKDa3Wsbia1CY2TvJgPH1J3MZx1xzzOQ/9AQIdceM2XfoW68NJTJuwsdpm\nQaNgkDhZULSW1GTY0xyiKy/+f3e0oW4PMssP3gB3iB1FSEzBlhsHsS1thdE3\nvykWVEpi5qYM8LBdj2GHXCy0ToMVjUqcDynDHsh7gScKG3UcMVKtRBOSysOq\n0zRufwp6scZgzTycgYz6NxNPcVxYmdlZVF2gyOwFfqnMAdvAIUK7MXr2S/E7\nix3zd5vH0MohEXGM6G1P6MFqtIToYC/VBUA4CaN58lxJa+Y5+Ct54vJBceBv\nK9IDTpOU+1NKyznBE6V7s0mtCTVsEjEDfEwCItVnYLNLZDvTHT2DUEVEHvD9\nDpBYDkOokEhT+Bq57KeZqKK2Vhvlo4UWb0wPtyrdAiC0jrK80tL0P71fNUdt\n4+B4yGn/XkHCuejN4y1ls1caiaMlfA74TfeNLmKg6CjyqkCscEAHCAw/x4Mf\nXLsV2P2klezntr4sKNyZh/Zi51sZP2spmI5aTkzpZXW+AT75XeyLaAFfIipp\nGDKn\r\n=LscV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTjRWNqo0ieenxwP0ce2v+70HD6lA4Gc9QfuNnTrAuwAiAYwaczGPdffOO9Qk/SZK2uzjZrQtveTGdGhg+kLiNbHw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.36_1531900052163_0.23241504663397117"},"_hasShrinkwrap":false},"0.3.37":{"name":"warraysorted","version":"0.3.37","engine":"node >= 6.0.0","description":"Collection of routines for sorted arrays handling","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"5c29168f3fa3c0c14afb9bf28baa1934b52cfdf1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.37","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-D+fmk+wm/4qBD8uJ9wmvt8Z3gyMZ7LE9FM12pB90l32ywmxPsmxRjjCOnGHGN2GJ5j53AmeEosGFkApl6zMkGA==","shasum":"16bbf8d718377a15dea4c94a213c5d1615ea4f85","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.37.tgz","fileCount":4,"unpackedSize":29790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUEb9CRA9TVsSAnZWagAA8noQAJsXqr8uw1JmNnm+QTmc\nCsw6Cqe/wBPn0IcNwRgg5na0UqawQOwczWnL8L6DbXCEcNy1KuFefWje8McU\nLEEDh19ONY3dMpoCaPIv0gAr7L7qO1CWR5lNPq6QQHraP3T01NkXyOuKuGI+\nXi0sRSk+euTCcmx/0ZoLQXSVYU+TxKjnXhm0TFhiSKSR/6cEH6k+xz0jB1n2\n4Cfc2c+Luq9L+fPmuZb0Mm9H7F2GKNc244ihYqwb5mjqIDw4w5bA1fsdJxu6\nmKVpHVODESGIVma7BH4HQ1hPdm3nBIxxiSk45pMWYzXzQZMKYPSQOjUdo3pq\nMOcU/ZgSq6fF6AD6n07BbohLfUxgS8o2frk8v9DC6zKr93MXIKV+JoeXihiT\nxrpkx0d/gXhtbvrfbL5w1cHohENHYK21UMvgisGLPJpOTL3pQPNpjOYfCc+m\n/iHOlRCQH+0PvoD/pD+mmKPjowxIiACnxw7kXam5aEXA+TKFJvp4K4Q/XvKW\nyRsYjmoSqjDxB1xIK/MxhDxSHuzrdrr0eGRW7tRJ7HVDaXNINqMSfThi0Bbi\nqU8Q+yfL/5gLy2l+HF1G+H6iIRDv5sG9z2Mgp2lRYExHTjjKkbuJI07+Ztyr\nvGoBqhGgArYcQQsT0x+7ziykTXHm23E5GsoPShPiVFQ8M7YdQtgxkK69laxh\nLwW6\r\n=6cJy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd6NAdkVYrecdfuuCmAPGhkHbWN7S1LMsNK7/MJEBfVQIhAN4DuT23+oyiSGa7GCipusqjUmgY720Yo9HmuSF28N5N"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.37_1531987709086_0.4063848173181961"},"_hasShrinkwrap":false},"0.3.38":{"name":"warraysorted","version":"0.3.38","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"bb513daf0d543383d2ba3c32e51bd95974cd9fb9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.38","_npmVersion":"6.1.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-N/JrwNo6G+/9p4WQn7C7CIwRRNksIo/EsvtV1SZeY2WWwm+8lQR7H6yTcqjVigse7WQxYwZPudXEmJzp4UfhoQ==","shasum":"fe70ece7b679bfcf7f2946f701f41f3469aa9964","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.38.tgz","fileCount":4,"unpackedSize":30762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaACeCRA9TVsSAnZWagAAtZgQAI6NYHqFlYnhKwAjECfk\nApfcb4c8DsZg1cBDD28kqdCklzQ6Hjz0SumFod+2lUZsxJt5T2BNejxTSDoQ\n1ozRgqtU2S8LlrXoxYiLJBPp0Pg6H7O5bG1Bca2BTGYPzDBkfqV8SVYj/PPF\n5okxocVaD8oPV8LRsKDxg9aCPXa1GMewS6xyVeH/ACQNbdiJkqfNocKJT5Yy\n6lcjaEpXwvTAsscFKvjtm1VQEIgjQFrbh6RE6lq6A27iZ8QEqKIpcQ1Z23HZ\n83cMW49VLHZfVIaUYobIX9RjHuVkr4AyRPJQT6zQhLZRW9k0e94LEFOW7e06\nWUGTzylPb0R+tlwVBp4sncdgYQPq73WMcswD6yBUi2VfzA6x2s6TFqJzkbdU\nAV0RIutlwmmrJZLUiCmLOBO/npKW/DQCWOwjaP3f8eJLewiYZJr+KxzQFPd/\nlvj2fIiaVW8Ppcpya5hRVqRgzxD1/6Y8cWHgtfav0LHB7oEk2eDA+Z9Cgs0X\nUF+vL4PapjKqTA5tR/6hBlTPesvdT2gLp6+9h2EzSFQcARgdSA6mox4wPnFc\nUrh1yQJnQBnbIMd3YkX8U/dfqUS+UKR9jGtKK1s7BONgQ41JtK/2EEZvCR7a\nAMSdheuzeHmRi+apsUtfhRt7H2e7R5Xby9AcM0P7LzpfJGzo5lEAXD4DLwfz\noTmX\r\n=NJK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIBVH7GqNXBHpu1sssHAWMM5VrdPErnNROFgQjrRRHqAiEA1LVp74qVX7sf774FMWVR0hC8Ai/pVkGabSTUYh/waD8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.38_1533542557710_0.3200790670983298"},"_hasShrinkwrap":false},"0.3.39":{"name":"warraysorted","version":"0.3.39","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"a24fc8ba1eace14915ad36f12884b0085a9b9fd1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.39","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-PLnxuVog+YlrgSLQg5f1b07dIGa+JHz+As6vDU4gvgCw/wYBgoOL0SKBsIRegsdo1Wf/cXgeqXTuN/CQ4NKvoQ==","shasum":"d6893ba4152833a1f3a6a2e775618fcc5ae6c673","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.39.tgz","fileCount":4,"unpackedSize":30763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJba0lBCRA9TVsSAnZWagAAOy0P/2aaTja8XnV7E7JMaWkg\nEhK/YJ2Ci2aS5XHzos5RO07eQTevB6UlcWFUdnVB0eFAWxvM3yhxeH6HG4WE\nAP2ngkFuIIdpZI+t7dbubFoQyBCHI/55WddDHO//CzgMDMqXqQm+TGn15uD4\ngpL8Piq4FHBlkdSpQcVHhQYSyTO0tWoIBaPQ7VL3Vp1bdlAte6aOdbUVcZrr\nt4l0aha5sN+e44WWeC4CfiDtOVcYTU5Nx3NVMUEGHvd+1k7fhXUautRgnnte\nsUoRd+Aen719xoZ/u9+qDPHDgWaGicawGu9hMD7ak0CoTdQjkcPactxcizR3\n9NFDjjOCRaIvE3nsqxz0mpeQqIlKXCKfNY93cFEsyJAyYW7lRX4SnLRcBEyl\n50aCtHjMN2Okq9rOb3EsBgXtDeiZCvPV/UsK2AuFByqFpxJHgRXroKgp3BjP\nUi78qZbK2cxkG80PwYlIBoXafygDd6d6yWYios7fyp5C4YOuFe9NBwyEZqYQ\nSRp3cG+sYtZ3XeOKG0nEnNAKcAS+tqfjXjuImkoADREqWnt3NOKSAPx28dzm\nz5YH0SViQ5Njpt+oSQ5/YKIMG0ksCN8Wl3Yr/mQhqaw/gQVufj3UO0ax3zZV\nxTEcqYtvQPDh8lmCL0zQyP2qcg1wXjdFCQWmDPZPX3nHHt/3uRW+RtydAp1R\n4uQX\r\n=Wv10\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgY0l04AQYciJWPSyKfpfozCLdz54mWedq2nYWsMtQWQIhAMSzaxD5ZhbF5pJOCnnHn9mbwpJNGiT6mUwu8wMMvdEF"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.39_1533757761799_0.2257447145447058"},"_hasShrinkwrap":false},"0.3.40":{"name":"warraysorted","version":"0.3.40","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"fc5f83d9110cb66675d993b0c4d6064ccb721cdd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.40","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-anyQ7mxdBTopKbtoUINxd6LKeV7R4vxBipSFUjl150znpajeyzn5KUVtEG+AsDkqjbQOX4iXG8ycIAQfQ5Cm2g==","shasum":"558b4876d16eed1b5846e113bc5d64bc773f702f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.40.tgz","fileCount":4,"unpackedSize":34523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbDleCRA9TVsSAnZWagAARjUQAKMPkz/AtgqDCwbb8NZN\nrjz9phtCvQz2PLasKXfgb+8JFDASjWDKyOluJjGdt8Jram1AbbwV0wycv903\n97EAtXGTMl2CZqIkYccNAaMsaAV097DKLIpA7Nf/fnfn4dt48XmQArKost6P\nUwRoM6MG98N5/fySl4E5e21XHf+uKriTcFLh/kImEyl6h7VYZWC5ViEsYdzW\n50LeHWi8Q8TqGKRvzzEG9VyOUdcabVut51evoch1Tu2mNiHY8ZjxH7M9+wYK\nmqPG8801I4uqTQ9MZ+B/DTGsZVehUXkOwXQPE/mq266l2wUkXm/npn8sxWc/\nSiZ+AFLgTypb4/4rYw75WGPPe4Aprh6sJZeeO0FOrBREaoaHxhnLsF0k0zZ0\nSTDKfebaSarDpoOnV5ijzWXtuLJRbfJ9YIn90VmuYJkiKHVCHMog55L2A2Wj\nA9j8LfPqMXUmzJThElsjCaxW+8GLczPGXfLjkocDI+OGUSkJczihY0FG4amx\nqz3hdSgxPIp+wHLpeGQlJPYlSALD9riANl0Vqqr6hLQIuZTSMvLbNJFTV3HO\ns3uN/fGRT8II+dF07to4QJ/PlsnoxdAbhjWTwQt/ZSGMDTJdOw8mC/FTxmDk\nj7tA5+iHOqpKedbXm7VtBePHSQoMUmeeR0nJb7l+3m4t8vbGW9/RSK1LjeID\nAfhr\r\n=Yp7k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOIAvVxNxgDsFHY3Nshj9ZTV3YaVUS/rr+8LRQzo2bwAiB+zyPCvNo5WRQIbiGc1ID6V3GLA01PpKN+0fuhOdwp3g=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.40_1533819230186_0.32113644651966067"},"_hasShrinkwrap":false},"0.3.41":{"name":"warraysorted","version":"0.3.41","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"77b293c3efc83971c408d86d3cd4029b959f1172","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.41","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-1LEVB6o0sr6ELmaB2Dy9CABKqfNVAint3IL/uVvzdNUOtE73uo4xyEO+4n2S6BFWFcS+895UUABvEFF/AOVNcQ==","shasum":"e9d7ae13a79e67f157d1bdf643677dfda8b3076a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.41.tgz","fileCount":4,"unpackedSize":35827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbGCaCRA9TVsSAnZWagAACtUP/jE/a7pIXFgsE36ad7aH\neqBSk+g+/OUBAsIiEKmcQgWCwJZT/XEvSQygjJn3o9mlTuOHQHnMPQBPzlVM\nSa88pmCdnEKvKfgSRB7plvwC3RVU2eoumFEAUaiVzvLkVEn6h765HPaVlqJg\nLqGNxicj0V+n9cmxQ/M8bt7p2f0XbkIr6n6DNtwBFg1had/1WXr4bnH3U6EH\nDqBTeXYQOM5u5Wzxgnkj2fG9DVfudatqJbxvzgaEeH4eSkPpKzibdMUYQVL+\nBWYiTqKx3MFyupvn/dPwE8W7jv9C9+oCu7S0jJn3wHCMlQ8Ff+Ilxs2jHWYt\nYLJLnO5sSVoeFWrcD+91WrXQjAKkDtPJQiTZqYMDx2nNre/ASVLrGWoIyFqX\n4UJH2UOukjIXktJP/qPnJhpw8axWuGqS+m8gZuUyIqmozI/cu3mY6hzSjAPp\neZMBegwCimX9gKout+VWK1h/JMJ1u1DxMisEtU+Y20Z8xnperjSIkeTL6iYe\n/2mLylnBZjeem9aPQVWr7kwUx4DCRBfrjNME/9ZhLLf12XdgsJhNpZw3lx1U\nSYDd8hhsI0s4vcg0lYzCUQ0B1MtlpYNnlC645FZPBzVZYCOVcQOcCyfpY6K3\nHLI9D/hFti2+mMJFE1E6jLxqjrXH8oo68zExkanthqhgpeiVWSQu8JqHNkcA\n0NjW\r\n=fyRA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcn7q1MQK8yFZmKjuTMEfP4diEj/v5Nh5JnOAOjAhsgwIhAN+YmsCktmSq3f4zKq4Y0dG9iebWfNxqKImVA/eijYv/"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.41_1533829274183_0.9583510575622194"},"_hasShrinkwrap":false},"0.3.42":{"name":"warraysorted","version":"0.3.42","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"00f99e8ea31ddf6a3735305b6861bd32247f38bf","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.42","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-SeWONVGJPfgstUyxmCrYnFkmLkWkuIWOKWypj91Qhrr/1SLZnB8gTaKKWA5+9PcKd0ei8K104WQWKe3qzdl4zQ==","shasum":"b29bef1eca6980ddefc283faebf3b6708e92b22a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.42.tgz","fileCount":4,"unpackedSize":35823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbZf3CRA9TVsSAnZWagAAVRkP/2CHcWgIflxTC0DnUDqa\nJpdf5b3lYO/E6DceIEfs8SyDr7gZI70eIzwRV1qSpv64ycu+JmjQpnBH6O/3\nIXkJk3tcfE90oyyu8CVRhZqrc3zVkUbuMcaB2cqUALpqCE7OuLCjjgSdkv5t\nujdACfYOZTXVIOL/uZo/phBbGgXFrotOsEcJofkV/JHfQ8xlDj4KfPViRIzS\nkKyyUfxhekEkZqSvFtwFbsrfzLtxGKreDh0/J66cHAbQ5gKQ5lMnZuwEdul5\nk1EE6sDeq/gXfisxtQks0QWC3nn2QmTXBGg73mJreJ42WHZHqd3pzpXbeRTd\n4HpbkFjfBwPtmciTevTsBasdf4x88YZkKA+zN1GllYVp/9ztvtAdnFdYwX5n\nvvP/7n6V1KTLmECXcs9R/mE54VlAPiQkTDMoKDSqRbfQ0StwN8AHr97yHqc+\nmWsyEK/0rp+ck9w6h9jIlWdXHa/QRysoNR6XagjrkyzeXid0zyl+WflAyiCe\nnZNUB8u17ngIwgQsEmHicUhluzPLt3dxBEL/+Ddt4aNm/HJfyNEyPn6oDwb8\nCrNlR2HA7/xn54gvYQxKbKRxL55JlLstB2vLaRM8WD5urOQ+Q+0op9hIOFkl\n70aIbgqtactp4KUXlOQRw1fERKE+PrTwIfMUK+FBVanwKhbMerLcU6dSaYcQ\nroFA\r\n=XQyg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjlanzP0s/0sCj6KcO+OvLUZJ6uoRt0y9VjQsj78wBfAiEAzWtDPw4RnWVngAvjIWAMpOBs/5DidGcBScmVVUFCYh4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.42_1533908982900_0.7140514704536651"},"_hasShrinkwrap":false},"0.3.43":{"name":"warraysorted","version":"0.3.43","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0786c515041035e2e2752ec596755ab8fdba03d9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.43","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-dOrht+3ht56FF36pzufxm1H5CQ9YS8PJn895PvDMDgJnQQoQXxmwddLURXPZl0obirwkC8pLBZOM9yLVggO2bw==","shasum":"06a6cb44dc30709d8da48dd5ff7be62b5dadd808","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.43.tgz","fileCount":4,"unpackedSize":34605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcSpaCRA9TVsSAnZWagAAn94P/099uwXgn/h2v3LvkDuR\nVGDL5bp+YojXEt3s0BXkY/JawnMTmEepENA5Ikmucqr+aYlWVNB7V514LbP6\nx4tdCv9zs960UYOHLOC/Rt6EZ4UDkF+odn7h1GI3MI1R4z59K76r9Ei7DoLO\n36BHejpz3SnN2GOTza98V+uIeBbpYIxC+hByXXIzXcRQs+KILWuxnkN7Zg/I\n3l90GKlhfpYF0sl0XteiFiKpeskBdAoctMx911OJZsdW7VT7AYnSd4z57g9+\nVLTPHrUvcWYzC5xM969HPQ+xU/s1Bxd5E+NBXywb8a2mrLP6mcTRJCjuFu32\nsfrR7Jui3EVTyP4haey6PZcyRk18Z5II9UgUaGoqHs5ShO0S7EE2XtQ8gxgE\nahGnCX9nUxlkrhnNZ2hYDqsaEgTNrQzxXxTmo6NHGz6R4Favga45Ny4dNMlS\nHe3Wd8M7PdJP0J0ZKorGVjtUCdUqq2sSl6BQ9P/AIOq4mms5VdwZXbiObhu3\n3K9c1BWgqdt2dYmjz/IhTqEQL7c4PHnXOvbsUSLcqJDYEcQxZC36KQdWbYZE\nIbk6XjmQTm/qJPSaKZdMhlET0qO6q02U1NVEwsbchOW1iERDSBeSmiQd8FPr\ntma9ci2zojqE0rHDBxfsxpIWSa/UrPkBkH2uSAhOPD3n66dBQ6+Ul++/Prt0\n4/dt\r\n=8Gce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfCHYzACvfclK8svU3eiZcOo7uDC5Oaib/do1FSrGusAIgBkTPCOkB9qsfjYIQY91kEnkGsaa7bSEz9Mt73S9WQ/I="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.43_1534143064910_0.10328071834276153"},"_hasShrinkwrap":false},"0.3.44":{"name":"warraysorted","version":"0.3.44","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","files":["staging/dwtools/abase/layer4","production"],"directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"3772d938d129a38fa838b18c549fcceb70a0a554","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.44","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-BkDrCgDYDg0DHcAdmuiQo94j5CnC9JiQCm5V8L6wSgWH13miqoUy/6xgBC54VayVWZVbr6n489skNWhjZHHPdQ==","shasum":"5ea3376df56873857badc5b11d40fcdb7a47fa2c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.44.tgz","fileCount":4,"unpackedSize":34476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcT8LCRA9TVsSAnZWagAAWOAP/12FG/pKP8UXOcRrhKuC\ntI6UeUWkUp3OdRw3JcQ41xRTo0IXZmbHGm5cNfOhp1nttyXR1VUdXxi2hUvq\nlLHgy0HFHb05pkqS+XL7CflTrFzV/LhYJ0VX+u2nyj3cfy44b+5HVos8lLhM\n/cgoCkrXU4j/ibeStCqwiL6j4z/tVaeZbkYMGQPeq9lrX09Ec8TsTcdEnI3V\nDlPpmqQnAzzp3DpBwLE5fiI3OaJB7LfLNjS/Vz24TLOABQEiJruB8gjtCMgD\ncOcshhTLhZ6q1hMnkiHSziM05kScI8Nc5D+nay1a3NR7F3xibBtdTD+isRaK\n3K9TLM/3SwdW+1NEM97z46MP4gZN9iZFSdQXms3iTwpY6ItY1QblEkLCuSQF\nJzIrANNdCFFxZC4gXyVCgVMVBI7DZXQ1HRrAjiJW+op+2plTL/kPvL6M7J0N\nx+tnJLL9kw5IYUzDdebNPBtZRFZUmv7C4x3JfYuB+50K1I48VaLXmwDQzX5X\nM0WaAoIUxiloJraS8mt7/Qkfx7DZUFaeUKuMXlo/Z97GvIC7fSBu6eqNJjKR\nmwsTlYHMHdkdRFDkrfEsgNI7s9GYKR0ipObifWFOf7A47ddOmAYJst0QdOEV\noOc57XH4DvArRx8zIfi3+Smb+Ll4SSICpCmAZFItZFoYUnTLHtGdhcn+8V3x\nJ7Zj\r\n=Sz9g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx8k2ud8VMaEm92HJ6woBJn84hmdvm+8Z3ViNULbgmCQIgCJsex1JBsePH+YEWeEy7lO8Aum0MiJvx3h2yE15na08="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.44_1534148362937_0.62467792795816"},"_hasShrinkwrap":false},"0.3.45":{"name":"warraysorted","version":"0.3.45","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"70d8b9667113ae46cc97af7d266cc2fe5280302e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.45","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-BQzt8p0INydDOips7UapkrevRNPbphOKZxHUZvCvINW548eod64845zVQMs67Lb1i9EA8ws0sNeNfTBc7+xnTw==","shasum":"3c99ecf98c9ef0943a3b2f2d47c1099509834ec6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.45.tgz","fileCount":4,"unpackedSize":34477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb12+RCRA9TVsSAnZWagAATMoQAIDYYB/5NBbukB0t6JEP\nIHgX9BnR6sHYgZSq6A1I73m/aR0cUng/LyRnonTwUAb9zZbjnyj3SxY+Gds7\nAUlz10EdbOAYpFGezlyszU0QJHH8u3/X/hVNhSXrMiofu/o0r1l/fSM38ly6\nHKUlCAORFOfDUxXWblwUCoFjPj8dDViuyOMWkZJPkJV0wCBoU4wQqXDDv0Dl\nci4ggB82jMk9Y9+7Pw5e78qfuFoEax53qLdAG6ceSbMSXDh3uKkR/ufSXarv\nU3drXTsnZgOo1heHksc5SPDjGmu8YeezJV/gdAOgekCnjAaA87g3O8BAS2Xh\nc7KCYpmpmTH/4SdympxS1lgLhZgWIJo9QYIRBmAINoXoxyJXR7jPO5a/WfKH\nwgMl/ZjQLtw6HRjx2m4dNLyF0UTjXMoEA1g9P9K6Kn6MWW/WU8Lpv/fCO/bm\nzsylcsURAe56UE3kFB5ofa7hQA7M6bpvFDwK1prZHEJbujI4mqfPAL/w6gu/\ny5XfqOXAh4bPUlWISBlEASX18PRApfbhiSI6sQqQ/lgvK7uh490XQZ3N6Pnu\nmuGykZePGkyrWV8b1JjLNv106UJeQsLUOnS85C5RO3qxuwedNCqRxfSaGtPq\nT244vDaSWnW7lISZa7SXV8m6fQNFDiN0gu5aemlszVyXrebA9EjbE/g0apVS\n/CZR\r\n=Dd7E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDW8L+JEphwfV2S+tEdsaO4gUAF/qvUYXjWqNby40COCAiEAjK2/y8gxwJLF6eI2vldcmvHyaWBiQ2el329NoRO7Z4w="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.45_1540845456380_0.6531594988948668"},"_hasShrinkwrap":false},"0.3.46":{"name":"warraysorted","version":"0.3.46","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0f693b23ace87f034f7cedfa8eace61464969c7d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.46","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-hFszzunpADBI41tzGc3HU9gFgdQyez0b0g+7BZsE6NRgfODuXH5R4tt+KFADIh7mQqcGt929iOqa0R/9j593CA==","shasum":"34c0bc23a35dd8cd36a4ac5930ac0f3b32d7083c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.46.tgz","fileCount":4,"unpackedSize":34478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2qZQCRA9TVsSAnZWagAAowgP/R4PiaQUuiGA5o3G6sOj\n0D/ZGTUok295rv8yQCUiLlWmisMDemweN3Xk9/bJGWoRlyo6j+qQlcdCEXOF\nFGw87cSWsQ16OO7msDTcAm/0gzxetSUZGj6+He7Jk1TB4dwvq4MHpglwKs+F\ndvps0mQyANPgX2N2IOHRFcodbGmzCtX9IiOZWAZqxPp9eyZ/GikThAv+DDaF\nUrEQoao2KTFLS2CofuxxsIJw78upfbSfGWe1JEbTpWYND+gIWdB9yvpsVViD\n2EjlaW4INm/CFogHDvB1cEusLdJ636qFtlpXxBQd5/mgeg3H0ya+qV6+mG19\nvnJetnYCZ2YJxIwXMvl01Q3gKOOcEVgNm164p8xGdq07/XHCgOn5XSSNWGFN\nWW7AEn48Jr3IC1gsbwR3MBiPGlUuuS7Hf3XeCwkAyq/r9B6bIamjhxfHGnxd\n6Vr9qF0v58TxDTHLYBbgXh0waJDa9cMZUvv8mqMiZX4DxVknmWQlbnmWBYk/\nbf7fWhlC6ZNsltYeeZ9cYzstmPeCUybSr1NB+lrCWy/I1DzIVu7vzJR13Kxo\nbo55fGjy/+AB8lhCyX/2JSskZMPmHE3uDYxywWH6/U7KOLhrXI4zQLYHfTtO\nqrzjapX9DjH0h0nYxokMCqKxkEN6u57dk9eypns/gyA3jcFahtyia3BL44wY\n7HSi\r\n=wzWr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCwVjsUHGE3mJPjpOV9j7oDR1VlZJzNzR8zzPyc8UaJAiEAvIF0AE4zdx2gBjQNNOTl9W74wwzhVf+QFz+jhZgvpyQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.46_1541056079795_0.391494470318126"},"_hasShrinkwrap":false},"0.3.47":{"name":"warraysorted","version":"0.3.47","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"abe7a729f6b6fad876277f9fb680cdc4258679a1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.47","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-OkxNorKC8kvynVo/MeUP1zl0GQuLOFUm0vWfw8MNg7aov5GC99fUQPC73g7UbaiIwO16NB0DXARTy5wQFA7qdQ==","shasum":"c424fb1028b89b071d3b56a634eb905420c346ed","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.47.tgz","fileCount":4,"unpackedSize":34479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2ru5CRA9TVsSAnZWagAAcuwP+wdiclRQ8bKt29scDklU\nKpeBNB2uefcQDt/Fg/3YHPfcJYZZfdJ6O/tJOsDcegqW6rAj4XT2d2UuHuIe\nhhupHv8D/HdkLIgLtsPzCC/+Q5v4SMKccTlZtMoCjCn9sTybo4e2w1Xe/698\nEC8EJ68/Bm1pM7fef/no3/jOLPm+6BmUXywZRAm0jEgm0mfug+HJh74SwqkU\nKJ7JG4N25nXqpKIOvHDP5OyoAYuup3wB6oAaSjzSFS1bGmLeTXn8u8qpjrig\nHMn2HXQFOqaWBlEDNi7l2XErlGpJZGH5V+oIGb3IZ+bCnTnSEKyNkBx+TlBv\n0F2oskKtHFSdppTw8AeDpUoiuqu5jP4YpSIPbf8aIjkere0Qd0L6P6BL0EVT\ng26dcJqHzFKHPLYjT2QXUppZMyOhZrlTusXrLtIoBqZSrdD4ZGcTShbHV85P\nhX8ne6UDxmcmQH4xi92YytcnQ20cBERIgiRjAgfiCF+mfm9Yo8YN97Zb33ps\n+gVnQYvyEm1NZXLissYUooQU878BKOgqfOp0yz1k2rbN19rcXD7UMfRymC5/\nYlsetiJAh6a7ielu7aEg+C32rndiD6NJorQ0uN4o+Mtw676OZgicZEkvsleR\nD9NIBIMA8gGrU3PeOf9u07VismbVabKrqJwKUoVn5STB5BsD9N7RSK0Sm+s1\ncVTR\r\n=JFEj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8buYsJ7u2hgj0oIIjs6Kx9CN65D6abBkevCChUwRzPQIgPNAs1rpuoM40QDEu74+Uu50xh1fEe/fwWvrPjKSNvDc="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.47_1541061560931_0.970835301760453"},"_hasShrinkwrap":false},"0.3.48":{"name":"warraysorted","version":"0.3.48","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"54229d3ee4ef6fc6ce373809a596f5aec360fa0f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.48","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-UUfwDxL9f0gcyU8sLAqnL/6yJf7+aJqT+3I/ByXkJb3w5RGVqnNdSxRqKYq3U4iFgH98Zz/Zuifaz6BaJ8Jysw==","shasum":"90aebe6c4358727a2dc60bc96238a94b8a113d16","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.48.tgz","fileCount":4,"unpackedSize":34480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2vG7CRA9TVsSAnZWagAARs0P/102+9VJ0t3XgAjyfMXa\nc1aXzs6w2fn3oxrYolsd0uNgsD+c5+AWc5syfsu3YrYC3+qc9Ui8ygRvVM3S\npwbiBUp/8a7EMZgmlaoj+mygelXeJynwgzoO6TFXY0FZfK2fDMQZmgpDec5f\npcd6Mnp+mOJMPi/AiJlUdZl8tBwPevNiP1gOyM6qUDfwZRvXdfU/Sw5nQ+ad\n4nacJK72iJDXfSIamZUgVfFDIhFyKU8yf/frFIe9l3M0C/+s19cjeAGGCLQZ\nMttyfaP1oZg/AsBoywhj6toxr+gIoRNgLbiKMm/wzdqjG4Ww+dKgHKmhq0f3\nZGKRJemIHicTZuSWrxr2zCUuEBGeEbl7RBjGsi4RlhHGIsCNl1P4Dfn0exMn\n3pgfG51P4eHJLZ3GyIp/EGVcyeN+40sMSvN+0kRtuTniEur7tJxIMzg6rzpA\nKROCWi4T7+aaFsNTFXrER19jb5Nooi/HO6dKE2bTIf6/EyO46mWmKu2/a+fR\ndaKMISB8xkZRO70UQVp8+k/b4YFCl7Yjd8Ie7aRNIkCgNl8Sp+4jAa7n59J5\neqvg7zefKZnCLcc/CMHpua/NZiGKffxR7/Nbb1yi5gJELi9eZhm09fAI7bN2\nvOq4edMl5tilJVcZhvpEBe5RkRzsGTs3Q1bDjFQjfvhPMN+SSSgKkHguCMre\nLaQP\r\n=YOdY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZfNL3RjtgpvL8bJ2X9npElxGg6vFeZ7vBuEX4beyteQIgHKRBT3KCjnZ3TrmoQZ1wwhmwwHPEiXC9ZvA+SewDS5I="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.48_1541075386517_0.387137990855416"},"_hasShrinkwrap":false},"0.3.49":{"name":"warraysorted","version":"0.3.49","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"b38c59b23373067189e3d7a5b0b4d74758a48436","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.49","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-ak91Ve9R2JiR6ucpSs7T9XPCoa6M5y5lqJNROgCiXU4aZJkvXlfDDzM3L9WtdIy4AugpEUb/Oab3xCDuetP7dw==","shasum":"21bd2aabcff1906d46dc4d32d86647c89bf4323a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.49.tgz","fileCount":4,"unpackedSize":34481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2xNICRA9TVsSAnZWagAAcCgP/iqs+rrAEwMgshjyc2cm\n9+jhEKaOcSP/uF8V15effkwBJngL8E/mUvZE0euY4H+3YPmhUXMnmLucNN4x\nn+sOrT5G/TRb3SF5EjlQ4NHahe73X91uqkXOdzHXKsNqQs/v9Wbss1p8t+hY\ngXRWEB6d6V2GnKREWa3d/Hk4vhfO0Wd/ektOBJN8PZO+V49Tn0GQI5YNkhoj\nNaosFivwyx8DIMf4Te/Rq3TqbhiiZHomhyesNcYjciEydSxOo2zzj3dA2PPr\n27WO2KrOiUuzSpPALAsnEbiJvH2VdHxk01sKkoY3lCP/Xkd0yMXwXM6OR7z1\ndjpS+tB3r2GV40IAXxf+/+SbDq1jQqHqmZSxfiKdR45imGPvsI+mN/W3RW1M\nphjoI4Ifn/UAbioqnLwWCANKBATrLNnmV6GBvLeiEEKW5hTIBC6U6zIXdiNf\nawsz1eYTq+QYnhajh3TczEGHNEybntZ64cIfQ+eT4FLatSYbo5EbZrtnu/Na\nuVlt8Eu0seMx+OXFKJfFsCzWr4QexQBoxfg8ZGfTJGwWsxO90/ksGGWQNBkH\nwNNHtviJv11sxhwqVpbJC60qwmQRiH6pfX1GpHXImoHFrMeQ3YXUUdFXQGge\n3hNZEOLxl8js+gzwlZ1IrCpXIsE2lZjzidi72x9fCkj+He2CzPKc3IsYaNOC\ncAAT\r\n=UUW2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBMoLj0RbeGOLID6tdiMxUuH+3TOLUUu9zxDjvvOvp3vAiEA5xrFxlQOqX/RcEe9P5tw8ILQyHwdFuxWbi0RJwaFJz0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.49_1541083975548_0.11564844348475845"},"_hasShrinkwrap":false},"0.3.50":{"name":"warraysorted","version":"0.3.50","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"staging/dwtools/abase/layer4/ArraySorted.s","directories":{"doc":"doc","main":"staging/dwtools/abase/layer4/ArraySorted.s"},"scripts":{"test":"wtest staging","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"1aed62d5dee4f9c4ed3422f793b078fff88e32fa","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.50","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-zrARWqJKp9C/5uzb72h9wscxfOCJssJFq15xXk3e+YSnN5suO60Va8usZTMpErFpME5V3h5Fxowzmnz3A4ir/A==","shasum":"a79c644873a83cc8b6bf56ff083a04a47d14f879","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.50.tgz","fileCount":4,"unpackedSize":34482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3CSNCRA9TVsSAnZWagAApwUP/irq0/XY6J9RBmqE3uMc\nZbI3JPmbSlckaHo7NLOnFpYrcoh6jz4FgRDDD0I8PUJIp033o8RwLt2aNm37\n236Veix3l+QKbFPDhToQyegta1aKiRqkIdrsTrjZVIGMa9AmYk9m2XzRD/Sm\nrBDsViJLH0GEx5gLKFOSHr8ASW6ulAlkSLHCFuEw0hsc/14dJ16NygDGn+l/\nvQsLa0aRLAhlF7ji8+HaT7XR6zjGlAA1Mzy96UFCmAROT5cXy1VXoQx7nnUk\nWRRDJURXo6GeQri4n/r5Zj/Th/3QGzJeyAtSRqCQfzkQMhvinx7XcYl9qFwn\nvQn+8MUQFgVrg1V/CLgVqkMeENEFdfad5oG3UAQFMEPkRNxmlo7eZMVkXBMy\nUB5BJBD6Uz7Di5MSgG/14WprUUyIzyU5SuDGqHJr8eaerOs8F+ikiCEvoPHo\n7zb6s7n8fE6t5qBtq1BWBCT+XQF3PDqb5DJMzHjzqBkgBs4WnCzEqRBEn85T\nqh23q9/vMKWrof8h8x9trltkcUCqWLgpQgTxX5vtP19WcMwFld4KGnrr9KZ1\nDqPzMQ4MvnVJP+k3mkIL7qrNiqE7i4FN17ecXZw0JvoCmHnjV+osQ2dNpFx8\nPZgKW88fIYdO+Iqv/7oT3+LARDv6FGh5oLJMS9lgWgMgi+0NG33WKkVom8hJ\n5ld5\r\n=p5Fi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyp8HZFR0d3qOzTWH/WZdgm4FuvZyp6/KFGLhfhM1mNAiBvtg3Il4OAk/TTkhDsJyBD8WzeyfnG6td0T0z+ZhJaDw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.50_1541153932464_0.4253777098886107"},"_hasShrinkwrap":false},"0.3.51":{"name":"warraysorted","version":"0.3.51","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","make_doc":"x"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"b063863a0c9af3d296b5e69c3d5f36cf7958d271","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.51","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"},"dist":{"integrity":"sha512-D9jpbFHTv6alZ/9nbX7iqvk/iO3YnLI4I9EWg/fy+jdJBielGiaZ5XOv56A42+w7OneI2xPB0Ybo4+r229fPfA==","shasum":"77d5e2d335a1b4800d6e95b541961a976b816018","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.51.tgz","fileCount":4,"unpackedSize":34463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3X3HCRA9TVsSAnZWagAAEUMP/RJk8YPvT95HhZ9N8FpB\nZ7vRrdxkRLw+lhBF2RMJ2DwlbnSqDlfokI45/MMp3FGgl0YLjAfDldBArejm\njJ1mdV8/CR7jYG0ujtXny687gBegRJcCGM8PCy+unqKjJBWoEorydgFSWjEw\nxGuF6vkK6a4WN4Sh1JHNRE0Nitt8S99AlM1MSV4t6exV0iuQk3lACxWqAuuI\nCsueAetlgJaqBAQ4qMDyCL+j1+PcKCD9oNwAWA/1i8syTSKNbvvJOq3vLux8\n+6ljFwwqZ+7jFvFGqcTs15SSABXJBe97TsGePCZ+kshr9hByGXimFlZuIapR\ngtycS18mPyS/017XgbC2boLuWHET/MdSrdJ/znkphwe4r9AEB/6BmS3tGRG+\nJ75ZgrZ8ZFJFNdURNv5/KBr2HirxPbf7auDrNZZAE1ZVaxVHldvMfY+Po5WQ\nmlHIziE3J95blWS29ktRMg8fEpAig+syofOvLKWzxew0AceRcjsIWKAXbbin\niK/hlMtwezEXZ2CnqKfuXs9CudiMHRJVw+xZc9G3zvi7Rbjzgt1xf8ZKBHdE\nZymq8yIwQC6TQ8Olw84uvPinyh0zaffHvce7u4Ovfl4TRmhMwg5sy3S2DJX2\nqwkcEMfjM6QjaMO93ivd4x46gKvnvEVeh2oJzmJURqmJdM/wQ0LICfXOPsXa\nrUzX\r\n=zmco\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfI91FRufOkB69zr/qdPxYiou7YQq2t9u540lR0BWVDAiEAno0XAFA+dY3F2Z9vnrhP3o6yBvRmin+Exkkw1Yy+qA4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.51_1541242310320_0.8450087850918777"},"_hasShrinkwrap":false},"0.3.52":{"name":"warraysorted","version":"0.3.52","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"a8c3ffff0f207903014c67d1767dc6fb2bb6b096","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.52","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-h5UnW8+OmWrwjZS47ibGxysnrqABgstZP9WCyqGBoti3LCbBnZf1a5vRyJtTPkUVRCYsrQCWRLb3wg+Ku7HlDQ==","shasum":"0cb0fbba8395bf09b5193630f44a778354a8bf08","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.52.tgz","fileCount":4,"unpackedSize":34474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3/IHCRA9TVsSAnZWagAAxi8P/RWfasbAPZQzhy+2s7sI\nKQWEd7HXZMEZ3HipSvE6OtrjIdlQUD/0rqXuZxkpn22Zz57OWR8UYgaD4C52\nND9x7KhmndLH5GSMMFFweTb2XFpmG0LB3/ARrHDfRhMM0a/dGhA8b5YTXhyf\nYlqte6xpdDQ867S7iCR64yVZSg1f91GxruSUyjVoshQMhmU+0mK9+7HOCyMa\nyPXusbIaEogkQd0X0VzAIr6YF50Iv234MsC0OEWGYpd/bwnc6wZzP6NP7TCa\nvRmI7F3UxD4lA9OogHfnOjFI010iq2/GBLVr517l49Mq1jNVP20jVa3CBJgb\nAiC0GDidYUHVfvpFLZ6H09JQ32GQhJHHzfWChdSWNWPh3hlMsCCZO6XpXSYg\nSUYVL7fqfFBPMna0kSLOQTKAVfLpy7Du4XTjzAOrO5edora3qtl6EYULfBq5\nd5GcUhUSZI3CC+1jejb0fqshZN5ouCW784JYvRmT0+z0BO8Pj84OphWUtG76\nCXbvVZDJqrheEdyyvtvXsl2tlkvGKuXW7gmw8NRdY97o+l772bUOduQY+6rz\n9e/49EfNIXJQDYEXD5/pE2KMUH5qMO4QBqdahambb4PWGZUergTexBrtWwZe\nwu9vLgEFnDpKC5yh/+zxODwnSfVzsz5NoSHtRaxFkWyr0sw3o9ma8Y8217hq\nx8Gj\r\n=+jMQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2YoCRD5kgolm5sDFccpRtIiSLNVWqSWqciLv/ac1uJQIhAO9Rnt9kpnzORUh/EzKCZUYwCAywBHwJy7mbHq/Oli9m"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.52_1541403142826_0.8241880024038895"},"_hasShrinkwrap":false},"0.3.53":{"name":"warraysorted","version":"0.3.53","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"32a36f31799295bf275fac50f722d9943c3d5216","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.53","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-yIX8CsJs5TLVmkEIfSxGkJMaJ6o5UV+KyKl/6sgmNeDANRJjrnxae2MvpPSbGo4KlopBKheQE0BXW4mLGdwZUg==","shasum":"1453b0ddb26f31b605a536d92a260438df961e8f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.53.tgz","fileCount":4,"unpackedSize":34475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4AQsCRA9TVsSAnZWagAA6GkQAI00tuFE5WOw5Jb6ssMW\nPnEc+MmWOc742gOkNGqeY1eR2/iLvPD54WIQPXmifTEMBNRJNFc35IGLAlO+\ngbXeDXXKvwAMasS5WiSoQyw+1R4b7L0LZlF2aKPsbsdRTQGnlQGEMjXMCm0M\nCPrXt6kfcZzF8eB79GajHbrBR+aVIyXCYgRod3ag4yye22no9eNqmWSLA5dj\njE+8EGjwP+f8E6swd+/UKmpMDsNEcgeI8T8/SEUhJwbkMorwWQQKgFxqt2EW\nuE2jWIhdr1lOqNO7IPx+dJasbW+FfuyXpkckaNso9lqRiLZ2W9SYehLQ0pAj\nzquEimor4gQHPGomAU/hVlI9dU++9+VtfpM6fPbZuMWskMKE0qIsIrHkk6WQ\nEabSRPZrogSAsxjQBCSbQF24yeXhJeZTQiuImXBSFWAaG8kzDGdTYY764F1B\nISuY75wrXYloJM079fSWab3ccRHCLbKzIi/g6tcKmJVPKCsUYGFd9nFseflc\nVJ42ZYAT9PGSP/ZgPjFJYJisJA2RWKrq2v2Ce4nnUY25MjIO6a1pREMgSGk2\nN2LQKNJqO5WnXMuAUeQIoflUF32RxbcgFnzG6jDJMlko6qlJoXFUcA3dPnBC\nRgbi8SHQwaHP+BPSfhV350gGb7W+UNmnmtc+6ylQYmVvG3ER7BQJ8kwQCQE4\n3T5V\r\n=Yudq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC79Lkzua3HXQCi5zvkfon9LhQTcXK6tcxMqf4Mog4ZSwIgIc/XmNKgEYNXXNsDRpur4gDOGaZCOsLrJpD7JWJoIzQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.53_1541407787534_0.504913837063576"},"_hasShrinkwrap":false},"0.3.54":{"name":"warraysorted","version":"0.3.54","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"b45be6e6b7f43aa387a72fe724b87c7fcff33ac3","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.54","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-+19soOLo5n2L+yq/CFAr7oDZhzN89hciTz7UWc/69gB/cwfQTkNQXdHlnO563/iiSaSuRAwyeMKIizGO74bRCQ==","shasum":"2afe2bd4034270d9acd83022c3579c40590c300e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.54.tgz","fileCount":5,"unpackedSize":34906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4AshCRA9TVsSAnZWagAAWeYP/RaO6kTXWjHRgIXbEtCi\ntdag8zFPa3ab+FWe0Nbbnc6GXXk/5NwKyXg90u8xQWuTxZxbdFa3kbgJ3n3C\nYIJRNLcCCGsgfCwRDVo5K82LKWnhkaFDRf5tItUdE669DoA4BIx8D70s9rXw\n9NUkPy0KUgi0aqrpdpPh8ZW/KmnGU0GBJ5+Kx5Bqv/M2n8ACyoYRqQtQd6RA\n9ixa0kfYdMaok7AWOharnL0bP/t/pnb1w37yll/EIrmR7DzTnSIl990d9LQh\n1cq84QKNyAGJ1gyzYgbMGlXFNjckQM71VHj+uRBKGrUg3q8cbEAF9SjDY3v7\nK+mGNmWRJB1As+YNJ8FiGe6hxlei5SjN5JVdbn9lmLqqLRAp/6dzE/e+E60h\nm4JU9N5MKm+W+/lagcHyJ4HgPwBcZWSetfdNs67NYABmd8kmsM1CduvOpF0K\nzACUj99hr3VkoE3/VD99QHXSXhTeWKyvnYeFtfRbqYhMx/u99OI0vgdNrJv3\nWkqt/28lge+M3aAEHjJCSNBy7uldIkUI5/9JW/3wqW3ud2V9x1cuYvZo59BP\nevWCPxQgMQn1q3GX2VXzTwbOkW8rfZgTqrOdyCeruhRaf+iFrmiHnCUAzwdy\nblZEdoSULH0kgarI+CuhP190Hq2YVdg6I4y2nawXXqvhW3oRwQqI9K5K9q9/\nuTW7\r\n=WBrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5YCNbwUpIJT3UeSKcyCFNEUFuf/55pN9gHgzMv8f0zAiEA1IATXXI8pWB10rKsK9zTIyDDHipdf5m997W3MG3nBL0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.54_1541409568712_0.5900986858484285"},"_hasShrinkwrap":false},"0.3.55":{"name":"warraysorted","version":"0.3.55","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"6c132aac2aa07e9b2f671c22f1549f76c8e4ea04","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.55","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-UVol6FwqZeY8U2WEg9aADexRoqPCgM9Caakfn50Zc4oCyi7n1GIf0nSGqORzGWY2zqoO+vacIb5tX/YZQSEMLg==","shasum":"6b7d2b2fd057d263b8c7acc4eecb60ab4527b510","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.55.tgz","fileCount":5,"unpackedSize":34926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4Fu9CRA9TVsSAnZWagAAWeAQAJdUB7jKM2JGVztTEsAF\nN8o9onTYQsCjza3c5xJP93dt7vHx92cgC5NKJdKU5PDGwKqWvKRAKXqMt7wr\nxi+VG3jiCtvsCV9ybMEPBCdQOpGCk4CVIqruJxR5/xkSjqIIkv9eskLp9ZWD\ndsbhYmc3WTbK0F9OZm4sXypHwfFi3dmg5uzKKoWStAlsbW4cN3iQjVmNzfOD\nT6kWBBCamVnAFfpWLj9tCy6iorzn/TicMirJYitl96t3M9ZVD/pA9KkLrudv\ne9hyIG7vWcn4VQNSdh6xQVoEG5oiicqpskQwQmbMpvU/KRVnz/rB5fhHbdmH\nuQ/t7Z6QhyGkYGrAwSL9bWYgd94tv4povEtzkoVDuWIhViipxWQnE76CKjkO\nB9ce90shUPS+bK8oWVXcdAG3rms8IpYHh86UOWh2dRP5OqhrcUwF+OOJpCGY\nbz4xMnqyiUAv60giDkn4n84vjAbfoN/BWuk7Ec3laHFatWJM81J8+yvMb/cV\n+WTeP/IyhAz7mk6JDXk92/LIxBVmnBmjJy+sJs3k/f8GG1BPOzzWHCt+O1WL\nTFdnN/CCgv24Fs/oQGBKWVXTclcb4GsQ4kSH0kW358ns2DkDJh/Dj9IvLaOF\njwOtdLRC08l3PkwLhgGN6p+M5BbOcilUtJiizsiOsOCine68Cu9ZrQDwHKBM\nwHna\r\n=/oyg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6KpjJAMrxsZoQAy2AR/0c7I2m2ux7lUst5U/0oKe9cAiEAnHInl7IS+PGaD0NuhBYGprYqzCa5AUi0sJsncIcChio="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.55_1541430204777_0.7647267828107307"},"_hasShrinkwrap":false},"0.3.56":{"name":"warraysorted","version":"0.3.56","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"98ce12386b8829fbe34b82d2ea1f1d913c092527","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.56","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-TweXUyHnf4gPwLZFpYrM+zUvLzBiNxTIJEqqSJBObNBc0v+08D7PAXHKIdWlOm3saHe4PIIr1mpJVUHEwMYVpA==","shasum":"4b5d462bee92148a2e3520669d8c044ca1997b65","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.56.tgz","fileCount":5,"unpackedSize":34927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4a3QCRA9TVsSAnZWagAA5+kP/jKBsbumqKQj0RROssXv\ndJit8kk+odk3oCxxunGzvHJMq98+9NUoIyEZzxQpknq322gHdqKQhu8zeehH\nv6mmZs8UP9fSuJFAYxOptTAbDTHeZLfFL1Nhwh8S7LBkGbwmk3nBPzCvkNcM\nXZhEsgGfX4ywoHBt8EutiBn1hSBK6ElmiaVOcjxuO41WG0zbefuoxBWXnGAZ\nIMoKrIKoC4fnAELWcEEgNPAjzGzeSRN3Nm0SQi2K+d2twtZjbAYUVWd32D+g\nEASkKycjWW04Sprc4JCsmVT5oZCn6s30BbKUlEOJAURlthH0V//VsYX7UnDX\nbw73JxcttcafD74eA3eKvglQwCkWIpZDIJU0fZuFdDiHKmtyMNXctkwemdGH\noPjvrXhNkhuaeP+QciSWGdBbyVACO3o6DzzWMOCqs87JTD/H+NdheuL6Zt9o\nDNaY0F57ko5rZPRW9px1xEi1Dr8gPNKqfbtCNrNqL2LvkwDdiTmM84MkOaaQ\n7KWjxW0/tF4IfznJ6yCfoK7IRdCAxTlBxMGPa7R+juk2txXac64+BGWum48K\ngWThCxsWxFfFz182/pyXmQJwoKcPbxpNT7fGfeKJAG6DBwyxti0Vwsu2dSVp\nXLWmqAvIVPTeu3njk5ZQ9vOiF6Rk9XQuYMTHSEuyA9n0v8jpeXYopBJ1idkW\nyzcl\r\n=VFNN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxFT31Hw/v9ISenrY9mhUMoE2l7GPQPdtee01MZsNxigIhAItl4Vr4Svkd+dv90PYLKBC9TJ59zI5Cn3+Vcv9DoFmh"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.56_1541516752231_0.8165309085750709"},"_hasShrinkwrap":false},"0.3.57":{"name":"warraysorted","version":"0.3.57","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"5da8ede10c0c7bef840444dddae423b7f41d451a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.57","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-PGRKhDdjVoCWtYb0+/H9VjRiGHqO+Xx7ZaAw91GDL+p7RDL1MwbD4O1unexlDgC3x7H43vuQfpJxZcZXZ9yKvA==","shasum":"f45f591222dc00b5bdb2a8dfd44c65f472bce321","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.57.tgz","fileCount":5,"unpackedSize":34928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6aVZCRA9TVsSAnZWagAAVHYP/3C0pibFsLaWN/TLkFRn\nCfqU64GyQ5QFsg+OsRCnSWsqTj8KFQcFLnJt6CF5yop1omMqnNJslVONBxOy\n6TckKIw9x7wfBREMZi8/4LWS3YxzYTWVXzDfB6CTYOCXSl94aqFrkV43vXOw\nGj+Unjt+lQqTgUsInsBaIyx1R3eft0Sa93CDDKDtkCgwSTRRR/LPlHlmGMf8\nefUbLiuja1mXA+YR3fy7A3oJOaTR/0TnKMSmWeHGf+7XAa46nxO7/CEKI7TN\nJeVYwUjG8qy/DdG9PsPJHyTaSb1kiqQNPqygZUg8jplZ81c4pGx9bRHEAH+N\nxl6j8vCG4i6Ar2yydLXNUt5J9mfPB07XkZqn2borAcwKsYNAj/Ek0OdvlPSF\nVCezzoI9sq2W3ntWNwVq2TZrWNEB2pR7f9HkG5BzqVObFFI/mKGIINwTB8H1\n7l0kMOwU1CATV+zdR/l7dRhlBSeu7/4RZ642PZYIIDgQcEz9lEHyegmm+1ZC\nT05kD0QifdaDoEDY3RQ3Gy3Y9orK5I3aI7luyQh64OieCeGhifiEpVfHTTDH\nAgbGOum+OTj2OwoQfvRncFtR+LpbBKTgmD9ZpOL7VZnLVlrp4x8O5PctSnHl\nKDzvr1fcbnnWBG6A5qRrPvNjpeTwWDIVlEQShig019Slx+xLY9WZ35LNIkcc\n0gLm\r\n=02kT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGJr+0+K5ux+VuUY/xSHxwYghJvMHiI5gc/TGbJikePTAiEA8kRb3fPL97y1Ksf0Oh28A1taWIDfDCmPkKMu5kBzdqs="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.57_1542038872893_0.9994294484389166"},"_hasShrinkwrap":false},"0.3.58":{"name":"warraysorted","version":"0.3.58","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"cc009f9cf229fbac9fe4cba1354d680787fd1cc0","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.58","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-f3jS42I+eZgM1ovsRp7oE6kxkG+T+k5HdDXIq01SDzNyq5z+A5szBW6f34T17EL1n+DHuQFEWkV4ChzJu6fLfQ==","shasum":"eb4f0aa22977dbaf5e4e87dd8daaa22e091a5b6e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.58.tgz","fileCount":5,"unpackedSize":34929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9T7gCRA9TVsSAnZWagAAPG0P/AwgIyaiF3UX6HGPQ1bw\nSRWXeNeJuNwDiuNJvS7CcqJWQY/1z7ovJn4CF5QZdlk48ge9243ZsY9Gx7RL\n6lvbFcDRaGl4lPxa3rpW0Yi1UZFvGjdEnBk9hDdbho7Ru8gjMnvv6rBjFH/f\n6fJ0f7Tga6noXBUzj4HlLvRZtdMCLoswn+HcCX7/VZ+BCRPCInTCWTzT02KE\ncJ2RGHBMVDasxeCacK8hvuFt608V221zguF2/8ZwRXremdFCHqFZmXeMqHuK\nSGtpPkMXyz5L9R//q5lqwFC+q6pFJUNgsikmcOo6o1BaahftKO1+9p0nJujW\nMfbhYW9Z9vN3oToSrwj0aDe12vPeYTS/MgJKTvKPU0C4j+Gx/kiQq8noSFj4\nfslXgE+bnsqB75DA7Ril/bdcwwqyVnN8fER4SfLswtcpidLn++Tk32YF+Qgp\nx//TThiLq674pY789EmXQ6xbN7dGj0wtTkcuohOct86kHgOFMPvu15dXlASg\nO0a4xlhb5gHU+QBhkfHMki4kyl0Q+AEp7GNbenTs1mKWXXA6TuM4+jf6tNrE\nD2banK4aA0rKd4ywc9ngJidMEFaUbr4+oKN3+7fIuFb0ml9NVuWdsYyVkr+S\ns1dz8kU4nU/TdTY1v8x7l9wUUWr87elBiAkP50snCTIseBFfDGm+C+TivJwO\nVSqx\r\n=QvPf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5pMoDJHcL7xRbhCs6lL5veMa1zy6enxMx+9R26XgCKwIgfp7vB8097ScTefFRvup0XmzxSQIpusehj1lrbLIDpCU="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.58_1542799070967_0.31853882213139495"},"_hasShrinkwrap":false},"0.3.59":{"name":"warraysorted","version":"0.3.59","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"68257f8010d5c91b267c038e2293aca86eb1abda","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.59","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-UeVSq7O5MnATfrSrwxIcez1+kP5qsIpRiBVdNaHSeb0t4W7ntQPf411c6tYrKObFhERi7nB9U2qdQ8Kp+EvuyQ==","shasum":"db135166a2dc7429f88f09f1d315e0a0b36a587c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.59.tgz","fileCount":5,"unpackedSize":34930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9VnuCRA9TVsSAnZWagAAzUEQAKFKy6UdziU90Yj2BPBV\nuPlSAsNh6EzPTznzEyEaUdMLmbD1doacLX/83Hzj3wI5PIMVbLVblOsWyq8z\nRPPoJGtHXj8iRbOgyc9Gh25PxwrBZevJtgawpZp5FRhevkbA6VIukB0p/yZM\nbLtlqnmZE7GlbKnWluhnfPw+jaxxduA6IFOk0KEd9dFn2tMWJRLRv7z2kpIq\nuMo8BZNS2Q5KQ2XbGe06oFZ5x0tCmjREm847cbnK4uWCnU7TYw3W1GnZcm6K\ndGiVjCxSfRPwnwfeT3kdTnAse8MPQAFnmnLLo4uwoA8KAcPbIVTRhIS8wZs4\nJ/f4G8fF5vReK1lk02SuVlzQu+B8nltsLNHWFwP0LDpa9zJ4PjlOa8zpSF7x\nGrPkQkVrzV6+b9u9Myfhx8zoOgk0X+VCqvY6G2ZC6gIUdQ0udPWuh4ibm4Cp\nBwAgWNtsMJCrGt5t94v7J5O4ahTQkRp1+mr6JQvv5XQ+6Mgr/QT3JMOff1pj\nIXrJkMH32A1GExhTqkHTP+dnGR63td03FgVVBNKKhAhkSJhRQ/syNAaxN+hZ\najy9cXDojG8TfDJSTeknMRmjv0JShmcys+YrLAwUJDxp9CiQPpctYVACmoia\nuNNdLqUJI2P/IDjxDSi8fJ1RhMWLo1Vo3WurpG0jqL2FzZrjeaDqiyBzv3Nq\n8sYK\r\n=Xx6L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJv4X6oD5kaVqYCgFiM8U9eCluA/sfRRiJF0bDGfg/dwIhAL7SYg8etr+c9vP8yknWQ9h35EWZDn44VMSnGrwPNZ9n"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.59_1542805998014_0.07682059182001577"},"_hasShrinkwrap":false},"0.3.60":{"name":"warraysorted","version":"0.3.60","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"42334b2b51e94b6352e971429f890d404ed22f3e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.60","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-HrIUL89vY4IReGy8j2RiJrcmox0TEcbY+dYQzKg5s/hpkHx5IPFk0ZtzVW+k0YdriLXlASpDg3lkWRMTFxDhVg==","shasum":"ba161c1e96f4c1cd89e552cee8b50408ea3ab0ec","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.60.tgz","fileCount":5,"unpackedSize":34931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9ruVCRA9TVsSAnZWagAAh00P/RJWRqNRzqgLFsAq/2me\n2TBBtPKzmZwLx29DnpkPfU+YBJFPtvVLiJ/rOKLEy3tJj2gEUo6IcCzXQOqG\naa4jgyZs74FxEOzJ1F+hEQz3DTabRgP+xWvfBhpadIEmsmMdTMs99Npu3V5X\njLYtn4CAa7IC8l1MUMGNw0h9freV+M5sluFjDc5ZilINfVH/M3VwGc6BsKbt\n+yTCZ0tcoiaTeJETMbZBO2t9JqvfDwSdPWbg7c6cimgc2Ri4TQbxWQw1V4yu\n5X9XaB/2EOPSzR2gbvAkBr0fw8q06h3qDqwx6Lx33hJkRqOzQhjy5pcjD/ex\nsiODBjw+kyHEvMjHA6KBNj5mVViNiiwztG0bSdEm/6KVj9hDwkdBEkYUnTAB\nlgBvQHJ1cwL/vQLRwtLKzKmSNIZvMuaYaPo+Gr33tE4BUEWHzJPv2Rk64iE3\nsuJsRwCbzp2Fha5OgDLUhrN2bx+U2ghCuZUIcfEnXLlSOakPk1gRs7bTdiNT\nTvlm9yCAjDR+6pq8DPAyOJ7Z4cDlnJqd7Uue6bhKLBOQjx6CSzj3MmgxIuWA\niFOaUerE/0zazaIK9zn2K9/egiD+NOBdiydumXDFvZYdtXz5dzRfPz++aJpw\n4NxYD+cKi88JAI8NSR84nubCvuZGDL3gBZfExfN1INx6T7RTrR2u+B4w5Nzz\ncWHa\r\n=R18X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuRp/2EUWmoGUBBbdd6K8OQ/Uv5pthhtsbHwg3vpKGaAiEAre7ZyskoXsYcOdhdRGeQUXhi8+xwycxvl+OF/sXth6I="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.60_1542896532919_0.46537876254853616"},"_hasShrinkwrap":false},"0.3.61":{"name":"warraysorted","version":"0.3.61","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"90ba3a673e9f871b2eacee8a2d3284d6ad204eec","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.61","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-MdqTArhO7gwFZecpkHb0oVdnTsPZ5ST0qjjfotmiN7HDlBgbrNKAdaiWZPQv89Ruab6bbPZmT0H17xSZA+5mfg==","shasum":"e4d51641268833065318f5a0bd35f770d1d89a7a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.61.tgz","fileCount":5,"unpackedSize":34932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+5JSCRA9TVsSAnZWagAA9M8P/3myatdQcUh9N9+LuYib\nlmx2j5IXYmVQbnuax7IginuCTVvPXBSch2C7pTWWq27VS26v135qPjOVuIMQ\n7LMDjqunqoEzBneVCak7tFxZXDUCVg8J/rkZwdeIC41hVtX668A7G5HvvcC/\ncmhy3oRnNCx8SKGdXh8KBKvbMc26Pmw5IC63+NVSSFpyv9EFGLj6a3m4bXvt\npBgpihKta4NGCyJLd6GDdzqWqwbNVp7yM8+PyhRDiXHs9X5CMyf+SAKRXrmp\nFZ2vk3MWLL2Em6kECkiLOvxyDEkzDkX5H7ZyCzT7Xhr13R9Jdw4ByuyC5FH5\nYmWRrfKkhkBeMPlQgxGxym0UpXXmPUcYp1V7cQd4D76OSDh4eT2fuM2c2UNq\nHV+n7II6hPI/mtj5+JZyQW/RBp08kLDnttUY7a75N2WZma3Tf/86xcKtlK30\nJRPcypB3BPjf+ZtlBDbnprBr4U5G4PfarDyymo9LN4CJ3RhRn/3l5hHllLBb\nrEqQqtMIpDkA79lskxNz5jvG28YagjFNUQhqPacMoCuYIIR+ceCu0Xk8oWab\neZhoYsmXRI23RNmllFlzZf3wPCe8jksgsSLvsKlfqJ+wQ08W1OZwTzo7g2y+\nr09BI5OmTfbbcOZ1FawN1iyIQpDxytfsm9C7p2TuaAItFNnYH5tn1XfgZqbL\nfqhE\r\n=i9GJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDElaM1Sh0BnWE0zBMA8Ey/IlKG/hEyLkLvF2T5mTMLogIhAKAW+2ppSF7QSQaLw8lDHrj9SOFrC/kwz4lRdHTuDR65"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.61_1543213650049_0.9573651486277683"},"_hasShrinkwrap":false},"0.3.62":{"name":"warraysorted","version":"0.3.62","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"d2a597f2e00cfa27c09b9c010de5e58bcad3c6b6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.62","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-AD8C6Diru2JlkU/I0VztlcfM2E2UcuW3Gd0SH1rP3GzOkDwmHC5tmC8sdATygnlRJ+cnyTjhRusNBHj/cLhD5g==","shasum":"d9cd1c621ad6bc00a81bca55d24f822695341abc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.62.tgz","fileCount":5,"unpackedSize":34630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/ptACRA9TVsSAnZWagAAFTgQAI7JipJz5Ti0eO8kGSJ8\nD91BTFTDqXAKOIkvvLSwNvlaANyb92GUBRRqeyUZFQf3kD7XJGWcR7N2Bbbj\nYTDairOMk0g78Cb8uH/VVV8HswpZXnjvPJtwsC7pVvQRHfBeaS48amSt0eHO\nhXMgctyHcRRrXSjX77RLVUtBMIQ/VQhxLGmpPGVQ/HveY88UQVXoW6M55HEn\nEm1bwvJ1OX4vYOkMto9mBnacedIpo7iglB8tfniba41bFTRg9T9UzVqNufGj\nwO4hE34CJkOLEvKIJRwDEcjI8jGBpZJ5DFLVeLjTdi/bQl4HVt1y/fN8S+G9\n0vSheAlJ4Odfgt7cpVzW/OCV0r5SW5z8EMsOs0sEZFtlInh/3vdbOU82WcJg\nHd7dXNlbUQbt72P74qhooxmGKKX1rw3ZP669WFHjoroFu+vdHvsAfxksBuh1\njfZK3sbswe33IYwalTIt7VY7OjY+PXg6FTuFrhGNnOET7BoGq1jBuoxGjWqh\nP7hpTTRadDcIN2q3Ne9Y1iM4znFU8Mxvh+7YSsPQinfospGcKwW5+0xAgHGW\n5XC6z5h3FMOpiihkb/ZLv8Q5cZm3jR8Al1sFWBUUXT5SDrYjsqKSOoYhQKlj\nTHrUwXWEOrbAQT/bGW9aXvSjgecsq+hgJzf04dC/irshojUeXI2QJevmGUmp\nk0qD\r\n=rt1u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHPNLnYi2K8Ctga8rnF4RLQC80w6UaI1BeEoXPFrnkE6AiApaH5vPlqTbQYPWENUCVWP0bgeW3dC8YhVOV/IZwMXwQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.62_1543412543730_0.4386500201791792"},"_hasShrinkwrap":false},"0.3.63":{"name":"warraysorted","version":"0.3.63","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"d9d0d32ae53d9675ed83d2b0b23b799f39309c83","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.63","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-9aEUmOuUXYr9kX7y1zwhGA4NEWtrb8nQ7rb0+9mIWPnAFZWxqnYKVFmHltQdNCT9ZnK4LPlFQB+eX2my0t5QcQ==","shasum":"cfd5e8beb081d8cbd0abc6be6b631087a7b01928","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.63.tgz","fileCount":5,"unpackedSize":34631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAAtqCRA9TVsSAnZWagAAj0cP/ROdS1UePrkxhJmk9hUT\nB0CyIVHtp4wSlWxQc5WCyZxZfT+/zWI2OLNgjVW+PHRxsMcMvSLUQ8HI+bpo\nu9BIhJ2EeyeDa4kWyDDvB7qIakxa8R040Ed+0H0uVLI5ZH6IQiA2m1Ma5CMD\nKvTcx9RQp0jpGfEXygXmUFZzBNA73tVifCsQMOCznk3Bs63PNg1rdNqqNXls\nCp76/Edz9TTpXa6EYsiEcfHZz3T84VVh8Yp+diauOYUIMRPXFhtE6egquWVV\ngMSKgtH+QoaDgTnmc+4UCeQiTTid6ZjfLJXDxTKi7xuu2pMMaEmdVhlX8LUV\nu4R2bTCNVcNthwbw+BZB2gkT6eePppr0OWRVO3kHb+tZGfPjjO+efJUTw1od\nP0EQIW+QxvKQ9ldfyDc2GOu/+6mXgNUVm8ldpG20t5rWdMeAPAX2vR+Q/1gB\nIJnUEz9QjGrfNroGpuqInFymooe2h+r/TQTtoy/n3XwgP8N/l4bdoH6DAOuS\niMsCk4544zyH+CgGkMVzxeb1CnYm3OHPbk+7DeLhlc/Q8ZPxwe0QVVebk5QQ\nxDypacW9xS2i/JGSufcRzcK1GzXlj0wFog6YDlUAv956PlK+QGswfh3A2isl\n6a8r/xZxscsVqPUAkrUMYpi4Z48iG+u/kYqwdl4AztY0CGyjPzQe37wCXwI2\nPeWd\r\n=e6N+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2erA+lpNzyw6dMv4mWt3fgHYtpi43p9z+KSAad+eZywIgFoWA2+qx1Yhjc2qcQsjNSbfJPRESzIyUzB1UbWxMOzo="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.63_1543506793402_0.8237934641977729"},"_hasShrinkwrap":false},"0.3.64":{"name":"warraysorted","version":"0.3.64","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0b3df1d8af64d10fea2cfccb434a34b4fa8756dd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.64","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-B/62B4NXsSqQUmmJoeS5zfsJIyXR1l54LKyVD70+PHXrU3WFjB9fP+TF/zylJaHuOM/E1kvM90G+LlADO2n1xg==","shasum":"848d62ec5f5e7ee732c52fbcdc87b5fd8f888fc7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.64.tgz","fileCount":5,"unpackedSize":34632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAA+yCRA9TVsSAnZWagAA2TYP/0oaLqvJMkxWBgz6n30l\nWRqonfATCp7QPBw2FzG6tUkLugiCKDQMvcMNKT/eaoa4owGL7EC3tq9ULFeS\nGLw7yF8Es1CqwvNqGFo0Jrfn4gHE4cJX8hZ0px4VC6lLf6bYdEbumRQR4kba\neZ+99vqkBlyVeNkqHODFlW9KWfJ+ElKnbZAsBWPz17VuAoJYffb2x+N7o0JD\neKtbxNORQVdpxDydzxnD9Rh+YsvSzgZiBKv3d+QoyXlnuhhM5IAhl4EzxODG\nsl4Q27l0ctrimkC/lz6lls+Uai6Alij6aiRrcD9ObLiC1OzNH+BqNBrK9xZg\nbqiUr8uSeiIBon0HJfh4OipLnxsu1mCAhF/HJC1b2ntAreaDCkrrsiOeiWSY\nj2EqZM54f8gI1SW7x81Nlm+EnKW5uDjUrjx10mO5immgZizB6AZcuqXisM3C\nUSGk/DWdULAimNDcLzsCbQqu8jAiMAe0Ybv9T9m6BqMlU9163i7bMtEajwaC\nIu/zxZy4GrHBfIaLETGl6BpRcliUvlvOcTBXR/lfarEkhv3Ew0ILyNVzoXVD\nQWP23IvQbUecYRwSdm820svnJO6a/E8KC6rmZqxihx3kvVfdqNc2HqFp9ao8\noM84qNQeKlCwTfckaAwSsNewzcfBjN8ZOIJqHQq9Il491+Jqxc4O9hQsMjgM\n6kMQ\r\n=n5MI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYGp1IRCzBtxcLm8Knq9bay6+UkxH4GtmU2CyfhdSZ7gIhALsgWjqqv1+E/kLBivBXqjh4ebkBJOIInRqBRcVyf+Wp"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.64_1543507889537_0.42256321128379626"},"_hasShrinkwrap":false},"0.3.65":{"name":"warraysorted","version":"0.3.65","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":"","warraysorted":"."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"166c405025bebf7cbfc66d64a34580b803a2465e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.65","_npmVersion":"6.3.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-akEJbcCb5e9Gf8KAjHBbpUtnvbTPYww7eMbEEq0Kl3lOmrw9e9KRkvrTaZ5Yh+RK8oMbVoIdBnBb+0ziOLn8yQ==","shasum":"55e184a6214241eddf5f6b0307cdf5b02a36a05e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.65.tgz","fileCount":5,"unpackedSize":34740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAUiQCRA9TVsSAnZWagAAVRwQAIJl3S+/YnCeMuSNhNOW\nynnONWzgKxNZe1tx/U5h08FeHSp4ODm7P2gzOoD7B9B23XsVQXJIHSo5EhRB\nQjVCsKCoQknGhhcLZcu8zsJmJ17PUSge/dXGdJpRpTuSUtRRIUmALR5ZlOmo\nhyffBbRS28cN84pucofOmqh9Iv5uhMQ1DgjLmiBuXg60vfjSl5IrkT9vtLDK\nbegBMwKGZ8M5W6dPwaPp/Diyr7O0O/qbmIe/0JpieVQCWEgG7tbqFVFPl0qA\ndc4o9d2uAYmhlqFp5yZnsCWWmEeeCzsRZJ3B4X2Js6BnpRjE5znd59gE4aBM\nZaIHtaOlWt+vehlix7I7wAtQt0zebUGqD1keCskb00qvdj2xUWp/X88oW042\n8s4aXudh4O6vJ3tbsmq1IUchTZkNAVJsJRX8jrVeQphWDWz0yAFQOpZ8yl5M\npEu1/PHRu87hI2R3zEHpV3CTQ2cggqyWfi4XXTdZz2Cp5rxyfgvgXDuzOCf1\nmYp3KycNkmra4LGw1IyC5HCa5+Ku9lYneWZkzACrWFWVsEZUpa1hIEXrzyKR\neD4kunkssZZth349QesS+OSdnxjxiayMD6zwfNJVMdE3Ge43Unpwvbgro2e0\n+pev7BxIV5b7o/cxRJYfLt+X9+wY6eqX7y4IGhvuXzN8gfDBMg1JvHEcKhNU\nXkiy\r\n=tUvE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQmlFw7V7xlHX85WtCPl536S85vd27m3viulVkqdr5mgIhANaBDNQ1TPyBzn10ItU2RoluxgW2gGn9xUAgTB7HMZWC"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.65_1543587984038_0.6963812139075976"},"_hasShrinkwrap":false},"0.3.66":{"name":"warraysorted","version":"0.3.66","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"9d125908d9b773db578bdc26745d95ae0a6e2b56","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.66","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-9XceRlMh2MqR0ZDPCMU/64XNRTu2ZrRKr+DYN8CZzuKx6XHPDjr/uJxo+IZLC9h0sf39wZbyye+ViuOitzAgTg==","shasum":"79895e28f48c3fb6c0a1eff1c39e84f2322dadff","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.66.tgz","fileCount":5,"unpackedSize":34716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJKqcCRA9TVsSAnZWagAAfu0P/1A83MndB8bkbZmWdCnu\nxk0MKp0RLTKTbTicJAlQ9xL+amhhh7LZtHm2+8P63TB3Ik/9Gp/TaSe0efmc\ns/uNvd1Ch/vuXQKqvNtinWdGrm8cJhoclIkmrjVdQqCc0IQGOFSa4kifm3wS\njrwwqIoxV7FlMcJKH3uZ4N3ZO3QOIbIxjaU8qccra3HBcscJ7lPJLh2FGWBt\ndb7GmMkvlB53+GeBLRV8SpC9An8XwkSAPqgQxqZinFYPf6G4nK8vcTafn/Qe\nSMoOA6C1VC0Xl7/IbaEsj9zWBvX3JpwnONHSLpok2L67fzClA8VPtxe9/1jJ\nUav+ZE52gYko0XLkme7UR6M30nRuH1k1Hy5WTfsYAk8lm5gFaZbTNB+K9oOO\nQwxIpmHFgCSCDtwfSfVm+3i/lLvI+vh91iYBBM2NNt4EwFUsn4RdgLmKmVyt\nll/Yq9M5eLYDsyXJD8Yseq0n4+AjFybbRWIpPYLVWZWrUzzjVgSj/fv0/mg+\nLNSiuNTEq1JQyjbZ3E4zb/Sik14VHIMoIfFqSK9itRVPVYHep9uZtnYS5zkV\nDcIgTVbEW0RsuGVz63dNnuajyZvJw8g69Sa5LHACEqwcdW7Xaod2r/82lyrd\nMSj2i2FxkOOStTpAvRhVJoKWPOh5pjcMYvdgtpUt6qYUofyI7ZhRTrJ0mxT+\n78h8\r\n=5Dq2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYf7nqo7DJA7sJCkhjMBH0wPpujJJH1X3FRgcmmHPBiAiEApkvjsV04Y3htLQUbUj1vo4nTKjcBNH1Hd82ftIjKwng="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.66_1545906844265_0.800164656753811"},"_hasShrinkwrap":false},"0.3.67":{"name":"warraysorted","version":"0.3.67","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"6633325f1a57529cf2be80c99fe93840af932f65","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.67","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-kKkyAmNoje0Y/A50ggPtaSzDy62nvRA20iZofdQydQeomJr84teHnZYzvvudnzvTG5pfcFcrTZpGlnkf+1b0qw==","shasum":"3abd7a981f703ad5d204413af8d559176290875e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.67.tgz","fileCount":5,"unpackedSize":34718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcS0ATCRA9TVsSAnZWagAAKWcP/jQ/Fq2RSUbgOyXdIfXB\nYgD8eq3ZSmRGwXtp5OJIz4csLoWkKjEzxWHIxpBiU7gnSgiAkMArRW0cYxrw\n8rixyvigX6tcldaY0oE1iJvQFnuz8lWS4PyJeNloetqFFojhJA5+9ClnnEd7\nTADxMQEccEu1Au0rkJLTASH/LxKtTfFCrJpAQpEmZ9KOuTx66YVKG39uRppW\n4TWBfkAwwpdlAf64EBgqjB+Iq7ZpLm81RBpy1wSIsTJpK6tAvzUk93H6jZ2W\nQkaPjLFDf2aFbMvV7IAcgd0yRPDUSWnXsFVGDGdZuZLTLh3opTUqGgjDIzsC\nO96WMA55zqM5hbZJot2TIpE4mXHE/uJdFiTmdFkViPzzBNLteSbNodyROlAU\nkK5bw2gR2sOIK612xIDqM+oe4zgn17/349lp7DGAv9spQurZ/YIPfPWmGtiE\nUNp7/s/rYMlu4ns9FUIyXSMrgSkx6UtT2D3IatDUC8Nrt6ckSHWuDR7keJOi\n4Fq2vlkYQhk1RSCutpF9yhgX4BVw6VL8cQ8Qb0qND462rI4JngAYQ4VUJ/Ai\nRE3by9xsenwb65YXS/xzHOeL5dHljHEkAYDU0h+IBidmWKv1Ca8SZW9q4gtO\nDys75Yk/RSgCDiGNIDl933mHfp/ikQ8Z6gkMGOgQnReRrGiGi07+0ZhCvcXb\nIztd\r\n=xqrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl5oqx3gX8L2RCO8jYZ3/iZsE3pv1XVE5FwULavUIj6wIhAKceEkEwbU7wS0INuoGUrbC6eTe0lS6RwCQPhWcIcIbQ"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.67_1548435475069_0.8339466391797412"},"_hasShrinkwrap":false},"0.3.68":{"name":"warraysorted","version":"0.3.68","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"c379cc56dbe07e9aa24ca5192e5b67b026c54663","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.68","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-3uGndtB/rWU0oATBiQC812aWZzGlxc+Rs0Sh/0wf0jyOP8m/wcggdfGfTjTD/HRAthHiPaxWsKKHjjw5NMzMdQ==","shasum":"59475fb2ca81cbf7845f74ba9110f09259cf0e7c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.68.tgz","fileCount":5,"unpackedSize":34719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTqfJCRA9TVsSAnZWagAAsJAQAJsyoqNkAfZK95qXx9RO\n0U/WQGnZQyplvslR5OkbE/yET6lJQvo1g7kq4RmiTQWjRMcdmzfqhNup9xR6\n/7JIHuOKBaJunRLlHjto4Q5a+JVPuxVlr2QVhG6IGwihz3DEjxmR/Fy6mmsa\nvy9K7iJ4R1VtT6cLWhfUQLki0pIK2T72IeNUonGEPzlwfeZ+BMyO8meVVCTz\nbUcLd4yAPs8bauBITxGaMzvBMDAF9AT1pC8v6rMC61Sa1OzUBLCElPHFaJyk\nnfS48iTWtrxDARsBnPqTHL0Wp/F8+NcSVCTb9cK7Se71ZPjL15BLI3bKcwDo\ntXpUFwANLeApgL0ZRNQhY8aWgMGp3eyuSdwErYMtyUpFHUt9/ZprmJFd4DQv\n27ZF4sG3YvWnKbYBhoViiBDEPid7hqjmQWklnBAQgF7SSg3OlXZ+L72g5F2y\neHJTcs6wSXiMpVyIHeCbxozMnqghtig3EFmTRqx7N5widNVoj565ewEAEb4s\n0Hx3+JdFKzddOH3OhiNGOL0oZNaZOmaNFGNPPlBUCGphn60onF/3KMXOD2+f\nufdsL2y7aulyVQe88T9SLtGvQ29d5TUs39DU7mdTVMltWgfiyK0A7XbJF944\nn3ZQy8tBGS46ED3JHzKNmR+BRA72+KbMmzH5CzSe01yDqwvbfJtzC3NXBUMr\nFjYD\r\n=Ix6E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzXNNJhP1+eDOiKCRlYzqHTDKl8wymrfWiDFn1QLDy2AiEAo9R7bH9bbXYCnajW/oHPaM7y16xb9sEfCzp1V9V+bG4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.68_1548658632942_0.5020890005665948"},"_hasShrinkwrap":false},"0.3.69":{"name":"warraysorted","version":"0.3.69","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0c971497b658e2de9b70dfdfa42896763bebdeb5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.69","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-RqIpSzGqu6YwKMtZuc2KdV1qTYdA4z3rK8BBxo5JAbFd28/kI/tiJrrFLF7100kO8P26ocpTNEfKeLwQieYL/g==","shasum":"c61bddaf07925fdbba41c4c1ba2baf7ac9d17f15","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.69.tgz","fileCount":5,"unpackedSize":34720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT/lbCRA9TVsSAnZWagAA50sP/159MRiySX+mSVjOS2rI\n/nRsWCHrUWbD3/4xpWp7GIUVoAQ9552g9yfmbLvmzO59MJrTmBBUbyCyDW9c\n1ggf4CaUa74YDx5rnvGEZRL34S20qv/FHFJuxDhmNHmXp6JjoRu8ovMh5RSt\nfKDMylfwME0Jk2C2hDHRifgYXDUCGvCI+ytsuQUowWXXQ92Sl4H8eU5wtYgx\nJwNhzNvoLiAYBomxvtGXAmXKl2hBDt0POGpXQH+APV+erVKNF9s7riF0AGpa\nlliL/XU5eXApJv6lMqUF8d8i5dHP85wcYRrvxRLfTL6zd7P5LQwbLkgvqjwy\nNVQ91PAn31THvGtyPIjPsobx5HSwbGv7Q5XlkYmnUdZJGl5XBCRmOV2bU/Zy\nKj/9j476weNtFicf+butlqYLeMMMaDJvFY41vPGe+7zsfWk/4uXdNmxojoHK\nMJVXw2+/JyTXbS1aNk7KNs//8oP4NJC23hsF9izblJXWHEMrgaWUfgKyj50f\nwo1IvYIp9ymsIajOrjTwOOK0BuHVjGqm293jTCdcAzoiKC5Jiq64vQwhlz1U\nKvavJUx9VTRMI/wiI3b7tDrRupDkK3D+PqNiojrr26bR7OckHe/HWsRbyyMx\nUGTWpBPLH7IecjY8UISkCWVjaZKGW4Oyx3hZVCNnQNB0ja4+HKzSTYCFpRJn\nAJTi\r\n=/AbT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGE4DVhIGpzzaF3El6A96NstmaiIUQl2yPF4VvyKuIVuAiEArNHZ6L+mJei39DCTe0K7aSUXMZtLiYp2mqLQCCkonew="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.69_1548745050705_0.08811955819762418"},"_hasShrinkwrap":false},"0.3.70":{"name":"warraysorted","version":"0.3.70","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"d8e316836a9dc8b831b417c459a9b310cbbdd5cf","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.70","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-LjeCItBZIjNsHs61CaOB5tFBBPx9lk9u15RIJTPgFaozDo+dwTSFxD8XylfZM6+n3lUjaQLvQPXQDAFueZgOFg==","shasum":"8f929dd3345195379d0f785efc4bcfff21037de2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.70.tgz","fileCount":5,"unpackedSize":34721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUXa6CRA9TVsSAnZWagAAbQIP/3+6EGMo+khYoMuMuwPz\nSzPJnzNYs4858Lng2emsW/1NAXwq9D8t8dNnmDAa3vM//xpUqWTztIHM0eRC\nMksEnlTg7taG15XYgRsZ5WA2hqmUoEYNZCwGGXFrk9+CbqfEbm+Pm6gZpnXH\n1Zd2og+oetl5Nk+dHbZX/xxU5nG1smbIawEpqxMwVVWOzAVQM9xCgdSQSLQf\nryuWR4XMQreLWXRKJxMffECB18uNNDiUUCM1rZS3b5S0F5czNnO8T16nR5rn\niPa7iviBFcXWMl4zrC8kPmV/aDWIdryYp3AC0De/CVXF8m0U0eTZRHtwxihQ\nSD5eM/gMRvd7GiNeFDhzGQBruuDJVRMwOxRSPz2MfZpfwOghGZsFeQUYhVYB\nv1aZpQ8EZxnxu3KsTrdBCyKqLEmGc0BtLNKCF/cc9xJT1HZmO/SVcnvcbCG/\nEQ49kIDee1r9JzpLPEPF9kp58k8CcyM82hhW2/G/gY3dphY89zXgp4G8i7KH\nkJaliqaqF8xhgGa4MfF5Y6nfHYrMlpftTg4xwg+inakFjB35Akbvcua9RgUI\nYy2STf/XefqrCvhfFXw+V5rMfY0SNiKyw4Pf9vj19M5XRBzd6LhiU4xxCccI\nRt3jpMplAjs9+y7jLkeyNXx7EHRF6xDPYvxFZkwcrmMxO2y37+R0NnHSnIEx\nw2GQ\r\n=1Oqv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGztP+wtQvLUPRxVMT0etQb/WftlEeSrTpHDz26Dzl+AiEA4SI5chpBUT2I+R9xxvNHAov/zh08A03OILzEEWqUqbM="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.70_1548842682135_0.061220644703283256"},"_hasShrinkwrap":false},"0.3.71":{"name":"warraysorted","version":"0.3.71","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"523e417cc3ec8a883ac98ff58de64cb068727700","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.71","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-JaMMYmX7cOXHUK3dr7fZqB3wZiWXd5GxomTKEeYNmnLl4cCoKEwrUcLvjvdxCnLqKy7TUJ0gs+mVibz+4avqcA==","shasum":"e58e62f82741ce23f355adb5528dc8974c8d7067","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.71.tgz","fileCount":5,"unpackedSize":34722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUrZbCRA9TVsSAnZWagAAxJIP/jbioXOOCzTrhVNRP32W\n+aP1X8xqM/3B+dmDovKjX2bTMIMO42f2hEVzFRZddpMf2NK1FqUYNJjmYa6z\n2xKCk0sOYnLqY8YDUUiXHU42OafK1ICRWfI23ppGjPCpPqt/6HVeDSJHfJ+U\n4vmyZFi1rAkAvF8nitBheS0JJdEoA9pQSXBEVXLZ5hP4NOT+oQzFPApFccxl\nfYyk3511IhUuqL+6NOSNByxcxydwAjjtPGuZqD70aALnuAoq9uTmcsSjoGvD\nJfB3L4FRvGk21pgYhTfgKtnNQ6qFhVpuZb5HKGNfy3zzyifpSb3rueUlBy7b\noN6gHTOHly8CM/1m/lQjKPPlYc4rcAb/MyLxiIzMgZcvwReG8O3kR8A4oQEw\nMgAHGNdBrNnS36htQxvlUVRxLz/XUoMQw1Tnfa1CvksbEze8DTGM40sqsRNO\n34jfeVVGFxdh8i5Bv7FJdQZ7FfYi5OkuRwHCdrLegwvL0qdF+Nf4wFME+Bm8\nx6vOn4s+Ng6O6CDSl/ZFrgXZPhfP5wTRhnFWPKIHscGLFDU6wUfEW7Y4YcQ/\n9AvTPuUvWoxIn6upOENqj7lxppFdgv6CTBLZwpcCuYA3PIQeVebFI7woR52z\n3kmuUgppBnmvLbdSQikrAlHkiCJby8coULvaORmdXye33XGVqLhHS19xdEpr\nVUoK\r\n=tL3H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdcOxJQSkrY2/ic6btKyPX3sCEimZNpQUBi3cuKLF8AAiBGKLuWsp6D0JyN3ioNFUnjQQjnxS/o0BeWoDUl5DRLBQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.71_1548924506730_0.9496047013216373"},"_hasShrinkwrap":false},"0.3.72":{"name":"warraysorted","version":"0.3.72","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"d8e01b6a362aac7ff28a6bb87cc3633f2d24ff24","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.72","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-b4Y+zSuD+wTeqopKGNbcryPEzAEAdb4MCKylSslFWuSeIdp2AAcgeNsjZWAL+0jafnBeiwKniiX0JIRw7Vwx9A==","shasum":"73c953bfe9786813bc2f090b9db6905fc0cf3e35","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.72.tgz","fileCount":5,"unpackedSize":34723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVFhFCRA9TVsSAnZWagAA3vkP/2AxhUJd00C0+3AG3U5h\n7+8oJV1uuTuqDRnqcRk0M1BI4b2ZFCZOOIy1gYqOxXgZMnDS4PFULEA4d2ot\nrExIdh+LVDGSRpnTDTc7ltr/icvticXHR78PvBfN/BOy2rS+SAstyO0q5iMs\nPT+KXkeRsvU8LHTQY4SMyuwoj1HRUGN2sWZobUpExn8qTDOaCBX47d9KqX4c\nWi5VN28UiM8FBHXhZjsBe9TqjyC4i8ZuzyZ5VraED0y82fVLBjmShWOPVauV\nLiomwpM0B06uGVpdiaEKZS8eIf4IHPebUq1ptxYdwTrjtSCY3VPwA0spHxQL\nv8y4ljbQX38aq+oFpTcIuT+/rP1YiwHrH+ZeirJ+VA5hs+yb1MsGZFddaOWt\naeWJO+LJWgwD4nrTGse331nhbgva2Hz7Q6fRr2n1kYcc5puGRLOX3634HVac\nyG2MwrdoIyeBddsZrH5cTpLm2SATRb2D0dOpO9ITVQTDgcJBK8QiVxebQsDN\n3k+cwMwXzuUvtUg1b7mWkNT0XD2WM5/84FnyJfPI8r4JOO1vb9Sy+5HV0dBA\nBKDc08V+6gbKTgnOsLFiNwk1lZUDxvpikaWad5ITz+Y3x/LUe8ysZ4AhAYCk\nfpSznIKsT8mfNxP0J0u5EmU9f0zjKB4QKhVpCesEBEfNgawgJ80SdYqoCXQi\n0Hj9\r\n=sTdQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyLHnkUaTtoVzx2BMgHAIRq5WgpcIa5J8F+pOGmLvQsgIgGpDuywU8P9aHkTcKwsyYIPR0vB6AX14FctwfbVNSLZY="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.72_1549031492517_0.3650332452963576"},"_hasShrinkwrap":false},"0.3.73":{"name":"warraysorted","version":"0.3.73","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"a26723faf0f42afc610063e55c4651762487b74f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.73","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-gwfHd1PXz9IFNzYKAUwBdSSG4SVIvF8FlQqtKsaNv1kZ3V52VocNSAS6oKa1KVf7Q2t4JYclKBvBJ/eoJrzDPw==","shasum":"abad23ef115481c6322da694624f07d6ec5aaae2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.73.tgz","fileCount":5,"unpackedSize":34724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV9uQCRA9TVsSAnZWagAAoqMP/1qKdD3NsSO8CK5JB1V5\nfJmEgh4gErjmC653IHeUvwzcb2GJOgucYfbF2ixbucWJ8X6/Vv8a/BPQyzxN\nZ2hhyrPa7Q2I7S06b5rfPjYEPv79F9glA1G2//nbohVhR3Km/UY0+VTCDmqH\nYFHGV3+ggJsncC6nsjfb8LCGvnaFcdrW0G1a07SLm31k/PaYRX/D7gWYUC+N\nT9kGc6nmjiSVpY2mJ7AxiUuBjHPwHbP3Dbbsa9+P/rYyMaXBF838XdmRrgMY\nOUOEGA4E2t13YKzN+pS1Z8Q4S1NKKGWcYTyuieRmQNC9d8MQc+WSiDYuDpRc\nm3UFeSTy6S3kd6FPK0j7d8P5Atdx6ZxeRN+XZexvYFkHocDsy7TChhwothcM\ne57cRT/mXzN756G0PZUkMKu8j6+sUL3EJMi4CGLdXwWg6cMbT/ND0rUMHIAf\ng+RvC6EHvXnlAOnyd6KR9xhMBdvEXrenpg2sEnPnK1pwpXt2p6KpOzz6pbBq\n8CliRLgCZSUVKfZULeHTQHmLSEQ9n4WRCA7sL6KEAhefB666TU+QFMpGz5ut\ndPYcRgV5tjONaksx1YWqvUFbHZmsaOLx0R+0pE8kirm0viCIK9RCEUnTT3UC\n2RGDeqKcamownbVdQMSiiRlvB874406MaoH38XD+wQgMBmmrafqlQI2LwCoG\nCalx\r\n=qEla\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh9dK/54KUSvQoZJS5qxhOOXdi7XfjEK9h9cOHUpNnygIgbtykWYFGYDfwviYCD8CEtmchK8Oqv1Qe5UIc9xpzqFg="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.73_1549261712172_0.20498904421493003"},"_hasShrinkwrap":false},"0.3.74":{"name":"warraysorted","version":"0.3.74","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0dd1423141c306ad2f350278eed8edb374f454fa","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.74","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-RwaBeGIQpKaXFh2C7TYcG0HKvZItV71hiJA8NDGgFX6Zs5K6uH96DPPJcMbibBXxp7cQT0qBHHDLoDfacWFcsQ==","shasum":"fb9cb0e80740edd7ca20a86cd07776e9161d117a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.74.tgz","fileCount":5,"unpackedSize":34725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYdTfCRA9TVsSAnZWagAAv8YQAI7MdG2Bamy+c1IsRt+O\nFI6eJob0ETELfGh6wkEtOthFSQfLSN3FPJ1a011PxWAX+gUafMP3niG+Vf0L\nU6w2q8sb8iS5yNInYvoBlxyy6cbgm1hAJPDfEm+kYae0wAcPQxywnQGSTBSK\nm3boxmGkcEAHCf3QXfKwz8kg98tXC5krorUqJ3bJ+JHezCzGksbnJ46BFtN8\nhhVlVbVTAdO7wuFQXg5TwSKOhlLPRilqLoA8r+OtXdvH2CqY9Ku1+uj/GhLD\nSVmg15Y7Ah4FLi7+M/C2ZOC9lnKkNk0KZz46dlNC0DSVh+pUW+af+F8ztJHk\neXwXF5O9qJ68sCUqTwEKP4jO1t1NXOFWMDie77Y+mhAFmY6+ywZ3OgJ9EcDs\nzMLi27XlJTZhqTS3ln+Z8Z4W1iQCbE/8jaDhnmyyuG2h3ZSBTptxdrMomzoG\n0bMjw7kaXLQkCon2Le1zG6+mzde+xNmVqpIzNJXtVtFIOFhmf/rfHc/WOFg6\nG0lgECP/SK2J6TRbODBmkdkGep5aRL5r9Pwpe2/nNsHK01H/F2SBIDI22e7Z\nwVBrJsy2Yv/Q0Rf1j/Wtnluf83v+Kp1DhXvIMMgKFS1BeZKBn52x4a6mp8r+\n8km6FzoiRnwn5+4qWN4q0mF/CiJCGJFhg2nlXwvLnCjSVSfy8OCw2m7+inOv\nfqwc\r\n=YauH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNDqRz5d1KQVRsVtqnb6g2IwSwidvNcD1QG2UWACtFFwIhAIyDXWl8VCLKkNUNPdxu5cDGdI95l3YPIvyHK0L8rR6O"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.74_1549915358632_0.8911062671699728"},"_hasShrinkwrap":false},"0.3.75":{"name":"warraysorted","version":"0.3.75","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"1eaac138d28899a7ebf617720a85d9b47f446700","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.75","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-a+OINRkp2fKr244HwJWrt8jb7kzk0U9r2AvCzDPKjr6JKi06XsvUeO2qOmg1NpjJMpDHO0MpgYS7M1BiBlpqYQ==","shasum":"328df58b04f9475b48834111cebbac8e276efbd6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.75.tgz","fileCount":5,"unpackedSize":34726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaH3nCRA9TVsSAnZWagAAEIkP/27le1P/UbRqURHYg9Wb\nLmQBn0LCyOqp9V/ROx1rdKlkLC6PDaAy5M5Mxfr4JMCjasFQhBfyJSpjRUXb\nShA51I9xjkJ9vd5XiBe7vRAWLj1l3gY/Z1mTF7yMYcM0/bsVwNtRCO3Ak0TT\npIOu1+7Jm37uy1xT2Wym0zvpL/U2Hhoi4MhIzhUyKK0cVxMAiDfhl+gw2Mc0\nE+k8c+wGXY85IJi8cBuelQurUTpsDqL2tAYedBTDV4b+dsxRn+hgZgwdfIH8\n+cLHrMmPkAboIid4jz6tf7BpOtLlgTq5YxpzaMbS2TVDUVKZzhqX2XAHhk/b\nkStgVxzvwFL/jPwXNfXE0eAewhKncQKl18S4HBPemp3FJIZQcYatTSKgQF2m\n0d5gk64Yz+veRFhXZEs1TP7rLl4MtTkeetKAuXdDOQb0ks7f5Dm9uSKOUJUm\nQHmHHbZO7/klywHoXCAeGF4M7+TzYlrqp2MFXq749Ht4avbRZkuv8ptalDt0\nKDWWTltFt7oAed+VXXYdBLN8rgprxYs2Xh5dGrdg3JQrspssJIg31Za0zXZ0\nZRKycnqQH2ps4tjCorO9RFh8OfUUlN5GKp/4p8G8n278xZxYWIlR+jGMVNkT\n9PKxd7Ci+nPmCrmtVolQ74GCGbgYYMTyTze8D3vV0i3KPj1u1nkEJDDIUSGY\njrqL\r\n=5Ref\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKQzQtVjoQMpM1Qx9qZ4iYnXTDbCeMsbZmPcZvNWO8gAiAPSGai6YoSCdP2HRoqUDlYrzcQhK0LZAJ0Cr8N8ZkWWw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.75_1550351846982_0.6562551682986291"},"_hasShrinkwrap":false},"0.3.76":{"name":"warraysorted","version":"0.3.76","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"cd047898d981e5b460e80bb71bf357a698641470","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.76","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-Sv7w/g5TcU4YwJYoUe9uPrHi7pyOyfXI4LMATCrYMSrbCKGd6jtQswS9AL7fSftMgrGU/J2lafPVBqD8btUVzQ==","shasum":"cba7dd30ab58bc50339b6c9f45c28cd64a0c93d9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.76.tgz","fileCount":5,"unpackedSize":34727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcblBSCRA9TVsSAnZWagAAQ9sP/2HIqEG+5E0xfUwhosoc\n6jYAN6wJ0jV/wFXZBJ/iWbPRRx/wrBgW6Sqc9UzWcm9VsNC5AqJ5OcL2dXtc\nRLxPZcaNWu/0GVHDN2R5RxNC0xYMGZ76RlqlPrixnQzraEP380p4TabVyn+T\nCBUeJ2ijJ+AK6uK5nSAS7rkg6WdgIjwGQgP7RPm8vGnO7gwt5GGqNXyZzzfT\n+az93TGiZYQagRtVHByKmrdMcJuFdeKJ9+Q8FkyRW2byWvprW9solMeJ0fBx\nXheXe12io0Cp32FSh5ZUAM/xCKZhWC6GaF74NYrYZl4FnxB2SYmIIxKex331\ngzIUMa72EKvtOz3XwfWHzC/YIjYTx7VZHDwQI5VKLqRwlHIXMh/tXeWZvPtc\n9PtHVRQACiNTNPlHG5LzCCIclHPOZS3UAqAMTEpe2nQoV3BbCx0rgijo3GTv\nffkXDY9UzmqIEvx3+nm1Z1d1PbgxxyVOAtUe8IvCXtPjgbn6xq77jV6Z5U9H\nROi9tBwKirvm4O+q3B2ei9mDVyg/KiUMddvYDCzeTvZjFVZ5mMqlhqlOrejU\njFbRYSstDLlyP2ZuwJsJYWflEMxdseNlBkjTsQJHEUbrDv8t4NQ7IYjr+ulb\nPqnYchqRyMszRNDQp4yiMpZIbiRakWrplRnNNWEaATDcvmJTrJ4hHT04QAw3\n4qNF\r\n=um69\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDORVrJ259mdY+vv9BaOETcSf9EQokr0bkFXUkU0ohlngIhAIe5xkoTHj4Ti/ECXeFqDy5C29W2AUiEL/mQ4ebRQJaN"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.76_1550733393440_0.7378713945665099"},"_hasShrinkwrap":false},"0.3.77":{"name":"warraysorted","version":"0.3.77","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"405abb41b9865cb3a6b06e41dd010f6bc83b056a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.77","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-X07BCA508SKbCJhgFByNkaXjZYq+WVfE8nlEBqTo+7mpbKDXnilDcTcDtOX+5bEcuafngqMujbIrTlSWaN1arA==","shasum":"24336e309e2f98ab91e9ff6e0e0337de400d462b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.77.tgz","fileCount":5,"unpackedSize":34728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgX7oCRA9TVsSAnZWagAA0HwP/0YDqHLZZNr+hpJrRKBH\nq1X/ayX6fSAlB2C4tj/YW9ohjbIacCDA2N5iXnS6GLdqaCbj2u7NCDnM7rP2\n2mFPUjVXIKDaOgPkeX4IdnVqk3bJ5KpZM5mQZmmpRGKdzi43Ut9zCeGBJIoe\n9SG5EwICACXNMYngca2Dvk3aputu+z9S7yDGWRZYDGps9UjCRjhuo5vTfTXu\n6qjAONb2QzkgNjWq4NSL2pVFw4Mv4DXFX980EVI6MBwPKsaLGvRrTNTKo+tP\nUqqw4kEnHBcHEUiYYvHixbYAbGmAC3QsZg5WrLHMxSTwwfHOoQYWkKXplL3O\nmahEmtHTaDisAaT29CHVqmz7txwGNPld+AGoO/D4sgcxncoKyr7aOl6zLQyd\nAVzVsu+O/uW+K0GeF8HRm0cegDei4u0puGZOGRR2NOleT3GUB1YOiD+mPvvS\nKzYsreiyf6uvcEFE+EP3v1wUndfbqi4lc6DtCTY/DS5umuM3CmzaTH0OvXx1\nTlRhHv9WMWAp9lhzAw+QU0LcA6qXqtcBQAmvgQfyM9xvd+J/cwOtbm6y2TE+\nzU9NUe9Z0X10dd5Zak3ktuJGTOYTkJpJxojSvbHrr3D8Zk0p7cGmual/Qc9w\n5u7ZnL4phykmA09BUZRv2yKrKOhubjjT1zYkbAgRt+rJAzCI5QT6HhHgVxAk\njd1B\r\n=eksJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUGvO17IdD2BWWE7aZTQ2E6LR1sBeGt3O7JcSw0RQ+cAIhAL89flT0W78P/lYLMNWyBo15/VcboFHy1CPryipBYrqC"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.77_1551990504337_0.09946385042981332"},"_hasShrinkwrap":false},"0.3.78":{"name":"warraysorted","version":"0.3.78","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"5438df8e36711cb1dc322de7834374c50dc88125","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.78","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-AeaOLa64p562SFggoS6aX+Vry7XxFqo53Of/D8DQsuzdJYxXlSAmDM5oIf6vvAORvHNOD88GtHuUco7JjUwIcQ==","shasum":"1b1bd99c150a9a7a42bb29ea066b2b5213ef0ffb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.78.tgz","fileCount":5,"unpackedSize":34729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciiplCRA9TVsSAnZWagAArVYP/3wqC/qGtKfoQua03lXy\nI2pB0v0Y87Ubcs8xRMQAIfa1fmJPMyqxXquMBlm/Wt3rUOIPE1+IewgR8ykZ\nORg+jW5O8vZUXxgFZ7zH187RwVDIFysenR5JgQZq1/iFIsx+oQdr/0dil2v4\njNG6sOk/WUm0ibg42Om5r4ax2GMps35lu+P4SKfr7Jl35cwac1DI/0BTj7KQ\njnE1QJ2isjb3smgGCtu05LVBbiAaIxppiN/MiPgbZPDJW/7BMoFcFreqt0V4\nUXXZ4lGvR2iIL9RoELL53H4eGc4/1i1SbzxKqrUPQ1wDI1ChcD5uyuX+ctAW\nAYIOZt9hvpQMhjXRCZD6DAhXd34eOd5srRuYReTq12gKDI+1Tj7nNKAJrcGz\nmAnl3yRgMg5a7NfYrS5MJ/n5RrMDMOL87hmP6oLJBhq5rSlW3q79Bc5ZHmdP\njfvTWQobh7f7YduDnQJ1o3MvkK/Mpf12atSUcCl7j86v0isgqoLCLGGy63nj\nmHyxleFnsFIf5CY529e/m0odBVSNODBJYB3MR8mnObO572bC1BEFWRauTmvs\ngdvR1z84AAR260tTn1bHo6l+ORCompmeQrNFccuwIYvZ1/lzNcIMGM9DzzNg\nAEyq2KLGOwY/jPVzTIMa8gr8wm8lLCbSzL4aIAQZ5j6baZgK6pP/4tX0IZ3Z\n8bHo\r\n=jC/I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID1pIyAsjULEtR/88mD0nLAeM/yFtflVSvmwOK5J539cAiALRhaGSUURsbo+J0cwJ30HhNa4pf1bNLHYHVO7bwR1Qg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.78_1552558692714_0.8374983106562268"},"_hasShrinkwrap":false},"0.3.79":{"name":"warraysorted","version":"0.3.79","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"8e68ea39ab1c574812634e7da5dfbc83520620c2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.79","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-C9RuuDxz8WcftFux3Jj7jSLDdE/q1xxn67OufV2kqyGHlFskoFRbm/oXC1FG9X7XOaDJJFl0vkBKmTS+3NUezQ==","shasum":"9b6fb1d4657997740fa48af1fda642f60ff179b1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.79.tgz","fileCount":5,"unpackedSize":39377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuA4hCRA9TVsSAnZWagAAeZ0P/jzOkgj86CTgILnlJ134\nBVy8Vb/N3nwASvRiZbIKfzU7ghM6z4tfi26xoKpAljlkelAg1Ky/l2AFO60G\nfV/ADPLekg0Pf2Q5Xp27vGaXWNW3GLxZyTwk1W83LSYfG5bL0Fx8rV030i81\nkOnqkx4KI5u+oZS60uTGkKZRWxVwGOTBmGN2igftxxp/Zycn2Rpkr6l4Q1/1\ndQWO9Dl2Y1SMMzH1jisbEpafpvR6o6yqteoOUV70UwWkR7rcLxz0j4vX2QPC\nbDyEe5ATcCzBwxXowXyAS9W/vXbQkU2SqB+sW9/tL89vBQXpre/Q9mrV/5hD\nqDgTUTyNQeRbCvLlkLxJaR0IK40Sxj/wmM6Ojwru/qKEqJzCJMLqOoAUutu3\nxo3BfH88MKvMR/iaKYp/gpE0+9IOZ7/bqLhLIf0vM5egHsfJz2jrZt0QhVtp\nTaSdRFjJ597Us+jK7HDvmvRkifL/jokX0K6TOP3nV53L2WIauIwWvatLv6JU\neMXN1rVCZtT0HXxNUmRtOePY/hcVCZ/Rtov56C7hFLqYcwfAkqsIdYYno/I3\nM7GAKg8CgeFaYLQ8eZuKQ1J55AUImZGnTkWzVKT/Fvn0eMgb1dsmZE08NTtk\n6XizZHHkSvL7d74zjDX7ahBTXI3qf+fy3xqjPOtuqwAVZcZrfcJe7YYPxFx2\nkqQH\r\n=iHn3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDU80qW82VI3zJ0NjlXREiePh+1yzdMkxCAD1hrwoMllQIhAObIFqMWOc4/YSF/0QaP6MSBDGwkZvWufO8iM9LkDB25"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.79_1555566112884_0.1030620975397738"},"_hasShrinkwrap":false},"0.3.80":{"name":"warraysorted","version":"0.3.80","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"7ccbbabadd55a443589b2d56fa942266b3216b0c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.80","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-C85TDxWKk8XgyHOFSAsXiN73BpypeFj8AvGXEP3W4PE6Kq6Ds1vJzsAJ2NYxBCMh8fi++j3OYuTULYkXPU0f/A==","shasum":"c600015ff5b334df16748ef708ca941e066b09ae","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.80.tgz","fileCount":5,"unpackedSize":39387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuX6PCRA9TVsSAnZWagAArzUQAJc+eAWDAnE8DFM1yHwh\nUS+uehLa1f05uN3CQ7ngAxXlAQk8lXs8F3g2Wcv0cr6j322pOipoCx4zVc9w\nOdhXYlJh/H1Er6xk+jULwmwN6UwQJpCVfSohS5v4LgIDGk6TqQ5Ss6LyNK2P\nHPTnFIOtkVOF9ngwZ2hvxlFkzEsEa/M4geLcK2TyNXnvHjI3nanE1w2AZ8yP\nq6ddk5QsB+i80xkVeECGu6I5wElAgPeaBSaj+q6vVBmG6WsGLn/rwRbQ9n3q\nn915vXZZg5x7mAjwT1R5TN5fn44JB9Vix1WUgbtwtX7/RcCvTWd/IP9Ou1FS\nyAS9hm6gis9E4diRWyXJwFxCV0Q5CtqPlVR041+FzdW9fu4c7qAizoZPrFGV\nUw9hkV9/XWgBDgI8ZnD9xgJx6eQnY2CN6ddVZ3+XJMQ/H2XF8AxZgLVBxtCD\nHbhN0cYhjQQ7wRtg7k7EmQ+iAaihkXvDXZJTZDgMoLqrLWdy1AtFKQI07QCL\nXLr28M4emtUkjHCG7jWXUAA6D1iUOS/8xiiztVrhgpBRV7S0pSkZaS9v0D/8\nTUuoAINKCamIVrqnbi7/z11o0WQaGOsTVXlMA/6kaJWv64Vq+JUb6oisEOaD\nlAr+2EmMnUg0tix1BRrTmZ8ycA4tKJ0vr100ir33Yxn2vBAAq9nDGkZDMQtW\n2W5j\r\n=d+gG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7YlgNp537a6i6Iw76f3YNCCQxXexZmsaI5MD2FigksAiBKyWrVmb5OrNFrZwdR9BKdP45zHXqaMg5c4JxF1JYwdg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.80_1555660431159_0.6196794470208402"},"_hasShrinkwrap":false},"0.3.81":{"name":"warraysorted","version":"0.3.81","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"211915425e6474720fc35a07f655f9dd6ead920f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.81","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-KxW90qXTXOJGZ38AdJqSgyjB23ICtW1kobHxD+y1OHuWHLx9YLclb9lTIHKCqrkWSNMBB7fTPYoNvI8jQXdJGg==","shasum":"f38cb0a482f019b21266764b6dc47745b6fc9bb3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.81.tgz","fileCount":5,"unpackedSize":39388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcz9y9CRA9TVsSAnZWagAAVJYP/1Sc0SB2m1RuDrf+WtU6\nWTp3aPH416ZmvQDOYoYg2rj8dysKWzUPs09l3MgPWuIv0zXaOG+j64kfhKVS\nPODgINhxLvLaNHZJMbVwNS4IriWPb2RT6+9qB8oZtpT+pnFw1Y6YK0d3eFlI\nMhAdR6nYgseHeOhOpIPDO96h0OtKkXiQLOTNzeJ5wStJizVPb3QWQLkJ5dvq\n/VPtPSKS5IDNXa6B+xpI8Z90fVk5pfN7fsKwFpZecVmhOELX1Tev3sVU+MoJ\nInmAlNYhpGcSvEnLqNzCaPtXjAi7S1HNq35C5Nj9mr99xbXN1Loil/UfuEMt\nmLJx5ZcBsM4UhCD2WSAazEJBrJU10JuLhDuZRwGgSEQB3ydIHrrpIvUpNJWr\nymlMH258pknzRTCwJPYUAACzjlgZQg+M3lMmvZ9u4Bs+SBcI0u8M3Go5/PyC\nEK7FJmyiEgI5IMGGpgMy1dUgK9Nqqngb9E9CxvGdw3+cRHkEh0XLz1K9HYtt\nAeV3/u/T6iR3dBJ71q1li66cwroY9v+/ix+1ILvWcF+qT3DI5TPZw8URQQdl\noW8/F4lqBJLj7GIkDypZuC9GLcq4LWnS2T9HkOXOT1LzWL3rJ3tRjEWT6Vao\nzIp9pmAolghqqNQImzNDTaR4CDFou5lB48i1+7E0aP5GbDNEtCVWHHn4CSCO\nl8a+\r\n=FQRt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFj4+By8z8Rd/ztwR6a8brnWiC5f4SYLig3F2MSv4lZjAiBXCyqmHqslix4QYKh7Iz5zTKD2ooQkK1FW75qQ80Ep3g=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.81_1557126333057_0.8120060816679466"},"_hasShrinkwrap":false},"0.3.82":{"name":"warraysorted","version":"0.3.82","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"f0b09ee2f083068e2110e0ef87ca2355c5104650","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.82","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-/Ve7OylPpP8HvRjC582047aq4Qyt01j4I5ydfvSSgZE0zRZKvRmBGIlJ5crQYrJuy8o6+dkxn6TntXYiKji/Ew==","shasum":"70fa4d7d2214d19c93788b0363b1916f772e973e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.82.tgz","fileCount":5,"unpackedSize":39389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc08pRCRA9TVsSAnZWagAAaGgP/2gKGVKMntfjmGs+H+i+\nv2JYCHZVdFh2PCba1Oyd+Tbeac6YCNIoKS62fmoGyKueFnijRU7md1Y/7TIb\nftVCuERtr7wEPzx7koAQpaH75k1BP8hIE+r3reZ27BV6YUkKyaME6rQYblPO\nDaLCWZ4QcabkKE/2Phub6FsFGS+MBcxJ49MRYTnjgjLR3rqIHBmWCHDiRU8O\ng51iH49kvROYaO3OhqMHbmDaNSQwbQ1nKHrutYznFz51Euutf99MJgdmsbQO\n0RrE6WO9DeJsZ62pOB51YJqH3ViCAqxbnVCC4LZS+6bKJ1mrTRTTk7kHK0rd\nosjvJBoU//YyIrEcDvrkC4FRdN7WpPMsamNjQyI5LTEjQ2LvZzIeMNj6YdV9\nv5N597fR2CH+WPSAl23LleO38NX/4a2TydQsFb1hlz3gVdabZU+OANlrS/4D\nsC4SHUa9gS/YhH5LoZ//bbuHouxqxu3KoZtAKLvdnGWX//ucDSj7Xzb3itA/\nS3kg6vGozrZKAVAsiW2N56Pz6quNt0Igka/kEOhoCd578ey4YDabKC2nf6og\neZaxrvsg6Dm8/ITaJ8c/SlinJoUFiCIP3PvA1SIq34C5EaajAElJpK1LgE8W\nTZ5HKpSHHmrvJhoAMsni3Ag2s9MHfQiltsL+ndpVG+Dd+SdWLkbif1H3G2mm\nj1v8\r\n=8KuC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqyOGMhin0qRk0jl8bJyuN5kVlBOUyCL00G1GDIX3GVAIgLZRd8bgCr/3/6RdH1GkERQ64Tj+Qol8iW9xyTfO9HlI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.82_1557383760744_0.8105275006732953"},"_hasShrinkwrap":false},"0.3.83":{"name":"warraysorted","version":"0.3.83","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"56a78db96e188aaf63bb363bfeade56b2f95297a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.83","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-qkrkRrhM30hI+Kk7oDeKtP6yyLkMXsHH19WEj8ViWnSTB6m5/DxFG2f1uuYFGYU7r2ZvlhLo63HpZkMXB2GBLA==","shasum":"4f28dc857fe60e7c3e1a45f54eee2f1f3cff2b0a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.83.tgz","fileCount":5,"unpackedSize":39390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc6s/KCRA9TVsSAnZWagAAckkP/0qVh+MAiU+t/wczIe2m\nYBnYqq+GUfif9D5nsjrdoOK4ej+0QOsD+tjz2s1gtNeqjiulWTUkU7yLX/Be\nGgTlv0h6VzN1ESamyLPBjQgq2Q/qYv1HKsiuyFU+01nnK+s7FAoNjTvIyIs9\nZrjGaW1jD9Xc2cIGb3h+nbUxSibVtI8e/0N4M0SY9/Nvh3ABrXFa0d2X5IOa\nxXwlFjVvvtPj/TbHskVM0XbwtwAtXCIJLxh5w2U5fHekimUcPb9F5Tu/eJUL\nVDjpOMyA7MoCMAQ2gRuBBAPYeAQxKDikO2FheJUHlgR+Llbr8EzAPktp4NTI\nSGEgFQyzCS7o+93x30k+Wmatv7wfTzo+8W/oJTUun9lfufwhb3toEczckeVI\nCSq3f4zIM87QIeLcMb30/L0JqCUAWfl1T8PX1qtzz7QvW366Q3ibeYyJPrZa\nJKBValINGV1CTT9l9IHlX6RngOo3oOQxVyJGohDWigJRjn3HWxkdroLu5iks\n8Vx/7mlCROWr+ETKrEGuVA+3wtF1+lYH41hj3NjFOeAqvmeHOA0xttBfaYKY\nk+FYGthm4Bqx94HlHWwKfW38IA5Go3GlHkXowyiIR7JAqZREQTZsl14zztW/\nYmeJhtgGMufNq4a64n8xepR8q2sAWyecjVPBrKKFFqhydeHGiwjxXHu9+A1S\nWjqf\r\n=Ixdd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwzVkJJQHyPWWcQeTLj0sqAbG+ky1axRX+UkCynB5nbAIhAILSGm7D568CNGOk381JLuFWDhWKcv0Becj/Rc0ye6lV"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.83_1558892489939_0.7782244675273295"},"_hasShrinkwrap":false},"0.3.84":{"name":"warraysorted","version":"0.3.84","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"269b9ff65b90bb32044020602b608f80b4cc0e49","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.84","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-HQuPI0WftvxizDCghN7LbNM1n7bzMfmZuyh0txvdY1ZygZET1KIsjqFs8ApnV3h/WwBYeUva7f1yZjwxhS584Q==","shasum":"271022bef8ec58cae1e50e1f7876bdd36f5ae068","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.84.tgz","fileCount":5,"unpackedSize":39391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc6tdeCRA9TVsSAnZWagAANW0QAJwZANKO+acKNW58r1cE\nP8hy06nyjMRiaiUjBEJM/qonO/ibmGTnCPNRZqTAomGeBJlFvlXSdFAveGyi\nsIEqoat92s/qB4A4ZSLLbiA8CMtRMcsjJOVecqszfpymk8ZAeVBl3cHsqFXX\nECbo9timnxFHZNx0bjc29Qw8ntYPEwOH+vBPrz86Nc4v9nID+Ms4vWiKQ++p\nkpmF6Db7vz+G8kfQHIalnrb9iZKK52Vg4zKCIN80XfeX5rSXFE0XvSpBYFLx\natxU62rjNswx5/icxN14KVBIKo5ttDxQTPkJDmo5q6LiAHo0BTNjCRvBM93G\nk0788dNjhJ9efvyIIjjvI51J/NsyWkLe0RCTQZrg/ayG52iN0hcNEeJz7h8h\nXEUZOp5SY3QX2bov/r4TBeHGEthYuO1Zd9pgqeJnKg/QPm1AfbzYckqrou/b\nD+ZUx4flX6mdHVrJNr6bx94w+TuPILZjfOIhzoO9e9DLG0VdJSxAHeuoN/hi\nTPckfs7NLsird8YA8DU6Gf072c5JSFqlpzBWfTbt/+oGDu76NScQbX9aoCBG\nkc8EMXo3MpuYKHFfuBvXI+vrL3BP9c+4hAtBVVeFunIH4I+H5p8+rZlh7/uv\nag/cmjwEpzNqXyKA8ynNhQrpJSAzRy8UPr1+b9k2+WRI5aYXGiSdGcr4HsV3\nZZqh\r\n=60eY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPd4G7w8HHl7Dhv5FQVSIEwqgFRbimqF7EL2n6u9KaKQIgXsPR8R7hsZ4SsCgkWdC8W4/n0xE2/EwrwP/NnvzH/QE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.84_1558894430091_0.7977877991401556"},"_hasShrinkwrap":false},"0.3.85":{"name":"warraysorted","version":"0.3.85","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"df86a86d4f090a1b737cc9ee4c54324638f0a40a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.85","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-1U5/QkROFcOsRmCUIqSIl5QXhm3f/BCi/hmGRHjXhxf99ymSB4tOrkLF1fPK0loBjaYS1e8qqvQHXPwfVJ5qtA==","shasum":"d680e87956988ce7f80e517463fec4eea085c211","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.85.tgz","fileCount":5,"unpackedSize":39392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7N8aCRA9TVsSAnZWagAAqRsP/09MYzDrHHys+6CjixML\nQ0JfMWd0xBnoXDkKGaL7Dn4t8ROMmrdGYPhpM8oifv1PW0tJHSGxF1aQniJY\nsWO2K4LBxgYD3cBo8+X5Ce21dBOsxIigbEy1QpWChHOHmf0Ky8i7qeVPHXnn\ny7hQjyNE6sGzygBezWLgD2TdFxYTMp6sGMh3/bh8vmQrF8aBd56U/fsy1mKx\nzz2mw7LT1tiijDEEr0L5nc7XdtDEHicc+zLGMmVWfDdiavRTllhuA0aN7yD1\niUo1u9V0AKPfFi/VlS0zUhze3dRI7OMIqr8th7RK35UWKbVwLhWsnBqX54E8\ni39RmfcptuCIJevW7FRAPPW+Ofa8+8GZWVp0Cai52DIxrGJycjrDemhoYehi\nVKQIGPzZ/UdJlxbQrtiwGDCHtBLEdbs0qFhA/X257nRF8ulhwzVvgO9pE3UJ\nqwyCGas/AYgxUWWUlU3r5l1n+5XvdkeTRJ9jd6N4/EghNf0Cy4bIq14SqEik\neEJoPCD1wkO4mZHQcvN7kuE8ixE8F5PEWZT/l0yXJ+4EtxExBsK/DSnliaAd\nra/U3M8pOfvf/g/pEjThpinV2Xfi+Z5KDduiLimodEFauLpUeXenwNf+P8o5\nTTbAhhCHOd4+TnaRrNUj6wndasemszn2j84CbMaBAa1ykup1ExWTiqIV7xfO\n622s\r\n=Dvna\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+KeaxKOdV4qtIJVfvD7lPbcEzaVDBG4OjzQ0mo1sWLAIhAMaiPHlcmuceSgk9UkVWoa9IPPXpXwV3ACjoDZH3nnls"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.85_1559027482243_0.1539589935339145"},"_hasShrinkwrap":false},"0.3.86":{"name":"warraysorted","version":"0.3.86","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"f80c8b238276db312355bc6184d777e46c806b39","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.86","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-9YgirN04oZ+Lq2k3QI5jlcVhfh1LYURB2/gNieW5AiiuyMvTADfoMVTmjmNWpRe3D9TniD7Zi5tsY9deW/OCLA==","shasum":"b1213587ad2b76b8c808a80b93b42662298bbdb6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.86.tgz","fileCount":5,"unpackedSize":39393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/pEuCRA9TVsSAnZWagAAP8IP/0UIGARwJNg6oN1Eeq5o\nP/AX0LSnruA+2G2FtnBE0COkpQUEV9s68LR+slD/peiGB7+m4xhwmQk9TeIM\n1moOe1slZTBf3Q5yBJBmlpzEZYiBRnMhUq8l6HO4DgNZsdfO30QhskKYCglX\nFivrovLiXFXuB95yq+Zr4nut+iVSEZ0bDnHvqQITtcp4ecFIF5MpUbflpt/V\nvjViCFM7NEdAi+KzVhoJ5CaewKE9Ny2P4TKHV97xpswO7sVU+fW/12vrK9j3\nTD9lEOUuxLNBndcfH5E0dbNZy5YI7oYi4/dpM+1PGfsbKBXngIYmAhSwhi9k\nOo9Vcv9sLrncobzTDs5zxBHWRGqBOwzqq1EkEdu/BvcYxY4pGTEq/MeQSfYp\nYgaWTO2R6GS1iUlRMb8HxmvD6OzfACBDZpMn7m4elBFGc2Oa0dX3sv4FJNti\nEoK/riqV1VyECjXdcHD8SdN0Cf8rTiBadLKWQYQV78yhXQ634Yk0TZHqTy4y\nsxYvKujCM574a8k7OzXtyU3BWpUWcycJQo5g9yfHTR2DppE35gygSQWXtYjR\n4BSbX0Pm7Wx2KgRAOoKjnPCwiQPYB53WnUlBO5IsT2GFn7ctTlddjbg8nh05\nIbtRLbfTsLnL/Kvo8E6OHsTnCnj0VMnwHRKaUXqGfqOrK45/UM8Xv25qx10V\nrovZ\r\n=yUB/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVUUxIsRI7I+5M6dYBq+t66z2RR8ANekkJyuMrXi1pngIgUCupRtDbSa+QbBwwgJniW6kphH/QZNSt/zATG6tspCY="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.86_1560187181839_0.27634971165911026"},"_hasShrinkwrap":false},"0.3.87":{"name":"warraysorted","version":"0.3.87","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"25444c79ed9ef4922b935de3fbcf7dd8c9976523","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.87","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-1iFjXezFnIEH+boRR0h/MrhjSpCGC7mX21grtZ8Jo90lfHIFvMACXE1rz/7LmrJD+X+Y5wme9+5qHcdCDzGqtg==","shasum":"d577f619eeff640e38a2aa8dc448a0bb989178f7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.87.tgz","fileCount":5,"unpackedSize":39394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdByX8CRA9TVsSAnZWagAAaM0P/jP8vkMIkeciWY1xHDfO\nLdRZDkCTVmB5WyZDsnYrpe8vjQuy1w5sAXSrF5X918jensKWarRfSJ+dLD3o\nhouUzFRWItakfi/mq1kmv7/YL6E4KZ66B4LT75JS36blte2O8nSGW9+w+bHu\ni2y8fbLbIjz+dLKNYMgfwqo6u0BVVgEEjzjxdre3iMlHyJzH35rYONLEf5eO\n+2SH8igTN5DA2QV3YJAYkAuKjxRWunPaf4v5bXClMLoBmupPzzuZEufeM1Ce\ngZvjduEO8EneecEiyQNTrXFezqBmsfKSkuOS5aBV7SwIAGPjg2tQFaPPlTZf\nf7aixVlZgO6DBDlyph6a0TLFcOslNGS1tm+xkYV7s+UFstHH1b7gMsP6qfkJ\niS8CapkPMQkRlM3aHX2MLjl54gzwDeC2tCmCo0e55JljbEvmffdMyuW70OnV\n+lIGo+sD0IS1GDHlzX7VbBldzOdAXcBN65MK5YFzf4mPuzSZ/KeGMJQRfoQB\nQxSEgfRQAglpUXOM7Ow1W7kpfQmEt2YJKn8jxAqjI7Si5kVF2Pmh9rKU80AP\ng4GgzM0g96Qt/X3akYY6D51YSKDNkxKPmWMIjXh7z+fikWOZPnZKQKzDfiTz\npnz7j6uU2HQGe5uu5rBSVDHcErJX1FVqTpgo7fTh1IBHbLzSzihoPASFvww4\nJ9OF\r\n=2YFi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdMHDG9w/2N4Hf/v10yHf8uBdBuWulJ9LY+McZFn/mOAiEA4oIqNgpYj4xu334JseqnsNiWb3zX5B/1Ei/4xYlrBn4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.87_1560749563200_0.5071204372812714"},"_hasShrinkwrap":false},"0.3.88":{"name":"warraysorted","version":"0.3.88","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"49025f378fc459caf5d9bb7f4e0f890d77614887","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.88","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-Oto3ymWuqbziPetBOoknxQukjZUiZksCAEasDPEduQu84xpS9B4FUn7EM+kjR60pIFhINWVxLVUaajGrb5oMzw==","shasum":"da953d3fe37bce6169dd2d0ef47603a45b49db51","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.88.tgz","fileCount":5,"unpackedSize":39395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCLnbCRA9TVsSAnZWagAAReIP/joH8UhYOphgk2oyiySp\nbJvybSH1yndUJZRDmeiHOuIwE/hmT8Z6t5MSRxvF0MdPPziUYn9TYCStI6sA\nnSigJuKf7MgsKEBSSN1vrdjGkHcjHFwuAvG42isFKpHJ0SP/nsJ2NJqVNh+Z\n/kENfZdR+rV4tDbOMQ8I80sobEkpaOyKi8FAxg2qqpMXvs8gMnKSXz7vdea9\nt7x+AuiODqFAKcqi5pk7xLuLS+ttNd1Z2A3KMrfZC+aIaK5CXZz5uF5AJJSm\n0eNPgeVo74Oj8vqR2hqrNiHnlIpl1lo5/W0dTSLOvTAdJjic/1UyDmE1ouVr\n25kGhhrM1WulGjuKXuLKIFgh9TVn7TB9ASiDjpymTIxnQWJhcwKpgGMrjtC/\nrQx34caKhJiitGxS8SQsCgWggOFKo29fw7/4U6ynYXz9UKYhx7AByljHBBl4\nmsc8ShmKudPUFk5MWECA4d7iuzvRXONIXp/fuNKl0Bx/7rb7HEoLHe+Kka83\np/wtB2/MOCMZDQxSZczVWMa8VY8dt9BeYzMteD1CnVxsCV2dIhIgNgN4xUIS\nP2uJoseo6mZwxdANw1XKBmnb2D2kILlTsPaDdaKsl3w/2scmN2Xk1Y80TXqz\nu9tmpNCZSgH8CZb9N1BCs39IozBpRa92ABHK6eIMDm++q73n+SectacsrzVd\nr/ru\r\n=/mqw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuXdvfhdguBXrD7A3ckpwXQtQxIQtYCzIt7+syhQhsXAiEA8a0NiO0Wa9/yLeM2SA/vF/I/0hoAX9HLBfSIpBNHdx4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.88_1560852955089_0.27515103196801527"},"_hasShrinkwrap":false},"0.3.89":{"name":"warraysorted","version":"0.3.89","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"a5ce5193676caf98b44b0b29b10fc11bd7d6edae","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.89","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-xUgtrGiKmtX8XRMa6jXB2Qecl2gh/BY0Eg6w5KVZ1Z7zcNTmZZYO1scJSrGY+rermZzqo0pr5wBWQS5TUYeIsQ==","shasum":"33132f378bc7289ba0bcc66393bf73a97d7b24c0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.89.tgz","fileCount":5,"unpackedSize":39396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCMRCCRA9TVsSAnZWagAAHIwQAJI1x7bfwLiInQW6JJEN\n02zHvQqZ8Y2wPhernmM6T2KkC4BEnGBiUtoPsaaxvlP30uqpoXNNcxONpvST\n72vdhhpA6SkaKfvii5G2MHv3bfEYv+t/sNT+aYkwgXyfADQQO49YcUwVzr4i\nH/we9ldaq1fHdVUWDKgh6+RfAmgoaNUHkluwp6aHXACQZVJ1jsVSKSZvNJ9R\nmwbvxzAkcjdJQ2hR/Z2+Upw1Z/xd9vUtncv157N9SORb3Lc03UkMEg7LIG7/\ndACqLc/oTttY0NyEdNtad1DC/67IBv/cN4HaP5lXaZqM3C5Yd8KrP3sQNbpH\nUtGxojJnLpvvyl42/35mz2pZPtsMNYvwfrKXfawZma2wbMs939D9HOsrx5WU\ncCquCpRf/9rfvrgrNtfZ62D1YPzS7lkwPBRYCexr1QGbXaAKtXuzahfRe0JW\n+L4+5L0VXPG8AXsgjW3pSO/abQV32WnLrdxRVKleamKSnXeEkg7wRrOjLA6p\nw/M1g2Y2NYmoLD0+gmJB0h2IFsvC6JfWubO80ATtDLfLzHNJ8iE40NPSVvmx\nKM9+SF/GMggApBzILUHKax0/cPDSEaMddJcF9ELsCfAQ9JwsWroh97b0GVSb\nB1TikP6Fc5FTqe93SOQrTbtC1/Haf75JX7jbM4XaVNB3An5U79UrqWezJDWP\nxdaB\r\n=D58R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcVYZ6s1jS+iZH3ai0ur/ZZqUazHhKB1actWpkhMsmYQIgNsSGkyBMRtnZRINPcuuqzDbXae8LojC+v36QBJcwb/g="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.89_1560855618121_0.9431315588088061"},"_hasShrinkwrap":false},"0.3.90":{"name":"warraysorted","version":"0.3.90","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"169df9a9e19b8993859ff58d52e39b55b40d3950","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.90","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-j0GpmC8V/Ezp16PxrUurUpkt2fPyrhrE0rMIaj1nPY9CPy2lBriLb1LQK2Yc8rICCSnb5SNvi2mmHKhNjJrA+w==","shasum":"70d35a85fa9b01efcc51f6093234f6c37137ed51","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.90.tgz","fileCount":5,"unpackedSize":38923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGKjyCRA9TVsSAnZWagAA8csP/1szwpSboBouSNR5mlWB\nojFRkbCbDqNAcXgexJsK3ld4sU7JHfiCU2cw4ADktcque/5GvMQQvs9IHjKi\nuIOj1vlVKowZ4rdjgKc/P1aBJQWt8a+8/I2tPYbM9Hr7aVStHVSFTQGepku/\nuYE2q17YPqT3JCj3vq6O1zffQe3bvODD/TKiXAupyXjfN8zB4cV0ASQotg1f\nzguKDlJ4L04962m5NXASe53XKYYr0zvbkc54suiiSCXOtUdfiD63M5UWRF9T\n3/QSFBN97gtBKOsFCaZEkSAmN2xUaF4BZCJICGpXSzc8F4Erc/InCezUAIeI\nynN1BeETYa9RzRaJQM6h62xMB+mE+SCKTqxNmhMOPaezFgVd2ayNkyJMF/r6\nDx6JY9QEhSW9VeP26+PDXQ/6GTt9oE/+RyKePffNAR9ZPKRm/27Ig1G4D3Ok\nbkFF/jcjVnc1dqfWZ2/odpiD0kUVyeGjDo1+vdPMNpQcaoMGPPy9LUj79HFh\n/r2UJAD0Dp/711J725VhQKTkABIwYkHa2d3VJT7v70FRS2vEbNHPUw9f4XEy\nZkUliv2/44HuR8iLkG9SVFtG9uzKPeTwpDAv5ql4bDgG0j7ouHDtmVkbt1wa\nVLFf8fPrvA3hQtQsQlDYvxEy9csEFWc7rCZTKDrrUP3NyQuRD86qP85EDy0B\n7DPU\r\n=H/gy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCCYL0x7fZHWFI287/Hr1pv1+wK9pFsv8+aZXR9WGy0QIhAJjRsChdSYgt3OfdaF7k1h0FRl9/Oe7byXjEKgWFsPl+"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.90_1561897202236_0.48641480081684874"},"_hasShrinkwrap":false},"0.3.91":{"name":"warraysorted","version":"0.3.91","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"fbbf2e7e3130a2ca09f3131e36d81832d0df0493","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.91","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-KC3dLfeSdbh8iW6QgXGRRtUKtNJuvGWofiJf4ft9J1RWfUudnS9oGrCE9MgG9fIOazFIRlPbzHjlTCuiZ4BY5A==","shasum":"6654977fc8a8440682620695c386a193c69df2ab","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.91.tgz","fileCount":5,"unpackedSize":38924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKG1mCRA9TVsSAnZWagAAGd0P/jBNp6VoQiMvmAPtBOHp\nPugPsBMg+cL1wolT7YDJltcnxnKIy2Bh6atS8JtbpcNirKLGNXWLu6pbU4AV\n9EmCtPGcPpryzsory5jptP2a12z3BVLSx5SIkJtz4NI7r8N3A8rft8xQD0S6\nMmz1ixqOPHsoR8pQ8Et75Ua03bV7a6+e2Apmo3qChxb8+f9zMPQ9h+m2ZYRO\nE+YOgDWspIJeR7i5sYcV2oPgIui7k5U04Qxr9M8OOO6xCFA5QOrroqQYpw7h\n0X1gC+301UuWYA3Dnq6AeNobPnU7Zbao2jpOv4nqG23zzexWSrigVA88vY1w\n2yutmIL8WSbeJkHT1hFx8keYWr7yhAIkptUDDeO7rZ3XdaZ4PpieO4F9jYPA\nSDz6Q6YkUxaeH396TSDi9wxJNpvsqM9nuL8QVij1bXaYuwpoA5aDCfI8HhmX\nBauji+iS1pEDv2wJSLSibiWkkoINc0Y9mFHXWcadJVShYPdq/svT2CVNrcON\navo9z2Mc8NH2yy8uiIwbmt7pAtLvdd15PEp/3oq7oW2SU6z59KeeJZ80e4UB\nVF+SKBsz0N1GkW4eOKU0nTdE7gzQEbUItVQPRRDC//KU6IeHxqVMWSllwAzu\nlw9PG+gPhH2mzYapPIiK58aHQ8BWk9SVkGaISsaow3o3LQKLswIuwc1SasKK\n0vOh\r\n=w878\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXCGGVIhIe88XR7Pc7VMMl0HmzM43XuqIHV2J01qXgCAIhANDs/Yeyg+Jhkl7fcDQCdxCwsoppzItA99DiMh3+NbGZ"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.91_1562930533492_0.2921670590003076"},"_hasShrinkwrap":false},"0.3.92":{"name":"warraysorted","version":"0.3.92","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"595c8d3c6474cfd91ed5453cb79f5e1cf8ab2754","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.92","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-4D3I94iEWBKaVuzQNE/Q2Rq1jJSY6bIfvglyiRR26QPp4f5VKjRF+iEGO14zXUdQaB3MpsltGixBLxeBBgJLMw==","shasum":"eef94f4e776f11af2b3947bd7862434ae032de44","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.92.tgz","fileCount":5,"unpackedSize":38819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKIbwCRA9TVsSAnZWagAAs/IP/3N14JLsr6UqGtpiI1Nb\nuMwyZ4CnVQssd5E3bgY/LgRpzP3pr95+mwdP4G39WRnEAtJ7Scsbuzh+Ye8u\noEMdlDAPP7/EOwRuVrVnueflWhCPTW8Rsbw23J0U6JNdG5GwERk2yuYv8su7\nBaPKADnzumhTFewJi/WI9EVU8Z3IlZlW7iaDBT6QRpKkrVNtClID3PtqKqlj\nHDduDgzdL/fcXNv6sXDTuO96CDh2NoHM72hh7DZKLF3IN5oBKR8HlpuzbMqA\nDI++1MNmORWNJcDyHnfkxOpflYK71e4Tm5Hj6Ua1WR7eEavUmlaWYgvsSTiY\nlvoUyi1wU327I+nsVh57MfveZ3aCBT2IYynfbKboBWOiSvkWxEYS+nBJEx1s\nIFdIabEimebFYqlCx/tjLxqhJe9wRku1WJ7K+zGJb/UXNFp5R83N7i04WBYj\nnrTWMkXUxSaTxRFEMWeLpw71y+7F+NIlPIfU/cX1OdQhhmWhVZNZGe4daaX8\nYMsXTFxk6OyLXRHnyupzl6KrJcEiDVuiPaiH+AUthqaaBKAp83toRNhjNQyz\n1W/avbtyfDRIZyTJoEd0MXzlTWUPFMus8eHB5NRIVpZoYXeEeWOXV5dWB/bg\n3vFb6Itd/QfcNqA1wpl3rhX/YKkwCQkKsBTxihBVgdzvw3mXNI7kQC7+W3Qm\nNakR\r\n=3a8s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/9cUj8OK7l10T5kCIwU5Bym0jQsi6Q1MXpbPQZ9Fj7gIgT8WDHKakZH1FFFHe5AO89DiH4mtOAHEV9y7fmchJBZE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.92_1562937071976_0.4249924880548921"},"_hasShrinkwrap":false},"0.3.93":{"name":"warraysorted","version":"0.3.93","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"ccda54ce030b03bb9bac30dfe4a530a9b5e4170e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.93","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-PFWDxx7Z9LPT9xLJc9z0cbVKrKR7JqFHabzerBfKa/vU0liCvi02pRXawRo60z74ynxQ8nGwYLdDeBvj/f3ZUg==","shasum":"d41b4bc12dd26955d9a9809cd962910602c0cf72","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.93.tgz","fileCount":5,"unpackedSize":38820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMHCQCRA9TVsSAnZWagAAH6cP/RDj8SfQ6w3m2MHzjMZv\nIMto53nwKxqv1kC2HonurOK2pGmCJpSoWctKN03PetYxsknNiDxzf/Am7qIS\nZ0mno4fN5fibGbs/grTRoEzT+MbIb6KsgBOUkC2X4MjtBYJ008U51Lhhpqzi\nDluy8ekAmTP6QvVRMVcHdlWpHM3AEd7+ztYWgD/Adjv+HVIfd2ob5edVlxPz\nqd8rFMeERk0fVw3dGQeMs66qy3RJg2CDNiBt1KkRqlmMP2nXANZZUsYKN//L\ntU21kzIDy6QMfJ/RtBtjZzWoyghh2ndAUwyli0bqOqUvZPZDMICAC09jhuke\n1UA6pIzW+ek46ZWFt2LH5LcgRyk2uz8FHZVfcj764473oiPVX4wWo7Lx5Zru\nLlP8TZKsY2gVSoH1nN6rFa6/yWCGaeVqNdsTZSf99IM/lg0Hyr1lrP7fJJd5\n3qJ/GN4pxMiKOj02oYlOy0JKS6Zzmr+/L39tTlVKawp8x0aJXHcO6PEhJ2kw\n91GDcBajwCBaRXxNyUGptK+1WBvAm3Zc+vQ2gfsnxwZY2tvfhrCcoEI4oQcP\nuYsOeJ4ooGIjAO5eqV80s/wCZ9p4bwMbOKp3GzwacRDVMKDCANBZAUH8oGVw\nyJE1A+nTMyZHefz0BsQy56XioxOQbPviL3L7vL2NAALqahoe1h05LSoJEG7x\nVv9T\r\n=OczA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyF/Ud01eUCoGpql+YFur0fjv3MqkpEaqA7L+OdmUL4AiBEWSdeHXRwW6Sz7DDOeKF5HEoK8bHmNIY5PTheyGx4HQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.93_1563455631174_0.13428102627763305"},"_hasShrinkwrap":false},"0.3.94":{"name":"warraysorted","version":"0.3.94","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"1f326b9f4d5488233bc2c1b6c2a81f44b7fdcd32","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.94","_npmVersion":"6.5.0","_nodeVersion":"9.8.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-4XX+tGA4Mj9EDaDlWDWKo2RIaIvPKyAMbs3508/mZJHsPonabDALUGFuThWjZ5C+hbBFCEqNj7hZ7CdXiLxflg==","shasum":"f8f2042158d8c5f6e0c6d4975fe780104aa0eb10","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.94.tgz","fileCount":5,"unpackedSize":38380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNoZgCRA9TVsSAnZWagAA5TIQAJOcXnDWVnCAXDmMcqUw\nx0dFHFzRK/kP4z5kYR4oDbpIip8IwjyDihudrDk0rcWKw9TBQT5lQaD7tbBI\npVb7kUVRgWUN4EpqTYE2X9T/luVSpCeTbLpZL26zMb0uJNBiUf5Slt6VJ1c6\nn+B/d3RVetxpKb/X8shgvClcVmmZjZ/TdCcbOMRUArgoP0m6Fg5jRfZ+72xp\nyjGQS4/VVGF7AVeaht8yo8EcQlhUzUAr6CEZKNswQB8A62V47xLC9dBzwoi/\nasJLgKOiGAgKen+Bya0DCiCW27tt4jJyVNX1AwvkxNDkQKnCSzhplQiBE6NK\ni5wziJfXrwq/UgKNStYfWcinXXSLfsIUGBVPyG2MHyxr1j48vVPR3pOnINLY\nuDIN0b04poiV6vmC59PnoAMr/ZyAwTdDDRLdM2w0i5UN/caKDyeI4fbY6tZn\n3fZd6GFQIY0jWCXgdW5D4/FMkQnDlvuYyXjI/7oTKGOjmqCXQN5Fomf2KAYf\nadSBjzapM9/x4Rk5+JMgIzZXFz9cmZxLe4BZX82LxVBbV1oOsnQAKXaqqHKc\n7rI+boFmjKi+NbThdtcFCagsD4EIQmRoXBB6JewBA6jtzldbUJI2vFZNsXw0\nPJYTRzMcoIniNBBYpPzlq0Ci67eCPx7m4DDgrV6haE51wTRrmavYkjrpMCia\nE7Wc\r\n=sFPf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCowUXMwt3c/V+lv9WgwmdBvNY6R4Ro+JQqALusv3TWfwIhAP4uRNCY41BlZnNh8CLQ17PL3AzJcqIQsrf+uHJ4H6Gw"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.94_1563854431574_0.4689978243455921"},"_hasShrinkwrap":false},"0.3.95":{"name":"warraysorted","version":"0.3.95","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest proto","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"264c2e793493c8e17ee422f072d57b204a7a8a8b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.95","_npmVersion":"6.5.0","_nodeVersion":"12.7.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-HU8p24quSoX8XvdG/Q3p1gkPFY3uLYDr33gcLc22Et7GM6SE6F1cO5oDLpBRIEe413PnU+qq6eGQuChkISsGuA==","shasum":"7c94f56830b726af3f5b1efe912a75ab7d1435ab","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.95.tgz","fileCount":5,"unpackedSize":38381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQo3BCRA9TVsSAnZWagAAeG4QAJWD8oi84eQi3AhNkKuh\n6bilstoKSJ5Ee4UiDup0qRuE2n2KoXTkjBLa6bXMIh5x9AlWTURoVjEVkTYr\nl7FpfwpQnN6qy6k/r74QcwZadV8es+o9EHdOEFDxVHHuWYsNit3qaIOOPz1y\n0IQnPNVTVitAC+GBSf5tuQX4q+TNLEDe46sCrXrgvEnM1JWqr0oXqosQPFeo\nOhpch9lpMPKenWaN3o9Jr/hL014elcmuiIqdpD55mAEWKxqX+wTrVKh8kfXj\nNH1JGLZ/J2HfdFLpGGCdEkkjFUKq7XN170iSMgsgE5KXd7mFzp+mjqaHRckv\nfSYZkixHLho15VTkZXmXg82aBVyM2FMRfGVUqGn0tiKykMeEAUA9rkNLeuQw\n5R0sEIo8a9InW1tYbE4IQhL3bs5nUZlzANBR42sKwTMZudHkwagi8THgf0t2\noBWmhDCPPs5ucNHgCSBymBq7akptIa8Zo7iUgkKaB+eRMMB0Ggah/uM6Y/OM\nvO8hhOsgHtRfD1mY2v3btpCfHpUJZFcQvoi1ibTy4XXtCZdq7fzpiZ1DDcIV\nJ2YEYVs4p/O6qQdp+UoDgvj+AL7gORgdrPCIa5RPjyjUcoWpwrQuWg+2Vj5Q\nPbCuvx2HVYGmD+uY+BY0xT6cLFSPerwibO/QRBfULfr2mxwDH+izUFvMHoS/\nf7tL\r\n=4owG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8wzyRhT+/vH/61SD4ffU/z1TZOiFYeDx4h97n4drJzAiAzic/e1hMthY3XsTQhh6QxsMJ4BfPbUD/RQ0974g4gRg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.95_1564642752359_0.7697483099930147"},"_hasShrinkwrap":false},"0.3.96":{"name":"warraysorted","version":"0.3.96","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"6fbe178b4e49e995294ec1796a5c196db323d792","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.96","_npmVersion":"6.5.0","_nodeVersion":"12.7.0","_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"dist":{"integrity":"sha512-Ixp/0IsKtJsFGI6bZXw3HPtGmXfxdHL+ROivYKacxsIU39q+ijR34opOpxMZYs1wLHyftBAmetdBsxmJXxH3ZQ==","shasum":"9720d9043a3f7c17c31846aae46ad809993a7f1e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.96.tgz","fileCount":5,"unpackedSize":38390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQqc/CRA9TVsSAnZWagAAYQgP/29ZLSulE3DJ9dUhXTxY\nAq9ARrfyq+l7XZYp2ftjbdt31TLvxjB5ki/2ZHYFPwruQSqXcnF2dyBssNMg\nb96hztYyZRslft/DGnxnoeMLt4+l0+2Mg8Ks86q4tmE2ojFD+I1Egu6C1ntC\ntH6lyq3fjkgNNmLoOpAeXfJaJNNrgwfocFxpUBLozOUND0ITT3hpgnPJFRdp\nASU2cM4WWFixoF/UNXWjgmNKFisW1ptUvgfkcRbR0+vmdlojkdglbxpfCpTi\nsYennLqNULobU9Q+U61QT+A+xluGPbWrn75sj9nSO4IFBPNOr8dsqiYDajh5\n+AQXN3k5FimkB7CPwNzQsfQYuGtmYGGDYz5C6a31MMq0hAvFehUc7TFuZF57\nXkWeyGWp+E3t90lEaj0IYlX3fjcMkWfX3d5oQWDwA9h5fXlO7Rm6HV2baL/E\nVQ304E/S7mMDAapbQ3YVnExogjatHaQS0YlV4WZugD8s9LZtq1Oo5Ve7aE2O\nch7P4UVHvEvjQxy29OrGEoeJu202c+3tDP5y38Gu27fPSBdA4nxfiOLrfGVx\nOpMtS/VRLCX8yqSF+ARgveXce/qqSS0wcc0R+feN1M+u1+Y0X3srg7BUcBa/\nJ5Qm1u/HtpoYvXchbQEnaVeRfa5esvvfxtz+Y0NQWoOYWXFiSaoKjO+G+ma6\nLP80\r\n=7yJb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClFjA8fMTDLTPFAh3G3ZuW6+PV83ZJAAv8779O5e+M6gIhAINOeUSk50w5tJH5qKf8wHXFwjn6RIDlLBjRBiSu8rdm"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.96_1564649278747_0.31506472846278566"},"_hasShrinkwrap":false},"0.3.97":{"name":"warraysorted","version":"0.3.97","engine":"node >= 6.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"4d6cf87b49f68166703a33d41df4683bedc5d679","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.97","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-u518Po+z/dUtksvDVs9wm0BQ2FZLgngKssIpfIk2XZsjEZh+qSo1v/y9rKMxqQieyU1NVxsyPDZIFZ2eOXByAA==","shasum":"90c96b361aa0f11c9dd99df9e46d25642e288038","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.97.tgz","fileCount":5,"unpackedSize":38391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdU5ouCRA9TVsSAnZWagAA1BcP/R9waXVatcWUuETnQX6n\nBmxy1ffgXRTOG9hOyfRBCiLY9wxgPn3goppk5dT8sltkSYTbF35xzJohlm+a\naiSiTdhypJ1hOxZAIFMO6BVHs5V8g2Er7CLRnwCnmAmNz5fxD+DCTY9Ydp4y\nCRUGv6czthbFwmUYp7SJMvUmeCP8zai+xNG8d7o9bprRXy8VGe2m1dEMfvwq\nw/hSKWmyQ2uzT9DrXP2Q57z1GDxGFS25z/eA7OpwRqnF14bpXolDXwHxbxdT\nsNZ55wcJr+cENgYAk6rGs3+iBsCKZcjcRUavLWHVM9ApJDP//V26LIz7dMRU\nAMpJh6tYIa6YKxMY6frorZraWCueHqwuBCFY7bvjmMqU+918wCLM+Bf++cgw\nR3ET2pbBYF3fVKpxxaEZiDf4Z/T3dpQlnZAynlng+JwBEyrVmOkaPRTIqDrG\nbQ2N2C+SVHOA44kvH7i4hijZ/JaVA6V90A87Hn4tZETfS2gHSahUIRTsmi17\nbr4QrSWGD+3MVaHP6VuiwhRL0/CpQkPz9do73x0zFTa6H1vgYoqEoT55iUdQ\nyMMc+vbzuTBroeuJfxaxRFi3OE82Qb+egQKaSKS5EtyrkYhVtZ+3hdzptpbe\nk3nlGMUPWjieJkW5ojUDEbvroN80sGqkEu5wWNmvLQzYxDZQd3VXlBbWjJV+\n/07u\r\n=NmQz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0xT6n6Yc1asY51oOwRCk1CpQvtnQryV5npnfrONI7TAiEArRz7GwDgFOV6bxG/sBW6QaLK60mWQfThulchj0vyYcc="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.97_1565760046003_0.1413562278369258"},"_hasShrinkwrap":false},"0.3.98":{"name":"warraysorted","version":"0.3.98","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"5375bbffac2e419ff9f8d681beee074a795dd7d9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.98","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-pmVj7yb2TEA6i/2FV5w8o1wzGbLGFrPYNp1FdoleV8EA0pznDQK0lKn4wHA/Y79UB5Tkz4SvGAUGRq7nDUEQOQ==","shasum":"074260196be979b2ecaf467d75c019faf6bbe4f4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.98.tgz","fileCount":5,"unpackedSize":38392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdU+AoCRA9TVsSAnZWagAAyr8P/RnIJaONB9iYQkUSJm5K\noZFxKujI2kVodq5aOs1AE7E0i3hAw+/ubJsz2Db2+VRTBzjiYWs0AeXroaOC\nhDmnQwlmES/jqUt+Q5upyUh8vXlqpHVz5Y2mCS5gunmqKmE7jL5skq+1fPdH\n38iJ4E1j32Pgu7a+K87CyizqVSgFlvWETqoIcTzdld8BZ/uZI1L1kZuNerOW\n5y7tjnNMAIAp4R/MtqL/vD+K4xOWXQBwti79fm0zIn8pM/1Tv8Pktje3GAiZ\nXIS0xDrfF8XJroyIPIM4ab3mGI7qj7WB6Z53q3E+G7spN39vEXKRciKNxbBf\nt+yrjUsBPP6T2lpCm5ySDx4/Icrpr2HF6HEDWuzNdVWLIavcnMrDC6LTdlnm\ntIuknqTccKIZowY6XmRwNcbjvxwdea75IHr2Q6C25vfl7QVIxo+xa2z049x7\nAeeJA1Ofgy4jcgtrOlaVBxDSyg0QLEf3XoQJw+aaYji/Px/gGaQP5qOnh7oa\naIL3uewGdyxzbi1HDnBN+JvYub9uLi6FSlZfYe+E2swYA0U2C4Pma5ELMZ4/\n0BtJ4jOLfK0eYWpXjllq4gDx9E3iYEaTWoldrV/6oe4iEQZjwdKswbsyuw/s\nO02Qox1jlJAd/3iihTI2vMPN7fBSeGXj20R98UxhNbwn/5bxCqLM3qh7pnhe\noFDW\r\n=mVOb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE98oIkie5rdko8fA76GWS+46dMsJb5rskFxkjHkmK4oAiEA+NEjg4dqwlRNnyLaIFq2FILwATpOcsx0FET/AxQ55s8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.98_1565777960215_0.18447046620253893"},"_hasShrinkwrap":false},"0.3.99":{"name":"warraysorted","version":"0.3.99","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":""},"devDependencies":{"wTesting":""},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"854620bf4c7ba553283775f22bbc17a449131bce","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.99","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-E/WO3yffHj0/67kkZMJxUPNTcVWsEKU+E4FUex9eR7se+ZGcuxo/KGeAxfMMgU79z3ADkvW9Aq9ktPimABzWww==","shasum":"6efc3b327b13ea91789a3aa84987da2c735601df","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.99.tgz","fileCount":5,"unpackedSize":38393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVnT3CRA9TVsSAnZWagAA4NEP/RXQNIu27p8lMsyNKeyW\nFXZpLuHcZBKGkxAOOT8xmP8asPT6Ps/l/9+a1hy2sJO89W0A3Z9I7vMaKlFj\ngF03aWg50zXtFj4HES92Ac91LHboX3YMXRuO9KwyLgLRKbDH0+A/kOhDQyP2\nHnd5dQzPHo/KiJNXlpeFuOupWj/bEDZW1WJc4rVhGeIJRkFvAz1z+jFqS3M/\nWD5oUSLI9LXjj3qJ0SILxckdKaW5Su4jckE0CLygWJGt0GeZPmzafAPTLDuG\nOWvit135hU3EI7Z1vvxsetBz8zYrrU6fxa8hP36P3Dy49IolFXjYjOixXAUi\nGENvUgRZauSsIVQrDQjRHfo20L2BU/z2wU7UxYYre48LObX3u9VfhSkRNWyL\nb23H9QTyJVW5g5BpFUTaPvBfaK6UpuixPz+RmVvaigsIwrO+2GDwSago9K0p\nAH+y7yUf9L9gJ7i4HyVP2w1xLFP4hgyt8x1Uec/YJywcThXht5cE4s89mYu7\nwu/rf7vNEN8HJUZmMecIsUJKlsn2ObMbwi5IbT55lxPwfmWwN1+sJVGH5Csw\nCPF4mu5YmanuGl31sPrPrZPXP1vJU5diijJD/UuY6bLOmYbUMNP+AEy/W9u3\nWYJXgr5euvjM4aQ4PHy/uS90ujIBnvSqXWBqKlSEz3P4aW2eNJeV4EHMLvr8\nyX+b\r\n=1Ta0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXZvAEy/92HQ52XoA8tWjI7mjZe2QpzOemFAusbyST6AiEAqQ+e65awELNM5EHaG7md8UKa4aMkkqTN/HTpb+KiLUQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.99_1565947127009_0.27869794051689367"},"_hasShrinkwrap":false},"0.3.100":{"name":"warraysorted","version":"0.3.100","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7b9159e2b508be27a1aa2bdffcdc654c2b4e1536","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.100","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-cs4y7SOg0jnU4ZvyWHrUkehIP+Yrca+CrmGglv6tJX7Sz6PAj5tU1waFr9H8nTOTWAMyoiluaWbvxMC/m7KT+Q==","shasum":"afcea6749cd90e5cadd29e24e18c051ea96cfd3e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.100.tgz","fileCount":5,"unpackedSize":38609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrYNxCRA9TVsSAnZWagAA+BMP/0ioMzD7ciZYKL0mH8RR\n45w5ATDLm+LakgH9LWGiYqpvLaZQ5CVf4devR3p+b2XE84lzpHwYjlDMiEcY\njaSAjPA2EcdbLdfj6ula2GMZ31tGyKgn0jEt7epRr3ZI8/6NYNpbiAmNNZ8t\nByMOtkvGlQZfBH4/DawrGAqZbGa4FtXTkFJAL6ftrY5d4lyOQ0ezAnayimA5\nB3lKxgt+l9ir9wgVVH1b6hYaKAks2RJsAduFFadcO1ssaEl6Zov//rJWaYlx\nQ2/CIqCEw+bOPzPKOiIsajTTtMh+wfSWsU6urUWjIQwyjVbvUKTEJtCdHIeX\nkaYpBz5kXyjYWqBaYZrnI1ggjQ07Schmr8/yvKlopA3+mxqKuYF+4l0MrxbS\ntSLCP8hgypvnbzbPaAfjUbp88wTCwJVMnVP6MzYaMKxKp8s2vzbfhrluNOa6\npHAnYy+Z2bBzPDUjDQ73NhyFllqZH7XexUYHIoSVWg4r9TEwUhd3FIiCjGPx\nJ6aKm9FenDjxf2044M7jJj53KOTVBB89NZua+lftmR9ybGWSCXSikedB3Sis\njIlQT2/36oFb8aldcMtwqDuEM+ds2tlKROgEsyahH+pLvhLfuYTppSR15mn4\nX4auNH8nhGUVbVZPiEzdjb7W8iT13njj4dD1pfng9SQcg00R3T1VdZMlLjwt\nQSda\r\n=g138\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIED79I2HsdqeLfvH4dob99Bh5wn5LwuaGT5h910iORhrAiEAywDPZnaDI371NM5018A2LzjGWw26kTvgS9B6o9SqvQI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.100_1571652464913_0.4355316920600296"},"_hasShrinkwrap":false},"0.3.101":{"name":"warraysorted","version":"0.3.101","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7750272445c43cab564a9042efee56f0af93fd73","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.101","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-vtVCWtRATJHvZ5wxTo7FfmA5gK2C35adad3SpIXhdkMuAWlaagHtimOZCME//wAIISDniRwRbbTQeuTFDbMTIQ==","shasum":"a07092faeca6beda95efb5e9af0984d38f5bb8a2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.101.tgz","fileCount":6,"unpackedSize":78357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsymXCRA9TVsSAnZWagAA470P/1EfG7ACKd2+G6VeELI7\n7zn05XpmYkHNoUjLnWc8j19rp/MLgwVDk75AvnOXM6YLwibXWpUkyAyYheFM\n4lMuF3UQZpQU2hOKLDDoHSWoVuFZIqemVQaJl8cn9wjcAVd1pj0m0dJhhbTg\npabd3eIJWg2SP7hUDSkHquZ87VdApd6K93wcCEkEdHc9mzq4fOYjYauXgFBo\nL8MV/XiY8eaR759Anqk8YB3PEcvJDs7EuekB2HHVWSZsVa9jNgP9gCYMgqel\negUmCZw+S0TrpbiJBjVv9CsMo2oxkPkF9t91Z3gUftcOjDCFAKUT6G29QhFC\nY7LbWxArWtZ1VAup/3TwwYHiX4nrvk65LF7stdJmHyfn0tOuS3oXGkNNpPBb\nXdfcdBB8RBiOU1QvknfO0jIy5z/FxtN9JRRVUKV8tlWQe5RG6GbmBU8fl6v0\nnTW+VM84ANFeM6GODS++BM+7FOA1tc+PbrDm5Bawu2BPphB/cHrAW0d95bVX\nD2QM3EHFn+wMFjstkKoEU9+mqUw0AUht2d1oaEyJysvkP5ZG4gctixzxXx0s\nZZ0LBp4s9N5IbfyonJ4NhAfbNhX+jIuo4IoRe1hriu8LYO/42wUoaEQp9Utz\n32lhWw6BG3v0tmaqAW7R8EkS+S8hAgnjLJFkDAwyMW7u+hsoSIj8A904FYit\n2oN1\r\n=XAMo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZsiixtKkgni6pN2T13Gefq6GvzbRM9aklYHFhKxjcXQIhALwmyjCg0fbAy/16ocsJdx0Mk8+M/FKs9LxYulMpmUQn"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.101_1572022678755_0.030920113398252624"},"_hasShrinkwrap":false},"0.3.102":{"name":"warraysorted","version":"0.3.102","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5754f650e5d15cbf51baae446ad4ed55f258cd27","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.102","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-AINid/Cf1uQCFyrD+UbpaLEir6Y5P59JNZ/Uu9X5rlkXsH0ToLhRvfSE4c3JXsqlUsV5b4LF9PQuvRGdscFZCg==","shasum":"0be914c5d37d310219e75c930d30b1aa8418bab6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.102.tgz","fileCount":6,"unpackedSize":78486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxWx0CRA9TVsSAnZWagAAWRwP/0Q8M6HytdZk+NENlG9o\nl0/YPrwnEa1WxankOgQZVq+xkqp/i85B1hZmuKisqVRfeos3W2URLrtSBJrS\nR/EGedQQuQFZb18ADtaytJAgMdWcl41TibsK4Vc4hfDMGE0KXBPb/HjC7LTE\nLb20U5Zu3+Omee/CbyhvvayQ5R/beBSP3fFzb081cnE5y2tHlQp3KbtAORGM\nLjoE2Ub8bXA+tM2K+1+fzP0MtavZbxw8BR2ag1lIovLnM1D5HKQSyErTHkmP\nmgGy2BPF6h1jXVjzSAlID0oPj1lYinWkjOXBNj/XzAH3QSH2A02qBqykLnxE\n3LbtwthK6tUW6aIVcOZ2E+eYeqc5mxHO1+TiumTXqWW1UEHrw4i6FiV/2h5k\nZR0/q16ZDUNg/0fU/jkAPQHwdJuIhBqzyLIXSz7SkiFi4vxKgzKHcXwSdA+j\ne/koqtwWpM1jO3XkLhUGmvxsXNVqz80ldmt5JHnIwQY8wHPy2CZdNiN4yVE0\nSoUjjCoaJ/+H9T/VtzJ/MkMjTBSO/ENxZwH9Zzz0drSNTUWZjoOTDp9yPBHy\nbOHxivPgzJHasQCvD5Ll+vua7p/A9NkGDdF7uhpXSjhv0rwU28FvWQfPwFTy\n8sblQFiZsk5SxDwmFhjzloYVNecIVo2tG3TO/cZ0+aUFm0+GgOA/9iauLJeB\nDkVD\r\n=1y/r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMLRyzn8HDcEzO3ek/LV7iHcSM7x8UbNm6w1OMe+zjFAiEAoIqw5tZGdGOoM66I6kToh8sh2NnTjyt9WZr+P53OFPg="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.102_1573219444037_0.4552514506397036"},"_hasShrinkwrap":false},"0.3.103":{"name":"warraysorted","version":"0.3.103","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"567a49b3ca4d1c544a4007886abfc2b5935974bc","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.103","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-CdVVPdN4UpKu016K2R/Y22NX8fNsnKhMiakh2wXJov5Ce1vDcV5fXup0EHOLcLoFYlSwhIyCargcjH1xXKgshw==","shasum":"ee8314bf10b39bc22c2fcf7b06ffacba35b24390","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.103.tgz","fileCount":6,"unpackedSize":78486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzc+/CRA9TVsSAnZWagAAUtEQAJocIEbQxVhusOGCMzhb\n/A0EY3Th0QY2VviWpSFvI9qM4r+rX6rYIL3z2paSHOlFHZYC53z1adKTq0Oq\ngPCE5ro6OPnn0GAouVy4KsZrD/y+7QAAA2js1ti/QOM3yogmecRstNq9Ormc\nJNYBuSp15DmFKG+dIdI1sTiudQbR8YhufjzeBmSACup9g6Ng4XcG3T7cXpJp\nISJ7/pQMnymsQ912FgvYqzAQK7JJTMkEVrNFmgHtzUUvIh7d9IUfKO6X0/W/\ncPdswGqcd6C9t8WgcHtw+BGkDNskxH1dJW1alkpmoX1Z0iRoy/QGfdgxVBxg\nF/XMsOmyyUInWsltOmBZD2wWPPHmw4PhbIuUiUg1bmWD5/xtYVRInj3thRQv\nue250EivLGeEpQ1dNU66Lv+q2ge9S6OixJGocUMQ16IDS33rTmriI0wXYe2I\nsJ+MDeatZv2JcWNminZNG99ZT2XdAgWToLPKoYIxQRckGJLWZIhw5RIMOVEx\n3JuDXK8jV8Clft3Vac0E3tivz8L6USNdqrmPjj34/k8VCy1M0DI8HYGHm+Ra\n9Tyn5XOXmKl9b7+9tHrNixTBtvONZZnKe6X9hiEiKLjz0BQQfeglb7FbtxdX\n9tlNAfVH2v6XWSZzvsRsDN8Eq8GUe/JwIN9+HEO7b6HWxyPS9nVGxFtqXmnB\n+Hof\r\n=41qX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTpAt8bEXwFArCpgbJ7g+MRIIaswuNip+aK0QkIOG7BwIgAVY1XDp2kYJcOc2BPqBBthfZUQ0KxvXeaUmmcpeTi1w="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.103_1573769151589_0.42142858182157017"},"_hasShrinkwrap":false},"0.3.104":{"name":"warraysorted","version":"0.3.104","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"57adfe9824cd03fcb0f9f5b4bac08d00425af413","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.104","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ihpqu4GurLAWO4gxn8jrg36xeOrBIit0Y4s70ATY0qRBcavzQBY0RUG2grDVKPNBMwmYfAyUAQNEJEGw4QhsqA==","shasum":"2391443169b7105158d0c13cab6c1df797bc5200","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.104.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzky6CRA9TVsSAnZWagAAa7UQAJ564cJ2OJZhwmKiC4c2\nyXCymawkgMZK3lKGfwmd4CVtH6965889iieYXVAodL+q+CtIf/l7xyl8gYD2\nRsAMsXZ3jmMq8+Gd+CxtKZylxCfyQAWQqaDbmWgY6sXyPGLwDtgkecJlx2zc\n98ibMkBroTYPMB7sfanOQxzu3zOEr8Xj4Hac70o7cQsqQ8MhHSVom9txRR8A\nkluJIfzxreeCljut+fR5Sz1PLBOiINbw7H4GL09fJilKgpdSIFRybJROOFLa\nG7KmcZdvF3akbn0PetqOok4OWIyW0cF1zlwEzK4Be1GnJBcL0Ig1+vO0FeNK\nzybrNVc8gBzEAg/Fp2l18dqBEsuiLU6kTHXfrMsHWFwWV+EOzCZAoL2Fvn64\n2usez0EcL/3G2Bnlah/zHTUmlbg5FFNJCSr4gq8Cn8zXYesaJsQNwCtbCc0+\nM6OHuNiftNJeB6gj7LKaGiSXjy4MhbCr9RuhBGnSxX8ZBYzPQAL/+Q08McId\nEJ2tVX098xvb7sM9thW8xeSdS3/gOi/JV0n0bGPeizuiIkh88bp8WD7qpcE7\ndKXuwYOKQ3npEIuuS31mQFJmMz7ggX2W90E9ELKIWo8MYuPLEOQwqIJ1JWHu\nCSIyZIawvvF2bce6Cyppu2Ael+hXHpiJm7x+2lykzPqVnfLmi9ncEUBFRTjc\nbrkc\r\n=Exbo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQptWBE600jjOWUOocJ1h3RDQRZCP9Rua2fbbZH+tWYAiEAgzKSrPvQCovfqvIctf0I2gWiE4JbfXN9Xt3XNyGhi5s="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.104_1573801146037_0.08090556153784001"},"_hasShrinkwrap":false},"0.3.105":{"name":"warraysorted","version":"0.3.105","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4087dec170b3faa52b34df3ea0d3ded78cfc5a72","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.105","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-H1BdrhYDWke3A+xoQthqs+zxJ8sHh1Ksj/3l6V/uvIsPQgUq1c15/b9EI5ZJGrwE0v/C5taH8HHG5ttriBFMZw==","shasum":"f882f0d8b7cc245264c2fade5e1440065a596d89","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.105.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzxCXCRA9TVsSAnZWagAAwoMP/1hFfPeHwwpNyTKOA7kc\nuwMvfAwMBf++cydLffNHmRGKeqfww+7QG0GQzNmRYOL+896N/oOYHaOvQuGr\nH3MNMukGYPn33SIvJ3/rzsD/X4Uq+AuM0Oev3mf51Y3xcF8xITQXBXgUIm4q\nt6uG4qqW/4ekPGrbI9rEWFX7ZwH0GA5r7gAqEPpbSbTReEOARBWASkEYDC7T\nTeRk7VUD3ur6zg3gLxWlyV/9irFpGviHpTs3Q4I4B4QqzbrW7DwsSdK6PWNQ\n3lk4pM21RnaWPB/cI6WkD/DNB6zAGBbImeXqVeYhccOPx/cQg5HBuk6XXRTt\nbL+FRNIcykE/8JQwNfq2WF7oBsoEO85L6qwjZH9ofKVkcSMzV7LmCnX7tH4D\nvetOsPTuEgtLU1RMSfC8Zz9qQRQXT8QM+Phca0ziEShnqR8kLisHYpuynra3\nEu18plwXqpBqMjqnvRou8UgFRdcM59xgrhnONNytm72jBxLUAniLVIL436Oj\nvBnXlCRdIFtX+dAqrycTEKu/OXJt9JBE57wSmcG5Ocm3gE9DJUZatacXge6X\nWE/JC1PxTDQTK8ExniWu75F8WJ/noZa8eT3C32FJ7fMymLpC2EdjvBP//lQC\nt/h0bIVb2x+8CkFgR/4XwnBYxI/mHf9HAXpqCwW6PK+O+THBTll2Septtrk+\nX5fE\r\n=/JGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCWsyfBRdNDLW/y9mzPep5eLSu4YzqcHtQ/mDFW3A+rAIhAIm+y1Feetf0QM/KUCrzu+2ULz8kT4OOfQwtTkShysuH"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.105_1573851287504_0.21614670797196034"},"_hasShrinkwrap":false},"0.3.106":{"name":"warraysorted","version":"0.3.106","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7bc279d0240ddafead69c36774ccf91bb85323f4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.106","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-eA3GCwZ0NxbxLpN3VufDCv+W1PnmDyyA8aUZGbCaac8CWZ+9rJHpplWdbMkL3AvUTV1jM7zU7BhOJimtCW7QCg==","shasum":"1b8540c67d5749b4fb9ce14bd284c3fd93eb1471","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.106.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdz5gXCRA9TVsSAnZWagAAMlEP+gJUP9KbZ9nU4IbsR6kx\n95Z1jEC6Ma4YJQbtyEMISgdvN8xVuKwc+PBRaXZOMdPpPNMD3gQRjcgavwYp\nG0DhOKM2dMVHRU0lMdI8gKOtPejJR2qhMDs9iWkZViafD/sneJlSxe67TcsN\na4K2WqbgI7k0qJap+Jqle4+5pcavo5MYQ7nBv+9HB1ge60i3NPLCxpp4KiLt\nmbHVJU1lAUhXLR3DNx3eZeGogxutqlQ6f++JSLBsIbB+iATwjD8YwCYn41RI\njZdfscpaCeprtU7+yINvrWTmclPvcxb3fGGxwwb64zd6/Q2xfsqaTe5eOAhl\nL5FdwXRM9tPxTijVz55pRMgZkibfXaN6HGjt6Q6zbnZseAR766NYHQAtuWm3\ncBfpgti0UR+vKAUetCBxYZN4Ynv2RPNke0kAtTiT1wCpyiGz/JIeEctsJKxV\nk3vj9gCtSYGdBz//ixcJVzxHu3Sp4DQErTJEyj/YvPKRVCc9ESG7IgwTSPOw\nqDOk8nJKeddhiH5mH88pDNbRNs8s6efg6t5ifcJP9vQfdyKFvaTfRT0oU3df\ntf6cnhSyjiCi12nHzlRkItRFhd6vTbfddKitQ8+CIH/NDkZxqZVPBDTpBDIK\n0ReVEy5nkf5iqGgpW2OT85VDt/+2izkce4eq4SFmM93oWi2TeIgdeDRDpNBo\nvpYG\r\n=1KlT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBU8btSnMXhIJQ8RFyHYU2+gSsmDArSkgOtGT0E2vcHgIhAJTPF6OEvaTJZUrUKHI9+VKLrjkK5IMlSKsRGAmT58ty"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.106_1573885974989_0.5391880282772898"},"_hasShrinkwrap":false},"0.3.107":{"name":"warraysorted","version":"0.3.107","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0e15f9e36fe7ca9d55f52eb7343c9091fbdaf5cb","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.107","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-+IzxlIRprXMhMBd8qUB5YyNbgdwuEgM4HR5shbmYoY0ubRdr0Jdyi3jFYn2hOil9asyFJ3jbkoQnluiKyLovmA==","shasum":"758fb918e547d9e23deec9f31c445175d3bcbf8f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.107.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdz6BNCRA9TVsSAnZWagAABj4P/j30xAIOusyq6OL4Fs97\np/We2K9H2EzfHXhG+z9TAnhs5nBMyRzhtM7biLneLNJwNkOmqtTZnV0lDuq1\nL5R3yeNFQWPeyFYBZb44yWi6lLYkfK52yFrXLOMkDiHxtIhKM41oGFXvsnJE\nMa1h4oyrZYoNF7TNG9OQl6G2rAhK1ZcF91DCaBO7mONbyzH/8t1LkWCvQFg6\neCMl1Nd/n7UBNETwaE7xDEbBiQO0W8S+943SAlKH4ceKTO/1K2f9lsRPAMa/\nrQvlo8NIY4E5FgRYAl593eUmpVdqdu7hS93J8nUUezx63gFreQMxmy71qaQ9\n4CtSKzJiZ77YEeaP9h8PNbHOoGVWi6kbkr9cDNeJ1dTupoJGaSKlRauR1hAV\n6cJU2uGfr03nbl3FCKO+eV6EdauoVe9LoIHR+tOPSQc7FHiRL30+4QKVv6kF\n5X9SEm918o5ahzZKkyN+sr/JxtE8QwoHUfbAyshR1i/SXMybEKjCE45x3k+D\njeVirypCGI7ETHlH4GHmeedyVF+e2CsClW0+eyVaz7mZQEzyouI2djWMjRRu\nLXIcKwrnfo1ClXzqiKTwyAqlYBDsGqUJNXLzDlinJMgtGlW9xaVegyG5wcr8\nUvXmpIjWcDol9NjeB6cy3rGZBskqI4ZRM+hD0aIkMV4xKkw+vK4YRRIlhQzV\nbygg\r\n=4M2B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHf7HEHG4Zlx9N9GYq9htst+rbH2l7yafWMtnFusov07AiA+qHSWuS40v+iktp2Wm8j/4qh9JLtwXGHNLY7dyVlqzQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.107_1573888077151_0.2920853780626633"},"_hasShrinkwrap":false},"0.3.108":{"name":"warraysorted","version":"0.3.108","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6bed2bf89d8d5aa727d450b2859ebacc80042172","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.108","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Z1pKBf4xQ+iG7Ve/AQso20w7z64UCXmL0afn/e93Rc5yfYPgPtWirfReWTwttDnUqgtBwH+Ah/rSl5/ptXsGxw==","shasum":"e37a3beeda3d3ab3c91af15a141918f95cb266dd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.108.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdz8NECRA9TVsSAnZWagAAxyQP/jP+VVhaItT9mkhN2g58\nZCte542Q5L+YRsO89pf7NknIddqsJwKnKTpd5hjxneP7WzIThlBs62Fpnaai\nA+Mlkp/LAnuZVbneRn89gnm/wAKvAACM5A0FnIkMHn1PsHuVPVdn9mocMsm/\njzte0TnFkyQEuX4kwBysoMHNtey6bKmXdI3GHCHW/vUKHoLCuNtqElXNd40T\n+PcjnNOgUfqIm5T8Rcfk5rI7jJPzTGQDL3HTxAvmv4SC3luIke01crjvx4EU\neEz+wupWwMXAkdZVgVLrR/yTxnZ9pWDU8KJpaGATmvcDMOHqzrfZIwJEedxf\nB1a9AGI7haav+S1jM345qk7QfynEHJe0rgLs6bhxFZu60RtCB/K3RJY1Z62f\ntmACRhqc9PRQlxKahfIjERfRTIbunyr7jR+gwCJX9LrMyoNylF+QYm6xqLhs\nrEsRXc5E9qGK0n4iMkL7CA4jkoFE0BQrljz3XIB0T3N2ZzfqdJtbVezOxMut\nJpj+EbcqvauVZlcZvA7hm9EiPtNMGofk35ZkPFyLGuqn6g0iBaAPAXGu8lsI\nfD2IidM9HoOptkoi4O0aNMY1ejn0tdIe4LZ0lR6mCeAtgEV++L/YyB/KlGcP\nKE1qMsUxXnEOd+YzeWnxFU7HF9A/lWX1+YpWBND4KeCiYNHmc89hFHHQKMMq\nnoRd\r\n=c+Zz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoDGBgaMgZ95cvjGxMhOiGUhja7MgWX4wqoNMdfkrTPAIgFPrBKtSpV2v9D/lsq8KV1x3oXXMiqLoPe/vRu+8sUQU="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.108_1573897027735_0.164010628467947"},"_hasShrinkwrap":false},"0.3.109":{"name":"warraysorted","version":"0.3.109","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"22834e75055f94160e401d587f0a0d25dbefb030","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.109","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-b/BtL1Y7WsmQ7MDXzKxExwkwrQOVTNTX+1sBQip7pN4WQiz6ZieiUDJtNiuQd8AGAJ41F6gg0XAm8nO7yo6PsA==","shasum":"b6486de82a355c1e00036afb9c2288913bee7bcb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.109.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdz8cnCRA9TVsSAnZWagAA9vsP/3aEnS+cygYezMa0Ejzl\n7Lxhshc8kGrE89xX75p6gEORkXalI79QV/sIzQASkGJ7f/haJI+DplVg7E/m\ndNlXtE46QyRW1wQWKt4OUvMQwz0fYEv0PVTsfVVUQqPUC+tPDZWuG7tMC0oi\nzer5J5ji1v6RXjKuPncJlp2hE0BPzcreWhDVzqQyO5T6qG9gWMwUblWk7Jt0\n0fqsLUe+vblZVX7uql+Tng9WRMJ3p+KtcHrtVvkhlQoja8LkXtnw+112OfQm\nPDfVot/cGW1HUHC9gMNU/Q2rRFviw4LiiQ6PAa0C4qj53wIHCPTbhPj09WVP\nOkEFFajeAl/f1BaSk2fhoVJTEw4v6dNAXyxJDF+43Q7uEbDhr7OQXwNQ3eTC\njvDJgqdNLislwDkyTRSO0l+Akv69OpUl/cVR5mvI8lu+AiaHx83hHpdxXksT\niYF0qI4I4EubEGDYf8BAVVjPLY2+Rov/r0pfWI/YwEvrG38hvmGvqdzz0eES\nQd9g4pbMQOGYO4EOfhF2aPBSnyxa3iQVoWVxOqAY5OqYns4xYumCPYgvXu2r\nMwCQIW1UM/6TaKIdrI6D6sMY8xpq1Mod5OwMhcCRvNJcScKM/yqgXQVZzys9\nosoI3iIyREggksET0XF+OnikVI1JyFLs3P9BxJ6Z5DVoAlN0cW2Jr0R0Rdt1\nTNHA\r\n=KWTU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuMW4D9+7lcvtb0DyJe29hWjBp6RjPLQF57+RyX1W1GwIhAKR6e6akns3tRPmK+R8E9CzoBFCOT16mnDC47jXG8xgt"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.109_1573898022927_0.47167440066584665"},"_hasShrinkwrap":false},"0.3.110":{"name":"warraysorted","version":"0.3.110","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1c694a630ac83b6d03a6cabb2ce6bf170738d2a6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.110","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-JwZmREJW1L5aDQrPxsJmMySMTzQKmP1tFZbf3hNRjhPHxiu9cpdlzinXUxTRhJHf+//Vof8J4qTIWaetsEyYGg==","shasum":"8c9e32b7e2fbc5bd5ebc8accef0d98281f16ef19","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.110.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0sAOCRA9TVsSAnZWagAA06EQAKRGJgsNeA4LQXQ7HbK4\nKP+mwZt/cWesPFiclfHY10SLxzVtjJiAXDJaWixDAXwnVOa9fedkzn2ZTQE4\nT7YoehFjlEMitdi6jpve9RLOZlAGiH2Y7/tXDy3phCTjDq/dSz8m9lxUliNx\nSAd1rBHPMM3wtbJBBfhgaXeKMJL/aDl2GA+QcrDho9hMv1O5gN5JO1xSadsr\nTAkpdf+OdWEw+HOabUJQH4t6F7Ls7TCN/j8+lMos9MmkmNYp0mFOMQtXg7tQ\ncSyzzdTka6nU0yU5pSSH2eXewARoSfqnkJIDn2NZMLgzrlnSJbW1HBJoi0fN\ns9/Cv7Df3lQQ6JdUkph61o3HHsrADSQ82cFfWHMOTvSIefiNkkjjXiJCw37s\n+4fPeaNMfTKGBoAk1srdpdGLp/OImI1IZnsPfgwrBkaydom9pRjEmslzifsa\ndsqs1lU/ovBWCbIfKY9jjwAmnqS5afEBJgsCslWdmzVALKXT52xKoHJhErS+\nDdWFber4fbnIPXNXNzEk2tdGXNf3r5NdKy11zt+P/lZ7Z3dLtkAH0G+SDzNe\nRUbfTtb2tcmccIUmSqdT5Ob6qRN9lSzX9UsgDrIM1+Y1B5gqv78kfxHvQpo9\nVZNXrbQTdJprd+Ui4NWBO35sOVI8jb9CoAkwPPJgUwnEv5Y24PZ+230czVUf\n3g0f\r\n=PpZa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEw09hRzio5XAUN9/hzDfZY1/bBBpwwT3irO8MIAlKe5AiEAlSGdwjo21LGEdJvcYTMxCkjW4Wwu50PFH0PQg9X6BLw="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.110_1574092814511_0.07212424172132414"},"_hasShrinkwrap":false},"0.3.111":{"name":"warraysorted","version":"0.3.111","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"078c5f3d131eac0c9b2576f9416709abc2f5f19f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.111","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-J4diRkJTai3WKTrWw3Uf3dGXST6P9A+8J0bslusEr9/oI/Ma2XJLzisLl47u5G0uP3k7KLl97KTqIyFP7Ftw/A==","shasum":"9d3b7f72240af03c5bc14f7f20b4cc0449890468","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.111.tgz","fileCount":6,"unpackedSize":78484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0tPlCRA9TVsSAnZWagAAVdgP/RS0LWCP0lfkqfa/RY6g\nsDOjMjh/M84iz+TnAqEp8HvUyRrZpkVP9Et/Ecz8ifR4yRk4luFfW+nNWZiC\nFIb9Y9QoD9UTzf68RnrMnz52Urf2dgKAGKb9OIy2fTaV50n2GOs4qTH1lwdM\n6DCdQZbcsA2nFt/WEJHpSHdF+KVh/QjwkuUvdF0NoYh6h1UhHlKXGwL+OEBF\najkhVTJDMCorX0RLO64CZIAL208pOLil30R2KkJk3PZ+xKNuNRemGCaW8RpV\n5BsNuoWta05FcQpRbKSKO+aWTNxfxudw9FWnxGOWz0otg616cjvSIp5gSLLs\nx3nGFvwpv7xTigLgUXMLX5wu7w0jxd9DyOuqaJ/kLYtQDMwoBlE3V0FVQvym\nqrA+3FlZKK5L2OjdJgrnm6v3UbLILqJPt1wp4W4qoneSCHAWO/ietksS/cA0\n+zOElaw6OYY0VRC2yLi75SILYQLQZtZojvgR6J0SEGmDuU8DvJpsk+M+Q3TC\nA/09PwC7e4rWibI28h8DEwMLYRNm4cL+rUrMmAwTvvz5yLXGAJGwqOgmc9Ma\nCNKTf5djWIusDBJLR3Hjb3KNL+VZxyyeCZKuNjb2msXJpO2cPscZpzONnvf8\nqeYyHcD5CsnnUwl8AIAwLOhsHde4krXDmcrwY3bZAp/odQq8exfe+zExRT8m\nhUxh\r\n=k5R+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVkm7/JLJjMiDGDQPfAYrxj91rgvYt+oR09KyinO1ymgIgV0Gg87B1WXbX3dBlZAZWJ7EUpS8t96GLE+Z7U+V68W0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.111_1574097893116_0.8666830625550996"},"_hasShrinkwrap":false},"0.3.112":{"name":"warraysorted","version":"0.3.112","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6a44a6c4119ff02ce38f3148bccf15ed95cc1b83","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.112","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-NnX/BjW2d/zsCO8W7h+0cN2EUIXtoniPxknprfvekt6rX+7qC7K3m0QIsADlTUSn9ssgr0QlVQTY/Mm6r98ffg==","shasum":"132d0f69a71e8b4cf456fe1f160f86172319c798","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.112.tgz","fileCount":6,"unpackedSize":78486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd09NvCRA9TVsSAnZWagAA+KAP/3p6BH3cf7u7ysxHqXRe\nl5gKHeszx/vj6fr1yQ0rljrDwwNMWj61PWH+HVVxZX9Ij7bp/GbFdHOCSn3R\nHLPOQ867DDlOLB7NcsdyXrNdePxVe72TTUEWHjb5p3i50XKR4iNNnfjMrxE3\nFQN3zySrMJfhyyCXuC8Xl1wXtzQpMgPIFrjcaX2lJA0pcYu+kmC7Ue9vSLJV\n9aumflDOW0mR3c/XENeHq0iJ0Yngmh9e6+jKh0uqundfcQdwldlhtX06nUIH\n24gDhQayrNQGzFahw7/M0mOiQnl8F1uOc6OWLhqz/7uuStfGF+DCdb0VrMxZ\nMXELWQFN7oa2aAKfuyJUdpvLsVb62r9OCB0ZvCp5H9MVUTyyeF0dXNDYZ47e\nb8Tyi9ykRT9n2JDi0yCyhuAjOotrzlMG6IYnSUtfdgzbp+39LWGVu2xVUm/G\nPX6TjfWCL8SEKjuoC0BasrwsdRgE3frdnN1CUBb/C0vsGvHmhMKGU4xnH/OY\nOoVGNAkf36p7RGxLZCbIVKsoepS5fh813j1Y1lYWRJSh1mo5+h3goA8NmbEQ\nqZRJY/hnXOZfz1U5ha5BSNCxw36W5+Ay82xXUOvYFbEohu5RkA4OIcHxg1AN\n1zjSI4BrRRd7d6f6ykgRDeNjENqh2lPHvd4FJtVd/WOdLyiz71ZZd9YLO1G/\nWB74\r\n=v44F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQZZPTb6XpoUo+HlOc9sYunE/iHX7B9usbJ+OuAirMsAiEAtv7wBHAI0atbgGzpZQQRVH8AaWhAllUbKoouR3DMCtk="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.112_1574163310796_0.5475856183311283"},"_hasShrinkwrap":false},"0.3.113":{"name":"warraysorted","version":"0.3.113","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a3a93efe197c34422ea02a1ef33b85d2efa864db","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.113","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-reD9FETZvBitoI/LzcjmC6hH0pkZnHPkiL+CSdXCrYPeqVe+WExJmFK0jSzSMUMuYKg4ZF0nSysy0rewOK8dcQ==","shasum":"872673c270368f741d91712c21b17da35eab544c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.113.tgz","fileCount":6,"unpackedSize":78486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1rv5CRA9TVsSAnZWagAAbCoP/1u2Jwrhhi5y0Fy4JtAl\nsLcMyN0SGvMJMwRjv7EoFYrtbQ90VTY1pB8siNjfhQzu9UC+5yQK40hHJWOT\nQPQHj3CHfNbgPF8pffIdTh5u7CBRg6FuqOS4/ojGoMTX83PC2lmsYHl7ZRcY\nUckrUe0KUYNOqHfLmLsLruJndZF9Ki3cC5dXmoA+jKP9QxXRarQX7IHSwQxi\n+rSkEoVvqOh+hJbKirLlofRm901nO2Sm79NZCcc5fEufEwgVISAdpt5FGocW\nK3OQ3v9ECczhOIxV0jztbjBLfEZkah6j7/x4fetrmr1+SHy4SodBZPYXZyRL\ne3NNZ/9+C2IzkhRkF4n/LHag5x9q76m2k7/kfDsnYyue6/MwSsvqC8oMo7bI\n2RYMOfLuc8/d3Elm8Jj2msYuI86YixZpDSYgEvB1pqGR2e7sygUjuYptrJDv\nXACPRCalwFWCWUOlin4I2A2F/4VjD/gDiC3QbTdBcqiQzwBZ3l7rbG8sBfi6\nnU0KUluUinLjX89/YfiTlmbWQgc/cg8pIQhHf0xrzDQ5F0L3YHDoPflgU5kc\n0YsnKBP5OYmdoEvSCOjubUOaR0eQnb9mrvCzg0aQzfZ+xIvcABNwANX33jCm\nT4zN14Yrj7U1NRTiV0loe8k+INGJkaDk1Vnjjb61CCPyktww31366L1wVkEe\nKp86\r\n=OEd1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCokwYCkhUi8gaLy+ULz2q34WIJmTy+ruXIHbTPq6olOAIgVDtkLQlbIjOAvgqdGBIyasmQf01WI77pauAtRGyvmls="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.113_1574353913251_0.6747050816456601"},"_hasShrinkwrap":false},"0.3.114":{"name":"warraysorted","version":"0.3.114","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"58e093d93ad75d18c086d2ef1ca3a61a9896b030","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.114","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-eeKXdndb+pQlgkJI7OjBiyP9mmaxabavpC59YvY8gKUIpbmm00hhRlkkVFk/5EmYv/c0qhWrMkMdT+OMW4AUpQ==","shasum":"1cd07b23e8d1bf3d7fc8e4364e4b94401491e6d6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.114.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4O3tCRA9TVsSAnZWagAAOc4QAJcqdYl+Uzs+7rIwkPGF\n2v441qlbLXi9Z9H1H1S0UmHLqkD9aNE0qGGQ6zPkVQU8i6P3FI6iIYb2iadR\nrLh/75nMLUYsZlMtBxLbqtQ2mQqhXMmGd55JywbU/R3nY1UimnWZgr/QOmMZ\nX+iN8ea8InZKFPjQmkUUfTIiwFZom5y7EhUItm9yLWOFDvnL4qpHC4ryVHYz\npIDTI9H2Ztos6e/YvTtoRnBuV7vAiluMlm9JzRQV8DhHBni/228v70Lqy2EA\nCv9n7H0M2Oa1M0aYErWZTcQiYDNH8fVT8io2EoZI02rboNbrBwNQObQLUlH9\nXVtfKB+o97raEA66X09sMr2SNHDgvp26MJZ18Zoin7JBTzgRMTbBq/0Qq1av\nsq73yEfJ2dd02lzhYyfknRkWgl52f9JL1q1OYbbhQDRL+G1SXN8g6S3ZOLcu\nECd4ws7joLA3zzpH/B9njgkSMysqpxVevHJzOvnK1r9s6hwVQE7n6MQRb2fs\nxiYArRYf0uwLE4OE6Phku+nS/cLyojHjEhBuaE5uyRk1ReAA7DBZ2Wsywqro\nEl5S5DBHwfoGcaLcqKsRCqwv/wW79h0TzAqj+Csvy1OrWnlB0HHGlgi4QcjF\ne8kbBw1HwplKwgsUrluqsKUa6KGrnAbmIgK9k75M4gmv9FTwe2cIFQMBm3jC\nortR\r\n=6fxS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0jnatmx/p3pByMsT2ZByYudxbJMV+Wq2Qya/WHK6wGwIgJ469cj3MCycyktJGFKBaxDUZZsneyT0OCmC67c6Bz7s="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.114_1575022060562_0.6594171132078823"},"_hasShrinkwrap":false},"0.3.115":{"name":"warraysorted","version":"0.3.115","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"cc78c58238f0002f91d02324e8cd3534850b9870","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.115","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-EVz8YF5OT2mjTh1+IhvK5gYymkYoZCtBs10WpFwbtmD3g7Mv+Wayb6gocYVgG3r2Jug0vQ4Z/FxqC6JWI7qXTQ==","shasum":"27668d75c21e64818d35e01c7a1d927f2af6d90c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.115.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5LcCCRA9TVsSAnZWagAALRIP/3xIF3Z9phnvGjv/fp85\nqYPDOJtYzkSBc3uQ8mONrtI4pD0gTsbm7g2bm238SLfRepvBIOjq3nzgmzeu\nEeemaQuRzPjL3FwYhrc1FfzXkzdkAeXRBAWY5j69Wi5CVr62j8ivFVIvZLwo\nKI/XW7PBxNmU9+eEK9oDIL9V9PN1CvV47m45HYu0xcVbNqIX+jH07QrCESdG\nqn3WNsZYhkMUIDjxul/c9n90DfA9FZInTdHjWsgY1piIBgWParO6HVdTqCqP\nJxrFxcXWfk5Rzwbcx5KVuPRmCh13UFjBFxw3Yj2FcFSua4WOBrT5eoWymHSz\n7QZY9Y3Pmf7K1lvHm+5EfOJI0eY8GNm2beoPoRt6erBwNYPLv4/TvgLmyNFm\nSOBFiV78f+5elIjIbDVqLZgSImentify3O+6QlDW49fikwVNIeZ1YLj0Cv1t\nhKLlyBUUaVMFYX7r0gBPAHp3/eLtmpRJnr73dyKOwiw5CZGq1SS2hZ7JEXRB\nU7oEstfSUl1EnKaz2Kk9Id0HahErRZdL4lkEmKaedJyw8QTEaPbFsB9d6BZD\n1hS8SkwdtS5ussjBLZ3Ez9Oi681vidkbqGHAqrtFfTZT7EXFKB5i831JeNL+\nE0ef/efLNbp25rucaOQVyfx6M01DYO6bZMwTPdYC+MIex5mX0NxMxA1oHcaO\nYmjV\r\n=yV5b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+7i4Wkpk7rK2/++TYlhLaQKSzfaJHAO0NOEgfrCvjlQIhAN1ipgPYn2IW/rYaz73ZYW9DYBi8FcINGyHamoRCx1YZ"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.115_1575270146055_0.04592810473500841"},"_hasShrinkwrap":false},"0.3.116":{"name":"warraysorted","version":"0.3.116","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c70579e72f7929c2ae01a3ae567d59450389aa36","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.116","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-95aVFW82rT1RoFoOLx5nUZ4orJalrUkVCmPHpArY3DyZHqtWoWYgJTcLK3eSsgLgHiL3aEzFy18w00rw0sdH/g==","shasum":"c12ca974f77155d3a3d52503928ba680ba72fc6d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.116.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd57pACRA9TVsSAnZWagAAjqIP/2Ib0MWYBOZECpcnAk3q\nuyFei6ITfw2cGU4etXZn0RBcwrN0n/7tV9oSFuuFjrJnH9zi/Z6fgyRszAiw\nuRCJB3MUFAlt07+GHoB1ws1YLmeqjWEmGyQxaBjcHGC0Wis+ENA34bLPI4PX\nu4Axo15dog/plRbHxHVzDW5CSpCa513y+P+ROm7sSaBIyQIp7AyVkpT3/5AI\nsz4vanjHIvLevQ43xU+01S7ZtTv0u8r0UAkpdHLc61/Gsnw9QwKrtvMt2wE8\nQkuol9/+VSnurWomwXGByDDqcsmJxtWj6iAJdU4ca55LTTP1ewVOFBu2KDmP\nKQ8DB9Q96efEyhO4uzpKqU1Nvt0Yz2fByyl1wIzDlAtoqgLYkbVztKFcyT67\nq3R9WPEvXNY57cDQzPmvgqdrWJ74Q33rFt5LKiQM8gZ0HuDfFl9+mqR+dP9J\nWSkm5Ywul6vEWZQv99BJ3h8o+zBJ0gZW11EJ6afPXbp9ezzMt7oM+wu9MkFK\nCw6kPIcAGGUOIeb2EH3BxhocyOkr9sGIWmhMRsRi4zB3MPfOSKMd4utBz18C\nHvPkm1iRAZnVH9NAbFj6yBVD+z3t1ifFgT+TvnC4WiKnksVazSQ3TNAaOCNO\ntL0KxlO5ZaaWi9zi8I4W8XwwaiD7w2VCzuOSxQqJqXL6KSWfylPtzzD5yiTe\nfNej\r\n=LyPN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9O4pIEJQabZqwQz1cSYjra0WGLkK8rIeBv5pg/SKY+gIgKgYWCXiiIO5CIuoB2BkPpJ+yyU6obUsXjEyYBJbhraA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.116_1575467584566_0.9447388544188253"},"_hasShrinkwrap":false},"0.3.117":{"name":"warraysorted","version":"0.3.117","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"74d6e991d38f4436a76308ab774f7394e5a13fd2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.117","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-cb4I1/pnFV8lKMFYOFlzCczFk4qC4cSmVObTIEZ1TGIT8Qvjc8WgDhoezyYsDvb6of1Wvwmf4cGnxPDeXg/TOA==","shasum":"c4cdd46eb61b7b733864472314c31e4ee44f1405","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.117.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6VrnCRA9TVsSAnZWagAAUqgQAJsA3euyPEiqLwYnj3m+\ngk91X78x3zjkxM5l9OIcnxVhJrQLoMrf11t79ewXE1win3jjHn4WT/japWdP\n8tBKliCKXKaVw7f4kVBUgCRHSevdvnlrEeCKYToKMnWl0crBKuvhhOu6WfXZ\ngokOsvdD9aQSvABKhjtbDPwpQ19NrqtED25AOoDr9ohbTqCqexpQInaCBaKM\nxHGvV1VC5shdFCYhFFJrVE9YQ/WZlkqmMwicPpxhD1r0DgviPX+7mMeReLrh\nJ+VoEZS0GmNLyVNAVBpXrF+ebhSa3pCx0lfUb87UH2SLCRxXGHFpoagMqs94\nU8ztPSyS6uD9HoMRERR4LgX8zkwWVTsJnkN2QuNCd1f81xlHkrNZX6KJwtYm\nvYEBTNLhxxjoYocjd3wyLuSZuYoYomK4PNjcIgww9SOPtaHBJzGL1TIEAndN\nR6JP7d0lfdjevCddlTz+ccidZTfHP9iD2JbTeER6IgeGB0fsN9tJwPnzMStK\n48KI+o40SNVLTwl9hlPeQgExyyIv3O2U4/ZHqJ9Gup5YqX54WVGB6m4PRomW\n/Yjixf9Rjg1b+tllJ6psO5aIf5Y7+7ET3A1UjGtUtUP40ERKvgMPQuWi2lfc\n0GkC5wpnPJtICeHUzRHzRAeCc0OR8Z16P+m2TMGc0T9vRArCUwwFPNHTvwZV\nYlF7\r\n=eR2i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK1xH+MLjmN+xZPcA8VYDjuUKkWrf8B3y89WZrviZqCQIgNPZ3V9c40+KxK8gY6UMzb6Du1Xq8IMQd3aryhqknh0U="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.117_1575574246637_0.616596010629265"},"_hasShrinkwrap":false},"0.3.118":{"name":"warraysorted","version":"0.3.118","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c0692f7a53c294f8e24b339dece280375abf352a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.118","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-9iZn8c5CJTrqTD1gZcaowy1CVA9yKW5VMlKJv8ezUydGGF9n63QGkDeIcXOKOFf2c8GzQpHOsZokO3askQOBRg==","shasum":"3b77ef5789a716723f115ecc12a09286d6aa573f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.118.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pP+CRA9TVsSAnZWagAAXawP/1UySi3DRrYc4SnceIpQ\n4eyFgm5PygkxwDtPM5IlivKcIiOiZPFelzf3LIMPpMzWM30evsJYGBYJpy/9\ntm9hMy/oHxQHwKNGFza2CPGuPNsz3W3w1r/ulGTn88yHBdZAvp8nsA33rZdt\nOJFi+6eA7GUI39XrR0yBKWNhyQjoWTszgLLqQzMP4fLzAQudRqD/lDQ2kwuO\ndymsNAIe0pzLQGjF4uTvJcBe6tdvRyLdA2BKgb4NZ2ZzmT21GAzXRFkgjG4Z\n9mBYoaNSCW0g7jQE17iE9J3kyF26Aul+28yxuc0EekpO4k+QpfqmEJwZHmMX\njifo6Xku0RZzXg/FtpnUHGuyCrOgi37JfFLlrOTsVyJjF3hJTCZ2vGKzmssr\naR8facagXRU5U28DLEr1g8mnOw1vcyjxkeIeW50xSafhUzLuz/OjJNVjarJk\njKJv2M7DY2YlabC7IvvZUqLiNwe1DjZPj3CFgeWvxnO604Ol7sFjH46OmXeQ\nT/qGhkA6y7g5LdUg1R2mLOgVPS/tDpBvyTOCE7fWlnEY/ajIaKEdci6/p+P/\nTPWtC0Tp6sCj5pgNqaL3xctbCho20mPQfb/JbU9dANfMfzFHFYV4grDiiO26\ngM37jT4hl9gKSvPMkZ8A2InW0SKUNGOaPoUwHDvC0pxmiQafh7mWkZ5RK37k\nEks2\r\n=E+oW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBJ4Ah82AMg/2YPAXaVJT5RDC1/ArhLvesn9cBVOQRkAIgSORM7XRjwWCS0ZgZUId6iz3Nd3r7AnOObHBzbWeIOlA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.118_1575916541758_0.427504362580434"},"_hasShrinkwrap":false},"0.3.119":{"name":"warraysorted","version":"0.3.119","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"79e16ec51ec0d046a04e4698e439006227cd873e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.119","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-uLAiocChQ27UW+6dJpVnfwwreJsLRvH/UaM2cHZshMCFgmSgSuvNwsA4NsS2UBiZDLOArYX7gFbxxtbqjKtDrg==","shasum":"d06c180e6cc86595d55958c584a874583330d348","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.119.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7+uuCRA9TVsSAnZWagAA1w4P/3aYxUnQ+ZEli16ODzYn\nykbHJmXJWWPa6IvhQCll1CLzu0tnfrbIhh2NamlkImJKgxI1AAgXpeXQWwJQ\n2dpShsbra5VIUt4A7R18nxU9+7RqJTKFt39Gji4LiNUhoN5tfeY1GIOYLyqw\n2I8lMjRsXIJytk94quzBBUneBP3c6xxuHPqkYSCKWkDGYUlgEAfD43IFTIjr\nlM/0j1hZgzL3Zo+gjh5GNQa9aHfrF6EZ83sBclE/PRMTuDap/AktW1m5WpXF\nh7hhz96b29qAorfL8Sw5wwQrvbFm6YTAe2vp0YmkiphYCGwoaMUPMsHAxNdI\nVIxAMhPugEQUGpJjiYcvhENNKrVkdNZ55BlVSkmFhUzt3GyVOvH/4CxK7HNp\nZoB972BA1t2KuPTlHcExOlbklyaHTVvehAf3bovY1L1QGbGQENvP7XEegrDV\nq2dxM1j8UT1+VI32/JYWg7FMvmzsPdiZ4RbHR1kOeDB0Eq+o5DAg5lJDGrTJ\n/5O382UcBehP8RI31KJ4KwKRRgcnaAFaVnyoEM+VmQd4bqfyQMLEcARxOTLv\noiwictSH9fHz1O4+xlGBRkli/1xCiPgxcPbxv/Cj4wSZUHRDcaMYLUYTx+KT\nrWVaKBXcp+bZuE6bPIcLubVQ94DaOdG14ECkCVvFTAmf+gMDwdQYhFUNQNA0\nt6E6\r\n=M7RJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0Lvt/nADIwYCRBKNr7muNIZJpUoer2F0wmHSWCdLlNwIgMnB84ifP9lkG3UVkE8DEbIUlK57dBVxYVsoJsENXyzk="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.119_1576004526559_0.47683678397787044"},"_hasShrinkwrap":false},"0.3.120":{"name":"warraysorted","version":"0.3.120","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"54321e68a01ff442f40f2bfe2ddeee3d6d109cd2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.120","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-AB56wqaS8P58eSeo6CrB1grPNtmXIAkkrPjrM5C/lJH1nsYd3kHa10QVAl16AIr20T08weAYvE2QXoX2Hruw/w==","shasum":"0c26587c51398b0c819094ad450b770e529d7848","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.120.tgz","fileCount":6,"unpackedSize":78706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8h7GCRA9TVsSAnZWagAA+Z4P/35JYT+GK7FQ0msSSeMu\nkfd528l6d/AQJoDihaDMzHLf8zicdOs10miFD3xTiBNg9totfjX94n3KIewW\nJWSiQFamjdsFR1Mc1vqgj+jhGrxWxH5VmcPjQBCyNDi5uFq4tGqxpdGDOC4J\noOijPI29uZMEalzv2fBF6KY7nyMIGzNv4fyPMha8ipuQ4sO/s/ByDvnb2xnm\n7nRUI5mj0cIZpNfQLGCK9bDJAPfRMNqICbTQYNHJ+lueGdc880h7PfYbozau\nmMUSQReD7CPRMAqb4x9IINcQrOxLVsOk1FrizX5233913dJs07vJB/uaqora\naHf2nQWvzgNJU7p8yknf09D8Xvv5DZ/VYINLbVoseIwQX3OYoBRUztw6DgBZ\nleRpHLWJcV/flPJ82kTt03axVAcQsDEY3GY+0zOQ7SOFFWuQPj/KjY15kQ/G\ntHaIJdLbj3GX3kaPcPoIAMp/6PfncjWVmGVYARo779BUhsBuY0BwoEDd7Z2q\nPZILxj9zR5atSML25BFS/w5yojfQJhyTk7EL5RaYrOQVV7T4O2qe5fuV9I6u\nNGruOzXMk8a/MJzf6W/SQWscnP1/V/hlIFgMVLiNvMbXwpX89ganKRprw5bv\nG+Ne9YssaFHPfinduKX/wtrXo+UN59d56qxEKBHcMhv0BM73n7J+eOA7R7I+\npaMG\r\n=LStA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrUgkr/wud0tg5zTxJwX3iQ3LmLQpvvXtNa+gFp9ZT1AiEA++/xV0fRKDHObxrdx0eHeC2jij7F2c6PguoCUEWKH4Q="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.120_1576148677759_0.23565896100985628"},"_hasShrinkwrap":false},"0.3.121":{"name":"warraysorted","version":"0.3.121","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5d3a64605b0acec3863e5a4f8349ee7c28a6acc9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.121","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Ae0l84JaG8qZXBm3GGP4/gwusTmT/bhxfG3zOTQA5txCImpNZKyAztwgU/HqVn2iH/RJd15W2oQPDWDQFMRaEA==","shasum":"c596e0446d0a255b92c52e39d0a3a3645ce419ad","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.121.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8i13CRA9TVsSAnZWagAAgQwP/1cNgHWLctBn4ih8302O\ncFkwKSWMTqV0bWYA44X0DYtxpqqH5fE4X8L4tBph29F/nZb5lohkwtRW1NSd\ntUNIMLh97uoCsFyqVs40lI+xy4KwCKZbuCwpwjyzbygpxVsf7rpMDAmIDPS0\nRFentgGflu13ev+sD/6WFqpuogSHb6wnyVVZMYVEboIhCUX2Mn2pBXYRJCxc\nPYGzGy7wqOu8S2yonef8QdpCAvIT6qhguXGlZayT3NxhytIoAO2sTxwADaD+\nOWK/VHFEKmsz5rXhibb2sral7nB9b3gyNn5z68YVkmFUK+85svbsJz41NIlN\nQcH6XIWnIbCZrebOK5NNljQV1UNAJOqT37XaSDGL0CsuYcRYJhzWnqUWbUtb\novZPjajpGHs3AiKBqVvMXE5NvUCWFfAbCJVUKpBhafyAI2kBZ7re7jtAlf2z\n+kmS4wnVF5xGa7A2ODxdBCMd7ERhh/KRobi5lZQKh0JNbbccA5ZzVtMQ/Ns4\nmLqRjMo8hKwP5HWVLG13qCHTLRlBWOxE2Elor6i0i9uv6zYqwSsUoZQ9kxoL\nzp0pVOc89Mtw2H+GyssvZCg4sTXN2CoNxbrtm4w+cj1B+0N1vQI0pIdjkTka\n+8ShSiyh5Of1BHKDhJUJfuROBRYGQglPep26aP29IUZUu79fWVs1HEcd4X+u\nKDue\r\n=M8Tr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXrce0SG1wZNHN+P30z9RedgSBY4N0cXrRnkHf5a5/FAiBSlxgUaM96PwNjfy9d6I6EMm43j2N6CP0eR3Oo04HzLg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.121_1576152439033_0.1532888116663924"},"_hasShrinkwrap":false},"0.3.122":{"name":"warraysorted","version":"0.3.122","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a1ff0f152bc27414a2c7132e7e57e3e33af8cb52","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.122","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ZRx/l2G+0DotbjsF+VBbEaZ+pmBRSIYNmzxaK8nelDv1Y/cXnJ8/PYU0yWIiVNTHvFqrmdESwiM2Zf7yWlVSkg==","shasum":"72668c1f63540c5d9288f9dcc0d9a782385cab46","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.122.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd95ZYCRA9TVsSAnZWagAAbdoP/0NxmqgGmg0iicwsWacS\nFIf+T19kQ/CkrbkuRmVuFyUYhf8ww6U7AgWvUDiUDfeEGnElHZ3CpPFIMIyJ\n/treevLRwFXtz5D4JgaTZ+OPnm6DkEO7qpyUOxCmpJHheXdtAniVSyOiqK0D\ncKO9Y9NFL/qwSPLisQUa9KjEBFMRWQ/eSxILbscbBh+O9CDXOlX4F6KpVSSo\nr2TJx5TVVa4ArJ9XM4FE3yK28QurnAWxAInl+hmacCzf/+qGvqJd6u9b8Yy0\nKuY2RjA2miyv09PbfElb01wiFPInZ08mkMhGe109doXPCQ8K/AeIZ+eY0I3M\nkMwC7bBaHTsO54MigiwOBaMkHMbrvXs60LrnNJS+BZQsmk3qqaKJDYA9qdlk\nb9ejvl172RlyB1PPk/tqqZqAp8V2lndZanHDyzo6KdNoDMzWcI+X3LmXc/5u\n31pm5WxEeF/Voa8wR9kKJJDpcvYel7l0K5vJS6qQUBMcJWaEfWQRGOChDSIi\nTcXzrVBXhJVsh0iLdCoAx09fxLUDMWfAcu+i5BxQ21mMxfoxMtsy+Bv4COKJ\nvi59tTSTVKC2jRz+ghrtAdQIFBBWifimmGRdzsWjjfJySX323iwmHGFP0T8U\nasJsL3Hyk2Tuut2QP+EUS5HEaHeq5rK2n/Eyx/mpa1jvXcDuSyQHC3/Wu0A7\nBiYa\r\n=uFrA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfr9XZPNV1kZl2OVWFbBkflvJ7UZ2sxZVab6x4hxtWwAIhAN7wRBQWbc0oG0xd7m1B82g4iAo9GwtdAD5NCK7HzAuI"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.122_1576506968436_0.49146283372988875"},"_hasShrinkwrap":false},"0.3.123":{"name":"warraysorted","version":"0.3.123","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a1551739b1a6061bda55290ea856186723144553","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.123","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-V18KzyHUnR5vk9Bv5GHbIRYoP+kROiSplZNLSEV0gTaVKXkVXE1TA9yLjeXyH3N2TuyORtmohzTMeHz1YnCZyg==","shasum":"3783cee20a9ecc6fa20769b70d276bbfcc59b01a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.123.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+z8wCRA9TVsSAnZWagAAFbEP/RxykghlZLwGxFrV9w5N\nZSLithWKQvmgJl50j0G3z/XldV/MK+75pnrmsfhT+Gw0/DLED8DKd4tTfsbU\nSmC9m0bgfUDLS4CezWBHDaZ6W4WVRkUx5PcH/nZYqLn0ZllOMbzGG8mtRydP\n7ZWKgUy7xsge1eKwhOgP83mYuU63Crc7JcYEN5wJiQV/k21qTjetzSf922CX\nV4qqXlPXn5pezQF9tfUuK3n8ybAQMlmS//5FfFLCgNxHhpRq7F54jaCn/pBy\nP+iX65CyvLxGLDJ0nCMqTodHBHqvJLlX5mWbEu2mmzc3T6W8w9gA38o2ShmW\nRg/VA+N4iJxb1cyZhU4QIsU8WqOywerW8R1qOamutdu2lDx0Axf/RqzZvZUK\nQoupi9VbioNo1Or+tK3xiPxgYf7v9mYWAEepXDFNaxRKjjOS/7aGeV09W+Rg\n0Oe78/2nJPGNBiiLFoGL/xtZmUH7s08lG3smYqP10x09knXpp3JsSj0GNR12\ngvNkt57TJomqAjf2VNSbajjaWcTYiGIfyh3Yh1evQZ8Kf7l0UyRDfrT4AhMN\nA9wK/1EIOQV3P0CDeeSoYR2XhmxfYNg09NAY1uw66vAwD1ExEL5tHWXwMROi\nytXqzZ7n5CEmrPUiVny/SBxbbNO6dXrCzp+unZRsWtHj6UEu948mf4sgQWMq\n/ADJ\r\n=tIc7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnD+wFt3ixmLrzmkUoa1fOwvfS1/6+tUQRteZ0wg3P4AIgYTnqmkYSi6VE9ZcO9G9YfOYEtr/PI72tL1gpHzy9+n0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.123_1576746799736_0.6910111672706507"},"_hasShrinkwrap":false},"0.3.124":{"name":"warraysorted","version":"0.3.124","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"22367428b6a5486b85b7a0d1dab2107e0c612893","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.124","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-eyHBVG0D1wjsI0A0cNpqcHHzfGQOBMSkpYZFJmwJTq9MLhhNZa4tD5jt7hkIFq78dNghN0a39x3qSUj5y20wuA==","shasum":"07324551b981039321fa936183c696a85d78b796","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.124.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+0llCRA9TVsSAnZWagAAJnAP/ApS6WI8K/2PltGgsrby\nCi+jLRC67lyXHRUxve/RDAQsmc+jDNlmpBYwsLwaWjXWB2aw9XZIDhRz1c/o\nU5mNMCn5XVl3YPPSXHkXDJuAHvwg8nuINacXyZAWMYhZjSjjc7G6YoiQdID9\n7KP4ea+dSbQ3l4aGKddELb0eRzfSVFziQjH+GKtFoPsNz5njWZIKLfYo9vOi\n4iyayPURv9ZrMlXh4bQlQrg0GvMSrQNIosNsOf4cXluXH+gErT0QuR9Bhxyi\nWIFMJFvCC+V2rWUsYJcKjGIZtEr8hrg95CcdyyDBL/jPLh45ZSr2iwzKpPvh\nDXJpMt2iTRn2yudCSf8msdhHHofuY88KS1kBEOfYPJDh5NQmXQtk/dj+UbZ2\nj184Jue5ufFIGzPSQDvDRrhdWiY1SA3iFK6C6NfqjR09qnk20YWdrSWdiNHW\nbJ8Win7lWUcCBwMU2GSbP0M815iu6oDsyAlsC/NhNCMzlYdzwZuPlyk2zvJI\nn3y38A3RmIWlmcuDPcY29wzralnM3Av0yOFQMhW+T2VYNv1DHBPNh3akQ3JU\nrdr3x8jQ7tWYrDy+gPUQgr8hFp6pMKbj+AODkkzWLRO93Q1JYpTbbR2MHmPI\nlutE3hAeU1BhGGfIJcvC3oCItzRME4l+tC1dmNIw4BJ6YiwBV/qGEABJUMDj\nJe/k\r\n=ghSN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfEOCbjtq5roYJG7WeVaOYADxdPhpsZ6aWPusRE+n/TQIhAPY9U2T5eZjGYuE1DWZKWK/xCIm+s/CQ0i98kLdVSszO"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.124_1576749413399_0.5930642740727554"},"_hasShrinkwrap":false},"0.3.125":{"name":"warraysorted","version":"0.3.125","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"672b2322278d96113aecc5db3c90a3ac4df3c73d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.125","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-8SOHAxh/dERI+6aXmKa3/geSj6aNn7yUp0I//lMbJEE0XckQExFJ5lJggYRsjYyTOl9ZblzmbrY66Raku4GxEA==","shasum":"a9e08718a79c5433644707d35fece9c429b274bb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.125.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+02NCRA9TVsSAnZWagAARygP/igJ1xR9WaKtoBMELEhw\nQFUaC7PHLoK8zUnyO9+cVFsw/jgH/HvlmyUkN2PvuX04Wj/hIHtbgNbQGugs\nJ53wLO4CRDvMoigV8c/JbSQ3UstehTEZJEiVh/eGXUX6B7WqvyL3w3qM4+fK\n2mEaiaH13u9utSRxk1By+vcgJhlf/358Kf7xnxRPJJqwtfZBd8dLLJF3b5+3\nMnQMy2hpe6gFjbvrCfFtgsD2XCypcqUwzbiNFMMqxjbE/N0QzqwMhphNMBsK\nNDra/dcn5fatwURFBeiwFF9OfCviQg6SJJ08O7d4AmoC2jTzmV+dV79rO2Pc\nt7XTAhdY7n4ffzG6QTd1Ws9G5ZMBkYhhfIOyel/hizvoCddLJnen34OD/lpg\n8WOipA6wD186yQnzoYpOX61mEX5bE01kLFxZMo/eR2E96U5yKLJa/AiS6bA2\n7+wkfv1CB4TM5hPSm5Sb+AXKFam8oN8YOnebs3nviNXrgGJoNTH/vLfzJD76\n178ooBDqWGx6puG3Py7I2NPBNAt8NIv4o0WbUasUDbdddPILpspIvfgl94k+\nBTU0YyIAXHaFjGjc3Y6XjkhDJjP360sk77gdzz0tD1ahPtI7bns0zNZ1KkfB\nuT1EYk2Vg9XbcTVft3205RbbOTeuj66IcHXj3iuoZFdpvKwKr0hjyocSIPKR\nj1Si\r\n=b3CP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKi6Wf31NgNqKVtNiTO/fYz6k/okhnWgZ3GCgu9Bgi0AiB0XHwixxlLj2NimVCTLc+bzRbKZtDc/tGjtOtEupmujA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.125_1576750476678_0.7344685157717075"},"_hasShrinkwrap":false},"0.3.126":{"name":"warraysorted","version":"0.3.126","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"12388f371b26c45a8f8ba82f627e4462eeee6de9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.126","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-T2r4zP0svRPPFC7Gwp5IpEH4YG6bXG6UfB6ylYkjaYGCINmNrUD++eYUIdr8HlGY2R1bSerMmV951Hfc2GFFSQ==","shasum":"5d8f6ab1c8f106457efb5eafb26cc7b87535b98b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.126.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+1UvCRA9TVsSAnZWagAAJhcQAJcrMa6dlHac66KHcNKg\nwvOnIBbdzjhz+3GRX3KW9FjSVLqWT8cwI1qraRef7Sc0ieJtL8wW83Zo5pAg\nRduS7cVmrQ5snDbexdznB+fZyhHMJw5xZVO2VkrcfuLZGYxMRlsGSs3VVg4l\nRvr8eHfW5K+6O7rWu7HDR8jpTmz5sfujxNPjBPD7vCGirS1Qq20z3BNj9G2d\nwqikD6B/7n9ZS1F9zVFPEOrUdkDByLiABMj9IStJbODsaJVLqMBPJtE3Ep9T\nHYSqpo4qgfI/Bs+tBE+gFKcPxw2jKXSHKrrpQrGOnCVFKVbL3VOElY4I+DTe\nmAsF2mWvVexoMbn3SwHvbDkg6w2ZdNqGjbp9RhULCLxq2zhNsW2XZIiTNqix\n+qrrD5t+hb0oNr2XGYHWW/vHf2pas5ZQ0HxwSGoEOVOO7NCRXF4aKQWcIRHt\nSu6cTT+hZn8yzbiiMIvg3oJbvEga1MzJ4Q4bIry/A/2OVv98pK1RRdW5l0yb\nB2OxSWdli7cBateH/pgv4lNBQXXX+MAX6/t/3GnLlqFjQ2YjKsRe85a8niuB\npYmfcMO7j9fYQ2WbJwRAqjOA8xCxIi/x32VllvSuXFlAEvvOKQAfDWb9DSz7\nWyuwNPbuMAmGftymdthQZ68vI6t0paXio3NCBCnmwZJlTEB0QkefgTJAFd/u\nk51A\r\n=EvEv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGokVHktDRZecMGSJaHjuaFsCe/qL6WkicD8vvF8NnkpAiEAlvokzEJEkQFEi6RHIigNng4obMI7Ax4Y1DbbzD1q/bQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.126_1576752430625_0.027342926917009347"},"_hasShrinkwrap":false},"0.3.127":{"name":"warraysorted","version":"0.3.127","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"bd53cc32f2b06851f9f350b0285af9ff4ce0faff","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.127","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ly2OTai67m8ISy0vFKrqnbS/V1tpqao8wRB4VsmJ0syyyNZVO3DrQrFnpXcSSatNeCddlV+qcI2iTO0krPZwSA==","shasum":"b0c2003fee4e2d8acf889bb13c3d6368633457b9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.127.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+3+RCRA9TVsSAnZWagAAVGMQAIZI8XWI0eVnxxjIDj0S\nEhnyfcNiScpb/Ga0yo0iqBOG0k44TUI1/4L2rq0liVF9qAjzls755I9BnZAk\nwjkEjiT9nY0tHMW8HEHQSMwlJcIAZhJBDjsZlHIWcODXL4gHkvhNZJtmX3Bw\nTW6nDe4jxf8HhEqLuOigf1E27fcoSKNsiJank321v9VjA3KJJmDbbOnvnBvp\ndAmmI4r2zmB2bkVg8KCfRu/pZZHJC8vdoaUee3TQAFqUDLxk0UZJsMk5sZzm\nmTlks5acDlcQcNW5/jLQFjNGVvhL/WXvKE6LOQuWnumUcYYcovGR8bVZ2t4Q\n7+ZenVoqe1U2fVP8Mj7uj8l5CwdH+ZjpvBTWCGNOQn4Zk02yn02no2eF8JvU\nLGbhPt0svweuXBLTV2J18sYDlsM0XOJjnSN3DSer3LRfpeU1fiZxZfoy63j1\nM/naVcB+PDUlQXGpOEHUOh07mmfRCC6jA8sJb0kihGs9lepMSqVWFIcReVO4\nBQWCSxH6ai+kii/0j+AGzcmi4F3K8M5tkM4P8sZmfHOdEEFh3mkLgYBKOJ7t\npuQf3Sf+oxuRag6Eufkzz/mGms78X6nmfr+TWowIZMh9M1ye6kcAK0DUUequ\n2C0BZIh3N0LaWiuTY3GELqgpapFL/FWCO2jtSF+CKOtfBwkCaQKcAdMrTzBy\nLf6H\r\n=GiQc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfPPoB/MKwC3/L1nudw8+GFiJI/mkYLGfQZjjtTmvsSAiBldZIvRNW9rqhNsoAfU+lbHgLttaCbN56tf3dmjEnM2Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.127_1576763280686_0.18813297277671914"},"_hasShrinkwrap":false},"0.3.128":{"name":"warraysorted","version":"0.3.128","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0d41a08370895976b4e4f29e502169ed071599f4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.128","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-RrELcHrPEcmMTGS1I/vaP7fWq8peY68bWoG0o6HJPRVZFBX7M1pxuXw1F8O+kyp9rLyDBB36r2znsXRFIJOyRA==","shasum":"0e8c627e5f659c90c2530c8f2a1e9d951dd8f711","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.128.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA4kuCRA9TVsSAnZWagAANBYQAKIf7ElVqVe8AmkN9e9z\nxJELLJLDoTfYHX0F1Bkh7W31CGWdakNogyjar5jMyPzZb13u6+uqzMOEVEHQ\nwW+UIkNhKiplaggX85yyXkWqdACMEHw1gxjFT9TSxdA+1x/F0Le2EorB4tOg\nZBNIQfJsQ0VZ4+mEjm9uSdi12LhrB/w27NYRwNXqff54GY+v2s4NkZyD1U7s\nNmKK3FufHEe5UlHFqO2lOC/+b525iGe5CLhsq1YfRKp9xsl226jGl5lLDxe4\ndyYs7oXtWgxyYrFWcr3wKfPw0zmjnN3sV9VrEM9UvLP+luL3UIx0r2favd58\n1TeCC1rFa3viWXjItz36yBP185O+tk3aiyM02iD39Wwifm8BoHHeQd/2P/TZ\nh71FLSG/uLIpMDdiJ5zLR58bh9EV3tdXdHv18BsBeruvUPazg3YYaDlmS2+i\njb/qvu2NDHTpyFxGNhfdWQ07q2VKnUb/G2M5KGfqztGg/l548UrjlKBPYEEc\nOZZBpjGGzuXPxQHl3J3jahxLrnid6w9oqlzDwagy5TBkG4dLBQL9lmzdZFEL\nhjX41c2fRfaaeWPZ4jOtap4k9n1+XQrlXcGWF1FGqxqtpII64L0ieGU1Taae\nSqeR4hVCvBKOkMO2Nnm5KblTG6tiOINx+3DrhIpQOmFZgwAbU+breV08qgDZ\nyxEj\r\n=1Yh5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFkCQx2HIwS7idEJzzM3NVhDtn/7hKebmtlNNGRrwzAAiEAmjGkyN1FbsKoFz54M0qGQO2OHpQNQA/AXnX9M82Nd8I="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.128_1577290029721_0.7819416310959046"},"_hasShrinkwrap":false},"0.3.129":{"name":"warraysorted","version":"0.3.129","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4763f4c5f3fe16173ff4ac6d5cff96144053d876","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.129","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-uUWyp0Ni5O4eXHAvRJbggeCHrY58/5Ny1bOP8Fhn1w8icyGz5YRqp4WDSBUd+BhmQnMrokzs5KK+ZzygXomXSQ==","shasum":"2bde79c8ab1055632db754e16f319a4b99aeecc8","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.129.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA5hrCRA9TVsSAnZWagAA8yUP/jGJY9EBZRdJ4prEjWDb\nh95RINVuqYX3kpJMTADYLJig/bVzB4HBT6TIG1f0b1QMLEz8KAhQ+dxx5P4J\nb8/F8xA9jzuB04MVGVQbQm3G5gOpB+izTdAPoDqmveTCm1yhmSqk2BQd4Hjx\n49LflLA5ub2N4Q/Rjg7zVICeXgGPQ+pH6NfQDH+NALHwfyF+lhZw/grUSzXu\n6W0Sfd1jp9M33sbjP2d1AGO41X1CFifK9PaVCgz0+CT6oyQ69WEY3x7GEb7G\nViJZLfcQisyWhRZVtJvXyvkTRxEMtQ5gB6VjvvOKjj9izYfWBo10Xb0XbN+L\nZOIey7mOGia24dzXQc+a399HTSxlr4S+9QaH78gbaj6hhtYIGJRMVH3hPTvh\nE0JOV2FsePzjhrDiZT0FIAENwrB34p+Ptl5BifPPrhVGzPBM5deLkqEcyyDh\nYym7AXOed8Y0gjgwdzMw8T00k1PPmIJhCa8iMd5JWpXzADwJ3I8B1MgBT68W\norqnRkpJW9S2Hgs94qQLvW1gE/YU1c27PGvTuIbUOibRhN5LfEm29A68z8Dn\n6X2NFZ1G9uTPc1RWlYcbUetIl0PXVdn8lwWb8R+v3iJH/X2JnaGg8Yl/sMfY\nw63/oxyuqOMU41CXytQBIXCdxTKeGH8Sl4Tu22kShVA+EsvP70+DTUJNXHMl\n1Awa\r\n=5kHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFps6j6QXoQMFIRcrsKvMVzMpwFEiPJJ50Tzd2s5z2S+AiAuOe+e2stElLheOsBzXQyTSUaFFtCuID4hlofRreez2Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.129_1577293930927_0.9857287730535125"},"_hasShrinkwrap":false},"0.3.130":{"name":"warraysorted","version":"0.3.130","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3fca35161cb8f7d5427580f1932b5b76ebfa7443","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.130","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Tb+pfhfmUZo+X6Yxh1wnSy5RKID6vr6FlgYEdPECDaYHjETzPRfhrRxBW9XqiQ0Ap2DwoxPN7QLnUJDjYk+33g==","shasum":"1c6b93af4ce268313d2fc087d386236bb2c3a924","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.130.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEed1CRA9TVsSAnZWagAAtvsP/3OE12vmVbVERig5mu4v\nvq0j/pOspXmaLw+91Pfb4GQ+V7ND+VbDL8S5dNRsHo82oyOosIOLzyWexkga\n3iRqfntZXsf+McJg8bxETg9UMqlj5WlwsL/SPJtxZtJfem0PzFFxUD8WDOnd\ngD9HqavTQhprbDziPDvoCLW6Z2WRYRbPxGOa7dz58salr//xCDgmWxosxWit\n6qk+1xWzyaJcmhsoF8MmQ+BxgD2QoLsuyukVbfPBjwCgMKwKiBSKXqPC0fh4\nPyw/u/hlpIB/+SS5fiwxdXG8K1QwdLEJRkrAv/RDwKOAnDAWsuhx9lhfHJ0j\n8txlFz/0dBbTZKWBQzcfcIOms4pOEgsbUg49Cw5WBEE2OJnY0DzHwwvicbHP\nzTlZbrFAJmjRInMn7C1JlL4mBuPNTJWT82oB2f4lxDZq6gh0zeuhjFVrXkWC\nagNRnrfRHdsY5Hwb+MUIb7p9ejU449+Bg5gWTFiLMsE0NWg1Hi9HK/yGybnu\n+YkNGTq6q7Cz7svIcS/xIfjU5L2dpKp3CSCKPyx5+KUtpdemBh5O0AahIqOs\nfhMiPN9WnDzE72JRilAb6cSJTVzoL+LFHPM7Bk5x6YcY188+5P3WuR0yOrL3\nshuLrZBjisP1N00w46GQSOpxrQyRO2hECQJg0L24M+YzC/F60QT9mF0IjTCt\ncpWl\r\n=7pSz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3ep07HEjdGrg7BUJ9KiCueQtkZvnT2DOdhjSilBkvuAiEAvnujHhceucU9N/H/k/isPkpKygOX9z5GnbLe3sDE+78="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.130_1578231669404_0.4635799650141723"},"_hasShrinkwrap":false},"0.3.131":{"name":"warraysorted","version":"0.3.131","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"dc452fe28151187061e99ad604e06ee68910a8fb","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.131","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-G2YRhileG3sySoBcOS1YNTbxHUoH0liejsL8EM+va6MEe1LIek6E1WJGCUeUgy/WKD3/s63AUp8N1yloxRS2Jw==","shasum":"6c610ef0271b18dfe2b14af83ed9f807deb42fd1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.131.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHuLnCRA9TVsSAnZWagAA4kgQAKR8EGZ83sPVUnNqtz28\n92u5kc41qYSvnX1KsCiNQ7bZE0Kf0D9h9MnrCNB1TjE8tmcgi2n/LvD5HWh9\n0JGj0RY1fJzVgRIggGcLZd0v/huPA9njbFcNj0XmD4HUwRK4vHu9BktdW7cu\n6fibmghTJa8PFYXQnN3Q2SYwAj/1Qz1V3/BtUxsSkXWCGw5SfNILJ0LnVV5q\nAOdYNL4JCFUYjqrfxq3NbRDeAFG3Ve9jCsuP6fKAxuD1IYNqqZetTc01nzrK\nNVf0/F2gJ4gOq/GkV1iKQ7lCMjuTroBKMCvx7TKbNKN/hr3Zyv65U71hn5xi\nSnOMbhPbT4XHLDWzp/glrjw76gVKG9dlodm9l7A70j2vVLqWhS7bXEz43qpI\nzrTI2V6CPbw543dc6ocKYX2cEAu+kyzexfxrZPx1h9S9xOQjJulXZ+2UGk7+\nxnwOTuN99roklQJhtqOD/DNI1B9PbsZPCS9swXV2wnUmc63ftTg42KT5V1uU\nGYZaJMEl0OiypqiPnngG3ho61ORTxL/N06K2ENAfp+wzfWzivz+ZHBvXY5SP\nZwD+FOswhnXQ1KPeuNYpGKuhrFymhm28sSh1QmCuQj3F2Q0TJV9beDRnKd5q\n+PbXJApdYLAdLWExK9IBE7Ht1OvOvqWpJLPKdW5lRvidNtptH5j/fnw3kKgh\n5jHJ\r\n=oHwZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyFiDYP0/g36iMFZ4NcZ/uGMtw7Cxbn5Y0iYTGNWLbAgIhALNlkUEJJvsB/XmFb5HW1XlC4Uuy6AW7tYuOV+zmIxgw"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.131_1579082470557_0.5241423071155369"},"_hasShrinkwrap":false},"0.3.132":{"name":"warraysorted","version":"0.3.132","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"26363121e0d7bff5bc0726b310eb3765ef06bd3d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.132","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-0MIvivHr5tYGuaArdBFIxhTEyhiGahHeHBDO99Hl98w7QfEgoUZ6os/sQt50AZCr1ra57kABrY0Yp8M/PA3KNA==","shasum":"4bc105d13df941e06166c456cc5a7de49c731612","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.132.tgz","fileCount":6,"unpackedSize":78706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeIfTkCRA9TVsSAnZWagAAovEP/A6CShw4KeWY/IeuMN5a\nOcZvi7MlDqP8MbOwXHh08mNjp2Tyc54wni/kibIZb8YSjfSRhFS8MSM+KvR8\nYl0SZmeSmcGKUilEMfu9peDTYzmWDNshIhvQzK9hnklKaPP413cb5f9ae7xX\n+tVvNcFXMtsMq4dxRb4HlBD7Msf9DMkQHgXjHqPp5VYmdWIC24dF5ghio8cl\nQj5DboC3JkRB4wwbpocZoHJEo4NaAtO+gZdo8eME3idM7yYVofx4ZbB/0DDu\n3PUwk34i97YwT0xDLw5liZFrGUJjwrGLLlUqyld4qjlYXnayPlKd5HraoY56\nTGl9HYrqFQFs6Fr0iQT9JEgrSrMBhEptJoMy/3KD0wl7Mfl1QTdRkGI8nfeE\n8bNfZX+0EVeJDec+9ZgH9VHrfWWfqLxT+xJV9CyRWIsETyt/jgD97YjBK/pv\nYAllFabRct1mfsmuagQ7/SGbs65aM2uufu9qGcngtxEkwhTMnHBKaxam6fgJ\nVccfg77G5b+8cOO0y6LfaY8D1MOceqUnOILu3QJYLyohC3SfL/QJspqVo5qx\n7nvQx7+r6HbT4/i8bQNn5hgz7Wm+NUwV0XQG5syUz+3I5DTa/EcVMHGOrc6q\nqb6ASV2eQ12HWX/LtUuKg1yoZzLzksJisNDIxYXD9TuVKYxZQrP1loTUT05b\nY5ai\r\n=pSm9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJw04quQTR1A+CZ9Y42fRoKtzi2ZPp1EF23l931RyOdAiEAjAOGG1pcsO1xsz2+O5OuZ+b7U9A5A1MCVE/AZUXeUYs="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.132_1579283683903_0.18868285997587986"},"_hasShrinkwrap":false},"0.3.133":{"name":"warraysorted","version":"0.3.133","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"bcf2fcb4d293ccdce4e18d6b383c16227d8dfda9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.133","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Ml7UEuR1rO/i3Ads2rpp+VdoI3Ue5v3PLlOGBiTv0hyFeApzB3mQPUyX03iX7Mvj9unNCAsQjzEcUs37QKFD5A==","shasum":"6f0ef0761e89dd8d1e6aa037f1641dd1b05c15a3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.133.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJFpJCRA9TVsSAnZWagAAeX4QAIm3nVnlBHB+ADCNJzKA\n/XIVQA64oYwOWsJZEXfl0pUYlka1QqITyQJ5zYkDoGkaRk/l0kUMe2hBOq/f\nf7n3qkN45Y+yze8OPmLdZjPvml/7BqUad/hQul930ez9LUgu7aPDYiLWCRj1\n0xAJPVhIaXLocDu5M/71PQfnn3B9SrQ8vXof8J0yLAtL3nSxyJZ9LJwCuBzG\nypp+oHEumd9vwsHpLKijq/+PujhWqzwdyzC/JV1NqS6mpRzGvi3MM1o8UcG7\nfxUMog/BiGHP29fVyoehkub+eag+Lnf9KFzEu62RKnjxihEf8A+aRBJeROqd\nS9g3/yi/r16G4xOL3yUEZwEbhrhx/jdYGhQ+ypmFIVMnB3TaYkjLYjUYBmfG\nCCJ1GtQcSi4czWD18uWo2tZ7aza1STw3W1xApcYt1gE8E+IkZoBUNHCjCxzi\n7IiUBZInq80Bhu4+xuY3xLKtDpcB6783PvsX2mhmt5cXnpLLWGGSTrYucXWx\nPkiaS6fpNES5tRuff5JBQhpVtcY4dcrJ1BhOTbC/f8xtgSDHf8ZIlgdsXQkP\nKyCiK7m/1gn5so9jIZ9cxJ03k1RV9viZcshCYTp+umcnrajKcgRS3hMtFUrC\nZYBlYkGMO/eyjeif96ESqm54FV23z2dbq6uYIHIqP3OCnBi0Vtog5Enet/Bg\nkew/\r\n=aC5G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlN7c5EtJWOMrm8eZ2WN12ZOnRgi1ucH74U/mkytvqyAIhAIYiv0OnRv+Ci4KtyPPmj0aCM4JPfYypLB0/I0iYraEZ"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.133_1579440713107_0.5126340870117787"},"_hasShrinkwrap":false},"0.3.134":{"name":"warraysorted","version":"0.3.134","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"65f0fc920e2c13f6e7e84a1808d6a78a9b85c9bb","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.134","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-k+T6aJboXrBM+V9N8d4G5QQlgb8pAE0ZSvS6pXUTbKGYAx10Dfe1ddPF3ie0YMNs/Nq6pkd3wXvbfqwkxZmLMg==","shasum":"dd072e0547aa5136621f92332d35c93b074510f9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.134.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJGMICRA9TVsSAnZWagAAW1sQAIBRYuJpudI/Fe0YoZNK\nuQ1lkKJxu6F/BvKDCeyAbpd0hffcDqNK3D384toG554NT+e3c2om05thjDlR\nNdZWaXgh9Lvjb7oTvBxZkhHwp+ReJioQPTWlf7ZdSZuChKq9IipVfze1bErE\nQcDpGA587pS1Wj41enG9h4bm4sW/B/AhNsxGHaUFecIZ003L+VI85GdHJ/T1\ngYeNyLKafdHTlye/eoWqc03Bl7Uc80+PEsVJl64JhXw9BnVx+FgvHD/4s9DL\n4ejlFX7Cqit4Cc/YfrwSfKL2lNBBNWzeaq7x7Nj4e9jQO9a3/Js6lO1VW3pV\n3VyMQ7hPS4tNeYhfra/3CvU/RF01gczUUnY99i15VutK+Pagl3nHjH/5293u\nXpgc9/0sORfFkZeG/G394UZcdms6eulFeFdZhml60jwYOK1YCah5hYGcjH0C\nMo5yZ0U6XeVTLDXgfXqMAxhcWCAgioM9wQwGHkB30UU5nZafkPPLZEZVVpX0\nWgrEVGSX1N0mWxQ1UluPy6U+K8Qf9kx3qts2gvn9L4pTKatYHELy/8cLNcVw\n7EA6nAH2uqikGDJiBHH+HgAn0cq5ooIAgkpceCLND6M0WiDiH5+DM8L9Qy9S\nSbiMil92TOAgI4/AtCCVpZWw5zPPTjkuI88UZEO7O85+18s4wFZV43nyupQc\nA9c2\r\n=qlXE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSdNX7Sc5XAoeoRboLWSn9V2YYj4Xfmy1aMkwJ78G1GAiBAyimz0mBuAE9fq87znVtz9uG9UcUtzWXw28rGfD25fQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.134_1579442952351_0.4124352024451754"},"_hasShrinkwrap":false},"0.3.135":{"name":"warraysorted","version":"0.3.135","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e31af9a58a5397e26d73363ddc3c05a8e458abc5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.135","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-/x/XSHSIMbJ764vYe6x4MjKe0aTliFNN+YfYMem8vvnCOyZIUuXS3V3izIskXjA1WFJgTmQWqsMuD2DuU4tm0Q==","shasum":"1c3c7ec7c1e23567e402bf11271f7abf8cdb1619","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.135.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOFQqCRA9TVsSAnZWagAA32kP/1PJ99jgkAaTn2NOmLSV\ntPPK8nRA4qDKnGNCgejDZwEtq2iZGC+qsVHT3eS15Hb3zSudRsT6TfpfFw3g\n9y+71OKWdmhKg+cmvdaQcIuLvadgMX9gZI+GptGo3Z8dmRcYMhHFr1sn/PvH\nOlAaHx4iKthZ2+Sakc5jlJVEEF8ZzuyvnjBk3WyCRKvTf0FbQztTaSgszq4Q\n7gfFuUzkFXSQXoT1DsBOUdpAFvrbrugqSVFb6Kt3w/0u00Wse0/FE5DnTxzs\nDkUFINQCvKPMmtGXa9iDIzU2MGWi1b7Oy9d0tZOsSmQw+yKYqq3jvqrdulZb\nGrGIua+xfdqrihKQZuN11SnRIvNpMNgvsbqLu35P5ImUEnxN5NaLcc0kXlLX\nDOn9gYpTTHAkyH2639e4fQxTMecuxEcgzZ4X4mCNMqDAp9NNyfX3LI5dU4Nk\nZp2Om1Fv4RPlPXi713BExC7dS9KuwpBCJNKR+UsGHiKdPyVvdm36MY08qD0N\nWust40nO1EFgWnycFdwxdpFPqnhOGxNpd6DvfTJa833TY3deU1/Nc/HCdz5O\ncin1NCPR9syUkgxyd2yj3qV+8fgBrUdYloWKXaYln0MpH4RsH5krhMD8rNUg\nialG6H16UWyp85wprOH09RQ56sj2CnhH9akGKDtQsWjGx+PpgwyCAR5ZiWze\nyveZ\r\n=jMoA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzjfc0xKK3k/TdVutxjBLVoOQjTOmNvQFGRnXkOfQGeAiBC2+l5XjtNPvHXCiI51QA079tIDudjM3hlbQPaLvWK/Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.135_1580749866370_0.33419115916221864"},"_hasShrinkwrap":false},"0.3.136":{"name":"warraysorted","version":"0.3.136","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"de07a4d794da7392ecfa541a69d61c5cda002e94","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.136","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-/zSVdsNzQEEA1PI0Q6eyht1n2w1WsTT2VV5R6QGilBQ5/fWE0lNsgzahZQpYpIurLe05BGMJPCoPDpHalhRwtw==","shasum":"f25d7ea1387fb57b210a82697421beaea531edea","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.136.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOGXJCRA9TVsSAnZWagAAFXkP/0JHTt8GXlKn8NS8bnl8\n1w0abtQP2byAIJDV7WODSwbp8wD2CdIOOPrEr2y2hXeGRx1mhIQM04zK+7+o\nkl7i6drgoxvo+mxnzNhjUMku/ZIjWDqJwFpGC5JcEeV025BGCb4PCynda5cF\nnEOC4jJ9TEN+fcex8wWLjzgBiM59D7MpRalmXgRSQ6DPCBV2fXXB6LOlrZf2\nyXkiJ9MUOZnZWcbd/95R2ckdw4Ya4UcMfznC2FJ/2Mxzc7H81PibBEJAl11M\nhSVINGM3T6jsBY8fdeqqP6hoCH9/I8InPgGFlOMlnsmXyHeLmaWu28/WIKKe\nswbmo+ygot/tl76JXDUtYQB8NKLMKR0kTCIeDZW1PorEWbFFCu+yIJYM24PG\nOGcxo85cjFLhk13luHBYD3uJ/3Fj3TAMM1taTTYMh4CJRycgzpT2yN3e1NdI\ngFWOBmsFZ5HsIsI8DNOr0RtPPlAcuLrYLVMJJALnZWiusD/f94zaJO2CUl1u\nRb/OEsccjJMfWXKiitUbD/Z9MxS9urEfACrVpmhSRCzdof7acApMB5NlRZFY\nyVBMwAtdruxPZigNxYtH5AvnYgwU0ny0YK1CuLSiPrpPu64Iglg6jNP6kOy1\nmc8sZ3NG1OiAr3Y5yrZJtm4WFA3oTj/NPq1OLDRs1pk2PvpLJDuSYLNQ2bNT\nNNDK\r\n=HxEJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2T5MJU45zF1NCuFMXrW96VM/Th1xQi9EHgCgofmjdWAiEAoqzO70zDWQyOznAVg1i/+H98ndQ3WXkIHPustk9I8I4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.136_1580754377460_0.27987504874395697"},"_hasShrinkwrap":false},"0.3.137":{"name":"warraysorted","version":"0.3.137","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"734235a6d9df5e37e83551f27715e25245726680","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.137","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-j/umFX1mV9G7cv2kzwHi9VRqbHldLw8SC2cvY4Z4qJlRmsmukN4vKLvFG5Yn+UWR3PubjPwM3aHwnFAAbCQ3wA==","shasum":"132e166ca95f53c65a966da95b9e006bc5c7782c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.137.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOHD4CRA9TVsSAnZWagAArkgP/3jttiOBxB2opng7VE0c\n8QbZFbF5L/zNpIyCrcXJHamyeGAmbYKqNXtOB4AUQgvQ/o4tk444OaE4Vrh0\nbLO02JB1xc5pn2NoQfdqY6t2MvdxIM0nj2kBfqPGtXLyaP1YEsabSBqD3WoP\nICtuY/kU1BB9J0Hf7sxPVLDkU49qheKk6HHxhGk4sGLxjtNUldPpUbiTe2SJ\nt2O/5tUwP9QbnwvPvMWJxNBrOYwhX/x4mJJqsO4iRRPMnZ23u11Bx6pJaKJ1\ncQrrIO2pFcDCOCejFxKZRUeIJu5h6KRlChtwjYucd3VcamNwv2DgzXI6gI+p\n29PE6Pbpjw0uVEhh9JkOes0tVDySfjepgJsPgocI6hEYVtvenF3tiwwPr9gv\npZuh0QjIVHxzSxQMPFuALru5NRr7tLJ7LEvqUIP0x6YJzFXt15Zyq4+M7b4c\nT7HDGiMWxE//f7GkcqZCf3l8GEAcCUYQ6tglGBuUb3B4QNRaPCNxiqGd4lrJ\nN6kCpRyLeyCuzoqhWiqFdEYVypirCApO+WTsvqb4/mvs1aaPS8OsYgKk4KdX\nwEgq9bYa7VSckuoQKr+1LnKF1+q9Hj+vAOhIlLcnw8Mb+bwpVglAPvu9vrU7\ny3UH7NLaPzPML6rrHp5XIZc0RIQlKOMDnIwrlEkvkZONuOO7XnepBnRodBEc\nKHRl\r\n=PRLA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIbgXKC5zRIJBA1CuvUAB2kvC615s4Wlvh0IsyJ1BilQIgft9HQVyYmMxjsEQV4Xk7l71yqiKROV3SpfqI9aYkf0U="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.137_1580757239538_0.98333838125809"},"_hasShrinkwrap":false},"0.3.138":{"name":"warraysorted","version":"0.3.138","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"ab129331d115cdf7925087b61be254830b5b2fd6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.138","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-pwQVoQDjf1+NNtsxqx3kp9E9d56EwGtlCsZzpIgZm96R2TTwXRZGB9wA2WVVAHTXB0i09EBcGZ6cPdQslTtAvQ==","shasum":"b7d44130debbf5a703b984add5e5c5fa3c19f529","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.138.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOHtPCRA9TVsSAnZWagAAMbIP/2fpcGLp+sQD/qhWanYu\nwiqbZcIGe0EtXuTD9SqBdVSMi8ULOz58Ts3i+9SxrOcCczGmkKOnvt9dwbet\nqiEONwfmykx1aVmivcV0KPDgXxvWrWKajqxYy6UOvv/yszsJKmiDKJmcPFrj\n30O/lbO7L/ub1jlEkV5gatDJf/PoEFc0WETzyrXzQ+HqvbOm5MoPQ2ohomKM\nPt+81NWe7cMWiDh6RwrJSB3XbcYDqk8pZEOOYwWbe5gJi5c2WhRDi09kxxHk\n/1gLjTll8tq6z5UOIzg89x/I1hOOtdPbyNjR43I62jSfGfgAEGvkzSklNI7q\nD92VEsP+A5XeveyW4Juxleg9XYJjQdXakNTfSLHFf8v7lTaPbMPiO30ptAhc\nWboGHnQkE6hngeHp+xGHXpM+4CDR6u/Olga6MGjY/LvMyeaF8E/6TMxNTcx1\n9Sm0LVxoh7OjC0eyuOsrkz2Rw6By92G6Zcrp76pt0IrB52879W9u3PVBeDFC\no9CRiQpTRT1Z8m32dSnIAC9oeHdd8Ui3vZiHAn2c8LJ6sCoaOwHrJVBadSWj\n6Q2zLmemkuozqwVSaPEyXDmoZFndNHETFwApNwi/QjzAB/+PrAdCFngHbfRu\nmITBf2b42v0KQoqs8nurFfS+K0fhkGxztino8sYea/4ulHHSQX0k9uAHo8Kd\nzfur\r\n=ARUt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWyMNbiBmEoyid4ZWcGAcYW7bxxWWaWNcROcINaq9FWAiBBuKrfefC+yn/isUQT7/C6DX79HgIo9bUo740hZWfX/Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.138_1580759886885_0.5319346430094372"},"_hasShrinkwrap":false},"0.3.139":{"name":"warraysorted","version":"0.3.139","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"d3200b33b59efa7abae8c52bc7adfcede6ceccc5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.139","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-bCvNct/GzC7x8cMkRHmQG5fNsghxwX9/04Cf1cWxfu4ycndFpiy/Lzjg/QqPOsNNGtC36nNiTg7jxToH8TzPnA==","shasum":"7797a6feb03add1950bc2e7d7165fd9428b62e7d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.139.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOJcpCRA9TVsSAnZWagAAKUsP/ArWQ95uuJ8SRmbVfOru\nkm+BfqQrfjUEGwF+UH/zX9VTyb99A5nT8S3Ca/syfz+Gl3j6YX2QJ5TcdO2q\nObW2XIVDrss8YCg2eofWyiFmTorZimFwpjFCsfLnXF0EL/bgfg8hpN1eB7Lk\nG3IrVPuET1KvXlAXqOZG/roWLL3Zou3ED4HGFNqdqopkM+OVPu/vOhsjxarc\nSgn0n5lzyTjgtr2zBK6BuCPVOx+LFbp9AC10uuBiWbfATuUQ3J2m3IM/9ZLC\nzHSJRoxkxxAmymvJkyEyb7dttN7lKNYKO9dWF7NOg60PCWAyMfleisrDXdUo\nujC7TbNLtqFaJRIzGwDs3kryKpeOpAKhEXg5BijkiFrMTlQVgOlkX1ajOIzw\n54/Bo5vnTvQKP41h+SyaGNadZWHiQyYVXIFwQp9JXBrRWrh7ImzrF54XCn5R\nUINV1uPqQRQHdwUkYaUAhck/yedoogYV8KJEX+vILBFtGineq9IK85yede+j\ndTh+22Cy4oUnA/C6bBaepdXmZkPPh+ZjEji19B4rjG/4CEow6pzUQ1L+tKsj\nQauofdtxVyNklwFLOH1lIY+4+Lrknc0VQJgtX04sIrTD6dqrl/klPeyRrbUz\nTygJc+IzddZ2dfiYDoXkz9EWVnvk1aqDa3nhFTqMezl8VQy9Dtz0SmUPYkSr\nTCv+\r\n=s/4K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCH78eboyLRUff2NhkYxITgNxWP9uMp6YrNyRvNzFOhVQIgZTG4mo2nKQItXpNP/9ZyYUp23mHRynDNzTg5c7O2blc="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.139_1580767016795_0.933895266266165"},"_hasShrinkwrap":false},"0.3.140":{"name":"warraysorted","version":"0.3.140","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f480115dca3b3f78cd4c377a38bcc6d44cef8ff5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.140","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-rXD2P3ZDCA/5BxceTa/ICp4z7V9rFgeWdla1GEZPKydnICS0zftZi+2W4lbUgduO+7+vpPlEFGMRG/uHSfbJwA==","shasum":"f1b8bf1f4d34ba6f07340f82959bfe24e978b9bf","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.140.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeORJKCRA9TVsSAnZWagAAq2QP/iUN+af4GGl/VJcZoycM\ntiDALCN+eRo0QG/LogTteMI1S4KKb2tQc8Y7teJbBuNGHea28Edys1jaQ3lh\nlWVGh9hsXaK4ftF70AJBcQ52ptBia45gFaU0SBGwE/JfO63QgG+CoeqACs5U\nufIXchy+WXUk1vX+Zu2d8H+R3gYH6iFT39UrNdRjCkW+0MtgwZxPFtPwY6Ij\nH7A/LyGAyzLyin64wCeeJxVUb+QZ2O0L/fa/uD+0wEsNWQBkF0QmooeESGMw\n0th35KE4OumVdi5xGRmcdBI90rk5C/FO0M8nBzs0KD2gLF2X5ZJN+NOYQtI/\nFHMfcQt9QuOK9AefMUegYUJ8sidft2g1EqFWWC0o8tOGBrPzVe5d0eKkQhv1\ntl/lrqXBBHFDeEC2bn8i3hkghybEf1UlxA90l1V+9CCqn3RlTchfwA6U/Jl+\nMC6meHF34G0dgkXkwCVMoBdlb+7fBzT5FWgv6/Qy0tZ8+iRb/7sHZnEIcj9T\nAP4DmohGA+pan0SLfxB7huXMsfRYksUewGw9TYWiksHYn1vkfOLUeCG7IhnZ\napWkeMJ5p1j6rJrqYJRIe48sb3EjtowCptntkNggv33QKCXMzbx/UKJs66Wn\nUthVSmoIhj38wpYQSvdAneqa+ajvxBt4TdKENxzAyHoCMbteONjC14aIaKcH\nLbZJ\r\n=7rna\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJEwXl5V8mTnna3JSGhtxGEzMaft/ZyTHtQT5t04dsGAIgbWk+z+Kc0oKANPKqt9YjHZTtRj3GKtTo5uZaLS8KhMI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.140_1580798537663_0.7076084738072581"},"_hasShrinkwrap":false},"0.3.141":{"name":"warraysorted","version":"0.3.141","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b0a282c03d00f97317b90d86b19019791e277091","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.141","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-j1vJnrmZihjfYhrGVKUffhEeqB+7WSQyHmavscCgfCodxbMW8gzwGCQUkHhXQvwrDo5KNmbyDc4RrpxldLwZag==","shasum":"f9a9a55985a8d3edd69b08c25ed7e43ccce716bf","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.141.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePFKKCRA9TVsSAnZWagAA7dMP+QHXf5Pxd8bqs767s5L0\nWGBe65XmBa8EyHXFYnh/5GKB14e6tJQg954hOGzK0mxt8VAWjrS1ct2704ZM\n6IBB0UhnQxXp5bOh+0uHpHP7MV3j7/gQsyKFk0xfw/9qASJz2JzkJx3Lnt1Q\nGJWqQSEtO5Y4zBmCPU3Ub51yZvVsZxDpmBgHbc0/zT+gLDl0ohu+MIfKjzlq\nPH5AhCaYclp3RpiLRLCepJ0R8L4KjUmy2yQ28miCx12HIC7eon5fT2bnG/mn\nYN4RxHRtXh63z18WLoeOLDawAeqeMdygFWeLRgmO5XTKDjZOysyS/5dEbAU9\nJssLwR0epoLNdl90WKMKUYQE/JDMZVfeQ1EmEXPtUPTAOuMD88gjjJt8n9c8\ngjKihmTxOV49sIVVQPrMWVre7AOBzKozMZkL7zZHHdJzdPm2v5+PkvCyEO1e\nm4KGYYX0uzBZLu3YXI1EgLe8r8rZM9j967wWsF/29fAVLSUmrLDpT6MnYsOZ\nmzAYhQpZzGaalU2NWj2jZAO98Sgm2gS8JMl/V29211JLdSFJQWlveHkhYko6\nv63FM54uKmMU1ZkEmyX6FpTh1jlV/PydvfC1k+qT8lOYbBvI4rHCwk4bQY9B\naq0a5oGAsNy7Y4huOchtdPj7A+AK0IG1R1fMsTa6/acx8HK5qDVbQnAFSmjv\nRVPV\r\n=QJul\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSkKyg88Ly8+hOqPkpy1k1CwhSN6T6UyB4ZcoAb3sKagIgfq0luZ5NSv7F3LNJg1teSDprU6N+jYDnC06SoinIVI8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.141_1581011594429_0.7091571312395339"},"_hasShrinkwrap":false},"0.3.142":{"name":"warraysorted","version":"0.3.142","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a16c90d8a4c4f2a6f3761f9de79b17f00204f996","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.142","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-KDFeZ1CTzVKAA7vHVkZPUvBOmhXRtEVaJvmlgUfr+QtCwjO0UTubs3y7dFj32JCm8Euv9xfoQGWkAxHsOf/KIA==","shasum":"59d7ea0b59fba37978e06f6018a0a3132c9218f5","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.142.tgz","fileCount":6,"unpackedSize":78708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePWZhCRA9TVsSAnZWagAAuYQP/A9WF9FWxPueM7Wnd/Zu\ntLhqpP77Ll9pNTAGlxW8EYBBX/GXubUzBXd3/hmSmclWvbnzntPck/nSw5Hj\ndGeEYkDUDPC1eLC3roZw6mLUZLWnNBddSHzCP7/9YzJQl9snAcGWG72r+bUj\nrlUWyTDqfWMoMCGjgHiu6GCAmvS8bRHxNrJ0oPPALw3APxvqoAS6B/gESUWP\nnc3ZBR8ZbwKKumOTd2jNVC4TFSeMkz97M/DxCVEMXD+R1a4UlOp1MHh/VKJ7\nYGlOdCQjNDhRX0q5zNI4sKSbLMAZUgtOgW44Nb68uCSQdgWRkeQT2rO2NX8V\nnvya9knBK5CAQ4NyEE+WwrJuY8u3MyGxVI0tRLarUzW4b4vBZF90zZ8vvAu7\n6Vr9BEoqabr5+Gn+uT91ZC1xsJgLOOI93+oIH2/No9SueDxrpuiiNaPgaHOA\nCjTT2DsCNlUVkW8fdvHywMLJD87TyyHc3cwdppAdDPCCOcyuTXFwowjL8e09\nVbdrQdhRfpg53mmMaBkOiUv+u+BalZOTbw9P4+kmIIgCCXgoRqqD52wDY7i0\n9EbdM5+tw4ltXkdtOeQwcYwbzGTE648onP+bEfoxwbkmSgDc5iospXByTWo3\nknSYaFHQTgj1yUbBYS7hhLX/8DxBUrjZ443BuWBxItXcqhS3kEuVMMhIq/X9\nTZzT\r\n=Vtnj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDErX/QrUak/Z79kRPBokTR6w3RZdmTlNunByv9ca1YewIgW6dsVKlv48cOoElJClyl5lBDcNuFbatYENza1S29V68="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.142_1581082208904_0.019438913416592207"},"_hasShrinkwrap":false},"0.3.143":{"name":"warraysorted","version":"0.3.143","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"71ca81f41457deb336533049414e0dec14663c27","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.143","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-qxNY6vtUGWjQ6V7o7FqE+509nwJC7H2JGz2iPVo+fHZauVmnqoqPwn2gTU96xomQYoWxwnCT+VhStwKKgKBDuQ==","shasum":"a7649f8d142577e63e7268f6141aa54db691f792","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.143.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQpMACRA9TVsSAnZWagAAltQP/2BSCLwdDBSTiwINYBje\n8E05D5dSSqlplRxOjM4iLti8VnRsoLQ5iGPoHgKoejdSQj0tP+APdTfOAEzc\naaWaehEKnOzr15pXFRB0QouATytHT1spfXWy4V1i7XewqoCFWZXwcgdEkKb1\n2aZ3cQDtHBvFCqduaIkJwayWhRsL1zpOCvGivfU+J9FSPMg1LSwIxu/jn6YB\nUoQ16KrXK3xW/nDgJFQaIWX02s0KHD4UJJVo8OUlqxSUhrkw9khbDrIAZ66Y\n+TSeGRZcAYt/w8gQMvOnHLfByxAUTlB2S7/SyUv/lku8BnlOgqbdaGo4BOrD\nmOd4QIW8vpnwEWk/n6xgRF0/XH4AS8Psuf+vhRn20plNVu8ZzaiE6zmorCRg\nNZDUOpetIfCfAB53G2Fa0SQDBvVYMo0ZKcsoMYUhbobsp8LjdMBmxIVFTXdw\n4rJs6JA1Luy9OJpqkDDUfiY9rTbOEV+2WjiAEehI1WRKsQGEO8PnBl7RZWvQ\nLEqCfxvd9KX0GxHBjt68Xb+fvSIm9h6DCui06R2DOz3tkFuBhIEszgXvJzB4\nhOf8QbPrT06+xBnM/IT1rRuHnZm3SVgsoLoQzuL7oQ72uDUH0ApFyJ6SGCoN\n9HIEvBNDu56LDyYdg3OjmdxR109XdTVCw/YMORqTGInqCSfzfDytvJ12rdLQ\nsSdJ\r\n=nSjc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSnCtqB/JQq20JLaTBX/bKYBOtoQ5EQJRCvNDl93TwdgIhAK/kUuQ1vN0kzIynZIxBwCtALUxXe0HuRAxFIF1aw/19"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.143_1581421311992_0.5486370962835576"},"_hasShrinkwrap":false},"0.3.144":{"name":"warraysorted","version":"0.3.144","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a3d257de1a85f8ec26b930d86b5bf17aff75db34","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.144","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-DOywdc5sjQpCWVYq2bGhbc6/HrbPKWmM9nOtLSz6P4Kdqoxjj5NG2VTFe5Mgw2Wyx4nt9rqglp6ORyHQAXVgkA==","shasum":"9126f1e1d3a4d330f5166cb9d0d010f6b0906c51","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.144.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQrFkCRA9TVsSAnZWagAAWvwP/3Vpv/uRMkz1oPQLtz6S\n09IHjWKjPQ0j+B6F/UQPuBgkdtsBQkJ7t+BnjQOdPrr09C2yX1yel9K6bzM8\nFaAwcndUjlta25/mLYXIxlXeagzzMHymC9H9Rry3YeEHWs1/CNc1X5Trfctj\njwsgthHL3ir1WCFnhQsV27ylFzmj1P77r7P/VbL149CnSohegob+TKfgIwMT\nPGPvQuzsPAtduP7LnUlUoxKmZ+QxhBqz77kKKy5taBtI4A8pBxRpTt0bSEyy\nZF4g+gk4ls+SVwesPluq3r7YwinI8HM7aDGdPSW/tQ0T298Wg/UiUl8Ln2Ix\nwXe8sz2qUW8+SAQeHdVkU9FsCUm0PdNamsiTX0nxKogrNgrzCiAT3GMohQAP\n2esSlsrdjLwf9Z79RFRrnB7y68+3oTdrJJCZ5OsDIXTM/XSh7/r0dK37+OfA\nCBcbtRE/qpMubqnnW2vneEZwzPHNGiYVnfHFKgev0vG6vpWCosU73UUXxr3N\n8ZK7lrT0GqhwDPGD/30XP1AttomibMmcT/5ZGkDYrO8nTGLV4Gl1EAgXwYfM\nT+z1c/HhqbVER9UHGIoG4elcKaAzBJ2unPoZcmlqZU4Ubyom2Jmme8Hj8EhH\nWOr2ikExUcyRvBOf4KlDMkH9VUaazQOG6dXujHO7eBm0Rkx3qg7I6MXjpHIe\n/bUQ\r\n=UO/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA3wCPAFJO84QXms1XQGaJlXhSkNlwE4gRXbuHC4TTnQIgFDmUkYmaicNrA6SElluvZcblUoz++NLxRV86hJPFdhQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.144_1581429091607_0.8228363395703888"},"_hasShrinkwrap":false},"0.3.145":{"name":"warraysorted","version":"0.3.145","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f810a3121aba5104e2d1e45e2157ce3fb22c2169","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.145","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-0nNnnzpHny6mqZffoXvPganN9zStqOAMjy6XCcdBmG/zJJ4BKLPsqrrQyePNRCLWfEkaBQD08iYKgrt+rpPxJA==","shasum":"66c74965c9ec3e4be908db1646e0fd113dc43a3d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.145.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQr6iCRA9TVsSAnZWagAA/+8QAIAy0t6VUKu8m9ehUs7U\ns3V2MOtgac6Ijo7RtxqTwlyb/pzCmE/G7i9RSMputhemFsuB72p9D5v+GDMa\ni+dTFZBlWRnwMTwo40UXWz9G+hmLPC1HbZhc5ryV86mrX9viU9+DYF9HvfMP\nGGJKyP6C9+5WV5cabcACjyc3OCV2J7LvvoybdyfNJQfV028gI9rQLszFQjmU\nW2a6BhTnE831oDzAGG5/bB+UtZmpVHrTAM3XIao3R14AbFl2pBivWqvlps+f\n3/mzMtfV8ppLFEIJ7wLzUQx2dKfnz2tQIQKRYHvNK4rie/fEIvvuJmQkO/05\ntwBOWTJ1zdS3Fe0VlyecO5rU8FSoUd6EIiJYc+JBjNtg23GfFzHkFG920CCt\n3IwncdHjIkSVi1KY5doMMs0k9o9CA4aMDKx8iDTe1OL8eFiHoPO0U2OnH9zL\nwQ9vJ+rFyGQBMjkV+PVQSx/Hn2/1Tj2PIdAV6zCLvlsWdTrLc/Zs2KX4/b1U\n6Ycc9hCqeJrGMCaQbAeHht+sMRWqUD8DBn3HFIItU7+obeujGruVe/D7zJvy\nMs7/o8X6miLRwLIGArE0ag4ZrA/kbP+W2hXIpEEbrusTK7ocba7rhGVSSjYP\nnU3k2IQEntbpXnwolDnU71iZQJ5V0SXn1JkVAcMzfRnLAlXYoxLptzS9NxfA\nNeLj\r\n=yjYd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMb7huzMAQnC+GbmUTaf6z+ATTlzQ/eehkgr3Rvo+ojgIhAPuWzX2iMHG87tZMxc3Oux1GEya4uVwBG56SSfgSvLYJ"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.145_1581432482288_0.8063962781548264"},"_hasShrinkwrap":false},"0.3.146":{"name":"warraysorted","version":"0.3.146","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"15d6455b7db5fd2a2f1bb92c95906488405511e4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.146","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-etBIGxn564ZmWQGHYnlhcUgNtdkCbJ4UikbDzl1m1mlcq6cYLBdAOePnBqf13C3FPM7q9uyb3H64UlRnds8/jA==","shasum":"69fd11c8b2f0b08aa7d4d99b066182b3d7698136","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.146.tgz","fileCount":6,"unpackedSize":78707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQtgICRA9TVsSAnZWagAA6UkP/0VKBCjK1vehql3eqr4e\nUar8LPkzFBKSyYH+lZsjVFi5ANaupSlMDgQmN9/Be+W2qg23mG2arfh5ZxL0\nyRbArqzB7FDH1vMvfd/OzM+jS+MobiiuK5m4MbkzexONPWvirlWTAZDpPL5a\nmQuxO6Uuh3tPmEg8l12aqdIUR8xao0xKInUXMYow9YT7NkGGwyvRh50/c+hz\n8JhqSWp/EnirMp2kGgkVvQDPHSIR70ufDzx5dsNUuYspbesTLSxm85OF7C/f\nstW+nmzJi9zBN75R6ew+Z2/z7tzELp6CGsR8S3USpUEqEvWjqnt6wrNzA/w0\n/gwXjeF3HIkylJrPe5gsqGaceLjkmRy7IwJKhR8eAjK00te91IM7faLJ5Kee\nxo49fF95OlqxiFaRoVuCqV5prSWoabcIigRqRmDLWEqLs/G4F+fPpmlZux8E\n/uF8hKnEYehs4I2M6EJ7EocDVZeVzFEINGhtqMtZvMkSGMU1HASjpvvjAFq6\nLCBm6YlAYBBBqtMfvrubbyK/UVeU3WT7qCowm46yRwAdo3kWJaEnAEC2U1fs\ndjLAgA3O64VXsvyUSM0e6h1RtDKBKtSSf9ttxG2ZY5+hnT746zbO5kbUSRJE\nqasueqwrsosUwb78b0te2A520mOJ8JsatWVpHiUHD8XlPjiJXv0l5pq0aZ0z\npHmt\r\n=wMJz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOChA3zrhFhqSlEw8Qs7U6SJVB4aXstZpY5W4W0tnhEAiEAu0J3FJg5BQhWLKuWFqNPlsufl+p6+1gNE34dEmWM48k="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.146_1581438983703_0.4697457012973967"},"_hasShrinkwrap":false},"0.3.147":{"name":"warraysorted","version":"0.3.147","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"d191a2b8a006641f60b34fdcaf45e71efdd7997a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.147","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Bd+8OOQ8aoJXAn1rF8ANN1KKgZJHNhF6mjc0TnCxZ2K4rRHRZcambatLQS8kZDJyYKqgUYaghxs+ehMWtgChwg==","shasum":"9221c29235bf065d5104c9a3302cc6f487451461","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.147.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQvV5CRA9TVsSAnZWagAAL4EP/j57vIXRO2UEALgMNF8F\n7pKoD0lfoOvLvH4t7mnPoEIqKv8S+ZhXHcIoKm0BM/VAP6QUfrJ1MJPzOu5/\nhlHLj+oAf1njpRHxdznRyracwjTVLyvVm5GyjAlx49brfNLn3fsLexuDJXdB\njQTEb8lB+1Txn3dg4t2/fidoVkVZig4VoY8j2Ey+br54FxplCGKtUboQaBRt\nawKPomDW/jc+08oYfB53TdTzTJt2Y7AZ/sbSlFZ4MF5SqD2tWqNW7MeGunCY\nXQHU8sPNF3noc2O7N1lEPXkhkbzn6h7BoPl28R86I8V+2GaoLK8ZSeMs1pei\ng2C3I+3rRb48DGnwgVbVg1BLFyo1Smk//tuxxc0smlzr8Wk9A0IQXae+HOdd\nzlyD6UYJAO0SUr43+gJ0rEtkwDl4rlA7SBYHCFwk6aD806pYrZYbrZBcUGBN\nOR5ulircCi/IW6juCo/XLf78hWgCr2Co9gi1DWtp0BDm/vmuxP9ax+914Yr7\njCvWSZPTX1Dlhl/gnoJ37Tn0DC9tGWbjjnPUqrwdVcHGXiSOyHPXb7SZSBn1\nybYwoykRRIpQE1TcfQJ9FEV/KJ2b2Y4mt8k+ctV3qKse+27y7n4HzVpuTaIJ\nprEbkU8TwW/OjmBp/8AhHNKmnxOaXgSTrZijj6zOiaZsBW6pdLG2JQmYfB8j\nPM4X\r\n=aeUQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdtpFga5CJeokB7Lr9d8vQguyfLnEkKg8LeglsbdfEYAiAnONZ4KMkLuD/+dAf/KM4qawSh+X6rLFVhw7aFbWeNnA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.147_1581446521257_0.3451421017669274"},"_hasShrinkwrap":false},"0.3.148":{"name":"warraysorted","version":"0.3.148","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b21bc9a3c1138d0ca17ede1b636dd53f2471e024","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.148","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-+BHXfL36tHFrK8JqI4EBPq0wo2MOk3opQ8MLIKgQywrCCGa0ryjD9uK5GR10lqz/ckoMjFvoko0fXygrwKccnQ==","shasum":"41e3ff4a157343b5f00adb4d4f000c110b1cdd2f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.148.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSlrbCRA9TVsSAnZWagAAVIMP/1QIUZB59tPEjSME6HTU\nk2bJw205iR8xq4IwYeWupyBe8nejSVATlL8nae9wEw5+dPl4RUepRpaX1m7R\n2Nf+wN9IsM2L9AUFvDfWpHjEFO1iJerv4b8mUAbHzhXF2fp+pDO7ogNM0MQP\nqBdx01GNjk0GnSnYaP7y2vg9D7+YDl9CvdZc/SAjDYjLcC+ATXYgZSSJeH1V\nIeiVFHVJvq2/kNSdK5r2c3NzjHWMRsNd1XDDcQn9G/KdsTNcCQyN/Qlthfhu\n5Kf3SmiSE2wSBK5JIVlEogwWuk45y40LauuD37gs1n8PhwlIFlYoWIlY9BbR\nbGoaGVn3xGuKsiG5d8QQ41i59LRS78OIoQnw/WH+OH/Ple7/OVWKq6Qfuzki\nxLjI/rgXBNkHFCkAwekuPi83Gzf4K6BLpZUwGwjnEB9+/P7IjJWmbVHtF23e\nkSJExenK9oOLbH3QVoZghRPwYvqv1ILjIZkpBVUzpZ/5a+PRUvA9zFeQOOvy\nw3gaeeqfaA7vjqIn75CuAaqjHKjR5vpF+K97RDrkTrRX0g0Dj0k892HZuGpL\npGEp9yRmjV0w5ueLhZVq/U8Gq/tL91q69xYbeY2VVspkZVJoPSQakwqOy+WX\nuHoB0Lqn0qVGTuY6+IHHN2VYyt9Vy/luXUz32j5k6FZhiEVMUl4lG9PbKP2L\nNwbA\r\n=UAvz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4b2VTWzXCYyav/AjguzMSDJwg1YmgSCbDGYS5wkXR4AiAdkc34230luMxvl2ncDW8Jhe0yo/V5yrvY+7nyfpuXaA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.148_1581931226614_0.027417681675035332"},"_hasShrinkwrap":false},"0.3.149":{"name":"warraysorted","version":"0.3.149","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"56298820a79a111b3095e78d514cb08da30d23a5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.149","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-uV+ROlkDi4X380u/qgdtOKcZxXKZXjBdoGP4AazLhhBw9H4PgAX7pp4V2vLyl180LYpLhB54fYaNSl1hYOtJNA==","shasum":"7eac74933d9b89de2a98adb7a4a04e31bdf52538","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.149.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSsfnCRA9TVsSAnZWagAAQ3YP/3VkkT1Qjt/yVXjkp6Ky\nc8pi0DWNaND2h9i5lK0odjHSFEwj9QhuG6/aKGAuH3R1ZYl0yfqciI5IooEX\nDe7u/aHPKed9T4TG15IJNetI8QEv0TtbxYqYk0eI2+VytABAXKq4D61jaLXV\nEaODxMsOTgFlz1+z29QLR8Q4H9ViMHeqw3goJSMa2OR7QO3g7itkc13G1p6b\nobjDLwrm1/8HdQwPXy03HLBFhyFd4QB9XfW5JD24vSp2qJBTewJSIiidi4gS\n6Z6gDG3eN0TvKOemW7LJ/eVVXvfcAOggUfr9hv1QQq8QcjMRWoNboke6UEjq\n1KkdLiwBwei78BKjZvXk4JJnp3yJpe6OHILGCG04pkNzK7Mq6TLI8xouYvfK\nCyMcJ1zD74O8dHeyOugMbyxoqZDhCxLjTgf+T5SZrni1SuD76Elxv8W/38Sh\ntjoH8d6L/DJbiWLc2Iy72EXWPqJw7gSBVK0QJqh6P4Jo5JA0diCorv8CdTvX\n5sUB94LXJZkRtCRF0s+OAvmRSpxodiDvMWHX0UJd5QIECkyLGIJSv+VlByD4\nIQv58R1jqqJwZ0zElJlLoTII2n0morCpBDUjv5Wwl5iE+0RA8rpkTrLo92zK\nMwR3MnYsaz+qYhHHmm4D79yiFfc/+ZRkcug7uK6prr5NmsjDF1CHUhHUtWsJ\npuwg\r\n=QnKI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGoJV+b1cjLy4/MS5Tga182PUx7U+3mJHVfXaxkeOP4AiBcxZicSimv3ay4QhgyRx1XtYtIiG1Mi2ZqWr9VK32tyA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.149_1581959143146_0.9715486778520463"},"_hasShrinkwrap":false},"0.3.150":{"name":"warraysorted","version":"0.3.150","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3c8402e3c6ca8dc38bb734d2493eda0b2da21b57","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.150","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-BRoL61TpKlzZNfE6CK0GlXtwMDp2d3Ngmu0cj+W7KJYufXxSOnm8cKmUjZXdHjKjhpEKzN/SohzicjuJdj6p/g==","shasum":"bce507f419a08a7fe5dc9e026a69431d185decd7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.150.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeStUPCRA9TVsSAnZWagAA4PgP/3QBlq/useX/diZsv4sB\nHuPmL9dK33gR4ORNbQ+rnugix0jLtPzwgV3EG4wmg1kWuM8byKp+RHEAO1rO\nHyJ/lDz9U84Qdj0Zs8bYGhh0/4F9ADQ7HorzBM/WfrEeNaCIrI4ChWwEvFxX\n9DTnbwVy9TDclxadnFeomHmDrImjsAtcwADjCcdJAshnZ1CdHqKwOeFAc+ME\nHlbXitAX2musEqcGJRNTE9hJBAeLpaKioIKwid5nDW431uVmn0rZwRjMxxec\nchUs3Me8anTrOUvOBWDRlAWtLm009sCdWEikX1vvtRrus+THqoMPGyK85Fc+\n7jdEDbNywvol+9bsfE5Wp4vmgqZvkEvqijj3s7wyhjWH3xYl4qYLJlfu1SsV\nAc4M3Q1QJlYjOkRZfyEpUzYTm1xVXaElmKbokadAYwxzNVrSEwQ8Q3vRrqLN\np3OI4nAvRpWUB2xq4niTYS1+BiWYRvUtCJmi3c9zpm/jzNXMd2qd1LmJedOs\nnFKErRhUkPdOoxAl3Y5RXS15a2FRO3qQ91SHIN8fM6U2+/emzfiEJl/jCU2L\nnd3RK+jOI5joXd2wSogRHgPeWVYEdTEW/LNg9aDpnET9WKf0sVgoRtMnS/ps\nAu7Ek4JlNTnVnolu5EkiXqP7oIk1JEWBhoBZ3gPrMDy5kJEpY99rZkaTD2k6\nEO6E\r\n=zick\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwAOQmlZH6IdFrCT3uRygbFSBlYYMu3K5RUu5yo2xFrAiEAwTXI9ul/fOFY23eziPRFDBwsCEfvTl4adxu7SG66ruw="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.150_1581962510870_0.43819764690853247"},"_hasShrinkwrap":false},"0.3.151":{"name":"warraysorted","version":"0.3.151","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2e980c228efac0753bc82a5474c8a5ed912a4dbc","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.151","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-HZuJEcELFSMuZ/sMdlZdcJh+/7B9Nr9TCmITiMdt9xZ8y2a+oI5Mcz5UlLdnNCfwdr6jAGW5z3IU69zA2PazNA==","shasum":"cd9ffe582cd0cfd7f238cfb530d97d152cf939f0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.151.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeS4YLCRA9TVsSAnZWagAAcg4P+QBVbcXd/86kbGnUa5Zs\nbx6kJB/h8yaxvNdugg3kbYSa5TEPyYE9anq/SEnUU9RrqrYycriSFYB0pody\nxsTyCLdVi4r2hs/L8T56kg6qz4SZsqvAa49qfQvphp7Xf5fmZeNaxS3Kz9Ka\nxTqvaH7KS5ykI0fXU0SGNvFqYLiHjVCM9wBH0BuMY5ia2Bu/qY5VjeSj0zQ8\n3Y+y3vnOex+F/eknNEPOSRQCcu1khBBrpuFloLM9Q5YMZo0vWDAsE7LV9jaq\nlZ59VtgMtGSzixvVNijbeALvnEi1d3mi3naf9fHU+S/qLYUURYEq+EleYkHj\nmp4bQPMrifRHqm0S//NExDdGvrtszg9rRO+XlptLLEhtUD6wZ0fvbhVTeQ0u\ndbWCx2MKBMpOp0fMGOyrEc31DA9KS9aAv5Rt0r5QJmiLrf5ph0mnqOsyDMkq\n7ayj1qfBWk0vy5/TMF1LUFmAfPt6wk1UG00/CswjVuNBbbhwQp5AuqADvqJA\n6MkVhrda/lW7X/zZKNZsbFK038H589/ux3m602iy85QdORa3/qhRiSAscu3y\ncnBLSTufNSFhTsq+U9Qh7ojexf1zAeZOcGRVYg/YRRZHESVU1dWR8erh0NOK\nhQH69Xx7JjqWUP4CGJFpC6OzP+qhIiXBCJezOpJVN34IjutBBRpWeiKZWbc1\nCmLh\r\n=/Q4X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9gvsw7s1ERQMJ1/e3AUNOBE1uQ6OfXRZ57as0kr5VrAiEAgmGtoTBMtNxwbM+CcVTVXpy9sqoM3RD0u045D/9DJ+4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.151_1582007818871_0.04315605110816634"},"_hasShrinkwrap":false},"0.3.152":{"name":"warraysorted","version":"0.3.152","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"69c8939465a6068e798963ce70725a560466eb46","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.152","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-fAlXK0S7X9kRrFAwo/IA/rTu3G3aMbnDsxHw4bWpFO6ifNsNdrTgNwgza8FjPfCmt4jgHRTXqqszgDx675L2/g==","shasum":"e1a76d99348f9d01fe0c00ccebceb987d8dbe3bd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.152.tgz","fileCount":6,"unpackedSize":77717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTrmYCRA9TVsSAnZWagAAgWsP/imtuHgPXpVXc1fDrK1b\np+LIcoKXLUQrs6w9dHeFftvZexw1KsJPcAtCxTlvgJgPnTVzbHNKYOR74VmW\nayKwASL/uTWK8usXVD/LpVnL++WaD+/5cYRXM/hZ1JzMIKVu584a2y9oXxuy\nq2/lBSnQitgy1/P4b7mAZLeu6tzV9xqdhl4dmFaPnC9A30ysvVL7X5p9UQns\nHjTeqYOW1VwaKCa2SVLomhanFxs+24s/YReTyOpzJQOnlyHzMfxLhA9hmUh6\nCYDJ5ErpmhpG5kG32ADledLI2W/PwBuK68yiN9awe4A3DE2xItDrtOdhmVPg\n4ESyS4MOyJZrfcBY3oy0DbWtdDSRchXS9zbxQ1VEqC4J1g6fSu8dd7CDxb2/\nCHoSUSjd62/9l42pVcEe57y9q3Z9FkDgWYUUPbsYUyvleEehT15eGaQR14Bl\nH4MPGGfa/GHIqGhR5vWCb/pKk5fYbeus/3lDaQw1oZE8Cky5gBxAdEZDyOuH\nCWYLjVnl/jfMNqikl41J2DAxwhI3Cx624fsCc3PPClcI/UNINB2mAXfLdXiY\nM334zaLbek56XqS/F+erVD+I+bsnetGTvpP3TWV2jccziOUcLel7cYipdyF6\ndLePlCmludxI+NRtY4obIUoofQw7s38wJ1D/0wT76AtKKJs88lJczo6TgzhE\nHeTU\r\n=IVKj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYI2mJ6FD+rKMCKm1jpObjglfb6kIjIVvRKgGnZq827gIgFfKNmmEV9/tcQiSUgmAtA86XH8P1sMuarsEmjLpJq5c="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.152_1582217624281_0.2905106080666011"},"_hasShrinkwrap":false},"0.3.153":{"name":"warraysorted","version":"0.3.153","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2b7e6689b9a2b83207d180368940d27f4c19a3cd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.153","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-6kQ1Zdf9FAFeGJYPQoMYwa5gs+H9JQRJOjAsksoWdWqesrU6yqVlZrz3MM8tJnlu9TSqHTPpYTR839izcqVNcw==","shasum":"c7c821f4e479089a2acf7c7e93fc661d764f692e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.153.tgz","fileCount":6,"unpackedSize":78769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUrjDCRA9TVsSAnZWagAA1q8P/R7tV7OSC4qFlb0e40TH\n7/IMVY4hyFo7JLv0Bs4EGfK7sBZLPW0hugDtjeDF6qqa4jgwc9dTQPA4IDtZ\nkYbf8PRfhM77bGL5kchJMq7q4kYP5Xp5xC/ohj0YbdX5p2+tiNR0FJmnzmdT\n3JT4uQ6S2uyBixjB+vVeD3s/rKczyAdlH+zXk2XEa3Yxao0/wnl4kQ4qReaf\nknNptchv7whREJzF23dImOBnx3i0Chcgm+KRxrb6+gGQPORTSBWps5c77M/0\n2rdalYhm+Ta3uPnDrksD9SBWm8ufDg1hRA8/F3C8p3qVNsjboqv2unqFG0ay\nK8lOzbel2qJ6NoFO4UVCoxuVlmBjhgo1k2A+1Bmu3ps0dE1j5BxCFS7fqLcG\nL+XdUEVgyYFhnxymR72WiuyDP++89i8SXJpx+0KP9eixmEPo1DsHQc4N34d7\nBQBJ0pRiTDwbDzOZhPYqVMLaTlyaWSbYO3YMekhmIsWHOykdLfXjgl1FHdb4\nns9xUbaiXlUGE1I+Hnf3rVggnm9Hkw4XwPmGDmGPTH5uWyj8rGjtta21+Wfx\ns+vk/Pl+9jdc36u9YztuR4/YECo82fZsTdDPJwx3nsxMoLJln6hDbeT9HHhp\nR2tAVKinAaweTMmaCMy4eqYTg/6Jfsm12RjCLCfYWoUqkAmhZ8zff2ggqphT\n+6AN\r\n=qY+Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDV5+Dfk45WrQSOLttrcX2UH30B1kRxzuzgFC5hKpd4RAiEAzQw5kfISqvPNBYO1B62M9StEfiNtvHsGCc7mv0xyVGY="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.153_1582479555100_0.9739192423695493"},"_hasShrinkwrap":false},"0.3.154":{"name":"warraysorted","version":"0.3.154","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"781e8d7b4b33f3b724f79fe1bb1b326303752e40","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.154","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ewswQapXzF5NzF6Je9fuit9JnGM8LGsqsgzuoa+U6EgpoQ/iY9t25+5/n/412quLuJrGMzvWzGdn0P32OTRTRg==","shasum":"e8ac574b01b0d9d71c5ef6e451f683e97ff5710d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.154.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUvCDCRA9TVsSAnZWagAAUPEP/2leZ7o4HKIIE5MHiIG/\n32VU5y7M7DvpJ8vM/SQ2xUsusz8AQeNjqrXIbvcAAi7GHnD+HC7zFEmRIDTE\nhKGGzwWwKcx8zWPcPNQDfupp4uvWx/70g/X0xogDjUX+uCGMKXYiV0zGd9Pp\nX32t2m9E5bZwsT50xRHuK5RWrqzflnDwLSGLKKirqMvBJB6ZuSwny6uuOqN/\naFVPva8wkRMZ8VOc2nHuCduGZ0vlGsFwrD8FFeHIVZSYdkoPDcXGegQopEBM\nJC6TkeByPJvSS+UnhlTrSiIg+yrR/XYOB7qihxTrcQSJw74lWavoEiRF/XjR\n5w7q6DcwNm6Smvly8/WYUlYY4/n7V33bVRhZThUeipWAmpiA1Z1peImSj6T5\nQ103heenlKUD0MrjQlLn5yKmmpujho2CFihHUdFuUvQ2NOq3s/L/k0a91ohd\nVX4xwXQc8GNwaXYRAQGk7kkWXZ9xdxWMUVqf4uZPpSZyus7/TlwSwSX5I/Ih\nxFdDuVWUwDT6adv3hql7TsEOusM4bggT8jI653M1pNvstBEkNpuWVGsOPxJN\n6uCobSZwiDbLd0qEA/dSYdfDluOdg02P7pdfbUyh+s5IhQE5qAfFwHZjzmq3\n988HmYhbgZkmihsVt2A9EYDf5HlS0Gywlo9hwBWXvC4M89eusoSeOreYpJ3L\nErNj\r\n=sYWR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTGXK9i05H6yh3wOH6xIOXkpTgKMo7JW721oWRPAhkNAiBxJ7QjxMhIObLHMDibvQgzM1NFwVouhyWX3EI3P4s4nQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.154_1582493827221_0.9128841078816454"},"_hasShrinkwrap":false},"0.3.155":{"name":"warraysorted","version":"0.3.155","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"9f2225ae21892908c34b5a3a6dad7b8e3ec2f24e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.155","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-rZwiLV0OYixgYV0FF/RqpOWWJlKk3AvVqJ12wXwb8U7ijUVXi8ihMDQefanwBAVIbVfZAFDVVPd25Vl5YIdNNA==","shasum":"abc3b4b0cf29843645ae06bf6d0a33ec0cdc7f39","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.155.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU1ywCRA9TVsSAnZWagAAyTIP/At8LQXQ08ojuZiRxT4j\n3Z9PC8bxwpy3g8r/1CUxtvVNP6lhWnlkSRlY26pePM9CsKMeGTBRd/toteKk\n4aMiP612WI7O+w+xU1LSedgEFG2tibxvCg/WRjjEY+smS6ShBgFOKul+/0Pp\nubQETYbqH9jq4GEP4NlqGXihEoOv5bVqo6OA0tC/5T02m99ulnocIfmA4tKV\n74qO7a6mAwCAllkPYA/6atzS7KBMFP+paAOzmiUmyXGanaEDSXu4SiOkRdxp\nRve/DY21P23wMhAkaYEloPn+dvl8WmbGIKCC2dkpW6PIn8somVqaD5KqKOZj\nnfOrdm2nvnrmbbCJzeP5kHsJ3DItKxuJ3l6N4XUHWGEywhmp7wHSw1IQF+Cy\n7kSTyjSiCu6yDVrd2xMgjjqDdHwT+S8esroKVcAqpoh5ITBPkTnaUZKxBK2K\nekNboR7bUEpsTM+K7pOR6kT4RnEWkzBlxinQQd9pUk0ED4LjoimkQVQrDAP8\nNXe8pR0DmbrdrO3ULA0tsevQbZGRaX6lrsmu55Cv0SPkJtUZA7bRBjBs1lSZ\nrq4RLKHNnSpZ9zRXaloSS1DEGnrRSeyIxN9s9ukwddYaWT5ZE5znY3iMBJIw\nmFphoRpF1/oMsrN3TwxfBWMValKfXjNaZ3/R8DkD1V5j+TcZzpC3aWV1U55N\nxHpH\r\n=AYbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJnHCRy+lMSSZ2MMYsZEsuRE/rxI8/5pU0O71uPqcE3AiBnVw0jxcmq3AYwajZMfyGDmjZHZtCDK7psUTEEkVIh7w=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.155_1582521520158_0.7329835620443708"},"_hasShrinkwrap":false},"0.3.156":{"name":"warraysorted","version":"0.3.156","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"79945cd9aefdd0d27d881204d4fcf630fbd7a9b9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.156","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-1Y0cQnAs/0LxP9ZUyjk8uVhRl9ugaFJ4XTaTE0X6JVpiEHGu+zfEoCK7G+D9cDXIMBlPmPpAt+1CAvpw8zhofA==","shasum":"a9332a928c25be65099c0096581a290cecb27dcc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.156.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU4FZCRA9TVsSAnZWagAAWRoP/1J/LMY9/EuhhTpx75IS\nBZ5kshW6ajjmqDCvG7TQFnO7IGxr9vW6E4wJglEm6yZhcWttC3nV/53lB+jz\nbfkQ4L3EReCGNRcO/goVid/tPigL469xp3yTU/YCr5X3My8W35DFTRo9sro4\nB5Uro0yJ/IBtUZYWbjdp6u4wGv89CY3FMop7/bnKJ55WzxkUkL7W77orJp/1\nLLgep9FIh/SfvBHjxRY2jZctal5dfApIRnupiDJUjvlPElpLsQ7uSeMknus3\nRg7fqovHbeTnbQmkkXqbHzZoR7MrB891lrX38sTlEiuReE/nhSzmaD9bbh9c\n9YHG0zeF3/K069GxX9YTVH3X0G6g3y2yMdxotvu1ds2XueQdWr1iU+8iyzuh\nneyIlnvRWSjQlA6KCCwHSQKfBupl8sxdBKGg498gF47a/4gogefbEiCgiGsY\ntJUv6f35W2aRG6YhbI6QhIgPQzGQv84uN4n1Z1uoZ5Lmk17d/qX81Vlcj0L1\ngZfxNZLbIgfwi9GtqNGQDXzq3blk1QfZjtjvUiLhSuBMsX5Aj7oRc9YtQdK/\nH9KB1efR8sI0tzS/AIthBm8+sZLLmJMMz/AGj10hw29xI11OUV1MQcBNU0/3\nTpFg2yI1uTbB5ydPpipPbEB9P9p89Xou8+8aBLOQuO3eSH7BbrCKZDgVkRZ9\nupR0\r\n=fQL3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9Rp2vbCRJp/Km4gfFGNwsPG+shqVvtux6Y3/P5fTY/AiEA7/gWjy1aoRWrRCzoirQtWXow3QqcR6iR4FbvbnuipfY="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.156_1582530905328_0.7853630964981477"},"_hasShrinkwrap":false},"0.3.157":{"name":"warraysorted","version":"0.3.157","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3523b6bf97be7c9f80d94aac920501a1d049cbc9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.157","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-7/EuznzokKwFfYW/97sTHfmb2DdY7fvDH8lzhln7qIm+6A/To43nFN2IqX9kKwoYp5Yh2yJQHzYPDctgN9OT+w==","shasum":"9944cf3b0538dbacc8aba3b72e68178a74045d9d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.157.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU6C8CRA9TVsSAnZWagAA0ZgP/A7mcjJW6xRhvTrHX/rr\ny9w0fm9KwCe8ocnCQBHZJnLB7Qdx3bDCQWSiujtiH+SHpgpDaIZADC9Nvnj0\nTMR9k2P80gdK1locMz9/i5CqFqyo0mNleOUMHqifAEyymojPtBscfo9KX9RJ\nsBIkMgn+C0s1kNqQCoa4aHPhBqelOhg28FbEQFfbEXxWCfrWnCMfmCzn6Ewg\n06EDQi7AG/NaBgMJn7AP8hgtzI6oLwgyljeeg78fp3BGoFxxoJMw3vRs8L4K\nPsUEORB1MKKVLIaHWs/5dEyxR/gRg0+3bjjQtr5bb3GUMM46d6C8ufXbJjW4\nSj6NuWKMuA8nS9aMnd8QiXhiNEkg1cjiWSv5Ym6u3usOyvJ2/ufAxtOfvTMJ\nCLsPQXal7khHxoSry4nULND91H419PuesF6tYCE4qGxtwfkuPFOyfNZie0+4\nhRB9K9/LgrWRiIULhGu5SB3l3nzuLnCxTsWBn1IyxID9Y0rJXRXrSlCD/8Yl\nC4UiTvarxt8NBb2tGu7bwtTQ29I7zaMOJWX4OfVv3Kc+UzmEYv2hySTl/OOo\nNDTEEh+GXX65pJwl2ZpImB8kJSUyQjnAG/LAs2xBYQT81n/WRGIP4N2O8Xqb\nzOhDruQv1tFnIg5lTLAwY+CRO+cByqEtjVtTpxBFJATOcEUuh42Ii/Cvt87e\navnm\r\n=6cb5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZvBtab1l4FaSBGvZ+48YJqYvXVhGJ12WEBpdN5KJPpAiB72CT782s17Qq6mcB6njxbJbF8aeHjr9T9+YsLMHiynQ=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.157_1582538940040_0.4018291845933748"},"_hasShrinkwrap":false},"0.3.158":{"name":"warraysorted","version":"0.3.158","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f4397e8c054d9f5fbbd933eb9ecec47c267628b2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.158","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-6H/jg+qprOatrDqSZZpQSGO6vnRZLIN7JmQS1h7zmWszmECuMP8V0L1PSJKLFghBsNX0ddtshygb5fht2LOw8g==","shasum":"0a3f0afda53e09a6c52d06f441bcc8a7f2a8bf70","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.158.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU6sqCRA9TVsSAnZWagAAcqMQAIgZqwzdsrWq47yyoZQr\net/pXqQ9QxS1lQFt+p+7/gdaE1Feoznj2r3ZBlOrAJlz6WHQxmaQsSRVAU2p\nL1dT8hJeXhJzxL4xBWNCxt1lv2wR4mgLpxZIRvf1r4YLCVU+i3lE8oareGjj\nN4k4y6YbNb41WSv95/FzaZG+BfOtKQ6i6eG4o2fmISCIljYnfM5Yd2ydsXz6\n+z4PfRtviGq8Gz8IMYLnAvdWYVyNfrnZoRCQjB36WQBQqf/YoVeQK5LU8gYo\nUZvUd9Lve+xI8QWWnpll+Uk/X4ZIlHqCHuySK3M4j/LP3hCIXVTATtAGTLr+\nadVLTGrQdr/LtOjr2gLm3AZx1Lo9mJlIUAOscoB1ulEiaoQG+iYqt8x+I9B2\naExsc8uUXfxTbrmzV0FQJpSK5TtU7XZDS4UdN1qdf5i+0OC4kuHBXugWyLlf\nnX9BsuqE/6h4am729U1vrQ8sTbu/mi7tykXltn/ZX8kj1cxZ5niLY77pZ/uP\nMpb6Dw3JE8yFBAY+u/zXmhR/4oj1OpTFoQoLLO8AwG67pUio696p/Mw4/Bv8\nDF8wCY7muvCkbLT5JkNrdjoagxRALfkY3HcvXhM54vWZaSQMdrhlKbtFqRd8\nvAIqp/NJk53s+Ga8qyqKfohsFsayvOD0lLzKqXsKfltrQX7Hl1EWPjliZwjR\nX1u2\r\n=oqSK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGp2Mlm+CiWfVpCvsFfufgltz16jBIh2Gdb/3Xc62bGTAiBBEzMShRwdLs++Z6haHf5OmdC+rodTd8ewdQUNxZqe9Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.158_1582541610176_0.17532529558288612"},"_hasShrinkwrap":false},"0.3.159":{"name":"warraysorted","version":"0.3.159","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f19751c9885fd3c85485e4e9af6f2ab0a16a80cd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.159","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-hrahP9fbCsMXYGhJM54VAeXEfklCMoEHma+BcB7hHwhfMiVzoa1brK5+PAHJ1MvcuYlVIC7y2cP+/SnqjB4B2Q==","shasum":"24e5aeb4d9f2d9a20858341d4856147057e58a62","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.159.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYRG/CRA9TVsSAnZWagAA4rgP/1+Py5ZeeHiVbp5oOvgA\nU0qCoAA1OXA/cc7g4P+ud/iYTeAZh9np8ALRvkl7idFfFFR9bsAeFDYPvzzW\nICxc9Daazzloyzanr6E8t3lr0TrtuKnasD5SHC3lKD/CrVje7h6kG8vPutt3\niMHvLMhfrnFZDO/gGxeH6nmZ0JY6sSjAyYHN6FecvOSE+Lg3+0RFAAQntgs6\nng6PBv/5ktsdbD1ClkeXbfYS5swcOafg3t/l0vh4Ui32XWqvpVIeDSUuXc1Q\n078Ez9aF27AOt81VHOe9R1v7Y3sLtoxbAyW7KuENqadzdebjfcSRX4ly7OO6\nLlQ/1Au2/VekaMV9OV1gnzgaz0sLTsFTHPsQYAABI3IHKFPz7ncHCNMiqZUj\nKSSIjL06N09bRp6S/d1524mfgUht6nATLwS83Fjzy6D1NiiH+ThkOk+d2pws\ngwaB+/4R/vtgQk0w3tXA/xucBp9j2M9ZpVboOrI341A2zbmaFU2LrEn7E0rw\nP9ZRFevDflO3j+RFvcMMdikMiNW9eJgbas8WKiPs6RS7mjPnJrumMylLzf3W\nD7nkLZ+d57BeEYeh+qeqUNDsmLoztX7jtlTdeAYyhWgTKX35ABDZiqTPVZxV\nM3u6f820qDraqXL3t6GxZZPlioSw2hNM3+opQwBroSOUqqx9f5NZPykIzPjb\nkhGG\r\n=Xlb4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDS39qnLb1vr4GpgK7AsVSs3vYrDyQoJ2GwZK2WIuKG4gIgZ6BVwmswI++RLiKtJ4zwTp/n20TPwQQR74v0GhqUDAA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.159_1583419839056_0.8409666375224101"},"_hasShrinkwrap":false},"0.3.160":{"name":"warraysorted","version":"0.3.160","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"65cf31ec763ef36e839f18c3d3adf175888e9784","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.160","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-8iOcbc4TTqu9Y95155mlPYp9r5PCts1OptYKp8uNfzhezlPd6cSTW0kd9LXEG7TdTrxJZUFoyyn32loHEW+HoQ==","shasum":"1a95c9a390efea4b53ee4ca3903e48715fa9c7e7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.160.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYRXGCRA9TVsSAnZWagAAq1cP/1F03vx5q1HLUp3GGrcv\n511V4AEqFV/BRudNXE7/eTDnK/1PHMZ0GQUUFCdOYNjmW0xDSS/n5Bxwcvt3\n89/TgC4OY/HcjnQCfung+sdDHpbQv9H3vRYd8BGMHF3kpp3DTXzI3JuJ/sNA\nbJtjjST0CyNdaQxYdCr11Y/XiTwOF9kB02GjEG8j4XOWtUNXG7Ca42WpPFQg\nn9j2bHrdCeyxiw/ceLh3Jlct/x0HZzT1Hk1XNRWOdWe17jom7bJ01fxfdH4N\nHGnXsHgqWRBHjZffnPIbq+IWytiRVuPiYlJmCRYrKywxspIKhZOR4FIqXitK\n2mKVuJNFOfyYwhowhWe//xudl2u88x4MfMhtlUSK8q2jHHo/j9EE8Mvp/NN0\nhCIqW4B2iHe0dUFUpNIhfTWV3zWjANyZhTNBRlOeO6G7v0+I6YY6V1uvnOxz\nTGiSsfJ7EDia4111l835OV47TfFPyXD1NX7VmsJI2Ni/+XyOADfak0YDPcnu\na0rbhXx+QizwQNshsxywrZF/3G9f/ktniWgfluMmwCn0mm4SvUKeIHtbcl/o\nRl3DizlIMoFG0pwGJxtk0MN6nHwqU/HGFUBzK4cTxDAEfdZgNe54NDHxMv4X\nPit4mWrBE0LEYB4UKPOGOR2VAcZHUkmB+wjEhuRlfOut4fmYQLtyKFpRZGOt\nLwhm\r\n=1wRr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmBimap2UASAjzu26CK6C3TkjALHAqxItkEIAsRvs7rQIhAJYQ47sh/H/T3GUUQgxKaoM4Pwy2bFDfeBvsIOcUsbJN"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.160_1583420869770_0.5018720119092417"},"_hasShrinkwrap":false},"0.3.161":{"name":"warraysorted","version":"0.3.161","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4254b37bb66356b9604ef90412fc832ccfc8b7d2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.161","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-yV8p6w/uDNQRRuOJ2E+OM06xEmpGl+pfWkmcJKe8Kf4I9sBRpdxiaZ1ANzu5j3WVtKVidGPjlKQHiequ4yzwHQ==","shasum":"8e932c12ea124f24795e1c4d314dbfa1d883e464","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.161.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ9WyCRA9TVsSAnZWagAA1OkP/1/97wpfRldefRnla0EC\nNqO5zYh47vsPvJxjM98qSfqrxe1T6cBq2uL2Qadvx/T6yBkNjNn9BkwSncY+\nVgVtgvy03ae62sZncLUPv/k7OP6F9WgyIzFF+ViLBR6DPksJwgm9lhF04vHa\nV16frPVLJvrGScyzuYOyZIqEwslVBhro0GhNbSXRb+o+uhGQbdtE2Deg3kaI\naK/b38XwDGKjyWxIeQ3NotrzAoMJ6O2Wr4R1OQeJQPzBQjjRzM/fckGwaIW0\nac8l4FMK/vjYU+aXbVAiyMJ4/EE7Rz3+fsmSw8VEAPhTVOc8d9ZkcGDtBQeL\nKymL5g/RILON3R3pEtkjobzw9Q/37VXr3dQVaUF2Xw4/mRGCFMnDgyNOAkk/\ncWPlwX12qoqAjplLVpKeYKTg/t77R3rSNkr7YFwQt9YF+PfeLpzyZv3u6SwI\ndJzzthARSMxfYfWLOtaZJ4CjlRD2mU5C+EhBdlvz1Qn3x8rj83peOIyhNX6V\nzhY52K5DLRL12IKp18GC/ArJ0dG2Hl1+r+UwPUbeVyxa0X9jwBCGYRufxUj1\nfCPHj9GReYL8Z33WJZDkR9p9cWR2xEbA7hAzDmESjceTtILvCV1BMn1Cc26o\nPmoyWPbHDBc9z9I6/+ZY1x2hSFt4z+M4+SyvOoormjJ4/bW0XGCbPfjmllyD\ngg5c\r\n=RkT1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2tuqyPqWTZNcsw32a9doxX5QT5QvG4JCbqjq2q9YbVAiEAygE5HXbUiPcccV3UXle/LtH4Bzdq2zUQKyh5uRchpGE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.161_1583863218035_0.47550863622868667"},"_hasShrinkwrap":false},"0.3.162":{"name":"warraysorted","version":"0.3.162","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a4ddd527b25c2d11b4691f0c012d3f06fd36ba27","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.162","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-cwrjqbGuMjDe3kFCpuaKRL8KUZr1rHfq593UrJxgCyaEow4uf47O3ZH5DNXpDsbobeQV6xGhfC5ALfaNiXioUw==","shasum":"1280e0429c9172a0824505f36d7e07e2c332b2ca","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.162.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ+OBCRA9TVsSAnZWagAAWnwP/RxhTaj7VjSOKYk7SEui\n84oRjNnQe621fM0mwKP80z5Tc/SPcLAGxqit0IycIpdDkwZxGiiK7CM/a6Re\nvugssErbtbB0G+m7H2UGutLJgyXYslYZlcXI7xMO+NgDYhFbjDaiFNRMQ8si\nzHnb7O140oEbjx6Z8dtO5FJk21nBbMmzR/p/flWO6XBIyTriO5xtq2GyQdtC\n4ozwpqyfc+OJ9zv4rO/zeDQ/kqmsGr+shNClvN9pQn+WhE6djqti9Gj1+Tvr\ncly4OiGhBESkvLw4cv+39ce6yF+3vfa6Sb8QLxqaqoh4P9Or6dpRlxGwKw9u\nO45wx4CzH3s/M6p5GT8vB2EZvuNXIRqC2sYZeeIo8GnNUkAcySl8n9E9eGod\n10dlmikCe/yZsX1bIfeMnt1rjXvSRKBEWAxqQM5q0JeQpJkmf7l7mnc+3P7Y\n3qB1JCggj91h2fj6ZVVBua48J97b0o1wEEteVIeDpz4M4mqALUBif3XJsaf9\nMTTfh2q4vIircKezVgdccrqhkFSixs2rS3EJJzGd4vvrmpbCCEovNRN3aDkx\naNhLQ5I07NWrS8Kaf74dQUWFVBbfLK4O1L2Bb/9luywSZvfsyhWMO98QH20V\nK0IsZYpjFF5OzsSIl3ajDBDfMLvH3ZK2Zrw6LdA4u3XtQPhCGP/0DpY43468\ngTtv\r\n=kafo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7FlYp8ScjpUJ15riQ7nXsuoCvJ3fjplQShLHvht1LWAiEA/On9j6SbVrVNDoV7osJkE6Av0i9Fxhx7Xs28OSUsJRE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.162_1583866752755_0.3622598233282861"},"_hasShrinkwrap":false},"0.3.163":{"name":"warraysorted","version":"0.3.163","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0fda2d0a2c4a632b1aac50de728820c055c75f0d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.163","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-5+zj89bcvJrDH6nvxK2rYi9riRHSngTL4P6jpFzS89s7RfHizU9UwrBqfT/nseUlH7x6C1TtraD6bfTjZCKvCQ==","shasum":"3b6680da1fe0b7856d08a2abea3eb351aa3eb3a9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.163.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaKmGCRA9TVsSAnZWagAAvPMQAJtGf7cjrC+7ziKLbVGz\n7EtSEvH7Dkd0rXNiIPVIi3bfAjukLmldFDRUNyv15NQaLnqbIdu3kGyxf3KE\nSj/kSi7/fE+6MQDKczvpLGL2iJV5RF4p1JoWwvlpEBt9pirI1dNGah2Kt7jX\npwOeCnIGkFtw65lqTDBc8WAMwrEdumbGEJhXQds3DvOldjbKlsl4P9wC7IW+\niu2g/mr2WEkMen9Wh/fYUx5Z5Ko2URiZfomqJjQVvqk+LuAapxdERam0fs+p\nLDVHhNaiQzQTpw2c9dGWRwCH1UI4gYTBAGh1JvHc2npCWMF+++jNq2jyoU4p\nlxXHJ+i9YHgkl9VLF/MrNDpdjto2BK8W8lrG5phcMznRnfc7kGsmSsNu/XeW\naTQNzIO58xI+Hfrj0v7m31FlSR1Vt9DjKl4psannGHfeOIcZ2JzpzOgkqTn3\nIKO5DPY+c4pJjK0DlRWMx5mZoXLDFOQiHGmcEl+eJT2w+rz3cg7K+nexWEi5\nEglPlE00we7o+27x7DrEc2nNvulxywrC0UgaHL9e8I5AwQCBYdAqT35KcN9h\nYLkm3pUB6O9We6JDZktHYYxJvgDmi/GBn5xU3hCA0xIQ/ygSt8cgWxdSTRl+\noztf8AxXcBj3J0NSwtML81C2Pmw0de7BJiwtBDLwD/s+5CBkCVnB00q5NzBk\nyV9t\r\n=yc9h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwgo03kduW2w0dX0G+vTxeNKMN0j4nyI3H9H5NgJL/zAiEArUDSJ9jTlKjv8l4Vm73W/BHgiDwSaEQ0dxQN7e0MIL0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.163_1583917443726_0.9573877775628179"},"_hasShrinkwrap":false},"0.3.164":{"name":"warraysorted","version":"0.3.164","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"248d68248c4dfcafafd478c80cdd535584f2fb69","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.164","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-/U523Cuo1wLbfLbHEdUGQal+0N1YJBejUFuo7uzZhzs8PrMD4PyL+ZqItMjdYoEvh703uO3HCI1J5PqNJzgRdQ==","shasum":"d6f3b3abe8c5f73f91db7f9778a27a42b33860b0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.164.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaMZVCRA9TVsSAnZWagAAHH8QAJmvov/tGwOwmWf5+KK5\nA9qVG9T8b29KpHol5My1eWpun+DrqNKUyGPGZdNKxIxkuP+7CXgEYlMFJJNG\nsrlgcWuETno9aXmOb3r81yoYsGGdTLOJAQxVBsfBtvhRdVm53mDkWmAGrTVo\nLr9PN/CMFdh1SAY3e0ZBf0mYEo2rhKoEzMMVZTpCmsFia5nioi/A4OxgvDbv\nR839oIf2ysMl8z36EmqyFfhOGtgGmEhmwJU37l3BNX1US4BP9IIrIfkOcVNh\nr2Y/J7rU7jCWU9+9ZCIwYoA5p7ag9dM++rvdvjg2AO5Iht2iiW00aaRmn1+d\nM/CskYnfC0NRD5Y5AIVLZc95AOmaP7fAvqR8rPxMlElsWU/uXp4wj+zT7E3p\nnWe+D5tV4eObGKRCe95hXXaDraGN4KybwvZojDKVmXQyyaXIjfkpvKmRVhD+\ntYqSVO6d0OdlWkq3xHs1uYXQgAgffS642Iw2rcxy1H/Ybi5d5rNqOXQIHAAk\nfOngP1Tj3grmQ0w0n5jc/Pvtjh6C3hFqy65elfCreMAteXx8fWxXmqYsILNt\nXUt7P8Eov3uAVBtaZMuDCMBizOx5OMlPFOKwX1t3ftwGyvJteHosP+By9t6l\nxqDCceTxcWeWZkhCv+jPAB8Hf+xh4iysXSuXj6R7KwI6qulMkkPG95+jU9kU\nuej2\r\n=d1n1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtGqGnhP5Iz606JQyS94VUm3I4QYardBVlSjhydXyLowIgarL2rUx8Q68tzMSWwOFk+ubz5SH/H98aUPtrOaeTDKg="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.164_1583924820654_0.2337271179866156"},"_hasShrinkwrap":false},"0.3.165":{"name":"warraysorted","version":"0.3.165","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6348a9a36a838ae8d90b3251dd52e50b6b3b4423","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.165","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-aNBewnQ5UtQsFo09zxQZViqzBjlBUU5lGiHUhFHMXJvU71zj9MehJEMgiAOsyyfjGTTCt2Dg/H6kiIc1iu8SXw==","shasum":"e3fb3f55b052a7fb197ba348ca34ad754a172e1d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.165.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaM/GCRA9TVsSAnZWagAA2bAP/3L92HXNwh+EFhtK8vZF\nfpv3lUy7Ym84BLNdN+g2FLYd732rT0EmtPLyZazrJWDilzBaDkyOTdpjVIGW\ncqUjhd/wT3TwhxXICdIB2764W7UEbhLioTmNosp6C/YNcCNqDe76ibfn2NqZ\n1/s8mkyEK4aM5T2KSj6RtoxmaebsNRGRt+Arc67h2Ur2W0/7DEdaFSnoZlpr\n85NkdbNEqiK+5pQWhmiAor0Qzege7F36uUok7DCUYEKvsXbALHHWFpS5DmR9\nIup70g8rm67sLhmv6f9O0aD5KFnwBzyUlKvr/zDPVzln0gGcRRI9kJ7LrSVW\nHR7AyMAr8pv/zvT3UkPctvvP4nespb1HtO7nB1Ib4+WLP44kugynDimaQdjI\ncphYOKfq3S2Kv2vYT0SbMxIcNUjX07uFjSWrSBQebTYujfnOLMP9hOLBRSvd\ndqnKswm+3mN6rzSiwFLzblvZ7m3ftagGlc+MTH3GcVHrRPXXj7buLHe4UK76\nWkyp5uZJLLviMElNzLAfVg1XqALR1d8OaJCzz6qkIEeI7eJjKbDDgBnc7Pew\nQCW4+eLueVYe6FsxTh3irPjNubgImmm0oaCbpOpBl15T4pX2S2sDfDF7LAMs\nuDwS19N+qrInAPhm4yGoc+QnTcGfyc3OnOFRe1AoNhGaczmJSo6NM/j76yfs\nzdxK\r\n=Glsh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAr6qhGztieZDHX6jgqhVo3CXCuRVRuZv0gNRVkOkMe0AiBYWi8kW5aBoVB62VEoLlv1sh/Qux4yhc1f0yOdhWbHIw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.165_1583927237831_0.1744782996278169"},"_hasShrinkwrap":false},"0.3.166":{"name":"warraysorted","version":"0.3.166","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"12742f3577026b121bccc2f2f4eb6069f72fffe5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.166","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-HH0/tggV/d2CT+rEj+F+47tOjn3xuG9yUvTTfgzIYFIxhsBIiZznWr2d7HUBNL3yx3wXHyT7LxoKqOcG/7F1Xw==","shasum":"a3e2d4dc57057ea8a5eac2e7441495af83175e07","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.166.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaNLVCRA9TVsSAnZWagAAAZkP/2h0M5rTz3D+g9WglHRP\nPSyMeVZGuQBTLFJPx1AJOiWtx75y8169S+cCgdndQt/Vp25Zm2WoQZR8BEJN\navgIY0rMCxnHHAWhOhzo1ocP0B6cyRblsPb0Hqwht81kidXkPvn21TeylJEd\nO6ONl9C0v6nWbm/mmH3ilSlf6bf+fq4OzQkRsJpvlS2hV9nu8Y3Pd/x9JYgA\nvyZzItHQd3FDL5yIdVaRV37bJ36KiBohsN5v/ZzJk0f59mtIYeJlsHTjwASb\nKipqirJ+vk/PIdoi+lVJCOir+A1VcMJ0Bv8DTeQ733UYcrE2YX0zMPj3KnjU\nCsE4wI+pphQ8VAJxElyPrhlWs5gAKXoddpmNtgoQF0xiMrDd2rICT7Na7Uyc\n34ivcalaGgnde1ZcYWjQR/qxWBBbf1yHNE8mE3As5EdNrJzKu860ucT+3Sij\njm0VbXjWQXFMS1R7xa7NxlbGCERcyYyT2/kcBICzWOIlG2b6FuWsELPBSU5c\nShbh2SPYBIwnK4+NLR8hLOtDXHdiHdZaIHlPvrAZvk4nSbRki0XKHutUuj91\nknuf1rys7KZ0G0af33RHCEbZJ0IL2fcRKDxq9xaIGf/S6mnVWvhp2KVEzH78\nn7GXiaX+aVgfnpnGDUti96/gJJScZUS/aJaczQ88mDmcD8XCBRWts1PHNy46\n+w9W\r\n=huRU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCmb721jINmVdX9FjA3LLbAqfi+skVM4bbuy11HW+40AiEAqibPREFjXiNUm4wkhviIVlQ/WtTmW6VuW3SitD7aK2w="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.166_1583928020606_0.44785511201862627"},"_hasShrinkwrap":false},"0.3.167":{"name":"warraysorted","version":"0.3.167","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"88a67793e5cf4eccd2e36a54939d5dd04ebf090b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.167","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-2/xy0ggOQ1NcUCNiUXMRHMn93ZitNziYz4xySv1ilKRTpUd8udSyay/bRy0C1L4G+He9mP4+j0GYss3yIEw5lQ==","shasum":"8fa725f937cef45a4c813a7f5149d6635ad69851","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.167.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeczoKCRA9TVsSAnZWagAAZzAP/2Zgc4ftEy2zNFe24jpo\nVcbZvCYou924VotH3YljOHi9kK/vqR/k0D5DfKvqFVKUMHY6R49WkNo4iq2Y\nquqBTLnwn9dw0mFAv3K3Xwh5b8iphMzqRdP0uOcMzEvwL4H2PnxoV9fKIB4W\nBjbBIzaUcuCZtyD0zzHLLcvi5vm/Q+L7UdM3qLLDZmlORkWGzBNodmcNwqqr\nNp073EIKbraswma8ipFa5cVsIHNS1g4cqFZBV11fPy4jPOGvW7Xt7r9UcIRA\nj4nG55ZI+CwIUvHpJsllps4k8O/qKno2DwguIR0sGEBUJEw71067Bo6yF2ly\nAZVypJnyLOBNB1AZLJGcDeCLk0NOOgJa6TMwH8K9EEcZzUNza4Fkt2l7/grD\nx6N0iGkVOqFi1gieCjhXXEWdwlnwqD5XxNoqET3X3kDRwvICzJbIi/EzIaDh\nJwhnjpoh6pGfC6ZDMGF3iKwy0RNKHVVbDoYmBzHGzvrBelxEuNEQpm5D5eW9\nhB3qty3dF2WXsb1OlxD26Ze+JjaNLuGPO+T22RUhPyUsAZRWH0LkLogecebL\negTeeu293JEfXFb0QvJQo9G6OoYaY0+vjbohMH5RJ8J7ryStpM9ua0mUELVZ\nLTsOlCzaj902zNEqo25jRMUSYKBsZZdjE4ZDKIzbTYoNlCZvtbOmwZ7c+FQZ\nDmZ9\r\n=IuOk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCueVTDtozCmFuma1lkryeu+PIUiFF8LDnqyX1GFobJ0gIgXKR7UgScB4nxfxD+3DcBB2kqZejSQZJ6LckyFuR2qOQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.167_1584609801732_0.28656970205710697"},"_hasShrinkwrap":false},"0.3.168":{"name":"warraysorted","version":"0.3.168","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"44c41bd2f10581966b0a2042488bad2ac609e249","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.168","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-7wAoSfEkscy551f9SuyDkEfJghPsUVs8mwFBwbnKGbQFn1uLNWlhCluM44j1iCzfhGbqM4l/rcp2pnI7aF6t9w==","shasum":"a998aa1c45d071894d34fd56ea187c9b0720fd57","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.168.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecz0sCRA9TVsSAnZWagAADCYP/ijLwZlH6FGrnoTEO6mm\nicbjQSdhXDrddGFpSorr0Yj7HF+PynDNK22UOl1wczjkjSdL15QVcVApHpgr\nf1kHhLU2U+VJjHo2KhseoDt/k1b4gcDPPC7CpNtUrqBDhyQpwJupRFfJZeK5\n4XhqmDtt5mEtYFVLazrz5icoaTbdhfN9x77wgDHHkssxf71mqKCauvg+X/Pm\ns8OJ1G53TW9qD0HVryH18DcO4Vd2eVO7lvp0KWiUkbqXnewL05ddVqK19r0B\nlmicrNBTBxmEqmxD1lpewzRJ4Tv60n0qGoTJmKylAYEgHdqBZZ7vMmGj6Swf\naYd4bRrmk5kQOpM18WLv3U6x3PZy6yjpJijhsijGlU+0i60W10jTT+fcE15a\n3TTE8uDPDLZ1DRHL1JwauHC1Iay387cVMPR0nZ3P/R708eA2jr8Rq21KmZCR\niMVahg5XRM4BCl8P/Bk3CBkeLEwAE8L5vAHPJ+M68kYRVVsvESaZULECGLC8\n+0Uwn7PABZlc/lLOFoB25CAfcVtRH7ZQmsDu7GkjVSWgw7++X9ebeYQQfNwT\nWrR/sDa1ebsHLt1knWIl7rvCVmebXmQ26itHlPCHb+JwPRVASq4+W1nW77He\nur+pDj1S2sctZjesvB22PC/bzDvkjoaocfNzrUbPaf5ooNc229e96K5pgBrr\nOwll\r\n=s4Vh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3qm+nb1TCkibJN7eaHCKXTmDVhQSi6q5SOaiSRldIJgIgJu/sR2kqIywrAjxK6kyHuJbvgtXQD2PvIWGjD2Xla/A="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.168_1584610603538_0.610017366933215"},"_hasShrinkwrap":false},"0.3.169":{"name":"warraysorted","version":"0.3.169","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0f96907521a49731dbd5c9103cb4dddedf357c2c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.169","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-kYJOc9J57gqqsscQMMFiy4ql94BpykcLN/FKXGzXBG3BN7gTvoURxINLmQ5fTLibMjzLo+UBKqPWv1rKJsoGZA==","shasum":"80c8299b608737be94630c4672619d41c53cebb6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.169.tgz","fileCount":6,"unpackedSize":78709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec0abCRA9TVsSAnZWagAAJY0QAIqPjyfSXr1EluWz3Hsv\np4l1tXFc+AoYe5sTFg4xSUmapPKiKdGipi071shIJ3iqjBZYj5193bnlKTqB\nqftrljZteqsTHtO8UlGzN5tkk7dJTVCOMbCh0bFYf7myFF6Yn+jqtbeWqDLl\nXGkqOqDJPTefd1V94JLM+ViirbhPmwgcxQ/iqMcd9u/wAOuckx0u/uZ1pWYH\nlPCZo0BrDrHaQafR5v5BaDWme2FULhwJdIpXIAkhmxzhUrx8N0qjIzrNByzJ\ne7uQaLnXd/y9jZVlu8/D71vqT5KoyBftIwD2bonMpVQh0oFdS3E7UnNfX+ou\nJTC8KvUfGHYpT/SYPLefJKmyqXroF4KO0UzTOcD6F33+QcUzRrRXKAH06mKJ\nua/n3ecED6rQrvVYZqTEAvcoX8mrqMSEtpotWLFFpQ7ZP4Jda8A8onLQca8h\naBunGTkttNkp0Vb+7UPjQrKCGmjcJXExpfntAUmJ5RpseEfLkslmAVClPj81\n4HdasTOABU2I8we51njfLDgsbeh9NORPT3lHQRJk+6xjHghGjVMOWT+57tQ8\nn0QHndmvn3VTCAz4wI+dX2UCrmphPzdD7g3FMpP5sHzn2GMTqSQWiTgRtWiW\nyyodx6GfCRPpFoamEGAcFhH59c6C7wZqDdllVS3GA9hZPYtBWcpsjLS+Ej7y\ns7B6\r\n=RCbE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZT4YtFCnicq/xuW+1k490qe2lGtWOL7AdBc2Lz+F/cQIhAKibgcsTzh0SUP03rm6+t/MH02/YpQj+8irgT3EnrSR0"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.169_1584613018975_0.35405025354673714"},"_hasShrinkwrap":false},"0.3.170":{"name":"warraysorted","version":"0.3.170","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"75477adf53b8df86ce48e630da0d82c6206077e5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.170","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-kWg6ms6QCv92SHW1w9KIJKCKlSV5wP44gHPqJtC43lDCEJz9rQsvezn0KDEMHEpTRQA4gygFJo9WjMRrrMjf4Q==","shasum":"2f328a585c731de1f1458d04ac3657e79507f3da","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.170.tgz","fileCount":6,"unpackedSize":78717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee4W8CRA9TVsSAnZWagAAow8QAIK7NTOkiJ9/Qph1n4z9\nZZNAUe6s52n9nFyNtpPbzh7E30rwaYEy0EjYmf+lqhkDnVVWL51ImH00D3cm\n5LT35Jm1/6snd/Ps3kdBh6fyHRQ98lvXSUwn+LQfF3/D3nD1fWZwLJkDNlKJ\nBZWbacMDMXsNGzUMBj1N7EMU13gWrjk0pMaA2UlLQJbx2t7yK4MgEIl3y7hw\nDpcL0B0sPCRj9UQ78QF+FTLbHv0bHxvNTuui7xwFVOIDfGqWeQIjhkui86Nw\ngDCIBWDBOxiUNlGzr2ddKFFBblJ1+LX8EJS5znlsiJxDBQYjUnpKhvpJgmqM\nKPh16vCKlOJ9R/gMPALHEqmc28quluAHUkAJhgkmTIQyMF4l+6K+A866Wim4\nCTparbEydzNBxTGmTDdTskQRPXAL18UcSnr34Xr0emAE7fTy51ylhJm3UNGY\nbttcwVBqnabM7wS05zxFInHx6nefxm1Q7qAtKuKl9OhzMPN0nW41tvd/Pyrx\nqKfp9eWJq0Hg19W/tzACmkRjhM/AdjdwjmGa0OT8YX78S8zJz5QggpeGmkQS\naKpkqHDPHnusxA2pLDytcrIet+QWf6UZBuHOrZ6J2A14WVX78aTpOqFEU2yR\n9TB91l84r4BsS4XuBJfBa0ydWDYqCyhDPnQ0QPbVVluvGHgBCKuSpaBVVXWF\nHWBD\r\n=lJjE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGgnAJDE5NunsARIDMJjmLC179865M/AOwnVh67ZCM5AiEA40gOXFpi2RMZIswTMynq81tCMoq2KO0aNu9poVocF0I="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.170_1585153468280_0.9649771670194518"},"_hasShrinkwrap":false},"0.3.171":{"name":"warraysorted","version":"0.3.171","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"746228bd435d66dcbc4b5dbf9e7bdf69a21f02e7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.171","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-z5QsacTypXwnw6Fe7Sip7PuDLwgJOcXrpOGgEAse6XoSElf4GV33utaA9r8k6/vZGVnGsGmZcG/EeiE5019vMQ==","shasum":"50948fa22e739047f072886463fafb9a8d76505f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.171.tgz","fileCount":6,"unpackedSize":78717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee5pQCRA9TVsSAnZWagAAyB4QAIJIWfnGK7rjdtZkC+CQ\nIqOUt5BIOP6xZSlR8pAhBy3XpU6kVHx1hL6EHe/55rBeTqbILMKj3fYvdMrs\nrQR7vkNWaqVN9sm1MCwvjs/T4pIka9JehmHEVsCKHNTnTfPocrXFRmHCpqIk\nMee0Rd8LFaBnWd8kIBWjRBQgBcXSOOsjD1VKpuGTdJjGqDr49+XnK0T69Ckt\nynwcm66lYyuj6e+HSd8eegpyUogB5XuAtkCgZ7BmNT5suRjolhws/BhT01FM\nM1NMrXJMV+p6Y7FAbDuZZiW1yiJmLIzpzMVZfGwzbhlUd5jfRnS74qVfFsvb\nuFMvbIJg2gXLiQ1EBxzmRA4/KyqYxc9eWE3oLKMsGn1JhorQSrFgHEN0Eviu\nyKCaqsJ+qKk5TmnBA5ijQTJIyciXC5RWUazmw1vSJQht+Jnqyf2ifsCBDMIi\nX5oZhbTMBTBEcmp3l4meFOuTDvS9dVjBLu2QAa5MS1Tt0b/99XpzMIPz3SH5\ndEfvOod02ERFAoqsHTju1wNKWKr+sEVLRohUkzR392F1PV6DploC3MtNh3xP\nd6x8GcaUuXYJudMqSj64bTJ/iY60VatNs/PqeGoww4Ho3TEO8WElKw0mkJCK\nm7+k+Fu1ZYdQVj3dnp8rq3elS/yuWls8i/Av12cp/gn+gepglXycltCnjb6K\nE8xO\r\n=OMYY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb0Ne+qpUG9zobUVGn3q9hTBktyFarHQ8IW+9rQ6pIwwIhAPbKi2ioVFC+zRdLJY5b+t1+X+3iUWzWLLVookB9EH53"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.171_1585158735888_0.7048408076895745"},"_hasShrinkwrap":false},"0.3.172":{"name":"warraysorted","version":"0.3.172","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"220455ccfd2294d307c43580205bf40523f724d5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.172","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-VpXCJ3s8gpLGzAvH/Wr4yb1slvFNsJlIPbR3LF/l1c2JuyzlmFWS0UnW5sXOChPdBmMdDxJloY9ZNb3aA4TRTQ==","shasum":"8e7e0a07452b6c8e8ab18ba180984cb348c2c563","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.172.tgz","fileCount":6,"unpackedSize":78750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee6fsCRA9TVsSAnZWagAABbEP/04d+5X5jY9wB069uzl5\nFje2yaFfdwJDS6DeCesxNfcudmXYtv9mxmBqcX+ARExO0WK6bV0JC3H16VLd\nS7jgMaoPw/Qd05Dl3by5BmUAX04mfeXpq3Gqr+qbyHWf/OqLGhg/hDO4IgQJ\nZl1tlnKRahH7LKZtzMkfV7kD1ZWUO/lJTaLqYGaxpcWV+HwpvLnVlx1jbLCJ\nyzlMgwBrqz40yF7upSgwy2chrZh21D3lAmamR7BeKyc1DkHWy5SJhkeI60a2\npASmJpU9zXrnAi3s2AATpTdmD61EsUGs8KCT7aqnos9OuGSrjd8ufmvo4yg9\nNArS+1cp1Gr2aZnVnaqixmr97ohZpa2j1jYgX8d6A+waWVF33By4w1Ts5x39\ndKUq1VHR6ZIBRFVZGxlAXxgu1/TJCv5RHsLvbAzjY2ChfPR2EMKSJrtnL3fb\nUnTykX4CcMPyP66DDeWhMxr6t80duuOgdag8+Q6JWjJCI4aIkA9cLFEV8YFh\nPfXD/dD0xx7ZziRQdTNHjiLUwqlzJqkImpUAtjMaf2fs+QkONw2Ki0lj/3dl\n5s0xKyny5hD5I8AifKLQ8vOy5FF8jaM66yMvDgObnOdrE4dC8Zle3GcRJ7Ix\njP+79KF76LwgQYpOCdaow66WmAnp0S12UdvlT65EjwRtv9P9hwKb1IKwzNFB\nExbs\r\n=qXXW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDVTrUKoQ38kAnVCjZAenqL7QDuXFvGoP0F1mIVI8xhdAiAZQ3KiMIAICQoqjiHvm7OkGsxm6QJRUCy3bXqLMFfEDg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.172_1585162219853_0.6891651657775792"},"_hasShrinkwrap":false},"0.3.173":{"name":"warraysorted","version":"0.3.173","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4be7a433f5d94c4d2caff1709c80234cdfc4cb26","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.173","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-HJZL34hvb6cqxuOgavHa/dSj3WBORFIF2r5mRWZnQFz+d6Nwqz8Pizb3n6VO3iATAQa2oHsfTw3hnNRbImyBJA==","shasum":"f1c26e73df961b2dcfd3378014c55a63a609eb76","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.173.tgz","fileCount":6,"unpackedSize":78750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefDw9CRA9TVsSAnZWagAAPfcP/2csH3xbU7x7Suz+AXOB\nOXTUj3SSqwYwLvctBcKYgj0mxEJ8xGQlLsvHts0yTnaB/7btPSWLcK/svVz9\nFuts9qQm1MgB1/YAeUmeFLp7LPZckuHH5ARe6OaJeUDPPnbhZfeGbQ6Zkl0r\nr2rD9c4yq1BuuBz7E73lbFQD9l6dAjxGFRou7C7imutCc+OYcKGnL8XrSZXU\nJNrf7yyspcH3bXiSR6sXxHhuSlHljkYPx/P6ZrrqeQzD5bhBq60C9g5tcg2r\nU9Efsa3ODUOot6tyLyns+DSRWDlz7Vh/29ryJgYW3J/GlydlYaLA9o3ohJNs\nBmtuQl+z/6l7JQtsxg0efPZMEKTzWFm7crNVuTSq+D1FK/so0ejIMtyFWKkB\n9el13c1cBPXqzvRSJfgjXcbaHowIW7bRSojrouCAxcs++4SxV3DRSPj06Hwv\nbjTRHKxQQQEAoPS0YHcH+5dABLlHtiDBhDZgIY0J6fsAJmSSjfphJJSw/3Ar\nI1jC6NmbcPcPfUCsMQIxBZjcgY+Quii5D2yQk5mbWlufOmKF7UwhcymnTEyv\ncncakQFF/563rA+hmzkphtLWSyi7TAls/9JnH0/j6N2wI+h5A44oY3tZCrdk\n8x78DwUeilp5GBOHGhoAuo8OfgTkchxWbf2oqHJH5UzQ+fx01UjBnAon3a1e\nsDXk\r\n=J11X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwnDdd6lRGi453vn2a4S55v8xShFnMDzJb21rRHofthgIhAJkJcr8F/3z+bQmElqoehayAJ2RRJR1xee75DQ//tr7I"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.173_1585200188749_0.10678215992906415"},"_hasShrinkwrap":false},"0.3.174":{"name":"warraysorted","version":"0.3.174","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a3f02fde9121e52cf55992c05a2362582e6615a1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.174","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-FI2YP9GJZbZvYxHEPCWccvtqpr1U4j68d/2VW6Iw2rFy+GpS9pFX5e7RraKJo2evH70cuknDI7sI2e2MbkBO9Q==","shasum":"5fb99b9cae73b95f55a4ccca2bfeaac148951a34","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.174.tgz","fileCount":6,"unpackedSize":78750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefEqwCRA9TVsSAnZWagAAhx0QAJDmRoqP9syRcYmKr1yI\no6+6yDI2m3A5i1x2HXBWZCfrAxfzgAssHvJFMYdhUZa1i9QopL0jb6zV1woG\nSqchw/hUp+5AOs2iAM8b14wfBKikbgDt7V3EqyOXn/DoLHnQdrT8XY6EABAZ\nfkxVXu999j3QuYjULtNIgFtTU9O9R+GwyMCZckYIUOxF1GXFWlOzXjKD6tqE\nVDclBMkGujm90kJfoSES5dYgbwA1RPDyapl6JZsOQ0TjXZg8IbSBKetHMhBV\n2wVKs4viP9ZdMRtpsrxCiKsgCwbmjXoFQPGMHhg2C/mFMqhHBv9xppxcVe73\n0oHvOxb0ZRhArr0ZPPRt6QqaaAaijSGV+FTOwdtU1sibv/UVLtwDsjizxqIr\nV7VGW4mXRu9E+TgWlHMSKrWJf8bdWtn9Zmu27EVK+Ebqo4077SuPNZ/fOPbw\nbQ3jY03yJc1GN+U6JiK3lpg1RaP6s0jwKsHgPLZfLsoMjrXYEQMYh6SDc+4D\nHO44Kx7ORcVkN1oaD722MOFjjGimgOlEFIxzASXNaFXjSZMlOMmAsWir286J\nw8nyfxM9gzrghfYxQ7eTQIv9hmH/c3Q6mlSLNxz1w8FIsU6L4s1z/rTkjfSJ\nSX+WHqgziiW+otHw+/24m2uJHMyeHOIswq0Uj4/87N3GOXjSxCjsZ2kbViUg\nIQG+\r\n=NUhO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvmd0ZNe8oeYKCA22Sria9WNxGX3Pvca2T6vRccsQpzAIhAMeRXfyx0MhOx2Ozx3b6ZKtIypOQSi/qTU4gvz/OxGMS"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.174_1585203887990_0.041581454606365975"},"_hasShrinkwrap":false},"0.3.175":{"name":"warraysorted","version":"0.3.175","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5ab4c158ac61b1dcfa5998724a7408c88e85d8c7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.175","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-o2d28zyTYCg1oOZnZbAybZMF7gc18sCM3MD9FsB2IvIvdKitDJ/9qWnDRshWzpa1teChsszx0yQdZooya2rKCg==","shasum":"14e9ce79ec0892f902c770c82b5ee8802920e615","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.175.tgz","fileCount":6,"unpackedSize":75324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefhbkCRA9TVsSAnZWagAA5u4P+gKj1su+gQACfwOJ3Mh+\n/ctii9UUAn/NIQqKwZ2jDb8Ldzi/ym7eSFXd4fQ6+McYh+pqKI9qGvZHApSm\nzvesLA1V8/ZJIz8p2R/yXDp3pTzPjBPKnfB39sL1c1Qi+PhdghrJZ0uzz/gl\njCUn8hqLZ3GQl3sbeupd1PC9oikk77Kvzlx8ASI7JHBhrA8wdYudhzoWHZ8W\nYjH7sBB944Plaxv7e1PtQrNQNsmQP+H9Es+L94/7Qff6ZQCiBCwj8yrcMWt+\nYUlK/nfusioI2+REPkAkQZY0MWRvORqWr8E58PXwrYYX7ea1gXnI2JmJeBzf\nKdBkFl0V08ZkTQJ73mzzMsouVv3m4feOjoZll51SZuujyMPZ5gVUjPSWZkeF\nDnCpBDPM6CKTtUxawx8/u0nsmSAG0m3ZD152aUK5I49HB3iWp8Mr2q/2mtyC\nwm32QkfW+jJ0yNyuapwEj05e/t62B/Qc2xU+/jrIESBJV33jajAmqU5cG3FA\n09XxWT1zPm1yXHRyAeAt38vM6O+dxRSOAC4Cbr5+dFZ75DzFL56Y/pMXUGDi\nem6s6B6FyLfLboLZZ/SLU+xP4FJxQvebkBY4U43sA8wrZ5L3nJx7Tzx4XvpA\nGB+UzzzFO0adpR2ICaVZDKTXCwU99gUwJPqIrRiHeNSVdUgiAGFqhryrAfBi\nHDTE\r\n=sEZS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQgpFBStZEYx2o+NMxauvSjOoDSolr5E2yHMFjxN9yNQIgH+wcCNOZ5f17oUEy3qGTHQxJ7qF557qVloGl3/CQziQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.175_1585321700043_0.658908721086962"},"_hasShrinkwrap":false},"0.3.176":{"name":"warraysorted","version":"0.3.176","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"ef9446849ca1799de437e8838c9223db1c76da92","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.176","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Rz+Y6q8sfFvq3pjZ4ApVNqiCLOhygsRrMhQR4yBsogZsg1i+v4AFXlQ3zhglhPbYdDJdnakDPxNMOgJUDUhpNg==","shasum":"d53cdef4fd7eb885af1a1ba856eebcf6324443be","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.176.tgz","fileCount":6,"unpackedSize":77769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefh6tCRA9TVsSAnZWagAALc4P/jPMe9DtF032xyWSiZay\nBADHyL7/Gu1eBpfPvwa3xgA7mnmwBKeGiIOjRuEoJv+v1BILyrjAy4+oKh7z\nA3Tpyl853nlteHYnPXzK/l+vdV1SamzvrL2Qij+BJimWNreuEM/je7rBFD78\nkA/5bHS/CTaxdDJ7tVW28/HD7X7aVBkUFRf47GO9QxSD/RefpMDxVsVXhlHo\nQCV5KKgLILN1ecbo6s62ufSkJ89gPbeNwC66CqQyoC6BMA7MufK6iKVFTWFv\nX7ErUt0lHNxzCnSEI+GSvBv77pXEGdGkQEWqpV/dK5NMn1UzJpPfPfF+7nJP\n9/7fHWTajj8pVfG9BDPHM9wWdpr1G/tVzFDPRYTjhqrP9yaCrQ2tOtLvJ5Gx\n1pJMA4w/Q5+rxv1U8SveNDoLqKvJWmzN26GOI//lboL0iF1NS6h6+0L8lcHl\n/YHvQ1i6dvSlNDzP0yZcu1OBN3ODv3l8hPrVu/PJkfPNZjiIXLJcLw5t5umK\nIaX/Xr6pgij45q3VxKENTINAReTIiLM5rcREJqKkvQstLv91kqYWpsndVUmK\nfE655bozgpkvJvinqcSSitboXfkHYRnqem94NkwKBMEVDcA/njRuaLw7fwIT\n7rb0gQKar1MUu1dnVA4ZzTDyEYFoGrIz4kCT/MnWCp2JwZEHzCmuSESkrKps\n217v\r\n=zXQC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhXS9KR2OQLwswHGw64s1uRC2APe7uP3HxHMzgI3i4cAiBDXE7lI/pG5bAqpGHy0F4sTPKnC57U/i4kUTIBMubbdA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.176_1585323692477_0.3302019323946723"},"_hasShrinkwrap":false},"0.3.177":{"name":"warraysorted","version":"0.3.177","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3e67d0f2b0397ff6128c0ff12ca46ded2a658a05","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.177","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-sLBI/I8fgLesmpKHJmQ1wK8LBZOlvbwAL/Lehct1W8wf58BMyW/F+8EZgwQm0tj6eVemz159jgCQ1tbWwJFH+A==","shasum":"d393222b6b6d65316105dbf1074607e5ef436609","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.177.tgz","fileCount":6,"unpackedSize":78821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegyu5CRA9TVsSAnZWagAAsjUP/ilYpRLIRSgXUz1JNO9s\ndEbxqOI/DAOSTZF9oJCawUzI1ADOZt03F0O5NoVpNtP7/E044r8OMATgwAkQ\nWslQ05jM5QI9qU/3EzvFMdUESVFrGJNHQaCoXXwFx37wPTEdp/R8wBx6r8m5\nMo5KPIaKktcmg/3W0q2FrY2aYBRIeDM6uIEQB/LrdFpUx0LLttm+4eAK78QA\nMc9Dce+gQ4MUxFVVffnNeyl+mv7UvwH/GxW3yyNwFUol+FBodoHxPbEXH/F/\ncgVVc6EySnKAzYAz0PFO74bEg+jNXtfrYP5soi+T1uiHzBZcopY0FbO/XCDr\nrxrpjCszLBqrwLXGFpdOayP1I86RtnI156DAxic7HUqjioB/tlwAj+JO3B7/\nt4yg7XRXhmuw/VHC6+faqBHG2n8dmd884JstamBFu2/X1XJICwM0SRT1q255\nP5pbr1OglHyh+3g31jIDKX3/Yux6WlmD8kNIJepr0ecv7kAdhutd71BXT8r4\nfjnc/+Ap2M4++ESDSu2RHFx6JAe6ZG6qNE4MPGEaUxJwSA2+hOhafyqRiR8D\nb50YUUuN5ulnPaMWdLM/3+wZD3NsKrYE2B8l7N9kCV1JFrkMkAbTNY3FUM0Q\nZX8xCbuUQW81LgkLoonQ0HqkA5OBdpnmjgr41o68aBBvFI8TyaTL0ZedRuZZ\npOLs\r\n=Kr5V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjOmWYYzWGdJnkTe2cHzILpm60Am2NHUQddYJ32r3l4wIhAK6P1L7/iL6AF7ZCn/r/8Gb+HrgyBy7VBSL6WRgwXbVE"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.177_1585654712744_0.12284378825659426"},"_hasShrinkwrap":false},"0.3.178":{"name":"warraysorted","version":"0.3.178","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"175a73c3dbb516f0430eb09c0f1f02dcc0974304","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.178","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-zAtZS4fBs4iEEgDsETNE0Vnem3L/ZG+s8gQamuH7rRgyEOX06oXjc+Wync8pBZ3PGbSYTL54TL4v0K1o3KCYQg==","shasum":"a9cad11af019d6cbaff40c8299050330efb0cba6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.178.tgz","fileCount":6,"unpackedSize":75324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiYhlCRA9TVsSAnZWagAAFrcP/2/NBXLPn8OG1WQYkt4g\nPRv30DHWk/Gne9ySw/pxtxhZeUxQgvK8K5LHZSr/ejCANvC34y6CuEJfNcvQ\nNfbW3LG45U2nTKUwpzfZYraHj4IteCDDGiVHTwVgTUmnVhK6820HLSbwnBlo\n60naAV804oY7O8qeynqX3s/00RsS/pMkj1nLJJfAfjUpDj2q/bez1flp4iuZ\nzdhJuClKbJ8/FiqUGPT8XrN8HfjPaUbdBi9VdQIZ/rGofYhgRSHXFq8E1t7r\neQP5c9yiAiOajzd2/RKyEuApwcnmFuiEwEV5057rYM+zt6M+yNUVK/cwZvXu\nVW8ZAlORZy4q0VsVSqZ0Wstl4BMQwXVzKvzA4bjW8dcV0iEzxBceQxzuyHGx\nDRxQYRJYcf9vg1xokqcCbiqX5FGC95ek1NvNAqrcxgEGVuLTs4OjXsgBXj8q\nA9BCRUJCEpHklWwJdaBEI6K4i6BvQBGwul5a4RiWBFU+1W5NJHaTkfCZnEnV\nTkbYyuYQq0NoNq1WogNsB3KfmwZcl6zkyA4olX2c26sSj5LMjGY2P0n2bBWf\n3KRhQp7k5a2D1yRo1Hcz7IzxLK1Q5LVo2UDij7Hdk0KwqlAalD8ziw/nNZ9L\nBY0HtfQJ5hOPfEjyxi5egWo+7QbbYJ9FihUT9kApNcgPgvTrL9mPRsDUYaCr\nSDeO\r\n=KlQy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdi7Q8dEThhC6LUGnTx7PZiTi1+mBMYrmxndLhQbOvVwIhAP4QWs1EeBrAHyf6jL5GAfXS9mgLE3SlhWytuo1bSy3R"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.178_1586071653181_0.9606821239652925"},"_hasShrinkwrap":false},"0.3.179":{"name":"warraysorted","version":"0.3.179","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4e8f86368def46afbd8f3ab606fcc6094ad1a375","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.179","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-xuOfZr46c6mngYhddWTAhYp2pRRd9GhdUGBnnJ8fC+y7kwjjHlZBGDJE7Yfp1QJJW0O/x4NQZQWT4LZPLKmscg==","shasum":"46952b98b10d69dccbd67f6efd1d979cc60996f1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.179.tgz","fileCount":6,"unpackedSize":77769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiY8ICRA9TVsSAnZWagAAedUP/0hU/ma6rryxXz/i1O1Y\njxbEkHpbpKa7YIQkVvKoiSWo3H+tVmLQLV0cZgV0fqA15BRcrOOWTnC+BXWV\nkSSoNbUf7+kXZF3YwA/Vz2KzG5BNYEbD8WeT8COIqGaoVje01ETXp+FdB7yD\nAQo2NyIPbI9I8ARUUeHZ/5el4XUmP/qYsMq88z4mmFp9DnDycD7dRny4ProD\ng6rWt5J3ptwn3xKVDrPH9uA8G5tUVoemtaZLDyyBXUi/EKF7osM7Gp3FCggs\nRistabebNxwJq8PpZ3TgnT3h9FelE+rvNjVXKZkrRHJwsVeZjmJv3HLPrmk1\nhv1WG2bqlVI8Qy2le2S0MJcEhgUQfBt/UJXnR/BEZ8NiUhswu2S6iJxn6L6V\nE0UV0FVlZU0CUhtFTaUjfANa1Tib0ikrDyaRNX9deF4x+Ij1jRxrkDWpopOA\nFVbdxd49X2ja15kerjSlZTy3DtLuZCAKQZGUDoqeoOdW0bKO93HL4llcDzdx\nVuJOpXV71r3V3Yhw3paI0lKyZeFjAyWIA9NSb3MJl3wyE+uXUf6rzvoZk5Wl\nK14/AcDa4DBx7Ia8uXLFxxF30+ov9q3IvH4Tmj5FPV6derCDXrM8Y9HfaSmJ\n5wdIrwhS3swhQlQiL+bA2cLxdc0uhKWvg2e1T1az+JUd2YOp5FaF/xu6PO1S\nharp\r\n=DXBm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp4KdSt1EAGbmdsD89qVuUND0c2KEbvzHxkONNieG0DgIhAI8LaquDRH565jn9Xt1oxx96piyA6iLOEhBoHqVbRnQm"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.179_1586073352406_0.2559766836880304"},"_hasShrinkwrap":false},"0.3.180":{"name":"warraysorted","version":"0.3.180","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4e32010aa9784936e04c78e203dde6e313751b87","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.180","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-u4wiqDqodrSID73kGmCxrMdM3HpQ3WQN+1JvctzDQeUSkMvyRNTx7hCbv3ObRaGZPMqD7C7ku2DmdHexnTS9qw==","shasum":"efb429a5436c3f727c1d719aa743ddd592683f06","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.180.tgz","fileCount":6,"unpackedSize":78821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiZYpCRA9TVsSAnZWagAAYvAP/22BIFjAID3c4ezzjCVb\nhFWTOWXwQV7oJNewUnChgiVpxJoAYopSCVcjuxYxMVRzkYSFjeG341tfzYQn\n5COUzPWEFg188xPfS4ktpOHBdSwfIB1Qhb90k7H/rurQSoZ4uwnGkujOSzLj\nbUaGdik8ZfuJ4twtsYJwc43Y3B174xOvUM0ydEedDJqCVhkjm3gvV5V+SliB\n5/JZTLn7fz2ykRZ9nw9RQ6qdvlgbOi5IJ53HLuLfgtvdmwrlOMdvtgISjYG2\nl7ykN5kf+tYmaJeAFNLIDWa+BkwqayrnpR3XuPTxqvC7Lo9Fn/5woK4ywXmM\n+UaguV+XwXgE8jaAdG9x8dUTa04iBrHViOakP6XJUUvyLlLrTqJmMr63odxa\nibuVk9Wky52fk6MK5NOfMweBwClyoq5pCCpJflWM8VDHyTna0L0nJz/gSE0n\nFi3VbwnSIPvFGmZ+O9u4gyfd1ykyGYmPXiF03A49xP8m+Xp+SWmCGs5ceTs6\nz9lYZ43uujJU6pxbvjdfGwDq1PV1GmjT+iR18qzWBzqa+fEZTzyaOIK8ZYyj\nENvavbET61rnb9mZZxq+8mPyE9SNg/QphGHCgWGEiEM14hZg+xUQ1wUvggBQ\nF6qroAQid2iGXSqlO2JeqHtZ3IlvfP5yir5cTygaBGDibEGsGJa6dSQXX7Sf\n5Ht+\r\n=ml3G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLlKnqYviy1Q69ym5kzh3GR2uyDjJy5OvsWAy3c0ig4AIhAPXFkdAXRj+A/P+Qz8FLH3knb19XwBCmG8qV0y40VTv3"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.180_1586075176780_0.47573946506084086"},"_hasShrinkwrap":false},"0.3.181":{"name":"warraysorted","version":"0.3.181","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b4310f11cd93a67f1743522b4a96c4548f3ef41c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.181","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-4WQ8ESXie7yz4QuCxE6JPKBJFniz1vxz3HZkoZPiVmT01QSD1QiPz646lwcijqDTk+uKRQKtIx2b4rAnRCz/Yg==","shasum":"3b49ba78c7b49a5b1f2b91fb32a7388d43a40164","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.181.tgz","fileCount":6,"unpackedSize":78761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeibehCRA9TVsSAnZWagAA2pEP/RxzfqJwv3IVqKA7Swe6\nWtnrThYz/bo9HCIfK4EPsATvaixF9qls6/jc1NIK8PGVDqZeseNQiZX180Wn\n0XLgUyhnR8aLhSjus9V79s5ZkQACGHu1k9OVGpQMTo0I6J+lGteSzetl4I61\nTVHQSMUb2o1/2JNGPuOb7RWoiSaQ7b2mV+JrSQMBfXlQYqX/dQFvPxqCeCIp\nM4gvCwZ4zM13+Hae5T9lYxiRjaH09D4zT/AVm/MqM4zQLKdTfDQ3eMiEPxN+\nJ4YHHM6+Z8wVGNGSLsYl9tuDy0lnYYggzw5X6J99yXntz5CleojUD1KNzazO\nsRWMJ+GQK7vTGLDgn3+gimxA1ovWFTxXFTOVpkLO1AZ8Filzm1tJFjNfsb9c\n2pEi1ckk09FbFd6fvs6C4XJkEL1P78wbDhGaCmr9nSqvGW2JC+ieTLOu6Cik\nH9bqG+ctG8hpK1tNATgEcWjM2sYr8t+cebtfT5icc0N+0M4LgTYR2eSiU/q0\nCzfUkMmjbEL/ICs/WkAuiTfrAvRVrWX04NJpkQ2DB6CEZqyNwosij8lJQ6XK\nmzOziQNMTMJBYCIxOh/S7kwV7KZbk833ZPWm6F5MjNUXvNIIGfxPS1GK0n71\nVrqG1Z54eTH08blxUHdtxwxkU+1StQahCm9w0XZwTkICmlF7PKRc7/e/qx67\nk5C5\r\n=3Eiy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrhFGE6wnlIFepHK0uWd/il5O7qudG7rDvpOwnJcgssAiEAwBi2wmzQcpO7i1IWzliJ7+rs4iAFR3oaubAKe+z/RX8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.181_1586083744742_0.12766021826106466"},"_hasShrinkwrap":false},"0.3.182":{"name":"warraysorted","version":"0.3.182","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c5aa4d49eae64ad0ef26e4e367f4b653e2befe9c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.182","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-umPl1YCHASQRmKarYtNPemXkMMwUjsl86z8uwh75OMqHjJEpmHefa46wi2MqhWRLITmXh+hvAlV2JPRSkE/EVg==","shasum":"9deb0c9b84f9dd55dda8c33613f09d9c122fc57a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.182.tgz","fileCount":6,"unpackedSize":78761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeich4CRA9TVsSAnZWagAA+gkQAJfJLzs0QzrRHLU/8gmv\nH9ZynAeKuoL7RlZr4xjfc+0wNSbyo4UQ+I7QzGzVTFRQiKs929rBtg5BqQuU\n7Ejuj0o7AfA7dgVTLIVTtF4ZXy7S+j4Nt5pVa32dGuABE7zIrJTbtYIgoXe3\nYsQACYzv3QwciXP1xnIASvYaH3XZWU152VmBEiR78H9M7WyEJog5Qxr5sq5S\nz7h6mnUuNulZd9PlVD2J5QHX4wKMfZF4V+Ury/U4SlyKYJPunkoWX26io5dR\nC7aNaSy1DC41nWCxbuXeilz1fkm8gUaii6KY+U+rrmJGjBfb3nUBvwO6DGwn\nqpB2YMJYZ7I0asNIcD/duO+cNjenG8kG48f3Q92FJiYqxpKS4Xg6GQOqaKMr\nkdtYGfBePkHnbEb7AqwLLIkHW5ZcXSdiFiQZhm0XJi4dxuZKNlRNg+uIlSwB\nJAFQ28/6R/uij/EG02SXNKvsjGQC5n256xtGhBVBx97/b65jvvJKg88iFC6X\n2XhiV3TxH7kYStm7/W08QA43ltmS1n8FLhK+COLkk5SkoZgkxE6sTDgCMUCM\niItcZBmf970qyU/w3jR7hbnVyF1Qzb3TIltexzhm2RpPXMUF2qlZqRdqFN7k\nGCvEAQLhxqTG30che5vYtM8BgYhb5+HT7d9O3Xks+axARypjRFwTZ1bEeIME\nn0A/\r\n=0YJP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAnIRj1uwVH+ZlWNecc4AbF8KbPZlsiZ9HzUpUcLS1FqAiEA4WY4y/xhQHTz7H6nwi5QfDR7oS8jUA6dnMd1tM91Q48="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.182_1586088056175_0.022935079140840475"},"_hasShrinkwrap":false},"0.3.183":{"name":"warraysorted","version":"0.3.183","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3b1142b084b054737f03de4ff65f272ace27d662","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.183","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-V07Cfk5kPaX6kf89yqoDu3dd91WA6y1zQeov+2IOPJ0Uw6jsTBZFnb3dNdPHoUhBkpmLsIyLvEHDWJ8K8kJ7YA==","shasum":"3ddd1884ecc20b073620ccfffec23985ad2acc96","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.183.tgz","fileCount":6,"unpackedSize":78409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejudyCRA9TVsSAnZWagAAGN4P/izUFkGiNkMIeCsBCX9V\nXhKE3qkTdn4WFJKEIEAMf5q9PS1zBzZi8r0XBzyZQOr9/83PKH62MDnYqnfZ\ngeXRijo2CLFsxbCraKnbIpUKS5a+hxffSL1reoQwjbZzj8GCIDoERVT9tkQS\nyMKl5OJ0hfo2TmzIO3T2PhxdVApXeSXhaqNQDJjdUhqgS25/VGh4OnG6vmZ1\nGP+FE1+iVZYm2JWAEyuB4nMjiaG0dmujd9F8RsQ8q1Z+2na6v7bC+rms9FPO\n0delezN2TrNfpoojLpCiUttk1GvbfA1TC6+xCTHUUGADsyD6in1f+11J9yYL\n//LonsPvOhDRntnV1tLmzTrkDbL9g0hZ2bGrqH+WB+XOQIM1YuwSkcAJ4z6s\nNvAPOAau8CJE60/wjeumZYgDEkfn4El4oz6+IQqnu+3TXMUyO5QnoRsA3LOG\ndXPGoxCOlGFu+bl3AOjzBAI75po8Hd3gGl2GR7cjuZBR77DhcofR4/s7XcC/\n4/Y4NiI/GotTOent59X2xspnzOtpeNH2TOXQ+rJpxda71SQMmRn1wJc3HunM\nNYVhUA4ws9moi1L/fG9bRu3zd/anqPXfPS4p1JjGiXyTBk8gAJGf7Z8qAJNU\nXzmVuvKGwS8AzYBv+XcM/a/l9WPvZ723xspRHy3jSlYI34K9ldEWXWIJEwsI\nuPRv\r\n=VhIc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF60W5exXLb3ZV7BM4Au15PbCAIexBkSslTcrH4q9BAgIgAry+syN3vEonaCibVoQEKxEbHe77+fu5LvJ58bf2Cug="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.183_1586423666246_0.49789726928112565"},"_hasShrinkwrap":false},"0.3.184":{"name":"warraysorted","version":"0.3.184","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"35ad1ab8bf07f174e7edd19838eef3d267b00b98","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.184","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-4DTjw2mVdU8psekGYYNC1g9IZnCDrdRaJzuph2M81Ur7X9rSyfp/mxZU+ttTASyX51OynTT9MmbqIMUv0q8CJg==","shasum":"0090a262140791359db48d4a05aa9e5a4066d032","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.184.tgz","fileCount":6,"unpackedSize":78409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejwH+CRA9TVsSAnZWagAAFwIQAIDWJmF9KAFLuXsLw/8m\nn7xdhanQJHDf1KC07BC3oWYgc2LHrq1FjDtyOkl1fl6/WXeg2rXSjSzshL53\n8rvyZC2xGKrp1mcfkIHofLRy2VJebVfu8/UTowoZma+xq9z8v+kN2Nf9x7KO\nninp6l9uYOVzJIAHbJ0fagB+cbzhxtNkVgK+LDIyhWxCqEN4gGXw2T4y8cIX\nnWmLszXzW/P6UsiuOrIH01+2GPDoY3cjBWVBLnMviJ3H9aUvQvksCXqmX351\nm0DYn+13hVpnZnKC1RsG/M10xrQ9Z6WCGsCDHM7ahzt2ybV82l2J2Fk9R5++\nbyj/4AfVZU1f1fcNqeSJ2o81VpLj2INFEKea6Ujg8gJhu5AESTY2MI5qOcEA\ncqCbgBJpI6ew2MVzSPm6vx+nwzw62LIDg4cclpqsxNv8WvLYIETLy+fUgfY1\nVDoqAA7RLirjYbb5c7uLRmIK/kxQNUsuaQD5Ndwx8Cfw0TWszAsMJUVCTUjp\n98JV2SL8CGrUuO93yIhsg63aI4eUVlVSaCJcLFQ86mlVLIoycNcK9Iu1MP8e\nb+evvAAgxSMViH1JjgENB2lNcCR+kFz9cJCK39j73LfYO09YoECzm95XHl0R\nhy1ib4DKNRRD9Fr8vuefkslNCJ4azt4yXYI3WaywtSmyb346vAtUkyC/6Q+E\n/zB4\r\n=eKcY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBj/ER/sa8cUvkTdOErUpv5WikWPMguYV+zVuYwQZHR+AiBTK6WjtXqYTVe9CMSs4splaxLw6lFdwQiWYG0lcqgYKA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.184_1586430462105_0.6941528578651017"},"_hasShrinkwrap":false},"0.3.185":{"name":"warraysorted","version":"0.3.185","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0b317571bc3de0ca1d16b3e19cab2fc633549f7d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.185","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-pgj1e+3ukV9dBagaWu1NUmS0xmfnK4u91ON5CL8EmGJwdOy/5sNPIYnrEEUx6jUQw48pWl+sz5YdUnKYdo8ktA==","shasum":"b6304395e0a033ef4ba0493c672be82b586a60aa","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.185.tgz","fileCount":6,"unpackedSize":78407,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejyvJCRA9TVsSAnZWagAAatAP/igUQ0AXRW5n2Ge1qTHc\nl7nQ7e6T17my8z7yXLSgQud1KIvMeeCiIvAtLx5rN6HWazB0TvfHxV3cheC9\naMbGt3q2z4hSCA2nSU9p1weP+TaYT7Dzc5uYB/0Wfaq9QG0Z/J2sdMrRUmsv\no8BKrhgTlUh6mEn/L1oa5Yfxxqn1s2Mn/DUtVQ56M5cfwnYQ6sCtezJ0l/zg\nXLnjbHQrmto551YRV/9RLA01GDDUcnnn0wgUkyXI2c8dSRUyVIxx6ao8BO5p\nanLEh82aENZoC96rcwYmaUv3btvS71d6TTPs0pytguAdnKkMesqtvt4qoY9F\nORRyxzbWqIgLM/0ewhv/+jowGlFboxDOgrcOJiwL4OgZXs61cxNbMf/0XxgW\nKMKSp6QvAXndou8KD3TXqoG8UxKTeiHFxE7aY6SSjW7R9MqukPWFjqPmCFXm\nxlD9bMGWXtbSZCfw5r5ikl1c6yszOcbwhkKHv9wHZCLd18VjxyPdhCAHZ5tE\n03ASp+nWO9nrrql7cf9EOnzZxOOVrVsg5/PNV4TGsGoZuk/D/3eeaZVjtUX6\nQDuJZNDJuVyMmv89PdZVeLtKNJlQDGrljIaDBVj4Go5b99GEDTnvjhMuBiTZ\nHunHALKqEaVEfnpzuAbUx/kkGfGtujKvgpeXA20P//P7cif9+3tzFyLND4ia\nvC/A\r\n=ea20\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqqOtYTb2ytD5BxISm6oGApDxfMkqrCwMxDuNBUZGQ2gIhAIaZcn7WrK3LpkiMtYHOu0u7vK1AgsCgVYwPhKULDtc3"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.185_1586441161015_0.8280621490535109"},"_hasShrinkwrap":false},"0.3.186":{"name":"warraysorted","version":"0.3.186","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f9f281f1c37e6d91fc2d09de29f4f62195205630","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.186","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-R5YxfYjoNWEJ9Cajz2BY7EfTEKSQ9kjA0CcGM4LZLpInQw400LU5/+5GRPJroOdU33fQmvRufl04z8UjObu+Jw==","shasum":"7110a274dbf293e4a6f0931544ccc9fac6b582f4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.186.tgz","fileCount":6,"unpackedSize":78409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJej11OCRA9TVsSAnZWagAA+koP/1wYxl3timL178FDgSv5\nnkrLoystxJAcxc1a74tmAfa7Rawjg6wYEUU27x7VmZ0nwgoKfWK2Ltd1+uZj\nELHD5Qfta0/w9B/VF3Xu3oydLCDHwDRx6Qi5cT7xyRW7DFB+waw8p5dXiRY+\n5bQ6zk85zwBVnFpNTw4FKKyvBD5yQPFrAqFZnvZLVhVEiajV/uA6Q3ILZqp/\ncEPUZp39WalOxNVbHlMTCEzHUYDqDriizoLe0hQilobL3J1RQj2E2X/abb6O\nkrhJt1HDPuRI7R6tGiiooNHD7Q3nhVAdt288FmodGYQHoksd37OD2OKRuN1v\n6c2vu2uZgUE3rUy82TPjO4qL/WOELv+GmRVjdE8xrFaLPeF2P8fMMCVKnlaL\nxaivsmXlK7qqq3XSRWcLX47OuD858trviQgzIWaAMsnuPYwvoTM78Spwp0Aw\n/1Rs4RSba2AMe0FSzCxNrZnBPBv8AEbU/P+UVSFnMer3o8EWdWSpgCyYljiR\npp/G7B54QFXITTmkgnYgftX0+g75mKsys1FirGIvf9HjZWaSW1eV9SgNJYuo\na02H4AlfDO8y3EzgKhVU/KbElo33F52v2BW2UoFOAlRjrnaCRxWNKuijllZa\n8rWpAVd9qO9UQ2xU8DPKT+1WAOy7lg8Q2vlcPcXQz1Ad3kWMvy6Dcdyttvpu\nlGL3\r\n=gtQM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2QTZeB0cGoxfOyO3sBnoPXwIFO3M5Jp5umELlAr5ivAiEApSbBtPhZPzdknOrA+Tob2fYiy6evPfRBv4d3stsjqvA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.186_1586453837672_0.39273896763907956"},"_hasShrinkwrap":false},"0.3.187":{"name":"warraysorted","version":"0.3.187","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c5b725d1f840ed0c06c4769921bc841eb3c412b1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.187","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ycWiWYEAMGrIR8CBCUxj7xIgleo3Sb8i52cYeoR//2RKoei71tc9+2hVmrhZHwNdHrRjTR0nBs8cy5i85O3E2A==","shasum":"a3ae2a171307c2fddabab09eac522bcf82e5dba9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.187.tgz","fileCount":6,"unpackedSize":78409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekF0YCRA9TVsSAnZWagAAAHQP/1k61E8EUygIpsNnf5PX\nC3/obONWLnOwz3kO68r0lQ4rEkargZ64wrNgGRbqRfV5wttgwOzeBKvckKEA\nTKJx1GL6ZuvFZhBA8eOScXwHeYOSawPbpD1TQOm/StTcJolNHsELY7avT3xD\nLPCsD7HdKIKtxMYNbGwWKm4F58hjStXyxx2aaIwXGSyDs6rjtQVxlCN9hiDU\nsng96aGxVit2NuHmPig7egPAMErnZfW/aNdR/poNFWXi03Nf1USG4jmrleTF\nVe0g8T9488F2/xxBm8k77hRSbLaaQ3ZwHNnuu8GGU5tiV/EqU99+PMIk1FYJ\nZshO1DPWxziX4q50igKpDMBAIPzxyzYsxzRwq4Th2fxyEZCgz2TPUZyWvD92\nir0UQ0zzJI69v9eElhWU7SeEToAVUVpfS+YQ7N38bRkuKnwPAzJe/hOoqgZJ\nW5WuVs6x+wjiVPbdQ21mG3211VTvqe90Q3F7KZ2C//+17J8QB5n4Do7zl4aS\n1LSnWSt4dm/1bjy43hEhEing6j5dN24DZcH5ulsYR9uBO++5+t3Wxa74v1zu\neFpuvmhOX0ooHQ2Yzy/jwUXlPlRGrHnmW0Fmiygyml1CPyVvI9500L1p30F3\nGB39MN9S1EBpmjMZv0hW4W6j9B2lMbXdrjW+lRZNXs5nf0sZrqe1URvVOYSX\nbKL+\r\n=pbnd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1jN6aOhjpnkd4ugjW8GXGMawAjsTEQtoE5QxhHLLfGQIgUxqRE1/TGGwlERd2jtcuZy3vBdhpjfQCCjGbvCuVxGQ="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.187_1586519319882_0.6788791760093476"},"_hasShrinkwrap":false},"0.3.188":{"name":"warraysorted","version":"0.3.188","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f126f8ecb2a4eefaa4dc02dbff99579e46ba4629","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.188","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-PiPVWVBIY7tXTmDIo7TDnh3lKYCGWqOSWFn+gQpe/lUFeIweW6gFdIMQBN6H+VowAlUzccitjHNTXMMlCPiKYw==","shasum":"f7051721a10aced8e74ebc8d5049bccb33a6a59a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.188.tgz","fileCount":6,"unpackedSize":78409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekH9ACRA9TVsSAnZWagAA/tgQAJCaxE5MnlAWEP6Y1DO4\nh/op1cS4SnGXAyXpQmLrFSBSsNRykdb2aSZ5DCKUJrFe66KLJcBBQL+XN5op\n8GnP6DLBoGvTzB5UcJF6HhbnAruHYZAl4RduV3G6wzGJ9DUOW/GlWDxjzR0U\nC4kFz+6bHBeGhZVFTbx3DibA1ZQAdjKtMo7jlH8LknKIUq1twPhl5+se3mIW\n5V72LNQ/3w8sg6nbWEdeEYXcKzDf/cWOP94OvdT6+U+UT1jJ/C1bNQDM8WD8\nQiXrj6vDxekxUtZ7WKazaYCSS+BjYZFoY5NCOuQc9Lm4zGS0goKtDa66mRUH\ni5XaLKNkuauXVdDnbr0NhElTjSqJSJSyjNozv0ZpZT+rMRzOJnLk2kX+WLqo\nHBIIKDmU+K/tNcE/w+2cJSnT3INH2nHV54ujAkNTCu0W51eOkZyOEaeN3pJA\nDEzFyzqU/bHVdk1RLL4nTEho6fRhRKxfxbw+9W63kOCpQuknaZp02aluta8q\nl6Z4DNxKmemGKahhOezhwyTg+Xtt1SRpiJSYQQ17+KCJNN2q2GhZtwu76+zD\nV1xNgaN7u8G5Qrm6mfnHiXPK0fNcZLd7YTojbl2B6GsTIfOdfz2jVHHiWxlA\nKTby1I5JhQs5C/Px5S1jafEIGnFpeIz1Q4xmrZiyNTsAQVXZMkBZfQz62ZfT\nxcdH\r\n=OTg0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpd8Ml88eJ1WYC7ZoYY6Y1PMMDEMbe/J4onl5D8PvfSgIhALm92Ae+aNguhcx6gzgretS30ONsSVWzhD61rJ2/cgIa"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.188_1586528064242_0.3117860257069145"},"_hasShrinkwrap":false},"0.3.189":{"name":"warraysorted","version":"0.3.189","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e0b25b5a3577dbb815f50ae2dfd5f85ca42d1185","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.189","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-mYzV8ht2L1yQlL1yjPrC81IX2xAXctIibHLUg18LTfTMG3FG0DpTjPQiQu+57mMzfSiosGtcYFzN2iWoKJKMwA==","shasum":"24dcf725a0109d807cd567226c4ea613293c6b03","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.189.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemCxACRA9TVsSAnZWagAA1WQP/1AzWjy+4rNvY4dRd/Q9\nfY8IoPTPboKxPJFqoFlm+Ey0iCIp6UK8XdVXDhHpCLMG54huZsl2EQ/aw7nM\nZirdNHeH1NRNh5aBltRRQMdvn6nd94gJUJ7fu6c+s7A9nhcQxn44exj/OMw1\ns0H0GmajUa/3oodBEkWMUS9AuqH5hbsBl+eZPidcXzj3Ec/9OQzoMIz9l4j9\nogt7Co43p3s28nzH+Qi7Jip3KLWXTolcNblnJKttqrDNiqDeNPKRPf7mzzvw\nDb2JVDeeLuaPMgzWZwq3ud0Im41i8GeE93EKWKRK0Uba3LwYaG1VGgQ0qfKW\nv4dkm/18pxu8ZFKzUsdTEjhfZ2xbtdh/MYcQJoZOq3eh0oIZ/tuUSux15vgU\n7eA2O8KYX9L3DO/f7MRvjZUgQsrQMgfa4Jyshy/BFjNSsvlx6xYn3UAMG7gD\n5lRb3NQoIZGxtiw3UEneMwVj3mvLqoIuZeDhRIPugOQDWlozkXChIzA10d86\n0mzTXpnG5LH496khwXChN0EGH/dD6Dx8qQZGw4fJvkJ72yuy94Fb7Vz1/8Ck\nDWtXMSXft1WwjGbt6x8vsUoA2iPr42Ldx8Cao9Qgo8n/Sc0e7GRvrnJP84LR\ncQn61WY9vQqQq6XemZ10Xt6Xz3pgY7gpWLvbA5ij3OMmXcdnDlnVqVkcFO4s\nYeHS\r\n=JFR2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWgBuVTmV+spdfU11CeGcLKhHmtlHVN9biENwuWdDVKgIgbVvZXlbPKRa9anzr4wZCcz/cNWzVp22PT5JCMCPH6Ms="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.189_1587031103641_0.35018476411159805"},"_hasShrinkwrap":false},"0.3.190":{"name":"warraysorted","version":"0.3.190","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"44355e6604c2a030536af5b029d5222b79e279ca","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.190","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-F0+DD/xNAi/zgNjwjWT3Rh+qk1/e3Fbc9NLumIoKIhpGftkcCjVD23EIIVHJEQS/lJB4Kif4lkFUO/O+zrNBTQ==","shasum":"2b79b4c26716084f659619540de91f4931772d1b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.190.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJennF7CRA9TVsSAnZWagAAGI0P/jcGMneSw3WSHq2/0WUA\n9STUwlGmDCFbTPRoHtlNkBMmHucupj3Nuou65gydroBKKpddJ9CBBIEsGVIt\nA2LQ/BFQZon812622kFFzg+LQjx6Zynb5XpF9mqKoKx26dGEqrbM2G0Hj6uz\nv/XCGXS0ZprTB0+9MRnD99izaRtCgMMKTzoE8xNzn4NgGf2oQNy0oZb1byR+\nBH7x0aF3uPvyWOakNNG9gFhoupqgK9Z3YHQKF4H1ec0c9cJ2weSgFM4qR6GD\n8HGGL60cHw7TfH4f86Ma/L0jhOmFgSWm6LacoFaD7hCbRTudOD6l9hk1mpRT\n4b3C24rCVbL08PwZW1QWdkCQjVcCXhzyYf299LSTH86QpfkfmzN7GMkMueMQ\nGz8fKOtEBcty2T8NFfgdH074a8n1tc7WJaEDlD+xI19YrWNgIKpE0xFdAPYN\nxEIefmpuZ41myX1d3fMQNyHh73Myy/MZ+MHpddkRLPvfgfuH93bDLK0TbHX6\nbxR3TESRj3Yzg8EeqnuTpCFowcqiwUNWr9VIXGfiUNEyAAfx/EJhTFmhoC6W\n7CdEluW79YtFliznfdoPu2L5dCpSR8CnodGd15iDR2SXWYytj5Tg6VrzTcKG\nJd9xMo1B55JcOohjqKAT++G680Gm0B8chCoFAUYok4HzX8MuLx2znavxC6km\nMYFW\r\n=bWMU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC65ek49ICnjJ6UhEVnw2ntzACvIAw2B8d6f7vDy2ENFwIhAOHywyq0FGNdBPZ7bSuld1V0hxs1BQO+Qr/e7yJ5RKy1"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.190_1587442042944_0.3725968655171896"},"_hasShrinkwrap":false},"0.3.191":{"name":"warraysorted","version":"0.3.191","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"81c3f9165ae9ef936f19d5c1021d817924347ae8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.191","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Y/ooWvoH3ZP9C7Z+Y7w1WgVyM46BgoXUxDSwByJ5RXSZXqQqEkk8qQl/3Ma7QY0wn+YaTpD5mo+HpKvmWVYwHw==","shasum":"49dd80530cfd89890d888ba3e6b6a271bbf0f9d1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.191.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeonFsCRA9TVsSAnZWagAACwUP/1Yy/NvdT2wIu9Q7DP85\ne2jIF8sLh/s4v3TbqltpzISESL1z9kL2LhkfZazKbYxU2sliHnYQUEMRudBy\neKGXZwIdJJObPNIeq4gOcsnqKNuxupGR71/zjDKV+i7GV+YXRsJd98HKrmCn\nYPkex3ARvCnRmYNMJl3+ThQJukPbIbN3cxE9rUrZEBeL+zu1uWboVgQpgwIC\nNJGelMzFgTYY7FMnXSGZiAiY5EDta0scetfsKF8A6W0RZ9nK5UM9jfX6tz97\nY8UPr4xv+e/S49HQ/GYrZGgb/tWWgG6MM7sTWbWYZ079YQJVSt+JUpjXdOkN\nEbfbBfJKKf4YcsoNCChWpt7cjhUy9nPrc1PwSb1pCyU7pWPzQCuwP5E/FDBr\nLhoGtdFCmAD87nuaCM8z+Rmp2PHzd0mn+74XHVzCLCOhnmc4znCCERxfSI4g\n4PRNtZYJhEJFlOAclkaVqD+FDUipZN7Kl80Au1uQ+kks7DMayIfAFT0Kd7Gx\nd354e72mf9nWL7jKi/hQHemkmeNpRrelNZTf8N0eyZlAgYvwzaN1ScHPTEmK\nAFbEzkAghG3atUI6xn4f4d4mmV0YSRmUV0HUPHfJq+n1WRrBZ9gZCdGnW4f0\nzAL/QX3fSf+k0StsnfYJuQWGMCGancdzfK4tR8MZkRMVEth4k04fsbQbbnzj\nAg1t\r\n=MDR8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw7y1C2F569k/S0NlHolwwukPK8Yki0WsD8mZBXEFx5gIhALBsqmep3gigiUTAUFh7R9MjVzoorhA+AcKwNAA8IcGO"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.191_1587704171808_0.40551303582406817"},"_hasShrinkwrap":false},"0.3.192":{"name":"warraysorted","version":"0.3.192","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e36f14c8e24d7432cfac7d656e614f87a76bf70e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.192","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-XwsZ1FSsWQVTsfcBPeBVQFsTyFgVy4pYW2jqbmPTAm1mjUTQkTItl4JCEfj87RKnwg35CLKTSUQplHO8ZqAagg==","shasum":"91e81ba76eb683963d94dbdd4beec10685602707","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.192.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeon+pCRA9TVsSAnZWagAAblAQAIPf57xIoLReJaPBTWCS\nMKOSZiD2yoIgsgEVjbp/AqO58dqBTpDVSFexh2nXF6cXq5Jw0fc9yYQAVpln\nQpA4Sc+FWkDvfBf/5xk+36nJgDkftdJgOVD10/hq6UMNlAj5HvBDx7kLhNOW\nh9P/g0I1WCjo15td5FT4SsolwNGykhQ7Fm70DCqMjopRIVAQFSZWCIj4DmtV\nn+EmTn+fz+NqmU0cVDLikp/1D8KhNRGmFB71ZIVvQ6yAbn/4NxLwnDCj6aUu\n5B6pwt2fdq6PC7hsuL5YYTVupZx7yGRSvgZzqx/aSss8Wdx8fJef8EL19WDp\neAzO7q/qUkGL5nRPVyP9AZ5ZQm5WMU4o6ly2uSl/v1hV+0TJ7WwWs9Y2pZkq\nFHayAdINO1avB9KRpKWiHl7Nm6T/odI+UIxVi57A/lKmIGp/qdicT4dX4+Mz\n3VaYN/syRSVDawKm/h1ayiTmpz/Vv1njkK82tsdPpAeUDytEshazWosz+41e\nnOJNfoUQjp38F4uYOlippBi5rgtPR8/pwaqNvjN0GrPwrcJRpsw1/V0rD/m+\nT9oLvKDjWqfRtUJooaWLLWw0iH6G/p26PeW7SiwwBmxNn8qnihhwzS1Fi7aG\nSatbUWawcnHkpjaIXAsY2tI1T3Gv+nrFcZcQUPCNQWCGfIb0iIxSHxQcIP9X\nekgC\r\n=2uLx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYP8mlvrguoabWwCXhs5z9j3M61dJjYmGbKRApKc1Q4wIgcFqXo/JCX7DSX1D9Lm6b/3RL1oNL5+Gwwgo1hbWYCFE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.192_1587707817005_0.5982913259306821"},"_hasShrinkwrap":false},"0.3.193":{"name":"warraysorted","version":"0.3.193","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7fb0b79f65f313a586ce39f66bbcd8bc89de4711","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.193","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-yXlx7slr0r+CztR3xlNQfnT80CveAKQQ6SwSs9XOgy9Tf7CbDN/I7wt+sxPBzdT+LtIq/p8hVf264Y6bMGYJzA==","shasum":"09a7d2f47d5b830d855ef02d7fc9f37d63939b6c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.193.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeo/jcCRA9TVsSAnZWagAARgEP/1aL92xRPaKRkkwLg4qJ\nVTK0UYNZevmtXXxvtNRv0tCIMFmjIlII4rnl3Z/Ck4fXAPIa6APqH9JWKh2T\nNpzbWTd6kBbwjmDxb/pDg4kJ/YAOtx3mOuhuQdpXQT9HA5NzjcyjBtKgVKwA\nrdjbedrhHGqowQ+pnUVJL3WsO+U6RdOodTbNacUtfafUBpUwdubFgDcfMDsV\ngD8F2hp5vrRdJn7N1HFrPR+6SSnFW6SYWb8jnlc3b8MUOEAocbsKLDfcrAqP\nYWTVDT4vIyNH2d8Hf5aFTwUAkdtCRHGiLaWI6qpjRhYII61C3semMDZNwe0t\nFbaHLVvDbXGRT3CWSOLFA7l1JhZstrrWCMOECaemYjlJu/QnA8ZVlHLll6/o\nz9en69ccJ5Pxnfj3ct4df0oAiwGQy/yTCRg34wHFZ4CjtMjOhWvwuNPKcdYe\nnQ7AvxF68LTAVLpU2HWtmn0XQ4keCFVRsgp5MJjaekD3iZg+FBbt25EOZHMf\n1bxEhOgJ0EjNaAZLTgvT4NWpKeQE/GdVUsoi+eNbdo8l/ukF1zdrYgX6EQYC\n6UGzRbLtP6zukewvRexZ1QjofZXQ5ehBG/dsTEoOmtpSJMbfiY5RXHi5pG71\nMyiV7uDrmcyGyT+qMZrSwbwtd1ZlmkJlVHEpmkvFDj2eMOg9qhQYkYHQlYac\nb21H\r\n=e3r+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKELCfNel+avt0Xb3AuRbCf0HouttKO0BFNrtZZIcLMgIhAPRwKSu/Ic/tdmY1XxBSyZGhSL9AVYwRo35+1tsttU73"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.193_1587804379768_0.6736070755492172"},"_hasShrinkwrap":false},"0.3.194":{"name":"warraysorted","version":"0.3.194","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"d67e7f3f1f92c85f19439ef2571000e3a404b2b0","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.194","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-JIKDQu7mG3HzwDuRtHpY15FPSUQR4Q5QO67xf5jve6XeNdq0tROyoHNlUGCevigYmgUvHCmysNu8+YecIKSidQ==","shasum":"83818652dc0962b78b503745d59a7deca1937877","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.194.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepAL8CRA9TVsSAnZWagAA2xoP/1ZY5AwqR3zNAGq6NatK\nJT+97IdF3V/FYht/efNJPdstKEbDVA2feLRhl+xFmNKYi3J0j044fbcU8Wao\nRTtAm4x9l7YqGRz8MyIpRNQ2Foz6fJIyX74zAPXMqeFKGf/eJOtJQ4S4EPvT\nLcjGS7JhHJQCuC7uL7iZuhHBgmAyv0j9vDGmYxR7oKlSwn0XLsAWhfLZ9wvt\nB/ZQO5a3IjME9CVMedzwRZD0X3uZEVyYxB+AIDCrfF7yjQ6zJw24s7KShAdD\nAQKlCjM8Fi6EF/c2FUUrU/h8q1v2VGYZzbCErXfi8EvlGxrR00RfC5avrZuP\nXD5JjAi0VdZ7mQHqclD8taNasjB18tHGWGtDdBG07ASsAfp3IxEnSmq/BZFl\nSLkKwDx3YLPk9FmKl1PbIoGCsAWUWvrepyeU195zrK8KOb13YX9FlXll20SF\njze1WRtcKHwqDJfKoGSZpeQ7hv9B/UCCAbgmyns2Wh/YGbhhq5pejeQLoIvk\nr3sZX1Jr0qSxZrXI+/cn2gGOe5DbJqG0Ce9bjUCykS09J6mtRJQajrrGXXJY\nZpRtqLiPIHLtjA11MZA5lgPDT2lDLWJH8yOcW8wdN0Ur05mmT8pwyApE54L5\n7vRBtp9Ob0mkMqcpFMcYhx8Fhfz3JMj90gg28yXedydpGc9LepTzbtq1MvbD\nrx9+\r\n=R/ln\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIES3C2TQw4W/7rxdkHvU61CpZ6VsYAm3AJo4G4/KQnV6AiBTft8y3l1TyheyeoQVYLLJWqzbYZBhzQ7JYhAIJPwPyg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.194_1587806972352_0.3689998850159111"},"_hasShrinkwrap":false},"0.3.195":{"name":"warraysorted","version":"0.3.195","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5ef029d305c17206aa6da4d9d984c3e60d0e7d39","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.195","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-J5WGgV3sak/xwSFXC8ZkLWR37MSWh094t/guNvRGmtnYp+t6CM5GY71DIwN0xKDx6+sZl1DSc6ok5TWYVaaRWQ==","shasum":"6ea82bf4e8f3228995c0194df92f13c3454fc215","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.195.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepAusCRA9TVsSAnZWagAANCsP/jc3C6uZPPsuAwOzpiit\nar+sFSiccFRdCPKPuVMLNr7ach0qzayJMmAUv8n8n4WewDuFtrP4NmDVRkk7\nm8gCqRRoqDoiv9Hx0U4VDrlDUuxuKqmno8oatTNCmO6yUdE/7LPgt/Y7RFo+\nim7anJLtryA3R9GEQT0EfbKDO6LmYMW1WWb25R3dLeSj3ExOKYdnaXEB3Drm\n3z9mMfE7cacxxrvtMxTaTwIxM8K61rnDWsQmBWTPWFrtdE0ohksYVRkeZEOn\nEU+WMJTCcpPUHJnr4J4klfsNrfpq4xOh7UU9OzziCKI7VmpvRR22Ywv5IAoa\nE31eUyAVLoBotgGmPz7BQdGkFr6giJXx1poeH3bw6lM7ms8AxUE9RO2iu+Nr\npKAmVhXYHuIoPdvqJs+mrlvzMZTHyE+00L6CX5RW/ccEeWlMvp+pEG4A52xQ\n1r7nOSvlzNVLcyGuAstKOKzYAD54+o/SFo8FdtUbZkuSazoZc5uK+mUMLnRA\naV7wsPGL6vOvZhLwRMyw9C+nff0n5oNh7mimHY3tizM7pL875H+LYecOme8B\nOfJsDicyPo297u5rQf8xPsrW/9WU880gP4AljBUBZE63hUzCFYyXzokYBRXG\neHK/CJeryIeQXXP0BOZJguDlQtajqh3fr7nNCVl5zVZEGi3uIbFQ8pSKS2Zq\nDfE6\r\n=I4El\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM5Q/+YXtkSx1fDpelNYBxAVgKhGP+DLlnawV9NdY8bQIgPDPQuVrWcMsiy+7xY2UDLUhTC4T8L5tIC5pJ96U+9TU="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.195_1587809195577_0.22771392592216033"},"_hasShrinkwrap":false},"0.3.196":{"name":"warraysorted","version":"0.3.196","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"da0dd0591f51f9eaec664855b97ebb58a0d8fde9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.196","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-KnaFHZ66yoQ72Rq3PNOm9fIA2SbkE1p63cwEvWuVKfyB8lcdpwe6AoS0umQ1fnSH/h5rAfXN5q8Y16pT9UqH5g==","shasum":"a5cdb0d5f5fef805d17e89f740450ec07e70fed3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.196.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepFF4CRA9TVsSAnZWagAAqncP/0p4rp23M28gK6H2fiLu\nnU3PVjkEV8ZG87Sp9I/UGmNxkdPxAQmpXLduD7uEEc3dIgPkGZpoBESPT7L1\nau2N+8IqkEQRCpjFBz2BNvNq5yUBuOk557LziFBK3ncdGfms8szlfa68VK16\nTq4ZkgaHeWQH2xYHmXn2B3TlAC6MLnJ4r/Gk4XINfnRFfHg7fEPHZDmKsHvi\n89q2pjsZQF3pWHml0uNut8nNvdXx7qZYIvD5jvNeBXCbE6oh1/W6sr6U1kFt\nqw1axkVvKaGwnDQkCVzxPiCzeKlH5oTZLpZKmmVGWOqAYM/1Qi09CoI/8CPB\nRUF+02ZVkkaAMn4xTKYB0QdKquidxLPt/nf1cqMyVgDGXcpAQqLUE53nV3nO\nzcsjz45Cbgz33EqSQVtmU32Cb+CnrQvBfX+2e2DdPWZ2MuDyiNQTyGH5WY11\n7MDuvF4NEIOSEKv8u2IqDBzT2V6M2Jfj2gpZggdOoii+2DaVPehffSGcKemp\nM3yQBEXXfJyZH11TBcsFW/6eshgwI8uDToo5aktpmrRPz6HVo4Cad4UORczd\nakgRy183oGpIH7rxVN3IDgIUzey89KJTLuyBbKdv3BwpPUd3C1qUKipwQGXs\n+HCp1AI+iJEk5HMvyC9wNqnH2DXw+SO09N4vs1Iv2tt8d8mnBgWFPvyfakTI\nCrEm\r\n=ZROM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVbZJA7GNkuz0rpWaCrkNRWmOYhEAlixLcxO3kj2ewTQIgVzsGYFnDR/vHRy4XmsCX5MHl+kvy3AjrVsTGb/C1TA8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.196_1587827064454_0.053550677327401486"},"_hasShrinkwrap":false},"0.3.197":{"name":"warraysorted","version":"0.3.197","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"25241b80b60420ff436475ff0b0cccbfecabdfa6","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.197","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-YCOAdjRsTKyQViXJvUOLqxLV4811wxmWY6/VK21S5ZjZgG1+pY0zHoFekGyEDgRhb6M5tGT2W+MslDEPAwJTlg==","shasum":"077c2a44cfcc013206d6901d37df1643a9fcad0d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.197.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepGt6CRA9TVsSAnZWagAAPKYP/RWOYmsyjgSYwUdKzbNl\nwd4xFqm2n0donqRS+LXfJAQBoP4E9SGWh8kcsJ3ncaja2xHeUCi0BKewWjWk\nhcwKoQbP5u+TH//eb9hDLz73HcvVZ+0aMdnjVKU/1IRzAv5z0crfwgYZ/wpq\nhxhgzJDYXJ1iF75tBNNBgYf7X0MrGS3lIQ/46yCkNmRZ4Qq+82UiP6SuwSrL\nPr07FfwcjUGnMmEj+TParyxZgmZyvO5fw0MZgB1M6GFKoflWwDXqukaVjBmf\nQ6EbwlyXEuGBouda8XT2V6hsSkrdYhG7v+/cKB8cVfUPSAz3KefN0gnXnTDZ\nCkLOQJoYDr+sAKJo3O1MFLIpgpnrnbznc89w0GGtoneoDZw3ixT7aSG/rz9Y\nIAYV+gx7Eq/4w8UVWEPfrrklcFGCsRWScscPkuktcLlZO0frtXmRitRIJr+0\niyDnGaHR+QLELMIQrco6I1Ok3q3ekoKkVE/E8Mja8TbPL/lx6RyqIYTid2Uk\nx6zSSqCWtCvU47Do5yRRr/o1jcmEoaqxOtwjz8QGbrLDFggcyTP9GXN7QeR4\nY4xFm8tJRIC6DcdjoAIx23F2Qvl8oTezjB+fcC4QpihnWNx4pyXVNpDlR4hd\n1q69cPgdv2kyjPVBpXP5jGjS5cE4ilF8FUtk8RPF7P7hSITCGTCsBSOUb+Pb\nPB+Z\r\n=d5Ha\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFKUe3wodpTOgDzHMYmY1ZZ9k9lv4GIoRjd4903eCjqAIhAKhjTjGQ2peYy2Z2tyF2PCFWKXR47pTbM/mdfYiLMEMz"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.197_1587833722066_0.819262553045152"},"_hasShrinkwrap":false},"0.3.198":{"name":"warraysorted","version":"0.3.198","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"614165addc58771bdd2270f9a4ad35043519a2d5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.198","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-QsajhR+I+RxGat1B1ERaQz/7xAWoIkLWJJMi4PAQUSedmhpwPwXBIVWEqVai8NVctmPG8PfRCv/FdnCffTsOdw==","shasum":"3db785942bedd44745de0b6ef33c899a12073a5c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.198.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepHl+CRA9TVsSAnZWagAAMsAP/2RCuiKFaDUAcQYXgDQp\nIqtu/GlBm9C8BwfRpk/QMTVU1C1Yo2ITIDa7XFdOuzmCrCy1Tg0QFj6hscEA\nwBQGCz/2LFUNtI756ebinR3YLI9x0RRs4M6M3LFcDflcxKkHXVlnWNP2q1lO\nHr1BA5jnK99qTAYPBRD4tLQqoPDrGvqqup8id+8kq1KdA5tZhY3jfPJV5/QW\n4khBO36UmCVPCm18mipLKeeqG3r7WCQ5x+Au/WYmQ7FEflYaQe5Vvmf/O2Ol\nfX8+uWcxyq2AIBfKEZcT3TRV99LSd7l87bfykto6gwSvC74MzoEU1y3hMKf8\nSbbOBHIIb7qKM8oDbVDT5dEtVigGzn+xRsmv2vEe/HAd5SYjIy2HcbGxy4ky\n1jfdCWITwk0rUnDZqVFJfLXGGobGRHRdUe4n9sJJP3dpsKWEE6UNt0/yIiGx\niAGf2FFjdKMDako7sU4idU6FPrbFaPX+RnEKJUfySCN3FgMfSQ+D305mxinZ\nmVnKtmyyCOKmo1Vg1Opi8zNY+dD7UJDKtBVCGFOYS0i6BWluwVlGTdPMMpQI\no6tWYXqUNLRtxSx4yqICBmdRxjdKI2SRk8q4XDlUdMAsjbC2m8pOBxusWBZ5\nIuUICzJdmR4NDV0T/CCi4/PpPXLdWLzeVCG8vHKmW5pXU90kXE/8+ATA0u9C\n/szH\r\n=LyLw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6GBBpH97kRR7pKxtJZNUrECTgPvzP7K7dSckOcPcQRAIhALpNKCiHMj/lQdm9poQJHl1naqGRKvBIn4GPaI0nvBig"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.198_1587837310407_0.648309130513796"},"_hasShrinkwrap":false},"0.3.199":{"name":"warraysorted","version":"0.3.199","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"046c0349f704897945160f49b9c2f8a3b0c5e55c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.199","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-aOh+emxb4k3l3aNgzTlGtypin+PQnJml3LCk6RzvlOaQ0Yjn0dnTIDHCO8qHwPHabPXlXFqrag4AugQyrtsvwA==","shasum":"81d24ee6fc90643652d960ca282c0187f4e5e61a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.199.tgz","fileCount":6,"unpackedSize":78413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepQh2CRA9TVsSAnZWagAA9doP/3HP5xpVI//2zE9tLV+q\nojuPMnCIuRb5AOBqZ17O51AK/3tnJFJjBmH31BXXlBQUTCLksUXG0nvu8Ce6\nD3OX0XMsqVrsATiPFGc/nJa5eo5Jvl5ZlLwD+GCv3woLeL2P+IRcSqFa3W3p\nB8ZsRIjT4UGxomm/QUQABUgoe/LuniDxR0mlKhX5/+I/HTY4Bp3d6VSzzhkb\numgBsvEYiBoMoINk7E9SgkE8jadm8ni9yY7rZssNLZyfQcXWnmRzY7GDgcvz\nQt5e1zPKYl5RaBmxP7qrIJcIPzird2SS52GkJ+JqXC5AvoGxX7EwqEUEBpfg\n84xmeDdSDlcywhQbXgoqVyjswOh1rO8l8hl/Q04rO712MeQW3yoNSgxzMmMa\nzCOqM84Sm/vDDZrjuAcn3ZudLIu2DnfI1Tf0G3QWitOZARkaWWJqbOYFTIpc\nRwCnoCINYwy6XoCol/n+owjxOdQZxaoiVC6HVhTOuUQ4sMzBPXmnSimywV1S\nrT3CBDl3Z1NtyknHDl32s6BBhj1OyXP81uAar8dXx40bqIurPba7R4RndL8+\nE3Smj39Tmtyr0LICZVnHavJfUxtnWFixo1e9EI8pUQvYqJHcKpZspPjn2o9D\nbDtJYwQ4Ih4ncc5h8S7ifhMNNz7tTJhR0kZgw2TJXFrgaE+7lihx6nS8q57u\nPYMw\r\n=yFvB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9p4RgzTI4p6JW3dQmQ8YPs/SoNdTCdE9lBSt5n0TmPQIhAIdUAzGl2cH7jNwlrwZSdDMjk/DNrzApNR/1vhJvJE/y"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.199_1587873909891_0.5281074689092"},"_hasShrinkwrap":false},"0.3.200":{"name":"warraysorted","version":"0.3.200","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"cb898f5bb5d0ddc87d552dfda9611a1b8cf7cf74","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.200","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-MF7tEfaPRyKJQoWGN+V+YfZu+Uh3HLFyCTo6JjbTfDWNcngOvieMBazIXhIKWXFPqzsQOe2+9AHwl3brnoOTIA==","shasum":"8a37d4f132a1d56c13750129b4e00ffff53b8a4e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.200.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepoa3CRA9TVsSAnZWagAAp5oQAJbbMelvHhdmxLk/bC+L\nOAIFcIWmTCTlnPDjaeeoetgcAf8lg1zYmwrKpBYqjXqHQzDcWFsRyaT04VHa\nwFbieJGPMTAPTsRf+7PcwinpyiEOY0pewVr1nne3nd1NjPW06QHE+owknwAE\nCNKz0VFDb36EmrmMViFqUKm9u2yY59EcMk9L/t4HuGzOVf+ruK/jNWMu+BvV\nN6VDjwtZsuQEo5xY10fycoIZB1QZbVO8TSsOAecffk6kOea2WbIynFDKMVlP\nQ/KN/POkxxFtCkKmQpCfFtZeaqo/pjYgwDciBe2g3Cz+RfF+Ux1B9TIyeMC1\ncrRh7T061HmzetYqvLuk7VnIyJTlgEQsYhaV80tbud2yZa7DfLj2MNKqpxrR\nEkDl7CffyOMtED1fSHEz+mn+MmaKAjwXot95BlUHC9+5QQKt7BYybKlInk6D\n2dQVX+t14Dy09I3n/nc1jxk8c4kbuIh+HDc9AYsJHlegUVCph1f0s0LNRypH\nXLgSn/2Or4SpkmeTZElWuMI5hyIpHHcjcshNOGtLeTgyC8USVyOZPVXN7bEu\nNOtLWtUSLuTfvyctcYrnWRuE2SrcXP2LFL/96dkzXYSu960a6phSa5WN4EZI\nGMhr8jAXmG5JPlbiJKsPyH3nMN2TtvKU75h/Z0tFGKcIUwWfx7bi1gaWM/ph\nuWz8\r\n=AM6Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfcdlUQaxFFWZzgFVqg83Fyjr5tmmrh4kMhmoQS1Q8aAiEA+vxkzBfO01NY5wD437/QzhfK0YBmoLdtxpkNWPIjoPI="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.200_1587971767359_0.7177983653814213"},"_hasShrinkwrap":false},"0.3.201":{"name":"warraysorted","version":"0.3.201","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e94aa7c0800973a1bfd950e5ce14f8fcdd1839b7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.201","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-P4XoAwSjxrMfLdj+U0M00f3Iq7zJngdy7YT6q+cMD7zSVuNV4+mMuoiYEACX17jt/RoTjrBQR441oWmGl1GmQA==","shasum":"03c3f13c94765df6effb9127c4e852ec19ea3cec","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.201.tgz","fileCount":6,"unpackedSize":78392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepsNJCRA9TVsSAnZWagAAKYkP/2N+H6zjDeRgu5CwPYLh\nKoJ1qiRhxFlVGlSeh6FXAZ63rpCALNNvVorWGpTxFEZ2iZzSX/Yf3EuhU2og\nQxtU4Cd8fpZuQYEkbHoslMscVHKa1LIy13qPv8JHBnFSVw78YKWR+ctQeJVo\nwCwRGeq+F0/LOMjn4m8px52352wz/0+q1xtGegZxPSCfM9r5alz0blXT41DI\nDGH9H53n1e4VnEp0gMjxYQqHo6LnE9ZJbbuy7XPo519HgqCf1YbyysKfP1qF\nbq6AVE/rZSJ+7oeekiKRMH1L5CzoggPNROA6UyMhGMpiKyxtbT5mG5PJqVl4\nCDJn8ZN0H57m4jmhcTe8gfG7mbT6/Xo9LE5lTkj/j3bKBKRMVoTZSdfxfwCQ\nEbFWHPrP466anhF7Ak/o/VtZ01Z8D2eAo59aX99daEuaOYjLPxpp3H8gGsrL\nwh/lsC4Fn9ihSTK1/8Pxf1M737Lu8jNrdH21L5uUT5C3x7P4pcxvRIXWjWfq\nEMapGB6XiwW8DC9K+oUfxxLhAYqs8UJIQTdxmxrzsAdW/4eWpE1AXzgjpuKL\nv05s4QpWUIWM4VBtja/qbUWEZJ8aMvE5Q99qhU4JxgBVML7AFN8gRZveYT53\n3jJbk/6tLXYnEDxSPp5/+ijk7RxoS3sIKHAEnAUv40AfO6Kkx7L40k9443Ux\nLo2K\r\n=Ewdj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYCklcri0Sn9xy8AmSTSNyJD3RbpvCv6oblwKpoxnZRAiEA9zWqjkpQbyiSMl0g8zuON6+3Nwa2DxX03ubyiOA8/3g="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.201_1587987272928_0.11693908518600571"},"_hasShrinkwrap":false},"0.3.202":{"name":"warraysorted","version":"0.3.202","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"beta"},"devDependencies":{"wTesting":"beta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4aa4609f0fdf51bc8ef0f6655ed8c1259a3615ea","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.202","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-HhruNOe8PL45xbQ5VN6T13OWa0L8kgun0Qu0mKFEx+/7+bljOZ7z74uXhWJZKgERhTMvflDwKKkJerfM6N4yaw==","shasum":"1610fcccbc5e55c633ac12f36b3c1b088ef040e7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.202.tgz","fileCount":6,"unpackedSize":78392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepsk3CRA9TVsSAnZWagAAuEYP/iinTvPShUEfRfGIYPWf\n8tKXAp680h3uHlT7rvNex9HHZ1JN+/L5NZ3DVswXjCFSIjKmoWwe/4rVeqVx\nwSU8YFrOidmKE83q7fxF4BU+ltusZGgIz7x4K4RxgFiZ63YciuvGjCyhvmns\nGIGkjBL9p8EsQBMUaxOE/ckEA4k6uKZdFWjSpiLK8O1m4w0LPZw9PysC5ZTS\n1p0RNpLpbX0eQ7fVkflngM4YB08ZltcZcAJy6nO303IEp5+42eSujIhIePT1\nQ8138BgymVJVhUsN6PFI3t8VKP7bUssSoLPTtTLzotboIHxlOOCAU59LZZpT\nrjutxtb4mb3hD2rSiPvo7kRw0LoDZJoGTQAYkMJW4QSKVgm7NPxzX7Qau0ri\ngb/AhxlU5inkddkXNYYwWcocSDkG1H5YvmXmo6ES9mDvadzEy2yQykYl344o\nIGenIa7b/xVYw66NcbfHGaQR2U1v2WiiTCNGtSsQ2DrfVdNhQnmFtSe1teKW\nc2qjCtdVQMSNxCnIstaFIxD/a7NzsjHANswYbXDn/nd68HqRkbllSmIGlomE\nlXyAdTUPCKruDkh6cJLGQXBN8GuU5Jg4SZGYXWinyfMrA3OIbtlCYaB6D2jU\n18ugNc+DInAYzPhzl9JDMXWDKPbRNXuzzhQxeTLCJ4L/fQv8oRpVvJ/Wtcfr\nl7TB\r\n=eIGV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAVbd1qdHHsMYnH5mqqeIbVi++zAOqfUsomhHmXm84+SAiEAzpXA43erqpknnZe9BoQvqWE208mJ0KXzWik3Xm5Svc4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.202_1587988790727_0.23663603925610066"},"_hasShrinkwrap":false},"0.3.203":{"name":"warraysorted","version":"0.3.203","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7a1dea7740f39976b8ba5ce19c3e12d65a43bc64","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.203","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-koloM0dfdJZZj6y7v9seT/b+2PdOQh+V/d/Kj0Q4eV0/AiMnEZNVxHwXPYSbTkIN2uNDTPKCuS1cle+kbUd3kg==","shasum":"20b454c83ccf51e4cc1cc4425621bd09ede695e1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.203.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepuEJCRA9TVsSAnZWagAAxnQP/iUmliCHly234GNBKCsI\n2OmwZf2GfafO3l25iqA+rmkPDBg54cxSPD9cVZV0BdgBKsgcDXOSltwt5nRq\nGs+WqYhLDRPwtS1hBrvH7VwkoWROpOVqYIUq48ELkZhxSf5yoVFgcznltWbR\nU0Ll3JrfKpGi6ZNHSDEsck/q11Nu76A98wz2Jzn7+mm96fwYQxVYYENv+myN\nf6XD7wUJKqa+8/cAY7nYl0G9WAvdcqt/+ghf1qzeP9UPS7UgmfaBVc4T5dNB\nm/s2nWNe+8zgrwM86zWOQECx0UIKVCxIq13U2zazfgtwGwsWMALulc8zXwV2\nQ0s+5jy4OJGYIMNrxV9aAMz7AuNm3cZroUGKtz0BCprkt/zNZbiipUKiLdpf\nsldOkzX3bkP0uz4Ul8p93qBpf+4k5kUQaWlgAm8wYiW9rSJvTPBmpylJZ8nm\noQaWgV4v7xoqzWyknrtRI0X0zNUFL9n5ZL8eh3vuSRNRB/8vmV+IigX7g78a\niDvZryK0XTiy2salv7Zj1qM52WPiD1e+bJ8B+54Jshnl5+EoVDXF4RwbOSwW\nmjlfgJ3wsVl/j9rFDCHo3pwrTPm4VBxR0HiOULKQ4+Q5eWSSyFIBS5fiiuec\nZsMr5mEldK/Zkwnctq8pm5jKhqJYIVziQq1fA6YTMZW9nganMTAlBKiyX+dE\nAFUk\r\n=g59R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHU2gC2iPN+D9bwSS9MAHZA5PYtq3uf1+xU6nPngI+snAiB8X7nN3jYGVvynkqKl7THBmUmXsN73KV22ao5/MMav5Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.203_1587994889421_0.8852883327228311"},"_hasShrinkwrap":false},"0.3.204":{"name":"warraysorted","version":"0.3.204","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e182b86006737c388455214cd31ac2c457c3e2c8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.204","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-XscXjm7mG8pDgxOnwhYKomfoBiae2NuERXFmDy+oQN/TjBchOf3rOiDQHeqSBpKqxpYcmEBmBJcfRR/O7+oVrA==","shasum":"02ac8e30ce3ba245e27a992c226fc74484638020","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.204.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepufPCRA9TVsSAnZWagAAPqwP/1BjiKfgTtvZ5rhxcSiJ\nwN+GyPtDmubZS1zTMf7uMOiWbBI7qt9BF83lMKJeLsHS0yXeNwY3HyduiyXG\nTunMT3YJYYyYZLz/E+slVjWFXHUDm09eaS5O0VvbqcQ7NcB9K4WJtuqadjcX\nj3UIDWjUCqR6h5AgqY7w81qzWZDykM55srvh9Yk0d5qdLTLMym4uVqsVQ7DE\nBLmiiZlcVZ0YfCSOSm8MlyXjnhfPOmNyPEbD+pQpkm6USFGyjRc3UNS63ssL\nJ4+tgtg0otbWukX7OjRm5CJG78SD0d7WPVZe2R39E26G+GGXD/HTAU/ClW3g\nPZxAK7Ll/uphbJfN0o5/SfqLqrAmInmc7cWIWKjNDu4Jntf9+78uTKVJG9CS\nvBb8GbafJ+iJgpSCTt9cfdejlwZ1hVQQYCL4iBGn0HuqfGbIOan58FbsVrQc\nqafLsEs8ygCxATm9W066lC23qUfDv3ZZxgJWgysVBjd0CXMSs0rie1iPKO0S\nlhNBK5+PckRGBOSXMBSeUGvDAsdlMHlzor2QMsQkafrF9iCTU1SW+FuxCU0z\nlTAWIXmATBQAr96/l1Xua4vSMb4Y+37u/yNRE0eMxaqhMXCilZDs4fc9+Ukd\nEbRZhrwQd/RnL7bropcV+LbSpGTmp93JoXoMFANOeHI/odlim0H4dwCjnPtY\nXxMP\r\n=NWaF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFNDnrKOqqUHLy0ww2gCeHRzb1MjcJ4qqCIIIb7vF6ugIgBdgBs7sliW6mXWj7XgeX9ODsQ5MS18yPXEjE242QrW0="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.204_1587996622736_0.9931102017828028"},"_hasShrinkwrap":false},"0.3.205":{"name":"warraysorted","version":"0.3.205","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f7d2e7230373bc29e57e430c237475a88545e03f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.205","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-KnM7py26NeBzFoPPQIVbzLM3HKVZrKFc9uqXnwk5A1eV4lxlGjFGuhQJErtYJLFk/X/PBbHmKpRK1wl0filVWQ==","shasum":"07ab583e40bda76b3b6f115f23da9424e72635bd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.205.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep8VTCRA9TVsSAnZWagAAnX8P/RGZ7hraeYe6c2VFtloJ\nsslGGNWgwjzBMGaWGsZl2BrkkTIeZYaaXvb9h61UkDoy3bxR2za8XRdCLQkp\nXRnu5SlaQieGS3X9kM/Rl00SuuS/pvdRZZP8Lf25uNdNH+vSC3g9pSgZbCr7\nqQ9ZHeQbwA77QNJ61lUe6thB2UrTmBZKDE1hz3CZUKb79Gp9r1udpwZcsm+m\np48nrwd2bprWC2STKIwE9mGBX7HFgXWcQ6Yho9JZsOou1vP4AcbTLXN29p8A\n8pIzWYUNyTpl7h/38PU5Z2C/WXTh2Df8mxK4hnu5+540OMeVli5+9QGaUplg\nbzxuFGhwQ+Am2qmshAGhQ+vSgOSt+tdgYADakKpmYTwvn9Y5iYAxxF+XObkU\n5w673B2VZ3xjll6c6RQatCO5T2q6QFu1vQ557ogaAdPxkyGfd0kLMlXZAqpe\n/sfkB0OThzA0Kp3XilREESNE0wgG1tEGUjTok18ssfViRCpm+VasckUdrdyH\n/6AXZk3shhq/TSYEwDWyemuZl+8wWV+hW/PmcaFznymqCJsTcQhH+JT91aGJ\nnYtYfmmchug/2ZG4Istn/BBKFDypERe1q3Qjfbcbx26LGQ9ogwZ56lUVDSTV\nbjtvnCdEsuIuu5O6x9984F56Txk4m7NAcFEi52GU4fMK0hoi/BY03dLBPTi4\nW7ex\r\n=QBGM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK2vON2+ae5Y5GhRibD7AauHc/oYc4XgOQCghnVsxY4wIhAMn8tcR0ImHoZH/XQKtv2uHvZShTF+NchLVveqNd2F9M"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.205_1588053330956_0.7709271461846177"},"_hasShrinkwrap":false},"0.3.206":{"name":"warraysorted","version":"0.3.206","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a3c159578d93a063b1059cfb620895615f92fa3b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.206","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-vWimbsVyHXFba0NMw4nbZape/hteDOwJsfhQJNkvYPPTkCw+HcQXZjnnSADvZjx79UXfPQ0b+KGmtP943UjYpw==","shasum":"10f540964d16059a5f831df5fbd590731ebedcc6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.206.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerB2VCRA9TVsSAnZWagAA4I4P/AibyMPbwkC/Zpx0U/oz\nQviURj9KkbZ/MUdVxTxiiusg01yw97Gf0pbXR/uyXpfm/F/RVPmUTCZeHmWn\nx+qKiEF5qUPMCAmJl6vQbWTyIOd/MM8mhHVYZSdq4EX62XV/pwFLqwzGL+ZU\nVjF/MtLKljcWoxmu+tJp5WmTW9o0hYgocRWM3TdjF58Mb73xSlk7FeOn8vt0\nx4jJCpHBXyMCqrAHi9Rvibu8Db4VyDiUFseVCb9SfZNPg53q84ABrjXYQCxP\namrbcQqzg2SkbpQQn74iWoMupHEa1XY2D+tJRgcKMkXV493KeVH+5XmnuwAx\ny4Rg/qwtIylJyzJih9hUNoGcW6Jnbd2sLiaXnob20/39nU8G6qpjUIfzEGYq\nSKHcNbmhyR7S8Rhsy4VZDDCBosGBGNiphTnBfRqzq6ekBBE32AudiwaWOAwh\ng7B8wROyoRuEoi0f5S9qGqE9GOQftb2coC3sPew3+q9kqehLTs8zCmv+FbCL\nrnmThRfIypSzylCtwq5BP/O0sZUL+I0R5cJA7EfefJKrfasZm64jM0+0ZyON\nbWCyFae9IbRbc6uwyqGef/jui2EUAzQUTht380/ktMY/VIeosF5l/P9JYxg1\nyGd/YBtluJTTRsBT27ap+qpIbsSlTMr3uv0/3NYpjYLkVau5ziR/sWeZ2l9Y\nV8mm\r\n=+9W+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJeHPUs5ko+N2kaLwrpFUYUPubUDFvYO/FvZFz1ndAqAIhAMs0CqaXRErhqt/vtMqqMvUXq5HizAgJKtVEsADJGgLI"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.206_1588338068652_0.1519376985535159"},"_hasShrinkwrap":false},"0.3.207":{"name":"warraysorted","version":"0.3.207","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0a834d74e81c4e2452ed8e0be0f043bff206d186","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.207","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-YJtzZ3TzSetuv/errsOX7+bGv6Jy5SFN4ISA/J+J7MBp4UdyKE/RW6DRzNjkBrmA9ONCbn3l67wBxqSyY4LD3A==","shasum":"0726489cf23c0d6e3765cd8a8f6d57f095841462","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.207.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerCgICRA9TVsSAnZWagAASX8P/1MX7iPyxgiCzcVt0mU9\n1OuthaiIe/+1zrIQKW8uP4OAgB2WQa3dvUGAfXnwYAtb7jAyC0HQHouZlzNR\ntoP9J3ILHew/bx9Mcyri6J2uiGwnYqgAK5rUQtbfettkyYCcKyeu0U7DWj3w\neaSoDX3khoeJAAezkjS9WrMsGpt5R9yF/tJa+M8Bp//0ZCbuyRnFSej/Snex\nyrVm0UxJOm0BZcbtqmT/WvXZGQRA+Nh8hoSKSZAel6y/4KGO2MTOWq9sKmJ3\nCzpRSRx0njnKU8tFd/W+dpKkjKbO1Ei21xoHpido8d/WyYUjyN7Ts1h+ClZ+\nqQcubityQh7jjpG1ta+bcN9xo/Dc8eHY6zUsh7nb8m6BGUYS+gYQpg7hd6vT\ntiqBF84orKKKHhZeU8PPtAxzKTrhxW4NRX0BdJurMgKdOmZlJll6l7gxLsnx\nj5tCAPQIdWSrN8/O06mcYK1e7HEn6JMSPtu01oCamGYW3/QB2hw/F7VZmu8Z\n2pfcw4Z6Nd04SnICUmhCxqGwzkPHkhdS3/7iwqUn3CFMKDw96aftrM5KphKL\nA0YSkxqthGHef0FPqFvJC00lB+hNzX+rKtNPijxVsG+zNna5wzV3waBv3rM/\nBqJ0mMDt6w3RKIXDBofJj9aOM9yD1NzGYwscszmK20PBFlYn++HLIbf4ZUGS\nkrpC\r\n=SDaD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFh7vXOW/t2Zx3DQBY2e/rJDcqyyA8UdSnQ1MIVR2TO1AiEA7dxyBlcVP4wgQ+e+xyfgFpflCZRjuiulhe5tWka7F/Q="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.207_1588340743860_0.10613908375658876"},"_hasShrinkwrap":false},"0.3.208":{"name":"warraysorted","version":"0.3.208","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7cbd946d51d6ba36f063c55c8b3b7a8b746587e8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.208","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-JYBui8oVKE8ftb8+QovE0HJMet14ozyHkRNpuyY3d18lGJHBrzF3aVzyb6KmUWCrgJ/VViGBvl5SjXPj3e/lWQ==","shasum":"32fa79acb0c7b9c21f46380e1e1e48dc540dfcff","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.208.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerDnBCRA9TVsSAnZWagAAxrQP/1/eYL+DFiC+/0O3i9in\nBqUgfTAeUeUqPwMYAqLmrW9wdwT+krfyji6e3c6HsM/NfP7kfqc+aZpSfbgn\nQyKkxdq6x0SU7I3A94+/7GsFkzEKHbaAYA3j4QwJdvxGt6KmbKnPb5Gqr0Th\naN9TphggRBHisd/I9uzeSCEcf8fovnvkqWHTDXSmgcbihzT9lt9FigBvuqvk\nyXFAzp7scXqAnHCfyfdAdBQBI82G8w87cIZmu5i1I3xExYG4sXnUmSy/GkE2\nGrYae3tCw7RqB+qaqCRhVn57U743MvCHxTlOTCGjkGDFa5fhFFlnamyTsgz/\nhT1V84AnLA1sNhaCS151ac6mj7cxSZ9J52Xwc5OEVvyETyzPWWXu7xjokDBW\n4Jx+v6Ee/i7SNj/bs8fOoOGXQ8S1u9/3nIhENwHuBiIdcl+xjb1OJSe/26j8\n1nS++UrepsPYyv/n2nDtwQnGJJowG/+yPj1rwqXYpzCJKRZ/WPjRM2NSJcww\n6YAJJ8o3hm5zozu1N+8dpfUPX1iUnHxi3PxwaHoDWjjiJm45xRsy/gr4Tg0h\nUcFs4lhKKAeyEQHwQNPeh8NJ1/TarfaEP4Jlj8FCZjyK3FlngGZIKm/oMjWv\nBL/awt0wIl3Ns2REIhGXQg8ZNC7g4Z1+mKr0cuuso6RSVXBc93oUHlV81lIU\nXGyz\r\n=k4Y9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICtBbaTFiDWMrctpouM2WPMqIxEBhl9MbyvxwCz7CJnwAiAUI2mdrOWjr20gKBqet50Iz1W3RovXwNrhJFAt1uOl6Q=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.208_1588345280807_0.49712029560973736"},"_hasShrinkwrap":false},"0.3.209":{"name":"warraysorted","version":"0.3.209","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7d42941e0241d336055ddfdd336bf48a3e93d14d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.209","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-feLttVyPX7KlRBMvhz92lqS83w6jLRu86cwLW8S69/yTFE631hubCUW5myeaf+g4VrqodYudql1tJYKuNFGrdQ==","shasum":"679eb793a089f8cf7dc0c554d12465efdc1ef6c2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.209.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerFQLCRA9TVsSAnZWagAApD0P/22D8o55fqlBZNs5F6JY\nOjVsBy1qVc6ybuCCFgI3HVw8kKilIwCsBq/TQuACwJB5ea27e52JFxgKTJDi\nH/0hboQfO9hpLiwJ4uJAXgn90Th6vNErb7Gsb3ZDmkpj0Rm0oJi57yZKY5A0\nWjYcP2bPQoTZCue9Yt7g/K590y+T6Xfo2IvChzqVj/Rz7f4aVoY9VoakjalP\nBhYZAH7O1EAu/EX3dPwZxJ9rW4vf0KP6EV2bLzYMDszLvk4y9ggXn/txKPkp\nrec3Or91jAL8lb0/67vvor6msecN7oXc2YlgulQHXGrqmktF4SSlG8q4NmFF\nxvvDd90qei/xVP5ZmE1nh7dpD92OL/xBcX33aATkwWrBn5r7xF16FE+X7SkV\nMMkWRo3egUAFU1p2jVvvKSWk8gnnKwbydStLpcVn8mYPrQH+hTpUFJFIEHri\nQvCTvyQCG6i6/dvBwE2ywLEhQ78ULX93pfIjyF8vEaAIpGj6t6Kw5brEbMnW\n0xKfEt6DbP6TfFTCuS2PBYRSTEyAhjr6w1iXKKeXj3GB8ciRlaQ2byYKr1Hb\nZYBRSJ6aCFYvie8D4FK1mh4n/jcHO+/SPq5KjtI1OI3e9wQx5QdJgRzGEaog\nwajw7UbdRS8+rPx1gGl/+GTaA+/Hpp1uVQzwrJAcw8ZDOut7QwXpIUrpXXDF\nG999\r\n=v/MT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9oYiEGydd5yrmvWnq+gWChGOtgGCPBg4x+Yo4+XUGuAIhAOlAKAajL5RzRgHHoQYtFy9tF9G5fD9B656MXGDCrCMd"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.209_1588352011433_0.7405600788307913"},"_hasShrinkwrap":false},"0.3.210":{"name":"warraysorted","version":"0.3.210","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@willbe.so"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2683ecb202e87fccd83e9090d4037068e7bc884c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.210","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-4ZKbsgqAurSOFD3AtRqhvntWGSp6vOwMR7WzNBtCL/V88YjsE2F0rfkIcKN0C8zHpDPt9oj4/bK9HKmjjx/0yw==","shasum":"b126eb5f2ca0e42226af1464323ce9c79d57bf8e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.210.tgz","fileCount":6,"unpackedSize":78394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerj5MCRA9TVsSAnZWagAASF4P/0LOMeQc0H9FamcwyRnL\nO6umCKKOC+c09HFa9uiHLmhOEFcr98je0ttcgKOPxb2hKPy9ckAmALE3y9xi\nLd7Fs1LFuRRYwgS0DzbxOw54QJ7K4rANtWbJNLwZX6F8QspOmL5YaSHqGfcU\nvEJj/ifzCyVMBTUFCADBwbnVbcACI/59H1UG+wZWNB6d0PwKDc4ia2dJJGs2\nTJAJzBUt5JeHOoaQVx2Wu3eZ2Hu13sYHa4iE7XAPIB3cHuHH7Hw6Ey1s0wSD\nC4LgI282+wZFn1vzgBG/JCJmxfQSwmma/J2rzItguu6MLs2v0bcPqcoh7Afm\nxjIEAdhlU2F81aRuhZT+Eggek/mm73/7D7nrKv7/U7SMqJqcH8ajIGrqr+9c\nq+RsjiKPvE/uzSKhK/NRQnJ6f/7z6vHNgZRRvhO7MTp+H1a/0pfuBOS8dvkW\nW3M4C0RHeDeH5QcAy1J35bBRX1e0XsBdg6iQ6VSkS+/1OszRrwaURaY1Rpdb\n0volvrR08EJpuxOb9VDl1DF/EUcyONCBG0HXTRUSxS5NOo3Rcbor+NaISg5n\n2PJEtp3078ogFTkpwC8JNQN7T/TPk5vfSqHITH3R9jvS+X4lCb9nMB4b2qcR\nSCDbJMyG+zuRAOMaGEtk7km+rrYcRIbLpAMUTwFvCJCYUG6T0JnKYpI127vn\nj9QU\r\n=Hk9J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDabw140WazSbYrE/J607aqRJuvDDRipokWpPPvwzzJLgIhANgmHNr99kcfDa+9NQcnqbZKPFrGMOyxINyQRFODVEAB"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@willbe.so"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.210_1588477515589_0.5065290652054708"},"_hasShrinkwrap":false},"0.3.211":{"name":"warraysorted","version":"0.3.211","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"965ad698d384fc8ae80f483e163961808811f373","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.211","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PD51xQItuvgPO3H//B+nhax/rhAHa8NVDjDoJeBNXXpQQGB+HbIiCxcG3sg/MB/lLm1HlK8aPbYW4KytwKJpEA==","shasum":"36cbdf89badb7c9da077052a0f076cce6c09d76c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.211.tgz","fileCount":6,"unpackedSize":78163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetO3zCRA9TVsSAnZWagAAisAP+wfk9WiWQn1LYzBWn+2C\nmZ3hSsIuUF/Ak1d1JEMrrhpalFql1Jvd4rvAvCdCyaQGwUPW6aAxge1f79qA\nMxVwYOykS/zigp6+viO3MlJqsNjzSUAvHAlU3912kaKa0tRgYEVtKEbAfMrU\n80glQtNolDEZxZS0o6GotzmPfuhViwUjrIwUQC1ytPeyKE1Ulmw4Lk92OHAp\nB3ocHd5p1sa1RA6pQqi9vYbPHSuyCHz8dTvZly9+f5ksEvU2aAOARg9nJsdp\nmnKKUvBz1hrQVFu7axxCYOkGX3PbRiaKz+qnRSm1sljYZVNhErWOowqGe/gG\nB6lqEWVrcDnPRhnHSNh8uCma1T4zqdioUHc0GgBmHrsgsq2qtWZPZ9nG9B7B\nObQKV2MRDFxxDyzlOMNqx9106Mw7l0Gyb2j5uJFsOqhz6HhrIoKNlMxdvleO\naPpriTnfmtBkrOa3f0JlYkU7kaZRAwlBtQ/CY0mxwPyR5qpmpG3DyCRzS8rP\nV3j6v0fpMV1zVr1lBsrnFwm6mwVbB6g+mm5MACA1lc9LjOTg34dRLxkOPPvj\n2NAR17KdpZFwZWkhFy/ow3fh+86uqCVYnBx+WIoUJj10Bj4uNKU4cK8X+KBZ\nlrfC/3dwx38XufFX96BqO2LCQkg4jWU+ieLuo2h6q+hIJWkREtj/xEYqthjs\nB4ST\r\n=s8Uf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC19swKgmzG0u401hlie1wwGcC3b3kx3KqpVxsJEo4+RwIhAOzAkmh2x9xWEqCZUWxMImsBze83M1dZsnKWdvqkww3e"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.211_1588915698851_0.5325788188473681"},"_hasShrinkwrap":false},"0.3.212":{"name":"warraysorted","version":"0.3.212","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run proto/**","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"3e6e64e3f24c595fc7b75306c3eac65e28f437ab","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.212","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-fAVb+5uak/bovP5qukWLE2Kg4/bVd9R9+5sbTZ7T/dxhJOGMosvRz88w29wX5MvKAOnRwmprC9v/e+OZzNlFew==","shasum":"2fdf071d3a9c26e1d1fb0325c34defe23a6710aa","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.212.tgz","fileCount":6,"unpackedSize":79185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexn7UCRA9TVsSAnZWagAA8rsP/3601FTY/OEPx09GskcC\nciaVeGyYbskdW+L4LtG7Bv2f/HeD61Knx7dPGSr9Nb2b0sP8xc4Xtiwvzesl\n4Ud+btuzRYxkkoU9mG9tfyyZxKeU4xCK9Eo08/JMNMDp/Rer9rhXWZx8fAuN\nELuBUModZdTZLZfT5BDaoA0Y6+io9PDz6dKINFzfXf4NiuetPtz484c9MK5M\nU5HqQFLjlYWMasXQQ3G1jcxRqxzoWxPscsrz7Phfzw2gjtMia2xswXijBu9m\nZuwHQY+fw3shCrH4oReY9aCC2wQ9yPsOlcYyiRTS+n0K/0eGKiKEv2WdnXI9\nY3EEU8aQaFPw43kskzHTxKLwAbbOGS7f2yG/8pe75ssvpEzuo1GDLI2hmXbC\npp8klBuJZ9T0geEf1p9W+nVQ8bfQSpVgsoTR1oSF2gNrsKHdsSj5ozc2lnMu\nn9x4O6IV9wNZswbNKwm+WjFVh4UZfz7cLmAjlcBiBOBlcovXB90moqv37aQP\nJmTH+FMWi1mAg+AO27k6onc+InBgUd1GwAIpTbbdXgslJHomn4Y61OggDb9x\n2BSjXfeJdvllnvUYklIn5KiZAko65GlTtzI0d7mwS9EDFlWf3nHX/dxzmqed\nU8zmQ9TDoY+XpFo2/8CPV3IeDr2zKYJPFbW4O5JgednkuwtJA06e6kifSRb3\nmsij\r\n=9I9u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBcA8/PkjcbYX4e3aSDpTH4PIxlKMA2DuQyquZ0RAlwAiEAzBjA4+8rcp6OybQF++GbvitF6DX5B7riG9rPY76tL3k="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.212_1590066900336_0.4807360396015534"},"_hasShrinkwrap":false},"0.3.213":{"name":"warraysorted","version":"0.3.213","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**'","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"bc1cdb49b42538dfe739df127198f25c5d02cbcb","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.213","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-mUB4rDSKlKZtvpXIe30qMGx5j/BgTkbXBwmyP8BQZ3T2KRrpPKX5tc0HiHAYkXSmqdRo8kAdoASqC/vnK+YMUA==","shasum":"9a7c7f7f0b314a162821ed75a55a4042436d25f4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.213.tgz","fileCount":6,"unpackedSize":79747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1OsOCRA9TVsSAnZWagAA1AYQAIHhtzFkusRQBbLD6onA\nZmQLybrYf+14i45a/AOeIzpzXd5bJmxj3R36v5dLQYSQ+zEBM7Uwf/cijPJM\nP3thEqV1IQja+xcY6tSvDTrf5eRp5P1PoesntE3glpeTS8pvDWjfE3SXKAqg\n/X7oBh8YZB7Y62GBy5LhqL3cvLza98027aoKGtAtaOzc/sHRDSgvPjroZQeA\nxQapQe6ed+sgHibV08PHUtScSd+8bKAW6e8sMaZY3MkngKMDHvPJZY/jwC5U\nzIlQLmTZ/sYhkqr6RDezgyLZPyZxflZ9BW3z3di/flgcXH+uLVwCbklsSC7r\nhXvS+jDFkO+sKiwoba7PwwDunFWCY+pUNeYu4dYzTyf5Hx/1yC26UYqR9Zsy\nIQUF6f/zhD8Y6xKUVx15ImPyX/4NqmfVDj098S/0thohlPqEUld9ERSrzBum\nG53RckJWjqrR62gDdOBgL3zNQw5DbBz2CuRSXc+s5wwfpNB2T629AbavfpL3\nyNPjr8S/xy19pIR842TiqaMNg5c8pzO2ZX8eTxXyhKlmkrVpDdQNvBrFTBz9\nmpKBm/QA1/bjnrHvtrvRZQqldv+up9/NGw9Ta3l51tmE2GeDInCNoMUc4Igy\nVduH9fLB6YKtHbdE3/zLcojltyIyc2/yQKmlRKVMFIKWMUE92VOAn4qx94FP\n/07j\r\n=vl9e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+f9bMQfQAg3NUt2SXrN9qkYTeFcbUWWuKxI6QsQH2twIgGjkVNg/wnkteR/ONLA4NA796KYKmUmKamOcLDjmm2dM="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.213_1591012110427_0.3829226127768308"},"_hasShrinkwrap":false},"0.3.214":{"name":"warraysorted","version":"0.3.214","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**'","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"9fb6f4ea5a936368107c6723d0618aceb3be4799","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.214","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-tCREgLnm8qUd8kWTDa9wvbAXGt2y+l0G0JQkvA3TWdKZ7LasVX7OrcgLaMIJkmn9gt67ye/fVe7sKdIGue0EUA==","shasum":"03e5fd97db4f78de2a2057fce567f5167973482d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.214.tgz","fileCount":6,"unpackedSize":79747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2P9+CRA9TVsSAnZWagAAI1sP/0h4eVUOkH9EqDx3b93v\n1uaWNTV7KdxqteQAvpWIcVUdY162ls3N3qETzK0sdnOzNkY5793o9Gj/SQaR\n741C8w1OYx71m53YlDQJhdAPI2nrFrPdpCC4n02FtkP4Utbe46uj4fVmjy2R\nWOxSGq1gO/X0ugdJNEeH3GLC4qe5zyUgZTgC7xDeBMNKp5S0DcVjlf+5cObf\nQl5KIZcmJv9FRP0NSWVGHBfjfLXw9QqzECbB35E13Z68RRo4zXndis1K65gO\nvoA48YHLsIuImX/v5Oap+X+sYB8x3HIQBsZvZIcs1QZDKrG7yioTONha9GS/\n2LqrQmvPHRAjZsfNNXTsRVoN0xTD3R9WL0VLkUOOHI5OpFC/1CXzFp+RcjZK\ntSqj3L0IdOdImbHEg7jLONVwEMINLFpzq5dNMGG7T/T4Y79uOjX6bTR3pDl7\nDVRGA0j6WkqRXUvyvN50mwyfx75bbRZJ9bgN3UlMt8SGyBJTsK8zO7ZDPpVQ\ne+hCYEm39P251xqmfdZ0gqGBOsmnp0j9ulzYOjZ/Usv1CBe4nAHlBRv6hb9y\nLvm/v5Bu8M2RoBqxhaQWs/xDrLB53pvUQUSAHzES8uiEvoiX3gUVEWZz2hit\ntA7jEdqo8jeDQk+cV4JR64AcluvZdDxqgDt/DKMYMi3RPBKrKg3qoBs5HVZX\nTNih\r\n=WKX5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDAd82GR1GYXj6RR9xCORK0TzlyJtzQ5O0+u9oCYOJHVAiB2ehaLxsjhuM4FoFWWknWWPUBAz2+kAvtLjTVtlRjUgg=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.214_1591279485639_0.34379630209898493"},"_hasShrinkwrap":false},"0.3.215":{"name":"warraysorted","version":"0.3.215","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"45ecbc9008bb7ac1dea31a7a7b478d3bb4668c2d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.215","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-GGR85e/Y+1pQmBpNDg9Rdtt4YhSQNmzl1PDLOFnJE4Zi+HODIPYgJKrrVfOaa9bY6amwW0WGsFUqVqZtugLTgA==","shasum":"65c3d21adb5cd1ff6a7e6f18943031932c877df9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.215.tgz","fileCount":6,"unpackedSize":78859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4bJeCRA9TVsSAnZWagAAV/QP/0OriO8MDYbf2LJec2eR\njfsn5/9+AcXOP+Fd77kFd5sdKvxSbO3V3LIH/ciDYwjkTa8sp5Ig8ngsCwC9\nRg4AB40aO/PSvKTMlN9lxkfPwRlYUMY8ftw36pqAg8St1eYs3mdoQh+L/CQj\nCTrZIFh6SWYc35qGSwoCjJY088BFgVQ50x5lwoEHYmMKzmmlHkNfbU3ajOod\ncc9LvV5WdQ5fIAX+3tnwkGRdVrpgFe+9RfysDQ3usw876C3u3BLUmvgBI4T5\nL5K79x31PPekEfJ50DI5oVc1ZY2fw6usBXW5sMmUjldW3Ywg5uegDY1fbz9r\nR/uuo19Q2MAnotcHSoCTg0M5SoyXIXTg6WlAUbVBPjUy/SZbUtBWYEM59Pla\n4pMGLwVFuDm525CnEvpAFq7Kxzxk9qrzThdr63RIYumCcoS/MEkOhb90i+bA\nQbHesD3DKAIVrlo8l4bESe6sor01c/nMQifsXMku2/x2IILCmm49+DM4B/wn\nwK1pfw8nqDWsSZjoOhIYsjVyEyT0/ZjA3nzLahYnktwC27sm6mmtfNiHG5KY\nBhWzlnxFVl/PQLLjSg3ob5WUUQrICebNYW3ETy11bX4Aqv2XbghuydZDtZkG\nPzeQfdnNCFdp9Ozci+0NNChFUyU52qjKy7vXzLOZjXGkUT28qqGCFAhOuZfy\ntG05\r\n=zABc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6MlhF/9AH+Nmmnvig/AjUtvM+dxQJCS4fkIQnguT+HwIgcmooWzR4DaoAgez6E+tC6b3FVbr4HGmgZjVly2tzMRA="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.215_1591849565521_0.29864555542572546"},"_hasShrinkwrap":false},"0.3.216":{"name":"warraysorted","version":"0.3.216","engine":"node >= 8.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"aee5074887bbf58334d76a0b842772a7d8e67945","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.216","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-x543yMdt9PNIRYJSekCFVxvEV8/tiVmqs9xQceR4u+UTDmvg0QGs4tAWRFDPm/ijevNcBzEABpgMyFlkTjAT/A==","shasum":"cafc84b3bf5d22a2c93800003e528e73ffb7ce8c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.216.tgz","fileCount":6,"unpackedSize":77051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe41PnCRA9TVsSAnZWagAAeSkP/07dTxk653PX9llan8Lh\nkLM+K6alBlMbe9CfuF7NqfqLTDYkqJPbBFxxIJLoIcTB/pFkrpdiEcxt2ZYu\n4aVg97TKKIU0hf8OcMjvYOkvjtJAIPEJ4zMZC1sfc6WtjDEfimaG0h35izct\nuQvkHoCXsOH/kDu3ZenZE21vCu1m16agwyNCcG0roKpdE6RzmdYRp+Eo0iEJ\n5a5BPodA5KAqbp4x8P1fRX8h6Z9Qi2XiCqUqhC3Xr2cK0pJQCzDH3hZk5gX6\nPjuhohK8N4+vLrdqKoIDhILaL3JMk/YdzyupYZWKd4zMRA0nE52+4rQVABSl\nJPoq2ScE0aJIVQQwiO3MCyPCQRiYphILcKpOlbIdFmwNYImdWk6GdXyk/Yys\nQCpdeLmNAiAlPBkGe7D3D3no4B+rxeaiLPxuBjyWPbi8hu2Rj9EqoTw14UkS\n1Fu7zL+q+afTUw+ph/LUsJhjLmZWdnl7tcjkT8Iyw0973R7KIojwD0XCyEvm\nOu1MkvYjre+32JNW9fqEZJhkMUUI7Bk2NfSi23497m9o57kMByXMO2/rthdY\n5IrQNeEwDV8unwscEbMtwuvyiL/lBoRicxkeQZeKcuE6MXbcR/O1ZSMzraE3\nKpA1Ui1tE0GD0luq9yHaCfp5Dw5Tulxv1oFM04J/dj1CW9lla67VM6dohTHV\nIC8Y\r\n=hJr+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDtAxJTRmrWKnmmLNNhdUJGmv9y77ljdnNzt0V0VG+zuAiEAitHLZunx5AxIQFoEARw1FdEn8K8bKMiJIbkX/K260Kg="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.216_1591956454835_0.8621068640972886"},"_hasShrinkwrap":false},"0.3.217":{"name":"warraysorted","version":"0.3.217","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# wArraySorted [![Build Status](https://travis-ci.org/Wandalen/wArraySorted.svg?branch=master)](https://travis-ci.org/Wandalen/wArraySorted)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"12c5cdafb516b6fefa7855a5ee7e93ba9205fa61","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.217","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-fQMBSVYB7zhi5WNZyByHVijI6TT7DxhHnl/4Zy2LTYzymPsmFXey+iP7MaQs/7uj3tmLK4wXjjaO4GufhXaW/w==","shasum":"f2712aaeaa8734ad7c3c286695d9d4298bbd466e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.217.tgz","fileCount":6,"unpackedSize":78174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6LXGCRA9TVsSAnZWagAAijYP+QDLHuLly36pEoyq5Bbx\nssGHT0EM1QfAdFJ7pv6Vx3l+vpbIZQXn3+UAGflnfB67XDXs0zL3eN9gWg+M\no/zAGMOxb6jlpepd4IcEmR0UIN7iciLxrbI8DhrEdjioviZC/eOoWu0B+wAB\nhKtzHJ/e3gkC55bjqlmc0xJwajZz0LJ0wlXpTTLS5ro81AqfQwXpc0WT/m8S\nyAjIXILV0bIEvI5OQ7NBwLeXEirr9Mes4VfXYm7yHb2EuGhl33r6/oCmi7pC\n6w+Gw452t6vhLBhWK8QlEzooHbpkBOIJh8lQEHw0JF2ZnqApYElkn/mDbfEt\nSZMkqBytkYFgzAJLej8TDcaNZZeonarlekaqMgkEN4kRRLnhtUIKrxJ9yLJf\nKqDSt7iVyM+v/AaB+u4h40Rxxd9g4pEaIS/mgFvXqAvGTi3g5AwGwwnrYaRo\nYKsGjJRwq/kIIEMpe/ZEMvSEN/jQltOtE95qgcxTtbVh1L7v57+8mkkZEqPT\nPORitnG6lNH5n+lOAsZjss1CErb5IxSinbC8sf+ISSXN9LwdudGoW9jf31cT\n/vlhIsBdbaYLi3kDx0a5zG9qEJLCfOR6XYxFkr4hQFIqNcr/gIkfjwwED8vL\nXJ3UbuZcI31WBQpUKfLG4/ul51Ba+zZpyeeFJrDxiNg9fcy/Ja3F5dwkoiS3\nLg3g\r\n=OLmv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMwPxIGaXWuyLUyFhYIlXWiF+MFhX2GjSTw8oUPZdJMAiEA7AnJruTJh929KNj6oQ2swQMGvwTHy5+RHlUmWzAeM0Y="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.217_1592309189789_0.5578471600997255"},"_hasShrinkwrap":false},"0.3.218":{"name":"warraysorted","version":"0.3.218","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Test/badge.svg)](https://github.com/Wandalen/wArraySorted}/actions?query=workflow%3ATest)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5d18b63445f0830d7cce75e3c471b481331af237","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.218","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-0ufp3kzTukw7DzlMcV6gnApV1nNadJt6di7M3MEqqULaGfFmtoMTgmxyfKP7Ik5acmA+pFO+Fdcsv357/81ocw==","shasum":"d4d33866aa1b63ffc5adb61d12e0f70823a217f0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.218.tgz","fileCount":6,"unpackedSize":78187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAW0mCRA9TVsSAnZWagAAkPEQAJ6ULsSq2xv/c9beUuSh\nmMtnpvZu3taQ/fY8DBHsqS+d50e4fyPNI2i0SRNq9WTN3czeMrMUWn0p8swf\nDBwT91rBs1r1o3C4MIpEPEIzzvCYg7ygI835y1QM7EwQKWXJStaWem7nL2oR\nPbuYn1zamKtG60Avi1qZOK200Fe2GGBAVPjfiXw4p3/9c+QCF9GoIirahvU4\n3NPk2C29iVwczAhsxIc4tBJJx3aHPHz/ae/NsaVys/cTO2rMORZ6GYzXmRFd\nMcPk/od6IcddvFK65h8GFD7r0LVw0/XljHI2QsJTZ9izilJOhYItE1c/1o7I\nQ0HgDpJAHxPSHb6MJ1oiYtZgKNkbNADtDdrw2h6ZrxCtveNjUxa+dBpPUTrT\nsOVS+99QrdPmykdlsoRKSN68m2DVhtQ4F+fiU7nevgl5pOPMtuXEmErSnVqd\nHfe4qa5nUhU1qSFwjBqnvvbV1KkKBAy/buPuKmuL3UhMP0L0X3dXU1JlZVc9\nhyNc1sCM7AG+MFZcU8vRaZS499mG4RBNhnVvIBJNWSpfDgLGvx0O4yobzfGT\nadUV9y6ci2EAj7dG3OnXjKSN4PxjETpneno81uW7DnRoVU/Vkoho7iC9K4p/\nKJ4iW79EQJ1JPzAEPT2sFcmEjiHj395XuJS5Vx1gODZhwQhKGhTMA2fsoYBv\n60CU\r\n=KSb7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFcL/Khm4GCdbd0MJ/NWZi8XWPGSrTHd3o2ORvEfCRH/AiBjPCO2MSFOWhbKjWwDx7KGscMkfMz04vm72NV43SsAoA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.218_1593928997990_0.32591278402567103"},"_hasShrinkwrap":false},"0.3.219":{"name":"warraysorted","version":"0.3.219","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Test/badge.svg)](https://github.com/Wandalen/wArraySorted}/actions?query=workflow%3ATest)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"684217c23f6b968f74ac5acedf2451f676f91ffd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.219","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-0dfKHnvL3IUNT2oTrVGlwSPbzp7xhvPYGVxIwJPY67AOOOyredYOTAPsBm8yZQGp+V2ihZi2t1dNDN5mdz4gzQ==","shasum":"71d91f3c60ebe1d1430b05ca8a80540293ceacf4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.219.tgz","fileCount":6,"unpackedSize":78187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA3Q3CRA9TVsSAnZWagAAgoQP/iPOdvFfoKwBaM2JDrMk\nctwXg8DWT7SoSlV+K1wyN7+vQx1pNtWB2c+9lGugMgw6K8ngfpEFoL8+VUjy\nMVXrV2HC6KMpPQ52+L7veq+mka3QJx6uVD+M3adHcSCMqYvEt3Fuc75VnKWl\np4M5+RhVUf0o56QSvf2VJH5yx7cwYuuMVy2J8fwHBZK8vh9MazS2TlrcAcaK\nKc/q5KSKr17/4VBMqz4ZvM4nT1Ygs7nQmKK8lu3m0afQO/zXnsTO6hAYPOP0\nNKZqfYZ2+PSuxa/CV6W6T2xoG/uYRpOL09LZEJcYQ0uKzgOrDLJmGP4tFx9V\nHMpHsxKzMo/2of/a3HjCFhWrB1iikepoW01vqbuKCCSCjbJMXkGLAvlXK37q\nERErTB27yYuHB/o5fiU6gsj3ibYKqITPFC7Pe1KmpFRhwfgzMWvDO9V/O6W3\nSS4u2gZWttjKukG0JB+XIQM3CveRyZq7hTRHuv0aWBEO7pXgb7/ZP5LXtwSb\nLTGrqTQXW1qQkTBWWtUBrWZfYFgTanSuRPw5tqu8xxJNV/GaQ2ALUKtjPB8b\nOKiKqH849qrk+XKXBkb7Gcf8aukx7r/6tePG8auuggbln67oetJHhpQosvzz\nUygRR45SeQ+Mj/oTYmRHSLUO4NYbtwwl6QkKalhZOXgTRmDTzkA404WmJzSn\nJXES\r\n=9JP1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnSx2ytNRUrKjyFIsYo6/yfyTyvRG9Csepgp7muIu12gIhAJ/5IYNgPZIf4bLdPciBk8iQKiXZHswIhc5MFd8WXF5B"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.219_1594061878855_0.4620698361533424"},"_hasShrinkwrap":false},"0.3.220":{"name":"warraysorted","version":"0.3.220","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Test/badge.svg)](https://github.com/Wandalen/wArraySorted}/actions?query=workflow%3ATest)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2a96980a71ed79ded551d1b99b0ad4f756e37669","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.220","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-yh9wylZb7M1C7h93groz2TR8f915ELmlciysK2a+dywRNAbZkMIwFWtH5mDC+tnTIytsdaaQ0hx1A8+xiuEoBA==","shasum":"99d17c3a9d907cf981cc80a666cf3db4dcd4d2e3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.220.tgz","fileCount":6,"unpackedSize":78187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBHudCRA9TVsSAnZWagAAW7oP/RO504Y6zrLV1nGuR63Q\nNLu26ggmS2zDLglWTQoQ6v7w7AEz7aJKHD2d8ZnF0Cuwrjj1UPLu7AUWPhc2\nFLliiB8vZjNlVpJ8zfmQZ2CBL+qgMTR9ftNEUf/mgRrV5sebuL6s+DpNLyG8\nEVwN3BBIOd8cPlOWQInmiqOyFjOuHFGj18KQPfsXl/rquwkteCPUfOEIMtIF\nGdQfn7Rg6kTl593MkjUEJV4V8re7+XhAss6EHDOXO9Bgch1J4tFh4taQiqYj\nIsliDV7OsEXo9AGn0GH+NGyQS2lKJ/jAmM6y59l3ZKx4iEC+hWEbkHCyy1qX\n100/ToF86njzD1v0/yhE7UOCD2GUHWUEHIIHDCUMBJxuoE7CzAgYL2MP+CyG\nucASkljlIHU7ZHbAoR9UaYSGHlDkldhJyccoZ7X/tVbC8odGDeZByd4lUU8k\nU5UA/Ez/bDmgCpDhbhvkOmSN4xus/zFIkVIhXlef3ZiLgjw2Fpqlx6JmWtbN\noXtth8NdTqJ5KCyfBWfpK1N75YgQOXwKu49YeCslPdrGD9keUOvoLpigSfAI\nb7VMHdvJXu4As3v77Otj/9IV8GmqP3IUEfgywI5roWtJdlYDTEuMB5jekhQn\nc3WN2hkVOYbAJUzEC+7CbzbfV4rj28VTfiooeICGUrvchhBsfx6mqfq99Z/W\nb4LE\r\n=0JFT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd8+4sqn13aCceDksir4kTNeyVEcdQBoaYCxbYNo7d3wIgZY24EN7g6bpNRfcZ1R6CQkA7Dm+4VDlDWm6mccZI3qE="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.220_1594129308546_0.01001201409963981"},"_hasShrinkwrap":false},"0.3.221":{"name":"warraysorted","version":"0.3.221","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/dwtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/dwtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Test/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3ATest) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"ff634ed9cbc5d9331584bb6b17225d3d6e59c7b1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.221","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Q2sz1PbxMuBcPjgozqt4PzNXrqKT4saSvjAVUzE6/WWxT18JACOrfp0OAQ6S9X2VR0ApRQ08KrqtonZ49ZEMVQ==","shasum":"6ef1e40678041abb068e6cd635ac7226fc90cab0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.221.tgz","fileCount":6,"unpackedSize":78327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBgyxCRA9TVsSAnZWagAAad0QAJnF0ypZKXdhMaQpKAgK\nmNNyY+sLUrQGL03+5rK+f7EoQmpIOZNIkjg1bdG+K1jzEEhQRI0YMZV2b6gE\nwDQTsZUaAHCZGLDNX6JWU+KZLnbsEZsDi3bq+gd7D2XTqodBlgvduZR2mHpj\nT2gDzHLsay8wYlltsB5aONwKXTAYj+GPJ8Grxuw/QfmONlixUt4xtbLJgmnE\nMkb+TqV9mxvcU+xcEsAfQHyDdwsR7GBarmCAkRRiMcfEoWkTU0SiLkYhR8EF\nX/3kab07SRDkfh5urN4qxUaCk3wxD+hIYF89SLh7nGnqgaN4XzQpkSOOBi72\n7shfL8cshJnbWJIVRL78BUdHeHNS4HGK0XtCSiFYEtfurWpmtm70PvJLDxSz\n/y57aPN2PnIIKMSJVoByH/AckdFm4Gwxv1wOOaEUld4oOxlCGfUJOuVD+LiX\nWUYh7kyI+HPR1HWsNCLYu2ZGnT0SaMWJEdQvBO6qaU759fbHrEGOa9fFptyg\nDAPZ/5NPHAF+lH8YP60uxdT6QgI8mCxe2/qghaRTsq1lS09Vjt6RdqGgorI8\nIO5cLlaFNiioEj6/5s7KNmekRWI3wuwU4PgsbWclH6OmhvTYW0SE230BFACe\nZNOvKqNB7yu0DPXj964rkOkf59zOjWxAxYBSEGbKoiK5D09vmLRQAuNhTPMu\nTDD7\r\n=D6HU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjHtocfLT53tpdLQXgARXlKkMzlDam17n2FyzVzDN3ZwIhAJ40ODOedAMNO6lMl14DsO1zHTJ4IYgO902Yek+Rgywp"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.221_1594231984858_0.44425254498757627"},"_hasShrinkwrap":false},"0.3.222":{"name":"warraysorted","version":"0.3.222","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Test/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3ATest) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"d222adbb49cc476362297f31ad4bfcb88c04d88e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.222","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ddzOEc6+UifgKHz14voIivgZ7tCp5pY06LGJh0WQT31fWD4b6LZDbIknrjAu46n13Zm1SMtRTwt3jQLtOw49cg==","shasum":"c18adbc3423cc3705638d11799d3f7d75ea0a820","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.222.tgz","fileCount":6,"unpackedSize":77390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBqiVCRA9TVsSAnZWagAALh0QAKUwqr6+7QFBg31B2uV2\naHTV+nP+3tEZMFpDjMe/V6haZUTcb51lOWWAsSWE+4J7pkevjN+MXy4iygj9\n40wM8suVhBw2xE0/aAf6aXz3koxbZhoze8iH2sMet28TaoKl+dx8apL+37Su\nsETt9Io96k4X8GuXEkmJ1BLuaeMsDZlaUPYFgi/yE8B+7dG+N0TrJrkBsN8M\nYt0S+CqHIe0sYcsavCzE/ZeVw8NkdiiVuKqBgB8cZhlPYY62xVWdjqbLU3yn\n5HM+jqKYn2p/DymPf89agoyW5fUcIU7Vo2vkwts2oSNmCFZeFfCiZ1kUZHn2\nx9vxU/E0wY64h2K4ctbF/h+eg4WURHU61mq4JMPfIR1CchixzrBjW/yu83xy\nZ8PN7KbHStK0w0y0mN+KFx5zmSLFyj1vuIKR45ACjfzcS/pkzigvXBJO6jvP\nJd1TVwRzvpCNd8+ncagTprOFktpj5RL3YWGmz/AxNJ4JFqzLmjj3qCaKDOII\njlXSE7DMOpPApWhaoP4UIYdVHES6Me4ucCx8SVZzWdmojiibXYiWtz3ncz9Q\nKmrjcqENOrdgGPH4Kwt2vlT/vX5pONRprSj08ZPbNOxp3rSWVr8D4epgyNnq\nVbJ15O1fs7ozfchAPU4RJNp0fPteXFsa/Q47l5lJDBDOcbn/U0N1QSSaMEzl\nX7NA\r\n=uT8g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM7claH35VzHOKujWM0pwEX5meriROqGmGGBxAkYZzhAIhAP+9aRfGnKVKFrq24XsbJCsk2OcV6PZOT3LiOfCiXG+6"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.222_1594271892975_0.8365373744272815"},"_hasShrinkwrap":false},"0.3.223":{"name":"warraysorted","version":"0.3.223","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"425db41c90c528f57992bdb3de08f09312c460ed","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.223","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-762l14h2bq9MQrTNi7XJYhQFpm6yblCoGNptKf+3z0lhHEevhnA7NcFSZS9x9BOmSWJsYtacdIVsaWRteaw9ng==","shasum":"159ae553df4d8ce1f6b8a4c17ff24754eed31c54","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.223.tgz","fileCount":6,"unpackedSize":78444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBxCkCRA9TVsSAnZWagAAxd4P/iI2JFDT6U7DMRxEFzlH\nhJ4qhJ5ZhDZefe0aZCncKEFuw33Q10Ngo5EbfgJGuH/0stCJmP25EpiCptlM\n54ZG+TvQLKkvfaEOaEZOenTCzrjg0Wp49rSk0pCAOtzPPmPOddc4uHTgYS5j\nMXC128h1z3AgIqr0fUkLgCt6YcJh3NWV7N64uFN3nVKqR+6iVJeOIKi9Ohwx\nKyo9adW/0T2eiarbap3T2N4NH+4/FzM/t66ooXAC7NmrVAhMxzyjvTRIX3Zp\ndCzuTIYqVTJj7tA3u4BoUtmPQwesSx2gqY6vW1TMmfRJxlB3/b8SQGFlP+JM\nx4D7UjwpveIf351DZdou0xo3xwFEXLP5Df0HnvhIh3boMOse4o4nPqcl18Qb\nMF0/Vu+5CBQXnxUegTv/7iaokIGqIR5AETz/m+DK8d3cHwVrp7hoaY3/M2Ly\nX6Y6xdg4iONzSQ4737+SK41vbmgZ00psG3EuxRj9ygv+2dpxmjIQ3xdclQso\nvNLF/Ff38eh1aEeAdBL6SpdOU49tozLIe/tbwN+kg1ptEZXABLomZPkq7ouB\n2hxtwveA7GxZ7+vDgKRhYCHURqloe7BailwJAOS3qznyYSIHyVNFtwVcwiKz\nVu8u+fQN3fmXCeKmgw7L22YNOdasL4CsvZzEPUgx6MSX2UsgSCTPB8/RDyX/\ntqyx\r\n=gp9Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBWON1VTrw/y1mqGC2IVPDWe2rbeTt/8uvQ+7G/ncakfAiB73yxUdUDmonJtjkfJJK3Jd1ru0OR2xLwKkYPUsZM5gw=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.223_1594298532060_0.11379359420510093"},"_hasShrinkwrap":false},"0.3.224":{"name":"warraysorted","version":"0.3.224","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"cbdd197712874319f20ef33a337eea1ffcf891d5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.224","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ysDUGDQnFZxdtwwWAPlLM6aNF97EzUbNswaDtgo6aHkSNgFN89Fo2CnmKsL14a9rCaBY5NUfjpCMR76SPz8l9g==","shasum":"833f68789ebfb3269ce8873b0019fd8635b6a316","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.224.tgz","fileCount":6,"unpackedSize":78384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCFmaCRA9TVsSAnZWagAA3UIP/2onz1l3kVGCughgAjME\nOs33vsjieR/dEzyM04oP6CiP2yxwMtQlh9CYDeDii4sGKwhCKitDbdib0h3u\nCbakCV5SUFkNhnuJlJ6AyP4DpdeK55BOwnTPw+Nq+m7BWj8DyNleoaVh4de5\n8PnEEXsRIMxfsS/qfvYjWGNTpzbjzKNxBhrG9dQ9tSgg/uwEW0reGEZkxy7s\ndjw+ZtVPYazqzusi5BsjKYtx4Oe/TrovGng771aUYZyQ37rifuRkFPMXAQb+\nzbKr+RJxSd2jNGn+ei1C5wT+qdLKIREGTty7En3qGhhaK0LOp6VsxDoQQf9l\n4DF32R+B+ujMI5cXVUp61+LpCT+HXkFlCKilUx7G8/ToPLHibesdG1u+xXEV\nWLC1lUyI3WkNMz8GzrW+CRkUA2K1QA5vjVrD3CYUY4E69capvEiVSrUlxOu8\nYXTCSKzQBLzVrFFHUvqpOYNIT5iHqOoSO/wKs01goYsShMh/NaA0cIt9Uj/K\nTTRm9s9GujwWiR6o1Gb3ODMxqLpC5grE0ps5+aW4QNGLSz9LrtLvEhNx/fxf\nhXkD5Q7d3Nv31WuYynVjpIleB3u7ngqlLoUQaj+znl0xOig1HvnZEqWF+yzX\n7rOlt87HWNzwojwtDmStnSquyQRJFJbM68VhZZ/Lm0m9/mw/JTI64jdDYk14\nC6Be\r\n=2xgo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID1IsiVLqu4idmUdhnS1HXKju/+MLW418E2Byg9+ATsjAiBltbTmTfMjCV2jc+BQzN9VY0qn0T6Ssa3yxcXuz0mEGA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.224_1594382745535_0.11160017235785857"},"_hasShrinkwrap":false},"0.3.225":{"name":"warraysorted","version":"0.3.225","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.js\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e0e5b711e5cde3c018623b9606b93c344a39153e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.225","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-YE5X9j6rphu9Dk+Nu4HeJ9kTAozsoRvmOBTAhlKtxatqMhaAVILFHv927XLEYdCRFbG/v+9cUlOAxp26Koza+Q==","shasum":"3f9acb6b9a4bc937b87ea341d2ac6eb6d6126ee2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.225.tgz","fileCount":6,"unpackedSize":78384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDbX8CRA9TVsSAnZWagAA2IMP/j7FAucOMhbdTK4eKwrZ\nIm6eypxZv6luJh3lS1t/tBhH38/s1W6lhVoWRYVk8SYwHGP9cAubmPoZ+GHi\nBWY58XpUIvhe/yklFVH38VQnyE/0Tti03nEGHi8nH5QYKtXC2Wo1WcHZ4nfS\nRMyKxwM17Fw4gLqTMBRzumgOEi7UCmK0ce1Ts7XkPSSY9eTR50AkfqcvNmZB\nQtOPdbQWUNSPvy09jcFuqJZiKpTCG9qpAm4PNvMGE/y9krjGwISieuHyZ4l7\neX2yhDKwoDqQ6qJJaU6gDAdh9McPkCXgt9uYKjrQsvwMTHTS4VpANm32u+dF\n81OBvnRp1m9nlfQxLmb4rNeKis5SAbIv5ZPDf/vpwqDD/YjoRHk0chfwucpN\nTg4ya9GqE0H9M9bzp/0qJS0rmzkY5QEqInxcpUtb5VT+qV/cC3mOyBEePSmK\n7qdg6QspBHok5KsUt9BzjtUagIcGD0zXOlLndfz0qnS9iJSP27FKIEvTFAYs\nzMn/b6FAxlBRDm8ti9ZnY4OvMBnm1TliBqfDvTGZpwvSzsZfnHi9Zh6kQZJ8\nGYv9fKlW5N91B5+Qw7VZu1yhEFX52Cjah894HOTaZiXt0uUbosyqqV4qpXt1\nRjehu5eOQ3XOfzcnEjffOq4tosLpfLRqPLoktHeGrQxFZ18tYtY+TCe5fOwb\nG/88\r\n=2Nqq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRr7FzhSUUioEcSRr751PwT78gTqxm5smVPtJ5jWcDbAiBUrqv19xd7itUvHeA12esDd0ILfSA9RoD1ZkI6vfwxLA=="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.225_1594734075485_0.23839433099175333"},"_hasShrinkwrap":false},"0.3.226":{"name":"warraysorted","version":"0.3.226","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2f4f9268ebbe6ecbe1a5f9f3a6a755bfd009da4d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.226","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-odc2k7BT78BpPJJIIyo+mF4VBeFrYdChyr4vy+al51Jm8FWSbd2VR8MOamiP908+J89P5sEX8X/lNniKfZIupQ==","shasum":"52c77c87838f099542ce39aafdebc74990cd0825","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.226.tgz","fileCount":6,"unpackedSize":78383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDwZxCRA9TVsSAnZWagAAFxcP+wd2zoWe+S8OUSal0hrk\nAkLTjguApTq4KRXj8n+8QnHUKmds03czjElkEFaAHAW88wHCZ81M81SlSQtV\n9gO8JzspzNh94fRoIUcDhg+DkvBYxfa98el+qQVF2eVbRiRQ6EsTZdyBLEtp\nRAHOeIPMQKNu/Fx8GcGGfSJOgFG1Edc6mfRL2jJsWnSj7/6LYATCosoKemwO\nfeLuBDUTw4PRQeDgfd85UoNjDvg1vZCSyminuoie3KnUWH6OWyk5uVg4mL01\nlIXiTzoxA4ozRCBvWCCNs9gpoMZuQBN6D2DttxPnjQ8f0PC3DXjo06ZZ8/+4\n9/39q5kQWM4BtCaov/CrRozI5aDk5CJNSJ8G9ExZOSwUijdeWri5TP123nLc\nQmy5lQUvw3u+2D6NYIsa88/1V+8VxwiUYyXu5Iz6Tk4JAabeBv0Q1XjpLpAq\n18tBy/tgvjMGnbTvD1HWcwtd7rx1wF3MGEfOq1zIR8fQ1icgljIX8CQqfotr\nj0tCPvjTsJucJPyfoMkI3PiGaW1ZulFLuaFr1+xok1lbeEd9QuQ54Vlj0bUT\nz4T7e0Jd2y92/vk1xu8OeQ8wcJH9kMQrtkfJXwruTD+ScAZmiHfH0Zd09WqH\nx/Hu2h50t1rOz65/J8fifFXxjW/OLouOG7J+eLs2NbOUothxE+G9rMH+CPoL\nhrzh\r\n=QBuR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEtt6k1tLEroBa09uhjuWV5m7iyLCP1cJcdqwiThLmwfAiEAxDTizKJCru2oCfLFCKU+KItKPc1TIcN6/3kd3y9TxcU="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.226_1594820209425_0.08248896002661521"},"_hasShrinkwrap":false},"0.3.227":{"name":"warraysorted","version":"0.3.227","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e63a4d4cbe3905132c32580cdc02e87b86be46aa","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.227","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-+bcSbaGQxK2Cyzv79FNH/X80IsyM3tcwV9ItB+Po+x1D9Ncgb5n13rKYeI+YazMFmhRkoEbOrRg2QtsM1ahWLg==","shasum":"2c02f7cbdce7e62150561c1335723bd332494731","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.227.tgz","fileCount":6,"unpackedSize":78383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfED+gCRA9TVsSAnZWagAAv6oP/jYNWhSaPqXzUXX+wgQJ\nmt8KmRt5Njy2LpbGmGP+TvruKWxqvZ6L+2ecXDK/8zS4iRy1vJ9VMgbkUnHB\nmewyneEhosNjtBbdtvOK730uZKNct7gZbjWHe0QexxquvU8PRg3StU79dsZv\noj7po/C0k+0CgiDLZAoE6h78qM05Bk3b5bs/zNBjATHHOyvse6/s1gXbR53o\nkEiyEJlO4EEGhrBK9V6nUmT6deDiys7c/3GgzLraG60wyW60tTMi9iZ8hc4C\n7rWnxSa5B/IX/kVMGDS407D4zotqrn6815zJ0TXcGvqfcJ2HNTUU2IgRDWT8\naamquTwLpgrJ4UicG+pvEfbmI6fIyTNB+8/bnltFLEYDqZ2ld3/9CTgkUxsU\n5RKjD4b5xOGQ7y20E2CmYML8240ZoACV7FZusxxzFwuqSQkXasr1ND3hpm7A\n5hHRg2WTGM628stwur031mIqnAmpBXeCe5TQXLKcXs9Tfy68yCHAUrzpnj2m\num6OGn8vxFDFxJgxCKJzl6x2DnfJ8BG+IdSXymStTWFFd4i47hT2LEZ8gJn5\nl0tryYuGxbZPVK3bck61++z9eCWWcvY9AZpDZdC6ExpJ3thMUYj4lE9KYc/K\nIVG+rN5yEWkwtPUyfSZ+TwGRsuoe+KEDf+KNSkQbjxndFCiAFmhfaKyZ7Inf\nRUM6\r\n=L2PE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzMqsIkmzbjkHioXW8FPgTmmggm/Y88vEIPTMu7Vgg5AIgP4zu1X2PqiAtVgB1u47bHWhIYwNDh3Xcu5CV43rIWcs="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.227_1594900384412_0.03773705118983228"},"_hasShrinkwrap":false},"0.3.228":{"name":"warraysorted","version":"0.3.228","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/Publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3APublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out\n```\nnpm install\nnode sample/Sample.s\n```\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"adbe5e8738e5ddfd426ac9ac3f20d88967a6ad4a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.228","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ZrrfOpu1q8vODPpH1JxCGvxPPhUp9zXWoPvY0bpykR8q1oYCff3mmqjMeQBFyOkZID8rGbEFH0BuKUTgkLK+Qg==","shasum":"9a6fb62799109a7b468d2669828dbb22ceb1f56d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.228.tgz","fileCount":6,"unpackedSize":78383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEbCdCRA9TVsSAnZWagAANHQP/2f/ehC3Uehy45xa05sj\nWG5OdJz02q6mL1nDUtgTLfCPz+eRfPFc+hUrkg9q+5nHvZoO0/wJCbk3sIt3\nIZdfbklfAAqwluHy76HauTV8a1vCyCDVDDFnvoNkXLXEGgbsDFQxNN0IB9yF\nvvR/bDpvDXJkPha2QRV63j96eyYgF1EF3w4fBELmfjtopv5hF/PKoJwV/MsV\nGmUmUKJ0l7HHPvok+edTLF1eI24Lt7t9w6wwshMg6dRC2DcXotq0mOWPq7Xr\nYDTi20YJHkuzLXndWmtchwXbCU8R7OdM3j9PtBWUP/geBvFgckkg2sKTY+ET\nAtbGeqr922OBiFrnJwchBRiwqYxfMq6p9QZqxdghdBsz19yiFfztp0Sc3NSA\noUN/kP3bc/4oKk0ymwfbQGcpEYzgbc/xjF6UUZqxUywHeIry45fd45K94k3f\n2DG2CyE0eYRkN31DgaC2xSCy0kYtrcvRwdIuyO6EZjbNkwtYBl7ynYymTWVy\nWWsdw2JsFOzQr2zWO6v/LJ5Nla2FCu9HiyyDdZbm+Xwu0mITA3+PYQWFrbWx\nh9k+nqorF+aW5XkRfRYcSBo9kABvhc22GkUrXHHNcawDyKhda13THAta15a5\ncM4tzJ+OgtvKFO56HeWejQHL4qpZlhEPFHUmVFeQK+vRdpUazZMjU/iwiaZT\n6Yum\r\n=tJj7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1uadpkAQeoSc5kbnfZaRRLcy8nZohfaRbYdFGizydNwIgCqDJsNNNu2NmcBGdbqt9zvVJ/rvxk8nPep9pMvd10B4="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.228_1594994844509_0.5600534652003328"},"_hasShrinkwrap":false},"0.3.229":{"name":"warraysorted","version":"0.3.229","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![Status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"2df0f46b48c9777c8678de6a48d2e20122041c80","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.229","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PHvaEKYFT28qL/6tJopJQtVUY9fIRhm1wwNZ4tqiaKJUf1fRPEUFm/Q9CGBJCatn/xpF8FH82Cd1/2Gl0iTIHg==","shasum":"fa48c0c4f84584eb12b5c2b4abb35d1dbbfd6950","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.229.tgz","fileCount":6,"unpackedSize":78535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfE1FRCRA9TVsSAnZWagAAi1YP/3LN7vr4Y3drDwNnwGCg\nSTUoWxiJhBruZelPe5JUr/eiBRIDkftc6PCMkQkBHwNk6p15sNtyjFARIG83\nRFl+S5UCuRV23bu87Oa4mPET29+FVygUiOfaKTart2fvt2tuKCWXTLvIuGwp\nIHmm3PBiLi1IlWPTd1XB68E64A+p0k3hYPiUJzzvFmlikvnCw63Y+Ebe8z0m\nQTg4P4gtSqH5NfjreDb5CETJjmE+Y+pd4uB+FLnSSdd91WmWVfM+14asu+/P\n7lijE/PaynnxWk/ydhFSHCuqWf5VoFvwBcO+dHiqVuIbNVWhNn0CqfX8GF3Q\nVIdiooYkDQrIFP3CLjV+TaVzcJacv0Mv/sfkaLOL93RQIjHKqweSz6mDqpIa\nCtt4vl27fgiFz46xjZuzvlUdQhHX8e7YrhYq/xDo3c6TC5d2ChYnPN19mqcb\n7+y1MGpdv6Z61jOCO4bavAxfYfDGF5Poca16xjg1r2EUT8EM07wX/eUqu7ex\n+xkqIigMBJJsiO3Rl8mf1RktBtnd8JT1II2uJO9cxwiX0e0I2fOZ0nyJ3Q+z\nZXdrsyQl/s0gn82YZZatvyxT3AUV2XBVU7OfaJ8AkVlbnwzmpLOSS0vSgavb\ntznzpDtujZGr7/rtLgTKZKqFQ/E8+gSVwVmjTEgVh+mueWb/O8CqILu6nnVx\nLigl\r\n=XcAz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5NLj3U9wMI5/3JSYSNeFfsGfDKRP+U0CVm4G2bGM2IQIgKwWudDW2PHNc5HfS73ylNUIoosEEvd8r7bHnNA2o1bo="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.229_1595101520998_0.8387475828072024"},"_hasShrinkwrap":false},"0.3.230":{"name":"warraysorted","version":"0.3.230","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6fc2c333fe5f6116832814625864c238a0e30e4f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.230","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-hDahmQo82Q9KMOtuF1Dc5LUE4HSRx1rgr6CFm6IbgbUZ11qae/DrWS5PuhBHPs4b9yUDbblFfkujX0tmt+JJwQ==","shasum":"70e5aecdb7822254825cd68228cd993bbbe479fc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.230.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHJj2CRA9TVsSAnZWagAAtq0P+QE9X2IydbHMqz5GjiQA\nVZhj40phV7C58Hwus8F6ubtqkK3o2QwS9ntrBWUvpwqDDNoLBzg2an8K/uLj\njWt8i8uv8uoNxllayYblA8sC1Tdg4EF1V7Zhq+UH1jH3o9zEJGQAujMtcjcQ\nYXC+eIKXSnPdBd0m0/Mho4mkyc/hnKjXs5vUb4OpO/2TYlsiWZiC6NWLQCvb\nXj+hgbmubah1N28dpwaCUlfGq97WiQ9Ao2D0bvogNNeKmGsxlhBel5jlhOl6\nQIPnoopUFkInDjKg9ZrlQXzf32dwsx4kIpvUijAz5jlgmJnz1YdjzNMw95LV\nNJt8F3LcLDPiZoo5F3o4VkPCr1mEUmnuCq7lSjxKkbqS+RPWb6xdczDgoTf2\nWM+dBr1vT8p+MVguE8ffAovWVXIl5Fi+aqLdpx5hrGp2MOo1GgCBlp6pVR/a\nN+WaafALmIQBf5MhDfKB3xfQBcl7XtkBg9EULOWPpTJB1IgL4zSXUDNxtrdl\nRmpYXcW/IIsE1vsvUXfAFHKs989zkMoS/X1Xl6QkFGDiWv8ylqmHI2qBEEwi\nWcI4I5c3Tge1pC61sND4197658rAS4ZI9klb8N89fSIxAlLQWFgxdZIGDIu7\nje6sw2m4YQOf7nmhLos8RbwwNaA5XNGkYU4qDMPHcBDkSrERUjmfieeKhmg5\nF5i/\r\n=M4cZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkngkc/4uQHgvGMMj+7sGdoZrmtKtubi9a4YYgoCto2QIgCEcQ2k5v+bCV1RYVyYzIN20GE45F7qYmv8nrSLZLkFc="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.230_1595709686356_0.03564665170115111"},"_hasShrinkwrap":false},"0.3.231":{"name":"warraysorted","version":"0.3.231","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"64e82c79a2ca9d2645a453e97a52cb4f8c3140b7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.231","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-LQyYYTviWobOWm13BZamVogw/nuwEhK1NmwyQ+abBJ+b6wgrs3RKbuVq11R/J35JFczkSe+xVQGUoHun9U888Q==","shasum":"5a68b0e996f18d32b9ca278e38627566a0fb7e14","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.231.tgz","fileCount":6,"unpackedSize":78352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN+sLCRA9TVsSAnZWagAAQ/AP/0HZoDQf361IIUraoCqk\nl3bXKnxStyxUg+Ni7oJMCZ1m+ec2zbcLnglH/fbANzTwYSkdvbN44lM6CF8L\nQwy9ANxN3BaUCzJxKxdzzLWTyEHCg/XuHiRwDeYgbsczPKf0Kc/5q5SicNDl\n6o3h7aBiT+nWpb78sELUIFxSWnELFoVraSQLRWbmjfkAtFS4IMADPEKBIRWH\nApC+6dS4Rt03SZBmEkSyJVlwM66Olgh1F8ssRhCHEmN6nDK6+9MnPQ1/JyCR\n2CPpdELGsR5XspEEHzfRzJcnOOV7k3yEgwp+RS6DIKdInltI2g3bw8CqZgPy\n2ka0bpEcW/O8+aSUoqu+tKEacCTtME30yQfY9t8tMYSHTd4TV2ssQ48gayNu\nxuc2fqfzkofGB/Xt6cPDD3aXCoJJNYlWuRzseQsWmw6cpkIxCoWHoK0tS87v\nQxz1LSTKEAMZs1z4KWB7IdUXW1UUdcfxd9jYulB6ftCUHQLR7qpfm1n4rnks\nDE8G+XNMHGwm+QF16qJFPqrb2P6c2DJRsLAY+7DJx8GK+gc/rYhPXXTv7pRJ\nI7lYv3ibZzh9y3v4V+r+Njo5AjzEP5E6Sbpyez7vkBnFoYGufkSyz0PeytlM\naZgIUfF6clmShWVmHtqrZ/dwIGWWbROyGDp2kTmQb5sRmEJ4US6tMzhVTaAA\n6vRG\r\n=eaYb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu55tBjdSLYG4uXo6UhtmoAz+hbzXyKmh7/0rCJW7sdwIhAOgQrb8zj4cSV8R6tFSFHv6JGd9sSWqrInVEKzV8CKT4"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.231_1597500171226_0.3192785257642512"},"_hasShrinkwrap":false},"0.3.232":{"name":"warraysorted","version":"0.3.232","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"da598fc13507753c0e63d3b2205077fcb9c70b02","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.232","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-gflHBqbHfFHiFXFlrh25dwp10uDdK7+h99QOxfWlJoOCHkdaTPYKAMIvqWi9wqXJ+4Gc1cbBsD47HIji6vaUkw==","shasum":"b062462e377bd7502ce10c0232bf213f411ed534","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.232.tgz","fileCount":6,"unpackedSize":78352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOCRXCRA9TVsSAnZWagAA1mgP/ir4YyRrBxd4DjbLa1mb\nXPoRt+Dhigy2Q3SrOu9pk3oNsng+B6nlzWIifeAhbs27CpMNnsYAdKM0HTGO\n7JMwQMs6bWdAZpHoyYWxYqF8uATvvYQq/aUYbozSp6f33Pv3Tku0LsAzX7v6\nIC/rvrvteJxSKgL57gKDCCYNYkbSQn6uPQcHxzLRkLQyxumDlr25V52BLHuq\nij88eszacXnsFFi0M89Vi+Px/43EL061L9RFfKRhAxyGCR5nU/YNt52QBvA4\nI/AOPWAii7ftHzTYJJnGxtysRG/+Ycz2pUNud1ANC2EeWOaBkFN2J+o9kws0\nQx/qkIT7Oh9vwNyZ8PQk5moIZtgZaDqdBr4Cx5ElQ0knTF5+YOuGMBZHtsc0\nQhELtLAfsMI7s8dcg2fKPvWh3TzGZaAD6/Veh9nbEqKVm9SkI7yyPsqTm4Fh\nbmo5EzAFo7SkBZkdwHjEFibMmXkSnvyvmN1kVKDUb04yBkJz9aCtr+GB+lhy\n7gZKQFC+oeZYm1kI79VSEv0+87pQryWL/Owqzrgx+UtTsoaWljXKXLssmXje\ntLlTH2gRvj7wzQdD7kQX6y0dyeTGltD+ORo0KjO0QzdUkIGMtuG5OgO/nM19\nXeNxqbCU/XGzTAo3cIGWlc6rmm7ECHpFlIxMdE23GJoCTR4L5xh296MFPPdF\naORf\r\n=DAlV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKJxxFKFvzH+NLLqbGsGWX7YqfIvgVUh5/7SLyCtajIQIhAOCp0OMh6ZI7YuB8KbobLTV/UnkcN60j+4hbKs8cBeym"}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.232_1597514838724_0.4771747573606149"},"_hasShrinkwrap":false},"0.3.233":{"name":"warraysorted","version":"0.3.233","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b6ed014696dd96be6089bff7bcbf1e71a29d2c9c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.233","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-X3o8FgNXNZMHV/WsO+wYnwQKeMlA3LcnN5M6qdGyh7dDyJisjrAslOjzquQAZv5139X0cGJ8yJjGQomKM4z5pw==","shasum":"86d247091d897177773021dc56f988178ceb8108","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.233.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOELvCRA9TVsSAnZWagAAlpEQAJGyvtagGRfwTNY4ZZRA\n7QjrBlv6I63fDN+38mAtYk0GAaJ5sMKlQjSPzuL9d4O1/jREpj3FMj0ZBuG5\nwKvvDDpE3e1Wy/Luzz5RfeecEEiZnjMXyYu2yk4rFIrw4d6p+ca+FIw1BMhQ\nSXtTPnZEBJUVQAO6DoIaooj5wLJsgg6FFXcKSJ+me+GRrL+DJM7dxmWcIp1R\nxcE6QgsUL9OQC9Zk0V9GjPzfAgVHSgiEZRSd9gkp2Uwc1PUe7gyyWjAON2FZ\nfet9Gba1MJ35EGEr7loBiWfJKxzVTfNHhHvuA26U6Km4QshKm09B4USBbK9B\nt7xIIok2nTzz/reA61wLP5pKOEvQOZSbWV8BG5B24iSmGfPllzN0Xd6LcAD3\n86gnsd3goHIypt2xYCg0XdrqIwiVKMWTDkrVwlYzkH2r/KRYvouUpgzFWKd8\nNa4TdM2KIMS7m/bnVwaF83G4xPWL3akVVa5ivpXLslkGcyWkr3h6HQGy0tg1\ng22fgoGyyn9THUDl6bGERfVkFuq/6GIhDYlWbROPiKtd+Tp+njokMfCav9t1\nOfd5F7O8R2bSuTuAbZejB/q1RdJmaW1FmzQM9mDNTthPrVL0hj0zbXXb2plk\nHoSPwS7HGeSoWiMfH2PdhXo3ve4M3sLCjcF1NiD+a7ynil9CL9Lxc/YJKfAd\npWZL\r\n=QjeY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXu6DrrvdaO7WxhmWtyQKTqCaeysA+iobct5W1s+p8jAiEAhhkBaVE7C5VMjo0iFgVYjsSfRyLe9vAxjJ6tcS/b3sw="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.233_1597522671046_0.45981950600646515"},"_hasShrinkwrap":false},"0.3.234":{"name":"warraysorted","version":"0.3.234","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4c6c9ddd6564864cf20835d5964d16e7feea01b4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.234","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PIQCifwbN+m/po59bB7yTEwSXpLTj2mgYXTBYJi27p5J0YDrsvXaYjDW0A1a8GXFnR5ygOqFL6aWzAe1+8vGMg==","shasum":"9c8e20ae96d09c0cfbfabbfe97481730b2998201","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.234.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPSrvCRA9TVsSAnZWagAAUd8P/3kIV8IcpWccL19GIoqg\nuerAroeNuiTZvC7AIypk52MCCfgOSX5dWyi+x9utwTPDW1yaRHiJSeRIu/PP\n8AQOkzFW0t9P13CggG+fQwliXOkXVLP1XgUQmu7wZEKroizqQrnLiOYjenWQ\niDUFobGsFH2GZthm7H73E4rHYzuF+6QmJdvrAoJ5vTTZA/TLnKjmfIJILu1q\nqbFQQNO/WRkV8cOOmv9Od5Ynec1yAovLSxlKP5jitR3dkiafyumj01Jb0e1v\nHolTllsgura7cusAI8qXtN7gPxZJoslGIqzENNjkQ1/Rsk+MoHecBRQYcyMo\nPl8unFkUjT5ginA8kJIEAPMv4HZYCPkbMVmHK9A/ev0H+HMz3AJwOmMSRaR0\nax4kLvjCe3MqEPG6cWiIaOo49VYIBZO6vf0xer8uMknvLCvVao1000NPltb6\nDi6/qe4My6lDt3OrUO0wgnxjtXXggF+w8+BC8cgJ92Lj4pq3lmIghfM1EMZU\nQ7wYO4OqArIZhSxBsX9bUqKr3EfgPe+wUdPjkPE08f7x82YS43O34eEkpdbk\n4tuI/40fQ1t7r3pwHs9pvz1Bh/EPzQd0PefHN3KDmKUQDb7T6YdRoMr+2Bw0\nwbzWVsQurFmoo3rUekRmFkTcMDKTzYUR8K1hb2x8b6H//gt8ramEMb/k0KPQ\nS3oq\r\n=18Pu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEBICV4cKDmjvp7mbFHmtSwvjmn9n/6EeeEvphIQj2SXAiEAtszyEyKLl1Ipi2EZpAlOO9IqPDzef5lTLOSZBSP+wv8="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.234_1597844206623_0.5175712977008142"},"_hasShrinkwrap":false},"0.3.235":{"name":"warraysorted","version":"0.3.235","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"8047759448bfa8eddfdd3064e14493aa96fc485e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.235","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-UNxoWahyEGpCPL0QV0CWkniyF0B1vMMVphne9irp7ZCR/5U2nlFvjCFgyeEM5ZpcLCxbiMxtKU4kuU0BDSHArg==","shasum":"1b2afec006026c872d8ab04bfe099ecbe9466cfa","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.235.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP7VGCRA9TVsSAnZWagAAyksP/RFa6/bYIfVnoMmgC6IB\nD02Uvk8H4UznKj6+G4ukhc7kQnTgTPT10lQM6joiM7gyZE1o8+P3GKkYUtY7\n+NvSVS8mUSyukBa8D4GZJ/nKx+cgVVWUqRY999ZVZAC6rTegBTMP3WooYTLu\nC+OrMTG87fxTuoL0Gi17ezPnpIFJWPoBqZt1HbYQlN9APRZ+EXbsnqVdkAbt\nIU6jA6/+uU3fPVdJ+wcR1a+qzIkrB7/o0+ScGPXzt2BiLMeiBXHSG285SkCg\nWs0HgUvy6pMqIWXpsIt6XA4NH+QlwKD0rjkyWNs6KaegqaH8TKZSsy3/2Chi\nBlZInQZrzSiNdmiGUcuyVM/g28zV4qyHlcVqCOKBj6pKlt+BcL6dKtvRzYe+\ny5rAgKFXzzm2OzW4tDXHCJybc1OJEVrwQhBz6bh4M4Z7mI3xFt3Bs9Z6jAhR\nvO3WehgoyBKhpAmnS6+49Ol5oyyAoLi3gFPyG2AiutERGKYjlA5m6f0oDTEi\nVkHFXWy5xSIf6IRzUlxEjfOuggsE9y5IrJZ1ETJ/SGmf4kCvNB2lSLvYrA+q\nW7X82ZaJDonXQcykwwv/3qtss1+NC6bwqC49RdYWAVAZ0sO0joPmM3mnrN4U\nmQ7rbylSsRPQZJJSi+o/zSeW6c/vtg6eMo+smaZgl6Xv15NH5T1ZMGoVRsYM\nNWoE\r\n=vWQA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYUv/LQT6HuCTXUb9zKiStfXz2EToC41RvJg932th+kgIgTD3gjYC0qXRbyPz35R+Vpo2hz7TRo27SDcOh4LS425A="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.235_1598010693787_0.7684805023379901"},"_hasShrinkwrap":false},"0.3.236":{"name":"warraysorted","version":"0.3.236","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4fd7195a3d283c198f496f61b9acb28bace2aa62","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.236","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-p6F2JXfXhbQUrZG/cbZ5ZHCg++lUGfvRstLN3aGe65ZkCyKQGsiAR4kt3p0ibOixaQGTyjoqMy2NnOna1ALrKA==","shasum":"a7986986b36f48d607de3026607faf715618eed6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.236.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUfmACRA9TVsSAnZWagAANpIP/RJ6YmBCKWc0hDC3iWhl\n25JigsXbzxGyzqxoIl6wTfC48UQ6MGpK71poxcPHmPnisDE24VZmllLnMgkI\nS4+Q58OzNoDdd0ABerxOQqYvGQsXf1VTAErOtR/czsP4112S5V1OaUvZD6pl\nsu5sqGwHU6A/RW+zD7AfhqcvWxe7gEZfWh55xzedC4qwV+s+mOhTH1/SYXLa\nZcPnleTJAgtVzOTVSFOwr+g9X9w6svLqd+YFzhub4bp2YEOxJXl8SvZHNNPo\nctpS0RlXlG3/Dh5HCfk4ONpQfVIkH13nyq7nP4dSTndzDZKqLuma893Ljwwb\nTKEakL7HIl9+qo/BZ0PYi4c9/uaFU++NfAwgTAOAOOCR8Jbfgmb4qN3NvS28\n8818aJKVgJyymQd9HgzqWvObw0v3rgZWqYuyrLcvG3Prdh2OGj69XxiTqm2I\n56hojFSri9Dd4clZaDIOeU5DBMTaUpXwngzPgvuKLhWQ8HFMypEEBF2HRnMz\nnjtMDIZQ9ZRrZM/hYgDTvkHmoUUlzQIRrWmGM/tX1Q0Ge/kSksjZGIcdNNnq\nOsEqvmlJYE2QKKoZ27m1YWZ+rcYnL23v9XSHeXWzGnV6XsTJK3vtZ5GxT+bP\nr/IMfELaRn2IMZPJDo8dXi9yQCPf5fKWQyKKDKzntzcRqsBz4I9aMut2BFwf\n3wK6\r\n=QDVr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFO5h5i+hEkIPQX0wpBOEAAaZ3O051JZ0xvRxFDEczXfAiEA3dV5d4kvsbeR+GxT2c33uUFHb2ge9L1NlzjsoDoGR9c="}]},"maintainers":[{"name":"wandalen","email":"wtory.net@domainsbyproxy.com"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.236_1599207808345_0.5978683497745385"},"_hasShrinkwrap":false},"0.3.237":{"name":"warraysorted","version":"0.3.237","engine":"node >= 10.0.0","description":"Collection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from an","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a6ba571ceca876665525f506e9e51a6da55be866","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.237","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-b6tOc+7djuyAAeNyOVa9nXC2JN741AJJ4gN+8QtadtMEXS8A10TaX0KcRsDwIufA/NRRicCM9fmcW0Ip5BVsrw==","shasum":"1a9aed2a25bfe654f6f381365de9693ab74803c2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.237.tgz","fileCount":6,"unpackedSize":78515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZJtCRA9TVsSAnZWagAAiskP/1s3qUi37jUKRPtqWvjU\nXoTITjV7Zp9UeSkKYLsE851YOtaSd372OlVoxIJsxUiCEP+0dT6LRYnxyqLb\ndmlK9Ssw77UQJG959piaBGbMt4ZY1Nw1NOZ3CTxGtBtp/19/kfx9QdwcWUPM\nknl5bONC2KkcXcn9cH1XTeim6I8UiOtX6feXINN1KrQ2AZ5yjr66XyOkBDL5\nSIYpVj28zINa3wqC9Ei9WXbqv5O85k2iLC8KPxquAXS1khxmG7vKwVeoGlZ4\nnRa4PNJ4bR0zSayuCX9jqniQmjdAdqA8tqIQgiwQyMvaGG4bmDgw7xEHcqC/\n3XSxoZ6IYKRlwP1BNh4TZtRM0jAqRMbVnwsp2d0X3V9D90PiaosrFY+WXnSQ\nGI9HERX0Cthfv+3ebk3l+2qUmkgkR9nFRCbsQT/L4BHYijOZ1Aqeek+1SLFD\n4/TZHdf1cz7mer9npwxU4df0s5wO/JBUWca5GgoYbJCHMwaxp8THwb2tlySF\nB9A+70dtyS3spGEPeVDUvvN/mCnJlUdkecU8o5bsoJqGxAnfcnxLP5+DXBCL\nnYp9oqDLppppCz0pc0PhG4U+Yf6ZfAfNq1yRpY2EXh3mSPRpu5pv5hgU7Ai8\nqTOF79oElt4JT4Eg8zIw7FZzjVl3h7baROghypfLBenTZpBMhspaEsOFm6iy\npd+B\r\n=4E8P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDP+DmWKSWcSn9Te0WDnf/U8Blr2RpYBv1Ncr6ieaqdvAiEAuQZQvKaCmJyWd0/xWQPXWaH77RVC+86t493hR57iIfA="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.237_1602065004804_0.4486244679721252"},"_hasShrinkwrap":false},"0.3.238":{"name":"warraysorted","version":"0.3.238","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0765e8e17f676c61193710d24eee99c93900e8aa","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.238","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-xXGuD6y8Z3AnSdt4yrFYm6F/m7trgS3mG79zJV2gmqe1ShJneXU2+PsydS1FkuVaVOs9wVgm8uRDxSIRdfrfOg==","shasum":"7a1e7dfdd880962b095e40cc5cf36f4060d2b49a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.238.tgz","fileCount":6,"unpackedSize":77617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiBD0CRA9TVsSAnZWagAAeVQP/RHVI/RpgtWjgqphwwXU\nJufKAkly4arsazu9jQ9PQWfzjzW8pT+efSP6pco6jdrIT+IoXNkZ+tXTVY7g\n6KCpYvqehi7Rvv0WcKvlOSA5G4CcidVp8hkmHX2yfTuTmpfo3sxobzVQ+rb6\nC3kZRW809P30cg9w9/smlulEzGH/HrDytAhhqZPX0ik+KdTRg0B3H23PIhVF\n/ze7aVNvfh87tr85+cRI12jiw4+8VVgWo+Y0a6PO/oFWw9MukctV2DjWSTly\nrs67Cd3lpfnX8LAEaPcupSCk/BV+wmaLgFuFA9PPAZfVjQrijKk9uq0Bsvrx\nL5/rViCHI5siEAP9ZBnNXhk44iq5tdyRZRvrlp2l2vrPMJl9EBd+eB3uzODr\nPaoQa5zrplF7TkEmfb1LKwDrQiX1kH7BKee//4RY5qg/E/EvYFumjuh8bHgR\nqXFahIrnDc3+2LjEArbMvNb9e6qV0b5oOWMKAwRIwIVtOdSWqsKE6jwd2EA8\nGw2V3AnuDM/Ao0qogUaYbpEdhIrjaJxp1XH/kdNyfXB/FOuwBSHGJmOcBc8r\nCF55KfvG4E2nZAunSkvzRFMPueCgnMDOoTEoZQlEw5z0/hubC+22+JKrvuJA\n4F2zWBVHg0S1SBkAzY49z7AfScM+fuXa4R6fkNpNKKN0w1JpL4xVKN1mQaQ6\nlLZy\r\n=unv+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH9WaqCYYqHVjCUZgqzaPCYchpVuieSTfoIXSMFhpLJaAiEAizGQZgIGbug9zouOTfjLW+2y5QaNGUW7I/0sLUGeRGU="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.238_1602752755987_0.7426442725177393"},"_hasShrinkwrap":false},"0.3.239":{"name":"warraysorted","version":"0.3.239","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6a2ff26a7259faa67fb91c55e627a3d8dafff489","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.239","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-wR+osfEF1ryziWOPV5hnv9R/+2f31wlzcYFfS7FlN7AwEA3oMY9gG5ywLQIV+5AUUrAysJizK3chUakd1UjgRg==","shasum":"1fe6fa956e0bc117dfa927efe0a8d4db68fa6649","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.239.tgz","fileCount":6,"unpackedSize":78665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjslCCRA9TVsSAnZWagAAi3MP+QDtlaeB7GGmYQbUPel1\nARWoEXpwMz/VLleA4lhFoBwTPyDyfQEdlnBhV3xO6fqEDhMCAOTdvufgR/TI\nTmBD8sm/ESIjevWzyBaeSMtFeCVjnqFhHQPAsn8iiAXDbd3AezWHWDeD/c1o\nIwLE8yMRZWFja/HpMa5b5eGVPkVges+YbYqaYNjC3GrWjBP4waOc2rZ1mcBN\nzKE5+DblkCQdEA0YHKolpDAsKJWW/W7umcp0SWVtIHtdWdPLcJPpBVLha+P7\n67hWv5QKsyMA/rF3lr3UxKmkugg6V5Ez/s17EIm/42v8/K9nWYO/OotDPXsp\n3K/v7S6pU0sTMXVsYGdeMNG1Pk9lm1M4q9oExyPypUe11WOxHtPSlAxBuOWi\nNZtAooI3zdgLEIjtuyBgGWzxw29IEp8oGtHV6p+xO2/0zbjTrplwAbDK5ZZC\nh5ATk+5HjHAORdwG1Cj/a01N/cCnruswg0EN6ajYYebXPnKPcukqUyRykcnY\nTfeQXLeJkVxN+2WgKr7yYRAMKCNFcRTZHkyJYp9WmXQXWK5iFlHiffyp+nMY\nI2wsqNt3H3r81+cZS9RuqMG+AxXYaZb2nNnD7b4gH0tjWhPeL5jS47L2Vknn\n/QBjnmQ6I+Wux3VpoACtN9qUfl3QqWjQz3hXEfoRKrMk/m8cncubNDgNXHRo\ntG5a\r\n=iqdG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0/BebexSQxEM127DbhXIpIXMV/zx/b2rbNqtHft2aqQIgD91VYh5xrKuRqdJh+WZAn1s9KRm3tDPadcVGG8vHuDE="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.239_1603193154039_0.8804456208527216"},"_hasShrinkwrap":false},"0.3.240":{"name":"warraysorted","version":"0.3.240","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1e18f7adee0ca9f3f58180bb2e3b567515ef0c96","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.240","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-JbPMKIjmWKtbSZjhNAukP1EMNWQ5Ist8JJIutJRjfM5PMFVq+RcfIitcq5X4oLbIfx33QtNFxK4RpHKkq97SMw==","shasum":"8084b979caeda1021791ce8ecbd1d8fe5f5d1b91","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.240.tgz","fileCount":6,"unpackedSize":78605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkdqsCRA9TVsSAnZWagAA/W8P/j4WMTRS2pUtRewKkRae\nRZOTIck6F3a0pQUlxLqOWoIf9SIxZQLubWEKn7omPJFmpcLlgoO/PkzgpJvx\nk911rcSU1ur+UX8nny1fIYpwyfTTRoIxHpXMM0xyA0fv0lpl6jheeNus4vV2\nhSCcFWP9/K4SsuU68LjdGcey3fTF970HSgoUwALDmyRM/x0XrtY0P96bpfPC\n0ab52Wzhvh6Dy/snV9pMa5jxNUWNqJuTv5Fe96XrobBrRhwQn9Wi+I3Qog4v\nCeJMD6KcdK88i4CEObHo27VQawb8aNGEZdqHgXg35D7zYMDLfaZ4c2UvKj6D\nR2C+JjZbQgsGi213zvpxMAaBxhKolyyKMXmdkP32wvlaJdm/U3lITGVuD8dE\nPm5tmGBFkMRVyNoBo9FRbdE6GfGfpqI+/DUGK3l4aF90CqvuvifM2nh7HRZE\nxFo16FGSudb3x/v06dwLRxXRu725t8QbWO1PNhi/5Ww9yWOA6ysioQxRmue9\nacdadf3nHUAANP4gqGIzI5fDCy3OTEql3b9+lmSxT7iBLN8I5M38bQFMfuVq\ndSdUYgSdaUjqzErpFhsupzz3Su/Hg3Su3j+NuL1jhp5KPeEVcv0QBBp+p3zv\nbwC8dPb26p9tsW0hTyO2QkereILP9hX77qL3UBo4dgRscDtixmetA8zQRda8\nj0+i\r\n=Vfdv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC543Xr2vu+5Asw5KS2+2gYon792gaEYk8z7rFCfHfJhgIgY88ZgXXpcqKATU0u+wdJ+o23vZrVOZR8bswXudB0EH8="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.240_1603394220151_0.7803276370313499"},"_hasShrinkwrap":false},"0.3.241":{"name":"warraysorted","version":"0.3.241","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"7e300e64d7bb4a536126e822686fd0a60be6262c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.241","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-wqbSHT7OwxXnDjq+pxn461uWeB+CTnABABS9Y9uFZgFl+KwHWB94AEgVRhjK//1gr0Um6qUFNcdm3uR6iXqXRg==","shasum":"061cf1964fb81722308f9fe462bdd59fb2b06188","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.241.tgz","fileCount":6,"unpackedSize":78605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkr1+CRA9TVsSAnZWagAAo44P/3C6pWycMPYNIlwdJKp3\nXJOkWtbRUzRkVYB/B6HypSixmAyv6UVp2azElAI8XtSPvdVD+zwLUz5PVaep\n1/0nNFLUm5Gig+f70D8pWUDH7s+v/oVmKd5tj+NZSx2zSNkpwRu7JgSPDjq3\nnkDceQWr5GyHCef32h5GtT7CX1RjjTNRefqxTZBSAMNEDBjyXfH3K1O2LlzX\n5G+r+USoajTQl0yCCYOsZ5+94ikGX1scpynqT/YmI3qO1MqOvtKUh/cAwH08\nhFPQczPqNK3/wZel/Q/UK7ZNF3Zl49/d7NnCnLH9J/UbN1qBbs7BWIZbsMc+\nSSnmDpp0Zeeo1O9XPtsgaSmBZO2QZovaS8m+d45vroYNEFTxTgfhXIsBIofN\nZla5BFlmghnBRnFwJSih2n5cDM+A/3PvIcxhBrZfU+BVGk0Jhgg7VGrH0Twr\nVWodY1Qh5X3Z3vPMuK5mxm0T7ijF/UxfIN2nZxhYFwV5FugPCEnrU2jT32V2\nilhG005wHlSEgLwWMUQF9K0MZdLn5O3GsICk/oAb8zkWtNn4TkvAd4bUEMH2\nE90pA/bUrNWg6B7tDx2vSusPQ/qBo7GvjfKCU6D0XqGUZ1fOQ+7qacNE16x7\nPp0BPYC3QC6c4rgVbpAeNxcOdIkEM3icsyTK8OM1+hXkB2w5jc+HEmerKF+3\nzaCW\r\n=BLyD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBS7UakcgtfVsGybfijX2oo89h501J870XexZAZIU34hAiEAs803/KINdHAy+k21C8k2EJVZFvrw5My6xdHkNx86Kcw="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.241_1603452286196_0.43268184186681635"},"_hasShrinkwrap":false},"0.3.242":{"name":"warraysorted","version":"0.3.242","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"675637acbb96d7dbb88159c92b3a87aede557942","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.242","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5L+CHCie6J31JzyIjsuzOYtQj1VMFE/OEgNei4+LZG5dztTI6tao5bhuKIGNJ4WOYwmbOKvaDA+2q1bKcyeLoA==","shasum":"35ac9e80a9d5c752893b02fb981354644725d689","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.242.tgz","fileCount":6,"unpackedSize":78605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflrn1CRA9TVsSAnZWagAAEoAQAIi3m2PGbReNaV8vWuOs\npgA27+5vB8Q9sg3fM47cZCse8iiT27Pu0pttWnJQs9ODgsvaAx/IkLig2dpY\nexu5VKmnUEPI57KjrVh7ini1Cv8z4gb0m9eHcbXgv+1n46T+fFyYnM6hsYKc\nFOwloVIx05OhClgexU4r799Az64nycqSKLRR/m+uLff4Cwtrc4duUL5Hb8ER\nv+iK1Pd6PfBmBNg1WLApgg1DciCwhWfRk2ZgxefsQv1vIIgYEk0ufRTTYsIg\n2YMNn5IHScowYpGnYdDEWWQ1DbitZT98wHeDcdcPAtBpgdaGJBTfE3iSpHyt\ny5QBQOpLkgc1fJmlLt1dKbnto8JLdSxt1uTtYOmulMrvqhjuRG/+7SdBxD/5\n4i+1L6Cnv16Ije49mclGGlDEqm4FjfZR5BOPbK1onnQQCm9gUgI2+MlfukD+\newf7kIg/NFUyoo0nbdqgeYA4+/3v5M3ivPiRauHZ+oqjc/B9A8UKtrDO4ve3\nYOIgEXHQhRkK5WNfNRtXwdyw5HEMci8RYq8spMTwWc7+sPqdeqVoc9RaChgc\nSAlY4W4eC38t/lFqAQh2SKY3Vyiysut0QUJplivHEaggOS6Z9iD+AqwsxcQq\naaCmAjTC2GnuuVneUKXEFTa7VkZkweXZ3mJkfpzOF3Ahbx8I5FV656Ikr4A8\no5S2\r\n=sOHt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAeCKqKv4HgGxLdk9G4CrrL/UMmkrymCg9S2tGHe/VcjAiBhwZTHCItvnpfjaAIMg7BLFcfTa+t9Cip4EXoFTIlSjw=="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.242_1603713525442_0.6514478468566178"},"_hasShrinkwrap":false},"0.3.243":{"name":"warraysorted","version":"0.3.243","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c085de69ab5df9b798639f89a9dc3b42bb8d7953","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.243","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-duthdLVJ9XNfpwlkfPeRmPHkoxjHwyfPgrDMh46kSJNe4U7nKWUwWVFNgkj6+akIjYsSMIFl5igYVtDlS78rIg==","shasum":"84d4aae8b7da77e29854966f751e03e6456f8bb0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.243.tgz","fileCount":6,"unpackedSize":78605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmbOOCRA9TVsSAnZWagAAeFsP/0ockSDY+hqhetGZrgii\nJ/Zi59r9/u9SAJo7uT4tE1GUxxHsYb/hjwr6v2lTjHwUNE0GgiZD/0WaTghx\na0pY6ETVr+dwlWbk2X9DYNQGFN1tfeA5QnkawFuWJ6dh7HYMksKPGvxDE1eo\nV1HF2VBwhFjigINCb49nx7JReccKSVGrf5cL0skTELLwBDoD2DOrh2D5sa3l\nu23F0MkEVANqxva6sZwNfZDn3ZNmO/7p01uvz5nhhufanotU9QxbXBkBpD/U\nnXB9uSgaWzHHdT5GICdUYu49smrthMgWHPwmnUC/8/6Su2r7B+NO2Q2XYy67\ngUUKfLtei0rpkUDZwup7FpYK9eQOSqskyOM3suazM0ekEQIbQ2FX/zcPRdxQ\nYpYNj6D5E5VmmLew/+KtY+d2FronD+ChpPag1ohBEK9pLixwwkUqcKZ36Law\n1QoCNiemJaZ6VOzhWaqOZulF60le4BhB8OvkiQ/Kg8DXt4MfHOcQYV/2ZJkS\n1GcapDB1+tCHjyUygeBq5xl8dZ/u4/EEEizoWnzPvt8gsycAVujF8pHJYD3B\numEh+cabiODoAZ6Y71iEC0yndy6IpMbQPF8p9mnfng6c0XOyYoou5cwtMc1c\nH6wenwFtXFB06faUcj/WHcXw82ImhR94PsvRqdKT9H6Wqn//inxQVIHdZM54\n9V7z\r\n=GSFO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGkQOLhVXtP3B/bx5jINbqGOYc3+E5S7yKojEL9r9HVwIgZOQ4dDJqs+H2y0IsLdaHSmrrLzZv0v3w9hRXnVR07ac="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.243_1603908494262_0.007996697303427336"},"_hasShrinkwrap":false},"0.3.244":{"name":"warraysorted","version":"0.3.244","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5c0e9b94b43cb6f03ae4ff96cd7cc5157f5b8c32","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.244","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-TDeyOqUx2loklTFa/I7YnRo4rnSiaCHPuJB5NQzkINCFBISHfd8cmhzO7U3+ypk9Q7Ess3K9d50wROn00KOXuA==","shasum":"973fd4aed9e47d47ce976f3128273a83f7db1f2b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.244.tgz","fileCount":6,"unpackedSize":78605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnXaCCRA9TVsSAnZWagAAJeUP/3IQ5u3QvY4uqJK3NxUy\nPKRPUXpQ9TLDUPp/Bh1V1gMiwqpdINEik35w211f9d7Zf1usrjRFtRrXlB0C\n0+h562bi69K5B6wy/JevF3mxilfNjfNycUZkp4WR1zly3dSXNqKCWogZxG1Y\nwGAhVhC20lVyP+SI0qQgOkygJQbSwqa1+olMIu05SyqKWttnEo76ReagijDP\nut3gXrmjyszvxEDl0Qy05RrOdB14as+EwZpcE4eRUGlSvlR4GlZjqcA99plA\ngB7dx0BeWPwPuXtytWqWaCey1aayZJxTGfkPrWMkWPQ3QqCFMeJofTOqoBu1\nsIV89HaSVWmJaEWq8v+2uHQTy8DAArg7Qn6TUGZBSHaO0++Yml8GJBfFzb+3\nQtvZ5DtE0DyYdtxqdN2BTJnvUIfwKNmn5lWO3upFsI9yzlBt6xhaVBzvqHot\nxmxiZPt9PuJyO+D8FYzbFiE0YoYVS01zYtMx4K3glmcag3xjdv8DziSjtUhe\ne4goOlO9ySZiv3tr5oA6B5AtU3gJx3PU5ElBlGWQa9zupDflAQ0o28sqDIMd\npAHZiJYFJX29VX+kIXa7aU/7EpzWrEZR5dq/cL9rgNgSJonBk0afnU9F9+3C\n6Sd/99N0nRDnTBSHV4HLqifGQmDrvaUf+nj8L1bZzm90UI0unAiZv6pVGuKy\nPL2R\r\n=hpM6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAryZEI3y+orc8/BtklMiTY55HX6ITTfKdz/I27uttOjAiAjomJhEQhEzFaf0EtQe9Nt+Qflf+ufc3LSnsaEEVg66g=="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.244_1604155009351_0.5974489567259105"},"_hasShrinkwrap":false},"0.3.245":{"name":"warraysorted","version":"0.3.245","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e2077ea218ef2d4ae613ec1b72a68d0e8e571efe","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.245","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-eVl0KXYSlhpuhfnKy/iP9KhjFPq5ayOTaSW1wwVhugLRBoKZkF2v8gTZSg/wVqBhwLm+XnGsv0/dgEOoxyX7eA==","shasum":"1797b67b6ff9c7d8e7810556343570b4a4a6b96a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.245.tgz","fileCount":6,"unpackedSize":78712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoALUCRA9TVsSAnZWagAAHzcP/ie87Sy/4g6uU4vw2ypF\nK7C9ogckG8kpUL/mYOYX+ZKcBOFlh3FJsdsxbIFOO6Enck+57ZQFxXWMw7Ll\np2ZYmuD8l2OziUQJIZ/XX0FJf2qt6b8HkpZEI8ekisYlXndJwq/CS3hiP+QY\nSvFQ6+irT5/D7zImJfLt2UFbaeS5lUTzT2bj9FTVMpCh2+fOpe9tTtcjgbdz\nLFGTUp2XeCphJKkubpM++OcQ3i0TgQZQz3GAmyu4KUw73BGkWrGqKm40dbQS\nyOgyosB+/oW+75WCy2N+4QSizgZ6nGvXonC6tgLAqKyXtMUKH+sbZs7mY7tw\nd2PYizz0X5kvpglE49+xrbA88f7TmGsrpdR8UfR/bwpYChNEgrtKIp1vEv6f\nRF1xUp36VSjJZtr2rvDCTXLWMxNefb95TudFvhQncr6lGG3BeAgOZIiy+nMN\nQvYnL02oILOTtpsbHUsInPySM4dZolvMzHZ4Ggz8Om4GoEGrAXUn8riyASYa\nJcyUTVhyE+tJpOCtR+mHavVn4yFO3WoaqGUqiPUuLxGggj7zYFb2GlXkKdyY\nkSwQ5uGpQn2WUzMdNBd7BPfGIS8nDFWsLFrnvbHmapbLactJEpP4yQi5dJbJ\nPqtz/P0u6DnF1S/n8nVfflMUd3fxfZRFeRtAonP/6N8RG1+wsFsQYx5Sy407\nk21P\r\n=TjHv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkvbgr008EuD+MS52lAMhxUm7ZzR+Q/h8Blika0YimsAiEAi2NeyX52Ww6p8PFUaYAY+x0fZwWfzp29szGtfcdsTc0="}]},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.245_1604322004013_0.5368321954898685"},"_hasShrinkwrap":false},"0.3.246":{"name":"warraysorted","version":"0.3.246","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f954cef5493b6d3e804243604a526598e127a8c7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.246","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-YsEjGzm8j6lHz+MTgL+GATHuPcpIswVXflXLzv0fFi5gCn5QKGq6ig1FJ5YLqNJVpfuUYbr0IM/tLgYO0IIeTA==","shasum":"91781ce7de0fac84245382a132a7e1e0d921fddf","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.246.tgz","fileCount":6,"unpackedSize":79760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpRY+CRA9TVsSAnZWagAAbxAP/2K0wXprR5+NBj+j0sGE\nddRtQItwz5HgzqdjKFYoUQJo5GHAVTO/+PZMZjanuCK6/hBvy40zwAd8N272\nYEmBjk8yJbB7oWm+KvdAAWUH4bjej0meK7KE/othUdtUMo4zIE+QuuTbpHQX\nHhSwL7jrtmEINRLJPB13xg/rUvGqhGLFUov0YNqaoI8Mp8HEaf526vrJ9OWi\nWt9UqfPK4ZXCZu7/WgTZUekcKVSQdgjY70l3LIhmd0DA+hq6Q6Yer7qVEBfc\naUcA+mTiMExkz1HasPPlrNcaEp0UzmJjTjjg5dWZ0mirEpIahYreiEEd0Oiz\nqiShtrwpyh7/nrECQU2bpoyRID5e/JStsYbWlsC5MW4gfCaiaGT5/LavQvxU\nnec65mSKCxSDDgUIaiScjuMqDasFr8DuJ6xP4RgyEaSLXtBua7JmYv/GN15I\nFH/+hisjMCOTkcb33Wyqw3NaXCLW3vUf3xXeI0XzLZwzwujiYiirRWhX4Hfr\n6evEWKfapE8CbgoZ1q9SBYmMOZ669i3GkHOHGY1YRIbfURMt2XWaSQD15v6w\n+moPMz3+LloNdp1OfphbBCe/dzgvSfcG6uOFuWvdAoTZWoogdRlMe7BOJeke\ndN6T506oxnzB9BylEy9KHNZbmNCxQUYnppGcFaWyr1s+Lte8M0fqSK+5pOdy\nsxLX\r\n=oH3K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD8bbh5lXskL3JrzZIrybqYBh0hcAwTMNiWuj01VYW+AIhAIUz0GHeXgaUN1Y1vWGlad6PDZ6cYG9xZDAB2DzWg3a/"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.246_1604654653575_0.24194987997127582"},"_hasShrinkwrap":false},"0.3.247":{"name":"warraysorted","version":"0.3.247","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c74371de1ebfc08256990fdea9ef824873ab067e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.247","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-QRCJ8ID+eDwar0Og46/8rTEV6IUni9HOJNEoJKMeOXXXcyAw0OmM3bb9Nn/Va0F2Hp55Ey/5XxssfUTWFea2CA==","shasum":"60e2bc8f35285b8c0150eb63d7f8c7b88339c7a1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.247.tgz","fileCount":6,"unpackedSize":79700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrT1ECRA9TVsSAnZWagAABpUP/3Tm6BZVQ+wXB7JfMmWO\nFC6ddlT2+/KLJwQcVf9cNTS8mMFkf0Zp+opR91Twy091iicrueVtbmMceFPI\nEP/JP6sV0uNCKduNe3hsZJROMS4ZlN77wyanUklcC1+8tlWVgtAhuCmoI1At\nIm5dWtgfluMPcVX/1yXLPYBDEbaehh9qzsNALqzZ9ULDp/jdYuipe8P73yW5\nMrTijUUh7v3C50lflMGRIoievzHjzn/pqC6ie7z+I5Fyn9Bn/wNS4cuhC/Br\nxCW7LwoXh27AYz+YUuaCkcG26uVf0mkom9YxyYsTBHML1JDjcWQmPIp9Cva2\ndjz6yfB1WItQ3t13UXl2ngVd+g6MCbfZK4pjpwuxzLoBQkXdeBLz1M+0mBU7\na77tP5Y1D/LdYzSkq2x1q9SsMopnKbD/nA2gDuqHI1vfuUghSqazrvGsQiQN\n5Vxef/pOKVycHkd6v9xBwaW+EKEVidEYA06GFUXdDgOpnxFWkYlO62TaqzJJ\nhBQXtmvEBONKx4Jtwr+B6N5YvxJ3kgi44g5YykqC4D54UAxFFrXpciEYHwA5\naaJaQWtm2j0CivHo2nZKXtULiNJ+bmaoyZTwVvbWlWCsr3KrX+GXqYS9qc9A\nlZ3vWWvxNvnu/isEM8ZDMGWxx3XDrOdW/PgqjvyIACGwFv+YcC5TQLVIpQUB\nz2c/\r\n=IHQO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHC80k7O2SwVSl+0p+KMOvGT4SJuescwQoV7WyvPuiMmAiBNvWFh+IaSQfqrJoDm/0XowxyUkWsQ5bzoxausmFPNaQ=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.247_1605188931753_0.13687506578597652"},"_hasShrinkwrap":false},"0.3.248":{"name":"warraysorted","version":"0.3.248","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4b6d6ff1f6cf506e8b2b0699f1d1f032aeb15b71","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.248","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-WRSYp2cVOPDR9bNU21xHuKHfsHCFMf4JXIGXb4K0NcmaBJBDtg0fDwDc5K4S8evQi6gzZQhV/c4f+igpNolyog==","shasum":"0f484096b2e2a0c7e6af91764946ff576832f49b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.248.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftkrTCRA9TVsSAnZWagAAKWcP/2po67ta3Cl9Rxto1/zV\n+gFvqmMiv0nwm9FR2OZTOVNsZZckvQ92kenepSxCNdKgi30vQFgJqMGvNEtz\n4wlQDOTV+CjE820UlHt0ICC6k0jiGxqeHiJs6jHyZnhlhoKAcjTpFvXNHwjX\nWmATVriZz2ZITRu4fz04Xjcc5RGHh08hd9UQs7HKKdLXY08Uns63ggcZmmr7\nwKFBHfa7yQEAEr9BJ9WLZErIBpIhvJ5FKwbmoexWjP4gkAM2fQbNpEJDQ6gI\nIQvkjy7GfR6cWJkyQdcBd4bq04rQBpDYfUKFMfeBt3b3vrfqHE5fYtad+hiF\nSMOgBhLMbvExF+PTt6VoAzRIJaqBW3ESCP8sCzumR3qWUetIyZuu7rxKJbUU\npPmL7nCjzLhRwYC4M5pXSpivTWuTr75CqL7ao6X2CvljdMb/9aHDreo1kZ7y\ngFs2FXBzBBD3InzXorK5fmpx1bm074g2p5aPyYuj+pr9U0pppOtHPiZjuSu1\nkWqk9h83/CN4OyCzdeUYA5ZHDP7xnHnoMtRrYpsBqGCz+LlXDTHu9C01roew\n5Waa/sJDFfc8BRjyzbUYc1H/C7uhE9RN8X89BWm+hdXS+rxy7nG3diEYA/Oq\nxyJ39G1pS5sxsHDQj1e1bSWRdruXKbqvJguJBTSt9pgF00FMv+2jwE17wm6n\nXzmb\r\n=vFWx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh7r2aZxLSY/+t4GB9Xt2/+GUyUBMZTB61RqFBPKfFxgIgFkgZ0dFSyui4bZKVaMhcsViaJtgyHxycUSVrS9DmEG8="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.248_1605782226431_0.3167842840945525"},"_hasShrinkwrap":false},"0.3.249":{"name":"warraysorted","version":"0.3.249","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"96abcabcc56e9f0217ef33770be52fb96410798d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.249","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-UiBuJF5FgcMJZtEdJHZ7hjopnXnFHmA6PIm3rbECVMwRCuHkyJgO6i9IkcCCYeHmCcXmvY/VPs6+jf1qZDDaLA==","shasum":"095c1bfb59ce58ea93390ec0288a1efb3e0ca685","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.249.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft2iECRA9TVsSAnZWagAA7R0P/REy3L8FVnk8rthE5l1e\nzgEjLON6r4p47aygDb8//gFSEZB/SWHXgZDnd8MRyBnXHIW+8OshGihoH1io\n0YaK1xXZxhnMGX92+KweKTkEZpmNXXGkpbfnEVCGvPcynQxxscYWx3xYcH7a\nRom4uDyEJfThnlRvTrick/L6mszfvCgIB0P2os8ibmR9c903etEcWl5qGowe\nGN6O6YQtbjSxibLtz8n0RSGnXFI7WNMzdNGbW5EpAaGFX33qsJ/+yM2lLmdp\nkyX9sapql/SbCiX0t7NdDbmKtUZF2XQVlVxxPK9fzou5jObOJLK5suZuzcq7\nwZOKIpdluGASZNPG9SLCoh1gBmPvEEhrYojRoTla0ZkHFrykNNrsBr5CwnSw\nEwSJ/62VPZtgXswzup5UrPsL86BwIlfXlQIqIR0l2x84hHmTLrvOTc28xA03\nDxB3F5Pe/hGJkPUC83vv6HMZIGOioE9GADH2rZYis9iZWFFm97llSFJWxZRC\nEHtOUCBWUjyaWT4R6wkgxCgini/WY8vQalkmkkOQ7cIglHQHIJ3vGc0ZTmTL\nKnKY8eL9bYGASLlycaVgRRdSY27hjy5hRjt+JE+75kacL3ToG3iDZVfRq3w+\ngu2xacdVxGOp7VcwiWQ+7+t5ZOv3Nk3+EN6YXaDqFJ0fR4c+BM7dOATPPnoc\nAuG7\r\n=1bZS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiIz6Z6no3pEoftHqjdeiuEtiez6ebW9DX0VyxKh5u+wIgFuQjp23hELlLFV/Bn39UIo9ecYbhMOb6/ms5SxNaEgY="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.249_1605855363718_0.9655947759642143"},"_hasShrinkwrap":false},"0.3.250":{"name":"warraysorted","version":"0.3.250","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"fe25ee1b9ffc8153313382516418d9968e7c66a0","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.250","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-P3Wy1IOwJfSWu6CNjVuReDYD3KEPYb8TKTjxFiGmkOMC1yvXYO0n/R1di4CNGH62l/qQfvpBJ2xUVoa4rrsZUw==","shasum":"0ee5e3437d48125e5af250d0cb6b23ddda66a8f7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.250.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvmOeCRA9TVsSAnZWagAAoBYP/2YA0g5EuREl4ZB7cWHJ\nPBPNs/hntOxe91VcnT2hCBKGFIuibjLu3wchw0OvoN80NM1SeLlGBWKTU6f5\nykofokoOIyHy3uL6RxPM72zscBRzv4L2zF7uYC6c/U4frIx/AphOwXkYSWU2\nIxvEud2QBYR421WRQWkPECBErrtqatxw1vXlqwS19T9xN2K16Hqsop9LPJlZ\nWZ4Hopm+NIjBHnhhRSGzQo6nkYcvjEAVtxLOWHMhollskBkEe4IYvjBsKPRB\nHikH1OQWuoEdMu71+/D2GvzOzJmjAlzv+Fusxm88A8E2RrZEwkfhVUlbtTYB\nnYz8H24HtlAKQ1ATpd645NHoMF5nruMPOMf/e5VpP0Fk/KuUjw/N92JmZ2mf\nzz8l0SLPJ7UN7denf0aiW/LeN8Cyg9iNIppjcWvxnJNXUOfGSX2JkVWUt2LL\naOXK22kFokgtZjz6Qg9CNWDErqHxFH+F7M4FgOv9fk4W7SDWpS7q8u3ftrY+\nvDr4KvZFFvS9GL49KkqaXQInlGkaUbTsTacZNg9kx8JzSLASkN8Zlk2L6usO\nhRXPeIhSzJI0+Vn7y512JKXbMDepdebttH2A0lOosNNSTFunqDMnXnT7qehv\neKU9rHv/i808JrhIpXhkj76FC6ERf85bAOvTmlh6ZDJOfKHe5CvD19roIZ8e\nPjMT\r\n=xPp8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiIkGLMhaTH9m9UlgKwLtNgD3u/4xEGgM72gek5Q7rHAiEA6rdQI4sskl+yJp0WvWuDiXskVhB/u0a5oByxA6LJCtA="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.250_1606312861806_0.44542490440962346"},"_hasShrinkwrap":false},"0.3.251":{"name":"warraysorted","version":"0.3.251","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"45938285557bc5a75941e8c8bc53473174f87cff","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.251","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-vT5VXuFqEe0QstozB+TyUPemE1r2MYVIp0IiHXPk0gr+4c9L+gkIvbEVeC9TkluGb+8Vj++cC+jZKvZzNcjDZA==","shasum":"fad2ea59ec10af64cb65c63172ceb4926f87eecb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.251.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxKMMCRA9TVsSAnZWagAAswIP/3nnBdsVsWo0DxqspJo2\nA4+4QdSWj7MAbP5DaePrGlTZ2rrMZ63H2qf8GZOJ/sBBv0n/1xd//cF4ISMo\n2RyoMGlNyc2nbnHNhW1XAv7QMPwVwncyDeNlh+cUCfuNqo0836SDiVUkh6RV\numR22rUMeqVpF6hr8VVJC0Y51HXgA3HVXoTC+Z+ApwNfxesPyFnOoCQiBjEO\nIcymGq5o/D1G9g+v8DN+im8WJz+40QHgz4R+F3it/NwqJLiGkh0It2yJJzgL\n+xoipQZjz1EIYCRmWsZQxvHmo8v5xMta9ggV5LhVksoZMh2Ict4afzp9axcH\nU/021xZJGQU6RviTmYntLN2G3CXEmzh12zOBYG2H5yloaqQ3xGY6NRF6Tt7y\nJa5qVpmaKIwi3i9eMwxOYMKgFaTMMjhSuKjtV3SAmJAjBh6uKpobkLOOPvd8\nvHp5Z0dWsLnbthkZ5kAOjPp+W6GXJwvUD6Lr1QWYGD4T/lCqQPy+wyZ2iu+v\np/fTIIpIFuvpbBsczgAvu/pvLF2BksI28REXOf0SFFOgXnH2dxyP81MKA2yz\n8oJCxNWQRXNpHSj1EreLPOevI7Uq8KS39zyZOcVU6nGbthFLcqsRzXNg2ibJ\n9NTa/c9g10MfK+SSAzRqyq6hyEJ6Ug/OIWRXj71iV3XCbJNOj2JOZJkjTV6a\nYRAK\r\n=hZ2T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOTMM4IiV9CvaG/vrbaxyISwiRUYyj2w/NuTG6C5U2zAiBdyM1LCjmJXjBsAYhCZc1NWSSKPPsef7m6OUAHGQ90IA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.251_1606722316277_0.09727303055633296"},"_hasShrinkwrap":false},"0.3.252":{"name":"warraysorted","version":"0.3.252","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"11dc932fb7c892be74201c9573cb6086b880d281","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.252","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-pJHsUBZduN0+8ZhuG37iWbLdrVj/jIA10w+VB+N1i2lJLClRli/SV/GIXq9MlgrpID5IgFhl0C+vcO9C2NNbaA==","shasum":"a1505b85fa39a9dd91e0c0be7ec23847a0ccbb41","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.252.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf07Y8CRA9TVsSAnZWagAA58AP/RnSIT83C7Bl4kkeL94t\nd2SW1Y7TMFH9q9SJ1FF5C4gzaQlxmXeoXtCUve6uqFNDm8cjrayl25RRAQAq\nSOTTHo7KbSRcwcpuubxVQjhjp53VGoYcxqWeyOu5aLNMqVVbzQ6SitLJE0YO\n7D/gdHq6MspI7Vmn6NWi4VeEIZk57kjpr48UfLvuHm2LAasVvNZMiUKASMEg\nsNvjZRb6kh/PbffpcDqZCbw8ciIg9MDxwmE8L/mWLfpqlpcFC9NXiW0SYvPg\nElSRPMLXkbbVrrbyMVPt8bOje24RrNjXRmDOEwT1zzspPTeAxA85OAmJGjND\nUwNeVVMbsc+nDgcrW9yhZqN14jBgC9Ijq+4/+PmnRalJTQyyFbgZVk+MD012\nC4jZoR5XnY2+CHlYJUFfQ7ONrDidoHvJxq0bfKAWd1p/CBeLIigQeQNrQfsp\nHzPwEqAsZoNEJYtEN14KJJ3tU+sU98Uhh3u+Dpj7RWOV2zA0a+ajkyMTUw2n\nh1+vk+C3foW80Cyno3o5H8A+mP/h9fyPr2W1ldkORSnHLJij7rsaYN+3QV2x\njRCjyROWX9E05+X9DpWuN1gZElBauWXT+lEcV68K08lcSVgVayuMUiXNyYu5\ncS+hEaV6jxfRY7il1a9ovaS0PUrchDpNn3vNfp5PHaUdFlZ6CV43aMUXCYAL\nfPeW\r\n=GYw0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmL/kT+vh7C+I8mP0hFvpD2GW2r6i4IY+EwxG68gbgWAiEA3+72yDR6e4mc1AITpdniG76HMnyXPWS1//Oqy/dyShY="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.252_1607710268290_0.545097118746563"},"_hasShrinkwrap":false},"0.3.253":{"name":"warraysorted","version":"0.3.253","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"bc2bcb662355e53d453eeb347195dd57072527df","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.253","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-YwNo8FxGGnpoqrOoaQsFvxevT9xmlUgmfg5eH2nH8jvBxJxej/kcMoBpxQEm5EvmZChU9Vq4QARC3H9JDAO7Wg==","shasum":"7c5231a6ffc9c263adb7325d34400d4a07c0f8fb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.253.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3mYwCRA9TVsSAnZWagAAE70P/ilf3KBpug2a14xqU8UW\nGvx/18AMypifsbrxlo/T3jKR1eIaiidJdpHhrSANT9W921UN4sIG0+EGuYQ3\n5nkK3lPjNAS4stQBgsJsq51r43C01bv2QSyx/8AlpjxIDzsX6OhhdMWsI364\nGTgnqxhMdei91OLaLfeGg/oLM1akY9awFS45hM54lVHWMxN53ABS0lfgAb7I\n7dds5CJeZlvQIYw/BRzi4fiBkqp7w2Pt6Bl+OyaB18jc/Njh7GfPnB9hx5lV\nz5cdtCn6MNc913Uekh7vFbihppfeRgz7gdxcxlyVZOBwbQ5JWzh/BYeVY3P7\nVoOESF2CGVsE2XCr8DYxH6jzB/KK963MuYDvYZBL9Gs2aotIt6zvYGDbWSri\naAf+kvIfATP1NFt+mMyXRy6QPFnbKbZPlVtyZ8yd4UCaIukpBxL24Jp0B9wj\nWk0YTWkb6ZxhjwDIjrxmK+KxLQFW68tE4zBqKLpHFhkeJ8HlYxxcRE6SY0ji\nlOhCx9gY6qb6atEmwguX584xPL2J4zLnPkuYFU5mz+yorwL5u/MT7359Le5S\n1vN/4KgP7wNBQbtf0OaZvqEdblj1XcscH304LKmUl8P3DXCmyvNdIvmOA8bW\nGQ1LBHdlNQ+ee4qXX840yeatiaB7bOqYvo6j8ALXnSKp/Mx/N6f1UeJ8ITGa\nK/0/\r\n=NUSR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEzW+duglPf6KNNa1SLgb7h/CZtA45RPOGhhYkcSJtJ8AiEA2kfwHNl0LSkoqBNIzbpdHCzyR30CnRNQfaH7FzjXK/c="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.253_1608410672186_0.8741603713860469"},"_hasShrinkwrap":false},"0.3.254":{"name":"warraysorted","version":"0.3.254","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f2802e0ccbad95d542e181cf9fae1686295b559a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.254","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Gj7NPjkzTw3KKKClISNirSqOjlDQ9YxRaeXJZpP6b+Zlh7Ocz0qxjufb2mFT3xtOeGt34S9FTd+XubslZy6mLA==","shasum":"410256827c69b20fbb88716626af14805f42ee2f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.254.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4Ka2CRA9TVsSAnZWagAAKLkQAI/SrjjAOzbdJL5u5FE7\nPrrMrHP2J9qrDeso2PPGb0S7Efka5yYg5XUkeRZIN62DwiupJepzqEtnuDkJ\nyhrDbSZkpnl8PtSJtsQjFF55/OMmbD1Qq5+RaLJ9246Oon68dWRrTNC1AaxL\nq8gS9+epV+pjFgXCrV/CwIHwnCYnlZ6B9CbQQn7wFv5K3PigzkmTOgy5BIk0\n/aA46A0KcgHy/SPyrj4+tAU6QrbdB9dK/utSQLvLONt8R/PtIK67RXMpsF0I\nGtXS0nORMekwZUvg2WEEA75aSW0cmLAb/91SOvK26R0/Jp/CvCqgEca915GU\nY67x5g3Xop4htcr8Rq6ASsOoAR/a14u5wqbEFjc8cp369rkYoGJ5Ej1sYWil\nTop5JBde5KR/QRI7cka04LFtF59ryytZpbJRA0kDu7V1miKiopNwWvsQgSoS\n/aGrUWPrkxnapugowiu6UqoQXNdP1mp5RnxSIwBgjUwK2wBIjqrXY4VEy+A0\njpuNWJFEzAKJl7Oyj6VG72a0XZsOD9otGbaujwMZ1I2doD4hmn0aiouy5OFQ\n/BKr9JwIELKFP/14MJ2+n50c1IzfYnS/g2d1LFrS4FXTDmCrffwJVySgOrUO\ntJ+O8hpOcJUGbqgHK1T3ynfDWw39Q/ZarsYI+YGOVINUW7c1eMK6fb2qmZH1\nTo+J\r\n=a7IH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqXhbPKV2vEHlwOCGeqlgGh0nVU4hjkJzEYhk7GbApcAiEAhhqU+A8F1D2bM/qizhb92qZl65gT8iTUqlrByuHH53A="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.254_1608558261996_0.058387109161359696"},"_hasShrinkwrap":false},"0.3.255":{"name":"warraysorted","version":"0.3.255","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1b5fabd50a9fca5a07d5512a6922fa9f16d51a66","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.255","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5dRrajFfDJJqEnb0rL18GW5QP5Jf2hgBtA4q2dBEeIGnt10tJfs+5PjVLoAciyHkuHFFr42nLHA8AftQ9WRKgA==","shasum":"510f58840e295be22979defbd35eb12f2213db35","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.255.tgz","fileCount":6,"unpackedSize":79892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4sZQCRA9TVsSAnZWagAASyYP/3wTC4OQm8wbE8GXrjA9\nPFHZVJBRO7QOHp68QCEkZQfcJBMGEzdEME5/EMPm9IJSbcy2kZ7yfUX4dPsH\nKQaMna+TYqFchs/svT68KzfoR1gu6IWTcwqQ9PEtGGHCLrs0gZkPRfIkGlCV\nKCQkJZdRNKcwwh0zsazMf2GRJxNUm8J7MPpe1UoTUpMLuCyqJVJoWkvraie3\n4QR5mnCP/KDILDFyqNQQsG0ou3tsxWZtXRTg7zhHXAWSNeJ0h9FO6EwfdtNJ\nRp+R33w5Non+TKmBtXIX89bePIu0ppkN9fs7vJGZmlwv2sFvdtYBqdmaZjVL\nvWpTNfSrNa3fhignNHsOpYgcxql2h0p5Qlw98ew6WwMB35aOr9yra4kx+gD4\n1x5tsqmIBnZsCWxk7C9EYoTb6jTu8dpeRUhS2FkbiNr2yr28DtbkNnp6/Z0R\nf7d7LRDvRdtmmk2iiiL8JG00DQRn5hRY0LaD+SLYxTLHaavV2HRFqBzUJseJ\nuJGCfXiO/um0W/HxO60EMlCabIlsdQg25AU3OnJ7JeiJQ2sqgpbAeeW5Ts+S\nNlKUBxMd2TSUiJIdZJ/ufQC3THNn5yxxA09e+CPohNCYBds8B65ShogFk4wJ\nxdklO0e0NhzM4SQWARvBWHGN9hcW/s8nVvypY/CxU37VIDJU8rMKkZjGZ3/2\nD+76\r\n=XaoC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG2xpfAnvFmrcZBucqxPy6/v+txEPqnvMp7B/mpzAIXKAiEAuO+ICE5QzjfzEvv7oku2ponp80w3c6D19nLsnVCHUOU="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.255_1608697423764_0.3038831212323301"},"_hasShrinkwrap":false},"0.3.256":{"name":"warraysorted","version":"0.3.256","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1e6a219a5abea41742796b496d69aca7de42c468","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.256","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-vfJWgeRi1QOlz2jyZmLprww3rSjIV3kfJFLxpir4z9lO0WS3yhSFf5DeOjc267xGAwcBGqOT/cv1Scz9aQENuw==","shasum":"d263b052e51a85f323efa9b869131e6873058837","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.256.tgz","fileCount":6,"unpackedSize":79656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+1GpCRA9TVsSAnZWagAAJYQQAIdHuiIJZU29dTuQumGb\n3Nxx0qtGKzGjyagUXmBO58ib/P0hd90toFBJAWSM3oStdzPfuw3dfbndve/I\nXD1J1MmRIoMoDYyyGRqhg9Bp39LF3zz9oZxvrG4WzPKRVSj165o7FzpBB/0a\nKwqzaZcxq6QDfh2StHye/TJrD1Kxfd9AJIyTKbf3Csx6nP2L4hGNxht+YY68\ndjonL7mJz5FZ3zeA1siVMU/ysYR1Gi5//fivgHTFCXj+knatnArIubsWjN6+\nXpiMUgbJPYxlvvx3VaSlzeAx/NmBjrFARRqa8LqJiruMRotWydFSRuWwjAXk\nW1m25l325msKA21QvsPui1tmr/sYs2jK49UwymE2R9lI4UHx9LKF3BLzN+cN\ndxxILIvtIPfzLxqxaJu4DqIV4thZncUehHhz93ro3Jls900rJ7Mgj4tg9+Kt\nP+SD6EbD6vfMTi/6O/xW6MBDkGJuhOGvTbmi7Itfw5sffP7wNZry421QAfUe\nfRifE9WPvlyobY77TW3Z43smqiV4qyJ7GJYPzq/fm/K0JSHqRKLQFtnC+gTk\nikoc06knAuQ4HtLpIrFOubPbWrTP3+4FsBKSU2XHY7eYa0+3pAViJc885vbL\nX3BiroIjfq6iT5rtSkhJ5j1oezK173ZQ0mpWgdBziQYe8N74aRhuoKmPGe5g\n6f7u\r\n=7Y1r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyzLXdVshRLDEP0A+TmMBoSmmpVs51assPnBAXZt76RgIgDd0Li46c/iKLpC8/CIt6Fb734LsqQFcNFJlpFsBpGO8="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.256_1610305960501_0.6000152475163139"},"_hasShrinkwrap":false},"0.3.257":{"name":"warraysorted","version":"0.3.257","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"54ffad4672db9a501f28d85987c09b7929244c65","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.257","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-qiwK3hdvI/L+M67FO3OyfJ7WRhJBQQEcBnPBXOGeCcCMYAPEOL6IcwPSjUcAnas5vXkFbmi6xtqPsDGHIJ9DmQ==","shasum":"d359eef02d76e96cb9f4b47f99c8e4174c197686","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.257.tgz","fileCount":6,"unpackedSize":79656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/wXxCRA9TVsSAnZWagAAbmMQAJG/CuRAVM/mlzhHGWy2\njtXETYYiA2e111/oSJeuF00004Bk+l1rMrSmvee7mMOI+dX01AxguTlfzuRB\nzjSv4PY+Yi5lwkfWIpDLFBsmccMueq4WGNcM+vmHAhoDYxB1LSSUzGQeFm64\nMMJl00A8DEMcxWdArP0tKY30SW03yHD2DJ1ZmbkaXgW0L/XwkW00y3xdIJQd\nwNMVFykGI5caKy1MVna6wdHAFHLO/7pbHUsnziYRmAFYUEUX9VVdMLE6G4lT\nJmz7KzcSYFhplnWB7oGqcHq+bs3lWUo4AawSlR7KEbbZmtN4+kxgLszsOMdr\ntufwvD6hUjpes4/wZQwHq0gGaKVbCTKT6hdnCqCiV72hvKKyQ+ZXASe4Nqmx\n4dHH/+MbwVuAI+qCtBHZUF8cix6X5lehX+jQz447OP6zfYXCXAYQTkHsFVBc\nXQ8+Q0CB0cYPRBhI0W4xCyYsTlTSc+EHyq70JgLMf2yREjPRC87k9JCi4OFC\n8fM4vc3OGAtHY90d7EI6svVAr+JXn5heB9P7F0y5JUxPmztrFddHfjNxkmab\nef1x033ITmxBE37+jxSzFSsQv8wP1eu3WtEooP3iP0JqOuIuW0DpwmZO1laq\nfKypyvdoNDgCw1H38WAoqbm5JKEBn1mhBug62EyqxO+TEnfz4eb3NNSE62JY\nBToU\r\n=eowK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrBwqcZs2VOooHUHZqJmZ1aEMNqjiw+U6iFn1eBCu6JAiBUMP25Mmk+d9t8/ZzL+gR5rNGAck4exoEXHsD3Nm8HWA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.257_1610548721317_0.5801942163874103"},"_hasShrinkwrap":false},"0.3.258":{"name":"warraysorted","version":"0.3.258","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e8c4388d7fe687176b3cd37e746bf1eb31f8d2ca","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.258","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PWrjNc5ZFwgLMhlsp6XW3umZKe9nPMu2yjgTlOxkCOuM+GA4RrJnzL9hT/dKM1/uJ5HOib2RJ5ZiW67cQ2YDTQ==","shasum":"cca10e3dcc718c508cd96f97df9d0ff2929b075b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.258.tgz","fileCount":6,"unpackedSize":79656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCbyWCRA9TVsSAnZWagAA13cP/39Sotq2gIN06F0vWxS+\nc/qBZ4jhecJCk6Cv9z49vWEDKVrUJ3FW6+0eHw8cyJ2ilz5p+wXyy39iCJPK\n35Wt8irSzA9X99EKO7wdLsjsG7POyjQ9ZuqmebDwIodvaLt+MznUsopLat7X\no8856eNTNN0fCCnaVMtjYPU0D/2hrmjL3mR1nsks70WbiyJSCS8lwLf2jjJo\nocGI9Q1DcWrQS+QE6UxwxFgI3XqIML87i8VNolzak66qX+QAtkWygWCDjGfd\nicttMLuuYAN4veZFlzR/ZRkS7PPLZAF2MIgnVChCas2WUm4XrSuRewYJLMFn\nrlCa0WHIJLt1sP6Zt9NCg+EcOXDpuJi3zyabMeM7I7ORxE8d7jWicp5sbvQs\nq4/+Fprej0b9V5+n6ebQfIqaebKTJtlVsUN5HJo65DLiDwLtsuWYbUvoWm5I\n1f9LCiHBX3ppt9rFNGLeljuA20XSi0aF87lF6jIZbTiAZZGEAslqcSpraT+L\nzMvaygiWn9VJKdeja8vrC+llFKKl925ohCkmITCmgY7R5Ffk5p2QfteCRRNB\nl8w7WF23iqxMi0Kfh3QypabcfUpQ7zeyWeS3vhKw9IwjVOSZd6tAJSc5w4U0\nlfv59o0+BDdy5gLjAo96KVrsd3xFoQdh96Hys0e98uoCpFjDC/ntDFxdEvJT\nIaIb\r\n=YQZ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQRz/WJ7K7njKlcxEsZ4y+1AWylqKfsafI14r0m+3eLAIgDO7jl4NA8d+5JNpvCcr36FKZ4X8ME7daQSC6i3yXgE8="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.258_1611250837400_0.7119658163017604"},"_hasShrinkwrap":false},"0.3.259":{"name":"warraysorted","version":"0.3.259","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b492f5a5cd80670f4b772d6fc28db6c4cb66e85d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.259","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-LMM3rrQaZJkwgE72jgZYooGuG8bsFIcBrKmwdeeepz+M0uhEqzaUn5NsWe+pblOAfeembItHA9A1Cak7z+9oXw==","shasum":"66cdcef8125e937cb2e268790d1004217f4a1f54","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.259.tgz","fileCount":6,"unpackedSize":79656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCrJ2CRA9TVsSAnZWagAAI1QQAJGxxgpQP9OgGDC4x5CM\n8uy4AiZWkLw2sPGpJXbKLfjcJ/r7AvEkiV26LTiDmHi+d+VCvhoJ7HOhlAlM\noAteJ4YeX0n5e3zrUH741y3w8GKN+40BTDybYYcCwIyYMD+KxjDWDk06Pquz\noo0NnYU1b99GGZCkP7NQHOp54rsvJkFlUsn8pQhX/raNywEKgm9v0Lq78z0/\nSJUh8YvZTA6nOqSYn18j5mQ3o0BMdWX3f9y0zV6KJyWF23Q82vlECrCFcYpO\nPB8VTM43SsaIoMBWVPQZMHI89iP41RzrA3zOnypy0vYOlKxE5L3284u9dDoz\ndqWBrPkVeoVLCuu9NQD0FTop8G/hNA3NM6+wm63/ZDJn824bYfcrWhOqiPJt\nAO+YXCbjzhiz/DNKxcF6TqJi/HjywjgzlsDdWNGm4mpcs7K2NE+njRbkt1Ev\noNt4fUe2FwBCfj2Bs1O/SrF6wRRY+mpIXsSHY56p0ssauB5GRhgQOMfLtl1U\n6+BdZef8UNMf4BgzqGx5NaiNQbbPHSxNKIb+tyi1wVWhcjwS55RNGQ4bmWhk\n1wv7cnwjBzm43pmbxvrcSlhS0myFoGJOLG4KPUa1DgU5gR50KSepjqG7p/0s\nEU5rEwIvXecvWRr5kv0hNvebRk6eTn4x9x76YTmKqXokgpRNqqUxivJKxp77\nJ4R4\r\n=1iF/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnprD4KyLV5ZxnQ2g2NhMNAd6TzSC0raUm7EpMnFzjZwIgHCbIePWuO9s7lgvHnLHtJTg7uBfgu3kEvSk3NfMWlFk="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.259_1611313782321_0.41096478178436757"},"_hasShrinkwrap":false},"0.3.260":{"name":"warraysorted","version":"0.3.260","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","warraysorted":"file:.","wTesting":"alpha"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4f17d3c839d531db37c87342d4a38acaf28eed88","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.260","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-B5zbbaZnGCzzmznDGBd9RibJ/Oci90aNu6r7kTNkDOeZBh0hyPXlZhQZg763otzBUyTyHK6M6/ZYfDIb/QKFIw==","shasum":"439d1ac428ad36c786f58915cb3bc27841ee02ed","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.260.tgz","fileCount":6,"unpackedSize":79656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCw3gCRA9TVsSAnZWagAA7J0P/3d4H1tkZxpnv5SuSIxD\nHiwL6x37XNSdE+cfS29CH230wHchFfoCFW133fFQwjKgZ/cSRofQI546Se5L\nLYm3qtZ/NkTwYO8QZWJUKCkLyxNOz2JGnWHEVGanLyQWis/uOmgmXfliIRNU\nGGW/2+jbY4WDDyrqYXaVlp9Q+eM1uqZXCafMOwd7areWgZRziBGjrnH427jc\nNUSnPKRTX2gPN6BG5sYbRKLPhvw86j02GyKlU+7sMtoM4OryF8lYKrTdDr/E\nZ81Emzzk7uof8NHcWj7wvCLGpxuCkL4BR6aeBujhTyZLy59ho7SstDuSc+av\no6fC1xlm0+/2NPjmDfJsz94xJqSJD9V1iv4lWU9JPVRcxxa79YaebQpMotdR\nMkoksEY3VrjuCRvqUGYAWABs+ecnPToe2q3yH3aQH1wFX6s3qHTcdL3HoAv+\nRMUAszq4Job1TImPOim0EE9PAFHCuJwS3XvWOPrVSXt6bmBSkpep/AqIrk0k\nZIq801V0nvUrb5kqvdgMZN6U/+m+sxviKvJGpaLNFeoYz2n/FJ1OTir077Bt\nULptsoe+SFR+FLRkaOoFlG+Z6NGkbihPKOlBkNuDPCDwll5wwi/G6QVJ8Khj\nyJFiSyrl+7CKbAh2HFu0Qm2iaMkOtLJ3Db4/MtsD0mPXRDqXeU54klFxbxhq\nHNjL\r\n=fWXM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsGWaeGGGVmM0dDcMARfcmeSz2+UWjLGhTqxIsTNc5OgIhAMAIArz5FTux1gFBGSZ0nFc4ur81H9wF+8CdNzIE0ujJ"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.260_1611337183996_0.0342350527028199"},"_hasShrinkwrap":false},"0.3.261":{"name":"warraysorted","version":"0.3.261","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"91ad83f809903ee606fb2678177fa25d4d94c7dc","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.261","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-+tg4f4XgwcI8Cj+sykWr61hRczwTQBQIknWz4F/CJkeP/m0l1cTJfu4WejgdKzLeacacHT5RSqmPo7nbssQZeQ==","shasum":"b5a7cbdbac594a905836161edb91d4f3fd49ecd8","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.261.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDX3OCRA9TVsSAnZWagAAkF8QAIVIcd2X4sgIqk98xqLS\nkUipaf6BbCO5RdBPIAX7ItftKxLBKhEPNK/7geFYZxJNCx8kxtvKzyxuPosQ\n7npbbuYYPffgPjgco2XWl/WrbcgTVvfRbCsX2TAo99dTXdIeOennT91qhMMa\nzxjPoavwSwXs9/uDUrLf/6U0ffvHINJhs9vxlcuE/5OqmawuTURudSZHPwCI\n0+hDFmoEEtKE50Vyb0PF9w1uA3j1OfIFCPO1MhwbItsH6pn4V/PmOHvOoARf\noBo98aivs3NKstz4x/iIN+XY2jtcnzrkR094GyMbQebBbzwIynbD5XwONkk1\nXmWNWuYPjitnCnncoZGCaU3Kl2SdbQVtaGFC2ii98EwMWfadccnNsaO5bKKD\n+IX4yiNbPESXggLdPlChr8XTOeIuuas9oRKJrR/KrjZZ0mcgBpJBilmuMDhc\nNj/gg9tAlLl1Xql8HMsYLaHOjIGM0gqujxV2gy4wFRdXPhySCbGlp5f26L9b\nXjBovFG2XHszCrVgvtvhD3HCAkXIF8LB263QRR/LqHW29th7x7CeZOgx7wQA\n+iNLLFtdZfqwnHgfmdkWJTR9gecb3KdzdKSPoqtxAe2A6XTjUyIwoGUdBwxl\nNPzC+ZVcoauXtFz04FYvp38gZFRbIv7yHwqdL+CY5I9xvyi6pVP/5nC9lMgL\n3hyL\r\n=ztVS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHzeLMIXRrOJ1TZ+dClECW46TtxCS56/MUZQfGphZBs0AiBNfxzFAiK24aXx9JfZZX3MevBa/nBkZ/H5or1S8r+rXA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.261_1611496910258_0.9748977906499627"},"_hasShrinkwrap":false},"0.3.262":{"name":"warraysorted","version":"0.3.262","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6f91841cf8ca657dd8de91be9165815e675c54d4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.262","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-BJpYn+8XSi6oEH3qMMmK567LRxIrZTfC1fjgTfwba0Yv1w9kUoxeQLLF99cafxgmv6rgL0Rjg7995NdB4/OQ9Q==","shasum":"aa8f5420aa6478f00bdd4acc6bccafb67566b66e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.262.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDxbLCRA9TVsSAnZWagAAAKIP/jwlWeKSuXDsg7FOMVy/\nH4HozneOAMeUqFjOEyilGpGxa+8UhMGvtR7AAOpym9/mjj5K3ZhGoPQcQFuq\nKxr3eINiHVNx/3mJNsqvG5uWFM/3IFekHjBAJzk6kbssTpQH8UOpJw1Uynam\ny2pTRYz6TVsHwyGT2QBxGKrRSNoSeiHUrJY98JSYQDdMNM/GCSMxfF6QcWrh\n4wtZe9eLpyblj8Mj9JUbOWI0jti6/+SAaVbf00fJhCQlmPFmLhINkdyQRzkN\nrB5zWb+25tiDGqzsQSRkkvF/XwrUYGkNrrf4LlGvfADlry+avlJbI/4aoEIj\nU2zPX/92Bm/ZH1tVZnSviPTgdY6YIiTwFZgwk/elLkvhNH04RXnQk4vfCwDV\nvLTXasosMpAbSdCfy0nIa1Avi1qWNF5qGuf22GJyAtiuF1kmCLhOT2786DyV\n9fVw1BSVNwrI01FTQn3xPyROUvXwYrz//1PgURQdgVwuArMnHoT8WqL5SDw1\n+AZQ6ruzHGVxVPtGzf362fnPGM71Fkd76VQ9U9leaEL6XSQvpzOW7atDOonM\nv+3A7+Ot9FnpKC09kuOQUCUJIPYx3KfP0KTTlBGvnP4bDDshcax1bBxIxqxg\nNptE+lkWroqKGLZWK9QHs3rswAn+z+LPoKwT5/PtEdVBHHdiMzAd+GHWR5IR\nGMMf\r\n=190+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdMTWcT8LCf4/9WpB8Qi+xLYr0zx/VZNBW2/lWELSIiAiEAt789torH14brTdqTAqTudB0gyZKaEuR5O8bh6C6Dx1s="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.262_1611601611010_0.39207552856129557"},"_hasShrinkwrap":false},"0.3.263":{"name":"warraysorted","version":"0.3.263","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"8a1023881bd325100d378dfa96ed24179db89378","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.263","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dfcP2VsRsBYrOt9tp7bNHo0HaKGNF5qko5luD3DGXXoJH/xl9+4nGRhYZdtAtBaAE26iBDMotCx3bKSUD9J5eQ==","shasum":"8e61f6c9a523e0ff475962d90dd21a37f4b281a7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.263.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEE7ECRA9TVsSAnZWagAAgPUP/Au448UgJGQxR6pdd97v\njnWoVkPgsU2sZWrW047ceKG2UbSmukV2m3mEeT+N3Ef1kMbkUMri8dIhCbIi\nXh0u05XYycSBkfMP+EdItHkxSxQKuRMTetXAC6fS4GF+t4M5nrDLr30PrTRd\nHT+Wn+qdvh3Y7RI4HwBizGNmMvIAMBEuNwy4fyRHcJmYbGZe3k4bUzPRqlmB\nkMni9KB/x9vadixZy29yPD/CskE4z4quWs2SbFTIbzN9oh73ysGmcCX7oj/t\n9BUvpjIakFcmqcFdRP6y+EbbFTHp862OsmRKlZJvKUpgGubegPWokavm/NVj\ndyLqxA4z61wP7OCmxaVV6BYE0eYHoQRIC0F/gR2AsoyuKZnXMfa9WvcRhC08\n2YcJthJYwY8Go99wQY/MWqxKVTnAERurE52Q6dNINAyuCsZRApUEM1zYO4V3\niNFp9q6pz2/r4BpPl89zZ2HGjExDvVyS8uXTvCaDWJyHM6bE5alWw87uZ8q/\nJx4vklZJ/4cXoelCG1l8aN3zXaWjZ1GwgpOECr0Xx873UuohnbygnTLahazK\ny0kj4NKWKY16NFSdX+kGExE4pPOJtEDoDkcQ0V8uhd7KpGlpbiC+FO5zsDDh\n9Rb2oIwq/9ng5LNwP/RY1LDj2LwVVKL7aJTADr8vs3qDljWGSIWNwzZnp8GN\nB5tQ\r\n=e1+/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1paVHUXJIVSswRR2JOqVOqMrNtxWvZLiSycAaw7AxqAiEAp4wYYFJeLLN/ZDHSlkQ9fG43UMyF5sldnn+ktB10uzM="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.263_1611681475865_0.814465792171593"},"_hasShrinkwrap":false},"0.3.264":{"name":"warraysorted","version":"0.3.264","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"796a109d3982d485330c45aed7ca513ad14af175","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.264","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-au2uT1Za308Gwi/JFWG2xDhrCCXb1IEWAjJb6vgW4NuN9J35ChiH8ux74LCXwyBdEpagLF9pSaSfB1teX8L+yA==","shasum":"0175d20bfdaec9989fd2d33076dc5b7e038df54d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.264.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEZh6CRA9TVsSAnZWagAAhgQQAI81+0aSiaXoupUHZcaT\nVdLmOK7kWpX9X3acZcClVhLpwolnAU3Q4E5BEBZOGtk9Ww7ql+B2zutEm8jz\n9zRMTolTwMXQDNL0mhnXL5lcYM+RuRieBA67JMQxmr3aYTO9fDa9jDKyxzg8\nyqwzBEPpxTDpmhNqWKHrJfQZ7URrUtR+jf1i02Nw2qMs/tJtDf+tQZEaW0c6\ngBtrdLBo5I/sI07PCceazvpbGn6CM23cBa9DLLBZBPEQEDYpcNk79T8yo6FM\niQ0Rk9IY34leYO1m2uDMyAqzqFq4Tmkro1bGthM6efF954C3cUNEb8U1wbVj\nDWKO+0RrntPyu8jXoEGIifl4F7uY70AUwHth7M18PzXjPCMySeIUDMZKqGVo\nQDBeXxpKdC5mHRTMnZnWFComZfgnApj92bFwuSZVzL08L4fMwNomJe1b7zEq\nmVMuBjIwwJNYBjCVpEuKb3ojFO+gJ9q6iVzrw4lJ0BLoyhLHmynUXxxvBfEk\nQhyUO4alps3VehEHBSfEGEwIfqT+c+ItuGsjPph6zbcqFyTvdmHbWafmE2lc\nLB2yYw4mmmMqY1Wp9aMmU8Bp8O9n+Iz0FZ5T4UpAae/G5Ast8pv2GwDAOdPZ\ndGbWa/CFjq2lmsg8xvTN7q1wKf7BO60+AWEgxn0OBjftFLGPRKaILsVYnfVS\nVClZ\r\n=K01o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBXxNLmde7BWCJswmJu6eRG2NakAfLWfAl4qdwWRHpiAAiBFFw7bGxDaIffIPvVjQ7Kl3OFvb9nQraIZk+ldOlxlBg=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.264_1611765881964_0.3165432050881989"},"_hasShrinkwrap":false},"0.3.265":{"name":"warraysorted","version":"0.3.265","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c7f17e8cc35d3a5dacf0128d5a6927bcf5a03b40","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.265","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Q7e9vNYaGgu5Pri04ha11AC+eWQZ7DWFTtQU/uOIfq6NA/mQUGPEBPbGfDr/BhAXQFkr7Af3QAm07H8clNGVpA==","shasum":"6a9ca9bb872a61ef0ff35c4936a7f07ff2710402","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.265.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEvTnCRA9TVsSAnZWagAAkTgP/2dBX8mBtDKrmgOkVVtN\ncXn7pl4K5iL7CRnPRY3dvjcZZ5HP5NvRx0DK+H/ulL4BFDcqun8K1/6UT+bG\nEypw4QQVlnDAvQJseWwtQzfT+DeZePW4v/1LKmi3Ypw1V7aIWCv9CD7mc5Hj\nApiyVmIcUkf4FeUf9zF8SM4BBxp11mL/42MAxGZotsKWW+J7p39oxVBPEfzs\nrLQ/w8hcTqxJNl7qYdzVtGiwbHoKnmWQCg6tIrLcGrLP1pbLyfiZs6PMM4U+\nqmLotZRMAjKbVfD0vJ/V8gu4SZc7GZLCEwAVjdN9qPjXxTobJe4SpqUp5oaO\n80s8JNPhL++jaKhM2+2LqGubEPV8HtY3GLqpyzne2aIfkq2zVb22fcnJIabt\nauXmvEgoCuxT86XcHtYrbT5X6ZdHdxMmhcNVbIFOiSgXkp10fP+Lhu6Dmbaq\n9DAro9Zk6eBAyvrXpiAG3zDdDkDRvdA/44YQeuuNzh6c9ml51LpmOjqbA32t\nb02PsMKFyP/+Q1nmyHoFYHkLjRLZEt23dr0T2r5cGgjwkFr95LinVC+eZLX0\naOt9oIQMmbR6NcdB7Hnp7BokHR8T8/IXsW60Ji6GbGyB1B0A2GHX/vSVQT+8\nsPvrhb894HxQG9g5rYtr2cXLKjiTnHGhByk3Es21CMtrizJpFn11HOwEyDXi\nOiuu\r\n=ossj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzIJrojH4PVGHKI5DPSAZOPhGrW3zb6rGPv5yCKLmDAgIhAIzTFI81T83msq874j/HjUFNMReALFJXPuxXvXdLrE7e"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.265_1611855079191_0.43884893282995896"},"_hasShrinkwrap":false},"0.3.266":{"name":"warraysorted","version":"0.3.266","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f13042312ce9d905f418b144ba64f57cda365ce3","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.266","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-as0fOXAXwr8fF98mDPYdh2/as2ObleJ1+VgdzvCFs62iztIlCRCz93xoNI0QYqRk8a4mleIeYeyj+neQVIZgVg==","shasum":"53280f621a07c9805ad13cf8837f15e1c9d82b49","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.266.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE6BpCRA9TVsSAnZWagAACAYP/0OSptjc3FFuh7p2ZDgz\nb7uYQYneKy2ccYQZn1es2VHFVuPwrYhpC4b3M2Wsr2fZhR6mJUDHemZqz0ms\neratECJQVww/IYBEd4Ls6eXJU2unw7m/uHsx0mh3Mh2UW9JSOS2+Vbpwk4Yf\nHFMVRaGB2YNYxhVqtU800WjneZyPSSiGGN5Cpc2UoBU6EOoedGds98WQdUBf\nhgEpXGHNOip5PBOaZollK3A5UyRNnFf//ciHjH08TKz5vjsvRAa0QDxxAnoJ\nBHeCCpk6ClJ1xb9004JMXyT2STFiuOY6NP95kwDCm6BWfzs2nW7yfFRnKUyX\n/qFcr+OBqHihrccO3v2Y9y43Gzr4cRKjCdAn9yjYSDlPk0MZFQdyNFJ0+x1i\nxSBi1TkVgFpph7iq5r4DS1K9Ljlgy7Xbg4cBOO0bK+F407fGZTvPewdWH8LZ\n2/qLukwwsclGSdfkDJpOhUHSRolL/dVtji6CXvkwKdprcaLKTzY8znTapSyC\n38PDAebcydXJDocrJn9G+owvpt2mDYfjDUtluUEYxzFf9gBjfRewFG7uf2/G\nrRN/3i6skzJ/wGIdSqkhM8keWa5KYdlUNz5DIKtm5sLIc26GZxHbf4BzGT96\n8AjO1UUwcF4N4GtYi99XPFEVuV6Qq7sgUtbdZoiHWH/h5FbaNcVJYgnnnICa\nn0ol\r\n=JKf1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl5nO7FWEPrvq4jPL/BhsWsWGrfz2/5KhSwsRMZ7mEpwIgekY8xDMYu+ykSfslVm8qJFdx0CzV55LHJR86ZW9uUws="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.266_1611898985272_0.5331934008230159"},"_hasShrinkwrap":false},"0.3.267":{"name":"warraysorted","version":"0.3.267","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"20de8dc0d86456facbc0c51871e81e76514e10b3","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.267","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-1aiDahWfdb/vo/t0jPAC5Zxcrh80zb7MhOzFm+53MmxvrIYIT4qOPtGy5wRH13A8OJSvrxGJj+va1Z5FyKbokw==","shasum":"8cf7c49c6d85f178d0e0b663e03257c54928a224","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.267.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFCROCRA9TVsSAnZWagAATykP/2mrfNXCN1GgDYdXj7HC\nqoVnmrlIcDN26Uo23WkY8Y8ZmzvUDouadN/BELfh5eZYXLGZps7ys/PKWmIo\nMC5wJaLjdPotzY+zMAs+XXipdc7AJYBfs+80iUKAvyKNrkLgv0Y14b6JmHzK\nrZlmRyTDPkbROOBt8hd0BCEDmeSjlhEugU5+J63Oe4GfX8MT2SEEWhkVxqIq\nbuvs9R7I+rs/fJJt3TUT86zdn0vSVX5nP5rc3/+OOyxdvopsa5hjgZKnYyfw\nHZb0PndFTrC9xF96oZNOre2plqZPBtmjdmwRCQJK9W3RMffxTpH0raAKNdJj\nuRpjqQrhqmnIBzC2/ZqINKUna1QY+EBW444NOqmwetxLtw9llHmx8cgMHDmG\njYc0qASQESgYNXcs2SGJWoPwYXnO3vgWbPEEa+yy6csXdy4BILBw9xqJZKd3\nhBgdea1h3LI3FRVOMgZpfI2gvqfybw+KEYHryJt5rPumgndCA1B49UkHdGuE\n9lKwuQ4kR5KkNZ5BaSZ0nNPDVMWdy+EjRa/Q5ZYUJVoJEj9L39yvhL7AJ9uh\n8Ie0xAPSqHtFQWLPmn3tDmfa/kk1VcuVyUgy503nx4BgHSqkFbfGzPrSq7xK\nAKFwiNmNGdV4hYAF/5lBmESm4Wrv8h2Jq6W3LNyZDVz/Mik5Ni8/pDM3/ifX\ngV8R\r\n=nDpm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFwKMEjHrkyHNOQNxVYGge93rwkbAar6x4POQg1pvS7OAiBCnusr64bZ9B1H/OsBRK118yHxyGabTEzhCk+bEy59RA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.267_1611932750434_0.9011586602873833"},"_hasShrinkwrap":false},"0.3.268":{"name":"warraysorted","version":"0.3.268","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c6beb2593c723cf8ce6f5e86c35f9c863011737f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.268","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-utdRBXIpQ9XAqfrGJ3BM/RdBau5BmdDIach86M2C1afUKKhH05xV12UHmM/by76T4OURfYVowlbrbqQym+84DQ==","shasum":"3023dd214c5351338c99b485999b8a0bb5a4eecd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.268.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFDPJCRA9TVsSAnZWagAA2NQQAIomTaOB9XKP2MNS6Z23\ns8cLnXUz4VnYG4UAXljR4olMd8bBwepgX2Z1Akhy2iXnw+cDicQQgjp4AaUN\nCN2HHeiaSfaWfAH7kl9Xk27F8dTjywuuSpLQ1yoeRUxkgAEayKpbjXN+ElDf\ndx9bC+S3NUXSgZ+dFH6+hq5MkLU8bxlIh5wWr3QxvAbNJ7eVQ4rwqhf8SnXx\nPXf9FBi05mRjjItbtSMOsE/MoGFLCDOOlSZwbwuvqSolBieTJOtwi9WwbnWy\nzXZtU7NpSpvK1J1dRBOVueou3ou/5Dwstc68MRjDzSzJjigZWhc3EdDAZjUD\nLOJudZZ6C2cvnCobhagvEzI9yqtHyn1V80h3Pcu8l10CtgxJBVWZLJl72OoY\nOpFyDqaicWiyOfqhCOIZBfdDJFsquC8ttYxuc0rBbUUwH3E1E4gM7PBTVMhq\nT2Zad7V3vi+33lpwU+Gus9SHIrOKyv/ZVvsGoMS9wEXp2nteRL8GXB0jacO2\nx8OxWytP8Sggw3ehg1sMjlRxgjc4+GKDR8srkvZgAOIlBbs2CK9mdGqY8IGw\nz2cR0gOZscsinwu4vQUes98BRt3uJUauQFG1IQfp+Dl1Iz39wuqCYqa5sQMQ\nJG3zxN1GMVrpqZLC4cb44m1rTcZcn2CwvBydjxoYOa0uNgyyhaG8O0PcAz+C\nLO+s\r\n=AaKG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdixgGY8yLFkuLVaD+rF0YK4ymbyI4ahYM5cmov7HOeAiEAmoS7y4EeRUTwxA80LC0GEZsyJif4LBTwddeuAvRPws0="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.268_1611936713225_0.3280558783520604"},"_hasShrinkwrap":false},"0.3.269":{"name":"warraysorted","version":"0.3.269","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c64192d69b2c9a640e273f187666238b258675f7","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.269","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-407gFVPqywF+hcMkHTkJ5pbJZUuU50CkZ11bnrHI4giGruh6iesVxpwfbwRCKVwnTJwvsN6BN4J48WZFVL2GvQ==","shasum":"9cb907cfd0ecab0c7b9c345910dd7c5b15c3c285","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.269.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGQNjCRA9TVsSAnZWagAAWboP/ApcWxjKFG7pL/CdgkAH\ny/yBIAnbNNMdaKSaDJ9Nhg9gFky6bF5YDFkkTOhi3EJbQjHh1eXdKSskms9r\nK8r2p0mnMSbGJGPx49e/RsR9cJQXULGtE4dwX8ZLsa24rlwqnOVbKmH83fve\neoO+Uwv5BGMuFaZKBwrOrqgbQOKQOl5NF4vZ0t0dpFhd8/RexiwlukvRatUR\ne8Cc9cz/fonOgS8UAfH5fozzzyQZQgxs8H8LvSkEk/8Sa+5dW/ItYxk8I4vD\nyFV+Hz5Fsawmqc3b9NBZe14BO+5ThMFnjyIVHp60+GyoGA3v28Z2it+GqzaA\nOCEb10fSadtzrpmbgYgBZkuwgBwp+A2m8nu8uQoQiYs3aSS8x49A7vM+BDDO\nEAoB3J/ozkpdwqHmizEeLN11VZjolScB7TaKK2Zr/ix0BmNf1lQgHh0W5+Qk\n8y0VLQZxA3DZx3aYqtkrsM0hrNxB+1fq92Es2Gm4XlpNtMckCul4gmRwLVNz\n45mogJr9jDQrY84UemAGNr29/98uYz2ZpwlK+5IK7mhQNIQsUJiQ2o0UfDL3\nq/hTQAaylML7tg+u98Xt9MVlC1upQy+egZQpQgvS4K1w5uhzYTwmAj8wi3RM\n5qx1aKyo+Q2LFVezj0ILGUqFkxZ99LWdq2VZArKJveKE+3yoRs6eYVMXnhZ4\nXUZ6\r\n=iUxj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrcq1b48JD/Y7ZO+/inHQem+BrtyvBplTesWO4Yf10sAIgHzVxKlVNuYvxxRLhAVRZEdUj6udUnUSHvQ2f6CCkkH4="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.269_1612252002767_0.8845042347645442"},"_hasShrinkwrap":false},"0.3.270":{"name":"warraysorted","version":"0.3.270","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"c80f1493cc3ee9d2bbd46fe168e15f289725bdec","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.270","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-tVZ+fUHCAV/v6m8XxCwREWQL63calkH56nPZPM5RVKFPDNbqcHN2zOPmRpQYJsYhKcemSteE1QsGfFb2+ObOgg==","shasum":"a3159bd3dc6c4cd78760d54c822641a93ddede7a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.270.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHGXpCRA9TVsSAnZWagAAG9QP/2MwWTa2n4sxmv+RSYXM\nkNcm+iecNsPgy9Q4RhFbA1kw4dNx+MVUSs/zEiHNa7/dP9NmrFtXvTlI1wvn\n6OCPGaUkfNQGbh9SdPdxwYUAXtknrjCB43zdPj3Apf413ettKRQdqEei1jE0\nmGQFIxixB6Eh3zYC5aP/w1MsmOwW++te7v0JYFnswHCIhiFo3CzwPYplT0rA\nIgAJYuRzEc6k48xvsSxUhEt+jkBB5h44kr4Vu6ofMOxyv/RQNXoy5Y7/ldy1\n5W30eTEmfwsuNU3clLzodtqnb7SYewpZhVBdk11QZpK4Ixl7zmHUd9jonMQr\nZvZNY01uBR2BCp/wdc4wFo95Btee4EW5NjyfhnrsURMtWB5LP9wYY2WDLRIn\noF7hIMHM+TSSRmMFno6+um07H74rZjifoqY4qAtMofe4hMgDETwWVnRBDKxE\niALYKrBmz6tGNrA5ZUx0f4KBCcogNJ0OFADtfic1f2+D0rsQUQt4F8dbOg9Q\nFxJ/OXfpIsX8qHkkOxyRe4wvcd/ePxztc4LJip1P2r6q6PMEZea2uy+n0IlO\nGjB1Sq7947kq/mkamU33yl1P3VgVHjNy6D1SBjOBcRCF7M+MgeDFZN9QijI/\nV0eJLg8wLAlE2qsFOXIXQqMSA0/LlTFRo06OBtvDQogR6TVZ/HN7K47oi7sG\nnSQ3\r\n=FgBw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8sjyrx9Na5iShwieAcc7p6+/wvmoaHaleeIfPWydSnwIgfV+9Er+D78Hb8Jrfv4SYPSqJkmlyG4cAi1/2xj+w/yM="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.270_1612473832368_0.2540675284278864"},"_hasShrinkwrap":false},"0.3.271":{"name":"warraysorted","version":"0.3.271","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b091092ad9c4e4997bf4ddc3b1a30a7c9c61ee87","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.271","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-xYSCV9fRixAvhDYp/oJSXA0alTmhy+bTGGnd6mULCjLvxK/JRpwxTwbZge2AY41DuSXPIeo5YG9m0w98DjuKrQ==","shasum":"5bbef1c5282cafcd7e8f92d150c5e2691bd29b7d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.271.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKXwiCRA9TVsSAnZWagAAmYsQAIPwDPcBAtD499eDcwGQ\n7+UTKvv1QUjeiTgSN6pfR/IQXeoOllouyAbWVIJE7GVJrv+aiLlhL01G/U6Z\n5LuMljzXeEpBs4vfrLA7H0ON3hXVAEMi219tMt1n0X+FiJGjZscie8TkGIDu\nqeOu6qnQ4LO5pmbWz4x0kUYLDy+KE5tv74WK9TQu7nopXyE4VQ6gRWI7R6Dq\nw1+y86sjebRl3eeaNuw0TbBUn53LhpfFlqx7K3YRKg1b9OY5vnMcZ+5QojSp\nWxnKaNTwsWTKCO9aVJM+GhEWCw+LsVkEtvdsirEQQmepBisRMLt97Mi7YH6u\nfnaO1gM9Y7V3oa1ommz7sY0Ci8l2HXHKOCEENfE8NiGK/Idu2NvO0ewFbfP2\nxIzjINPiivSA8KFwNSaA6lL2Ym/ej1LQmhMJvb9FYRZ37RJF3oHIAsm4N/gb\nwRCVanq7IuT3WPjsi9m/R5G35HDAkbuLO3Czd/xvj+UXeyayVZOU6PJLsdb3\nBidOM2Nlc7scj8Aii4AIvqCV2vGe3InuI3h0wN3901E/wyMvPkaLngN1NsKs\nEcs39dsX9sLOOjy3lGWyMGqPOBSGD3ZL193vEDtiO/gw+pFxCJDG8l6smnEl\nN+u9dPjPH52h1VZaDxLuiP0wt05bXqFOKBy9zLjK70vL7gp0ZI05zTedE2hI\nxOdk\r\n=xv5i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHrLLKlUokLqZjptWOif2gTlrLFkOxoKapViKZXdTyYAiBDSRVYr65a5JL90l4p18RF6nIBkUMDOBnCA6zpz6oYqw=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.271_1613331490118_0.19979050130105058"},"_hasShrinkwrap":false},"0.3.272":{"name":"warraysorted","version":"0.3.272","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"966f0af22857014c012e863ee0dad2b8d536953a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.272","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-VpCK3QmrP3WSC2FV10KlmC5nWJtmqEUdfYltfgpM3ctDLT+Vg7oYcUGKJY0/hVUTC+btGmZQShI1nfUFSgEl6g==","shasum":"552395d474bd7326575feb4dfd1f391f45c6a03a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.272.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKqxTCRA9TVsSAnZWagAAgx8P/R/3cBqnee5jqXlEcdDH\nAdXdKfcwhVpObgVMBijEmAdomsin/3C98bZlPs9hcpQBDsHsGg1HuXVNKZGx\nZk6yOWmMsceNqSrGFfIfvUwk0N55fWdtFddnNpbwebrPAHwFPNPqO7ASUrqh\nK/HwWT+9xKT/+gxSVsmuLUskgctPOC4MpOGiRqkCIolHInUBWfd6Adv3PyK2\n9lhnh/a6H30iC3fq/CHWEXPEIkj20DyhyLOBGsz7yaCL+epooaU1hiGEX+46\n5StmyV9YEwO2afPxYqchboxOpTzIid5dNuczgwS3cHGsIKquKqT0a2xf6bGn\n7/UFIJZ27fdY7BrhryTtkmfXCVyr4gQHzzGIkvUzCxpdgxH5LKwhC4BxMzt5\nguABnH6DHJVqFjGjc1b88jms39hZbmKcZdSaFUYsvSaUogH1n3Rhx3H1kzZp\n84gVrP2Eb5PgmXRPrdu4YoQP1RcvDUAC62CJZ3xMqzz+8OLRxfETpqpY4NIT\nsAF1gvAf8OQ/bNVO1wk1V7qgZ1CSXeJ86EcKZ8YWaMu6idJyscE30zSORgpk\n/yIlBgc+i9u2/Y4NemlMliXU20nlIgZ2xcXITF8vqLihxZ5eEuXo5h4iNDjI\nz3r+bvEq/KEKIVCarjx31gnRaVzs6R1idKNcHch8oUoiggLD+bSdEcYG/I1z\nNICx\r\n=FUqT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdh7SOcuo0y3pTm/ubCjXCStvIRynXBGvHq37fBH/JdgIgc7BMvwV54ap9rEcbv53EOUYVSmBOI02ys8ebOQGXbHg="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.272_1613409363364_0.5952491271537048"},"_hasShrinkwrap":false},"0.3.273":{"name":"warraysorted","version":"0.3.273","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"530fb07014c6bd6f34b5b3c0b7755ca205806d19","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.273","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-I3eguMYg+AHzwYzJnM9mjv2rmVYL273khvhBB+4fdoSV+Rrwj8WF0i+ZDbaAMwNarNWiWL758DK/45BgmqDiTA==","shasum":"887a0e9173b581bb44554e7a26b084f722071b0f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.273.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLWcMCRA9TVsSAnZWagAAyEAP/Am1wn7JXiaDr8Jm1IPp\nmYYFUv/oXnc9oq4jut0OfJarlY4v/QbWvBM3LRsmjdkF6ZBMVqbSAbWBi9ra\n34RDKD1RZA59S8jGaBMDXHG+fKS+giTptYjxuz/r87VYfgWYFG/Q+oPTSlKw\nXPI3e4YqQAact9l5McxMjQ7X+r9xXub0wH4yU3+zHgr1GfiWdBvwYxGQf/qF\nC0es5zbIQAOfGv//cM1CbDzBSEtMPqBp9t60QxoL5Eifk1SRv+gSYIswn5az\nLai/uzKO76NuAhVmqGeLowF0B09Dr+DfKvd3F0wiyNiHjAiyrcmX/AxKISMh\nPbwSLb1AJyxAgPiNTN0SCQMiU+tTROMk2Sw70As8Ld1JYQGS733gZ9C4NfDG\nic7eDeDzgyNBYmSp+w7LiUxpqrNZCC4i1FBtVkN6YWfnGTwVw0SMOlfWOOAB\nVnAtORHc2cSAElhaS3gMR1DOiR+2qbbJYcj+IjeeZU03JBJA6VAAjGq/F79e\niM+u12QRQVM91AQ4BIWcewaiuQiaCpbwFjWTmlT3cxXgYtPaksom+JpQtIxD\npRtjtpkdVqsXhWXQ8jHheIeN31OC5xanA9zCR6G0ENgbmfDXn5XOgIOl+k/u\nE64Kql7i25HKSfPhtuTBvLM9EkVCpIg/FoJ67ckvLjfjWRLj4v8ErLRfFRyo\nEU3i\r\n=maPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+TRE/sTtNPRLSgCXJmQdbdEenNWiFdg/kdiSwN2cCWAiEAnpqM+y0H7uUaihWuRhihnCnypAdWb8or2Cb7sYMkOS4="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.273_1613588235893_0.8120581694140256"},"_hasShrinkwrap":false},"0.3.274":{"name":"warraysorted","version":"0.3.274","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"ac7058c349a113b77e95a65f9cdae3c93badc786","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.274","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-IZxqtCo1zFukRY2CiDMuML9Zkg7o/56vjYRinNFy3AbiWxrt8t40BzbIYQQGvkE7p3PYpzPqpe2IXBWbXCtFoQ==","shasum":"7a982a0fde14648ce7dd435f08e05b49fcf05edb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.274.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLkiICRA9TVsSAnZWagAAJJgQAIftedLfy+yuUTMoDEXe\naxLX06nbcIQ5f46pnRh972vILZNQsEqF4qi48bWXEsOV60Bu7QGX6Y1KCE5+\nPN5cJjUprwIXBnWP9DtFjHVd2UQ8qcTf5C1wn7IeDTtPqeLVkC/N8Fxv1uU1\nPfngo18dk/Mi1y2pTuLkg6UhT7bulron/a+lze3/Tb9wnkv7YjEqd59BLqTR\nyQprHehskAEJMVEUMFX+Qggh9XRGB3KSZfCiRM5C+Vg/Vc/WCO/K4fm4h/5k\ngmHXjcctY1Nxe9BsVeSwGjjEV5NDNYgsyr5QVYVwl4YR08z4cUNVjsm/7PDj\ndrpsUxPTNaJO9F4rzcKfJfn1OlJ9mVTx33xJcjE8HzLaa8MbrwgRgQq3zjto\nhsS29yxfeSi2kX7heOV/YcJTorDURqdb9g1D98yMNPS7W1q+QAyCSDwuOJa7\nuZhC1NJ0VjF7if+Ado++HOX8woD4c+pfkBOiolR4RKymmhLJLC1r9u0QqDRi\nezz1FPtl3D56BckOLahyPSPLDgVXDvkCG1lxGsCyEqTfA+nFyPiCxulBigAN\nmp8aaRCTRpNCnGLKskGtgsKqqAjS/81/m+adVO9z0CGrIDSPtO8+JVOXorwO\nWYHyr+YJuPVSSdR2IeLJqR+IUDtW8VNqpkXrXottpV+SA7VP2mMQ8DJYp0UW\nxYUc\r\n=5yVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDi3EDRdAIQKxoOGaimrf6a+NWq5Bp3tQknBR9zaUjxjAiEAm3jH229kB6zFnoWhJSPvX8NXXRx6E3GtztpoOrGJzj4="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.274_1613645960396_0.3119064040612731"},"_hasShrinkwrap":false},"0.3.275":{"name":"warraysorted","version":"0.3.275","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e12438ae945378afc604888914f74e0df8c3359c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.275","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-eLwPHjk+/RYuiVn5jh1dYmMIz0srBSNtGrFSJSlGGzuWpIa5BwsmvClHvuCIqc0Oi7XCiduQ6MpmhDZAe75hXA==","shasum":"c90449bff76402c465e92a68227155c1689d2ef6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.275.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLqBzCRA9TVsSAnZWagAAnSwP/jQH+cmnzcQe4E8rlIyN\nHnV/ttzGWhdM0miEGz71TGKArCE7Y1TCIxM2fwRMLRxV/FweHAeJso9hB8R7\nXFwQ9J3EjQD+fwd4qMk8dfqlNoHgGNMwI+lHW+txL3TvapCWEAZ3MTXbqPGK\nIfjTPGzFWjpf+4qboELx7PqKleIJpjTdfUFD3eBYiWrI5mFYlUOLv1fKtpIl\nWKuwPeOew38WrdXRJorr+LBWGSs1wB1dqawn5k8gvuARjSJJpd0caAiMBLKp\nMJKFhCNj++qcHCML36M2gat6bNVCDLx41GGWjYGw7elQVHdYTkzJETWpYMJK\n8EUcp2iHC7/buQr+2dFIwQJbGgVCLnQS+WVumMdBvTAPCkbmb7QVUQJqslpt\nZMKnw/fSJ2atpP/0WXjNf0gFH7aUsq5+EgPPu34vI6rfjSI8LR03XSIdGBrF\n4nUKT7aaxD5qwtCT77W0ZCikcLbgXyNjgg8bRVRLio1E4pPQt9tQ1+AVEv/N\n2ajSpjtZt/qrC3Ce5kYhaJPoGDvytmSd8qhsRfIxUOuP4U3VaarRHUagTPXY\nI6uOAZ64gdMY+BAreBw14AdGFsp1qWRVKwWz3GH64JSkURTzmzO+tA48H+Ym\nm+JYM+FcLpUkvTv61IAFkXj6aRvGjRoPFhkGSMh9z2vVEPeZP2gl/EQ7Wz14\njYWE\r\n=NDdP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd7b4we/NdjLKIgL+1s0CgajTwBYDavmiUZof5aoSiiAIgAZ7tSd08ip7//i+sPp+Gn0G+SAHOIaGvFCmydxvVmvk="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.275_1613668466794_0.07100452169246374"},"_hasShrinkwrap":false},"0.3.276":{"name":"warraysorted","version":"0.3.276","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"04c28a1209d2aa6168e6768539259af5698f88a9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.276","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-H466S7t+hfjqyvJkgsjwNeXgcC/HozE7ZJLjBOiHqJgNpK85Fv8NtiQbDWCc5HZ8b3yX1L6WGDPA4MWAT4bhJQ==","shasum":"927f71e3fbea248c32bb76a32a0c9187590811be","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.276.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMFYVCRA9TVsSAnZWagAAVEUQAIO/VxYQdz860IDXiwrc\nU6b5PVzz+oMd/yoW6aDJZH+wUWL2ZGP+UkzWBSOItkYv3d2RtQVm6+HbQMmQ\neidmeTap9fJW8GOP4+99m9yDxbP+PooyECiBURjmOGdNfgiFnDSNGrpOFFbp\nCpwZt1+KG281lZ9oRoKxBbccvSGoQyXZ7eFB0xLbmSuoSi9S8AI7m/04Z+5t\nHMPO6jIO9dZ29zd6uAqzQ/htRt7+z/hbj49wrFOimY0COOdaS1OaN3nglvwa\ns6Y7BhtOQFA9x9EuN5KEcWVmIsQLY9JlY9uIGEIrWY68t+XKs7yXMOthgpy+\n9DeP09Gow+4I+3dm/wznHHMHH3I/ignFqRKu/3nZACyoW0br+8YqLS1yLDvZ\nflP4pnPT/ZGDLGzkASEBPQ7prQTlE6Gq+KrQrHnyIDZJWHCYtAxHH0plvn0k\n3niW5vixC3rSR70ANZliZR9To4wQBtIYH06nkgiJ4yiSwOCB2WD0q2g4FMRK\nBCOVbFTI8XTuRYl33gRV0kVV4KrJZMaQA1j2Rvq4M7p8OqzEt4TAMiaGpRiN\nOtLVZU7GKlMSCYfX61PYh0HScjFuRMDU+Axt59SaQqvO2kUnsHtGddxawJSw\n5VQBqF3Bu+yNTmDJkQbN8OaqHQk34lcuoyp5p6tlrySU2c/smThZ+mmrJgEk\nZ6z4\r\n=uY1E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6TRdNbaZqO64AH6c1Qx9LvVP875HNhMo2lrNnQjieCAiAo4rD3F6g2Fz2uXjpU66y81Aub6M64jvqMprrNxar2Vg=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.276_1613780500870_0.5950546622172446"},"_hasShrinkwrap":false},"0.3.277":{"name":"warraysorted","version":"0.3.277","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a13c10b45cc54dee934ab11a0da0e5afd2ba806a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.277","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5VjRQehNNKi2b6eGzkfGtLZORSr0q870MrwQixFo1JnNSfHRY6dcuaiAOXil5K1PyEOUBTAJGgBnOdUTOze6cA==","shasum":"5c8d50fc74f8e5e3d511fbe925a170cfbe636210","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.277.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM8X0CRA9TVsSAnZWagAA5Z0P/0V901sIl1vxy3SqdIY7\nVb3iCxSRDjQH7rSLDsQhrboBzPXX17A5gEXwGnTAhQ/OC8dD5F1pJPidbSHw\nRCpwSqcM+hUrD0Y5AOgD9+VMr1CNOhRGFwPlMpsqoa2E833VrF3IhO9oPW5z\n49opWmJMyCMQuYtFAVCnzUZWyLdR+J1cOjUOwJ326PPpgTdQcKi1J856iK37\nedsHv7TABvUZl7OEe9GiKsQ+66SxYQgzX3dP9RT3XaUthF0aBLam7XKMCSWb\nElw4AtBAsG9OqzKBnIQtkmHq34ge6llqFBn+1ze5OSyZKncJzPdR24Bv+Gg8\nUehaVFHlt2fCqVYw9Pqa4OibqNUqiEWugOoow3HR7WxiMRAna5h/O99AByyU\nyBItcken2bUBI1Dz35dluVdfVqfGhSpp+w0asGcEz8KegcOkkoyD/28Xs8Oe\n4n+WdTrCHurtEfF5MIlb72/0A4+R4mS2LqZ29fBsODzaPNR7hguY51WClwc1\nCCiZ4Cleo2Bfr+cZ8CuSO2WgjS4BG6PMDUY5rYjXGPkS3O69oOa4JLamDlfF\nTSAeudNRGpvj149X1eXi848IrX+/GPtev42s3tKf8fW/InOCz6E8CD5SVR/s\nQJTh/WRG+9XAq6HbgAbusxYQYplwM7qrNvj0Kiqpqop8GLTBkk+l4xWY3oMT\npc/8\r\n=jYgr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4RmEJI9Nc173tj4IcCPhrx++YSe1pG41TBiFxbxXeEAiBrtu7AJzzEkcQCLFTT/9t2AwQderh7WyE+mZqOzv+Fyw=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.277_1614005747960_0.9316766915007013"},"_hasShrinkwrap":false},"0.3.278":{"name":"warraysorted","version":"0.3.278","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"0761886092130b7a69f6218061ba404d14ed1645","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.278","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-hx6zxk+0jE/UZPkgqDinzkPljijZaYRHVVeLmJXRM1HZkcjG7z1ye0a3SdDsTr4EaO5jX7pscctJZCmfgUFSWQ==","shasum":"34840b0481b15ab036e140fcba83f1f074a545c3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.278.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM9NxCRA9TVsSAnZWagAA+osP/2/Sk5ckad6HlDsDmd+H\nc1GEXiDwMG2J67DCO4MJTfQdqpRP8r7BURNm9CAXQUnYrQKh8Ok1zSijfBGb\nNUvZ5bVhEd9Zd+8+yqeLQd3wIr5NXYbD5Qy+OR5agGcnwUSetJHtAX26QJ4z\nvTbrAAZ+bEebHj/L4UXhg91RTvCJhOAGQVghviFkjG/mQQZ4uywr8ICYGXKn\nzBwpLPaufmhvGZP3yMaiURSSMmSa38351H9vp4g6DhNxheHTG8bq06iZXzG/\nS6X1n7PkgRxOorpHLwtAeNO2L/IwHNsIh96rnLBbhbgBN9o55Vnecb3oxhtT\nXSWPqmG/NpIHObqpYzhyuqzMrwZAMVyKpXHM8Z0dXQqwn+uN9cXKd/mFx7fg\n9zJ7p3Jp832IGlkh0ht9XxzkGDpCYgvR9F+XhyaHY5RN2XGWE3/o7QtgKtfx\n18tjRmtDEazUm0UANlgkGiheuSI7QlwtdJMFpKgfhJ07pbgR6w/7MTQ508do\nIzFMl8CKUAcNTnX08ZVaHZ84vs0YOb67R/kPJA05/KMrmzyPVYXuFd0Hpoez\n40sugFiXqWtDX8VyOqHU+qD+ZEk7Vli/wRonpx7v7Oh33STz93x0oJuqGrAc\n1ziMoe7FohM3W6rQhqR5IoiInM7PpOHLwqShP42V723E6VjT97hY6N/ybJr7\nc09M\r\n=+TJg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE1wzU3L8UBf6OiAMxqqxNMSp6UM3VBUpv+940+XpmqAIhAJrrlvC7e6oFjeLa9ood7B5LYjBrBjGEuJse2xR/XDt9"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.278_1614009200902_0.007977005088548816"},"_hasShrinkwrap":false},"0.3.279":{"name":"warraysorted","version":"0.3.279","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"eslint":"7.1.0","wTesting":"alpha","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a22e4cd0612144c64467bb43d2f2db0f9708b4f9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.279","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-XQI9r2BY7zY97ImM9rL3UjFnzekcjqJk8y2jnyC/H4VAEgiIITKmz+xZHlF/YEeEAeOPhQudmJrtu6FYAAp1Bw==","shasum":"4a84230e396de4fa915c78c24c48e1f034f20d8f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.279.tgz","fileCount":6,"unpackedSize":79729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN969CRA9TVsSAnZWagAADnEP/3xazI5efeZLydXf5Fkk\n6GSNnsILg9zwjDtvf7MB+HhzS1rdLCbBZRN5KM1tjcUNY7F7yuyffqkTDutO\naHnx8r1/QJDqTuk1QXA0QSXtXZlkd3t+Cot48jtLs44m+cKuio8oS0ZSTAnQ\nGQ5qmAu1ZF7Za3pIR6boCxX9uYxLyeAPRILqZVT7x9IlOVaNIeAM+WUOPh5f\nX6nzfZOWEF7lahU5XZvlamCgEiqyG/dk3N5FGAV20dHFlSnLhEwIz+33Wqv8\n/8j6NfGaM6GJqBksKlnwHtiVpZXphTNspQ/9hZBHWIOLNU7od0jkNI6NXkDi\nP9FnjJrG6mTYJpjIud1yriajeghFJt5wV4AkleKkeNUKUApASV07bHyKolis\n54zlVaErRUjnAyqG9eZRIHe5Rv0MJVVkDilhiDySe60ViySbPjsWOLhBG80V\nlzJvCmVpkp0tqFmfm61OXkGqqxg8mj0e34VWyO391JrZC2Zn/9K3t8K5nX8x\nrqXVh1ArcgDygxBqN5FjKhvF70e/122+wDKdQPXVwxsfWMU+91hmpNCekx7d\n0QjlB2481JO4LV2paJ9xAh1dkujRtdcv6vkiytLkorP7NEdOsD6Da8WDJVb3\nuclc/Dj/tEsZKh3XnXu0InM90s/kWhpQTHXkWNhaqzrZ29knA4caLCThgASz\nr7kd\r\n=VYCf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC64AiOImed7bhww2gFLlAFnpcTBaJo0dI0I90md6rdSQIhANpES9ca6a5FteLvLCYXlPkVKVhlp/DZXImywuiCOu0J"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.279_1614274236738_0.9915401624768507"},"_hasShrinkwrap":false},"0.3.280":{"name":"warraysorted","version":"0.3.280","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"a339ef62671df2696c71342467c1de451620cd5b","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.280","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-3qSIpnHo//WgtD71Wp3ylFxUjjewCGpDhyHgs91et3OYmrk6y4gqCuDvJdBHg+9dPHLSpfe4feUSbp4NJ39dDw==","shasum":"3f80f23807fb77f2ac893c558a9ddf46814b03df","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.280.tgz","fileCount":6,"unpackedSize":79965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSxJgCRA9TVsSAnZWagAARQoP+wT6c0KCXJOoKdyCU/gw\nZiTHQgKwgduErVoF+woyytmFbsl37YKF1V+9sCkjBsjpR5u6jJcc601uYkhM\n2Sj+hKW4QFmdJA87fc67fmzWYFy7aiP+6Cy1dMCoitVn6dRWtRCLGuSVyg+m\na3UCoVe9gdlwwGVdCXhyKNXYEIZiyhd94Zq0KjgTy4wdLM57qAYT83RHp/v5\nvPo+MoemACoy4fZ1OtP+X017ZnddWwZn3vkesUsGBR6lnSsLX6UKdyrImjFh\nNE8y0Ob5J7GaSeK/OiUJhq7udAUShGp4jZQAgyXdf/byRlNO3+dW42xc09f/\nLMXsAysAWIhNa/GgwufO1qEEORbMEW9sxh24QBx5zmduyLr61+ELj7/TErbP\ni7VBUb7CNcRw0Vtl9wh8/MxvKt50p77GvlunkTEHivpcunb1G46MWdkL9OJe\nkz5I5Z09galPYrvp7OLDRfQDOOGQLYTrpaTjVaHNt/Mbl16kKaOeDPDk9YC+\n/KLRS1z4BUMz1A0X5sjw9Dnd23si4KmpfRcnqVNYdizrXku5rgvNO67KCU6Z\n3wE1vBqtwf9QhTluYt7NF9r+HHdNVYPpqSVuiLeu+nzzA7n2bLSO7faDHIfL\nq/a9SE0o7WkfrWlN8s20W1p9/yv4tReO2D8HSajcFtmTwZtGIzqN/0/WKzAf\nDL7b\r\n=X/Hc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGL+7/OWuC1UdwDidrW8KPCsduekeQb7AISW/EtZNuWzAiEAxtioFsa/FJ/VcGAthIYHnrJxRAA8rKK6OiPt9pxwVrI="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.280_1615532640510_0.13295050082160187"},"_hasShrinkwrap":false},"0.3.281":{"name":"warraysorted","version":"0.3.281","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"bdc9064819afeaf553b4afccd96fbb22b7947d5f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.281","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-zzGi1o73GAZY3jL67qpb8KsHFhimACrq5aYwOESIf4E8YjE+1TEjwZp/sML2QYJH36rP3XvqLDRqcaxs0ThChA==","shasum":"69bb11696a716534d1659e1f747c15b93eec46e5","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.281.tgz","fileCount":6,"unpackedSize":79965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTbNZCRA9TVsSAnZWagAAea8P/j7u3tTMIqGAVXGksRZj\nrlYwgkMxVGR7BM0L1ZjMq82EUoQyOIaVG9TN3JmXCIVQSc7tt91e0jfJO+PX\n2h/x4rOTEvgRWintBdV8TfQrCX/R5RzzP9LLr9oR7j7xDCWPgr4I1vYYklTX\n1rrMKftnvU2dBraCyC29QcHeQiojjSXkz2QBuy+vuQt21ri23YXoA1R6c/QS\nWyFzBxhyJQY+hCWjewwbFAHZN+3iaFzvrpgjx5FRLnwVPkVSGBpxo6M7AFmT\nDBDI5Jv74qEr5kEOR3VMQiy8VMQKw78rKzeyHqu7Y0bDBZHoYGPl56J1MQfj\nTT1YhbyvbIkPt2Y3nt7v//KyKLprMyiMnzGtLxTiW2qeDuDditcL4n4VbfXD\nRMAFRu+cJ2E+L4kPcqtIK/BoDJe+zpWvpmtfz156SX7dx5VX3pPPhcOg9XKB\nXHCHkpS3fW4ZVSx38HmA4z3GORMCwg90ptu03tZa9x8x8oZ7HaesrKgmjLNe\n5LDXOIG4ypnQHOn3DEsPud/2SHZB/tiMoYu5flQWRK5lr8K3VsRE1HM0PYTS\ncoOM/VpixrydwNiMnUy4GYMdR5PQHSlgDVh6jwTbkeyR/qGi7ReTpWBTFw0n\nN5XGJKB9Uz2lX9bPz7il8KfuSo4SbCq2yVovzWDP9boVCvWc+ClzRLNmI8Fl\nUrCF\r\n=WH8U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6tJVEADyDJtjMqOTi0qtG6XCVc9j2A7GU9iFFM5+vRgIgBip87OiUk19wJWu5RO95JMRp/B5hgDpoLqvyzxXKc04="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.281_1615704921116_0.3727120247341493"},"_hasShrinkwrap":false},"0.3.282":{"name":"warraysorted","version":"0.3.282","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"5549bd6bade9abc9300ac365f0b9042bb4256a7e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.282","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-3YrmjvfjKAg5T2CVBren5aFFkrvRbYRPT6vLKQyOMqHC/LNZnnVz7xOQ84IV7GzOeodV+COtYieoAgoeMCKWbw==","shasum":"0f633c44f59c644f9966a56012d29a16117ce6fc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.282.tgz","fileCount":6,"unpackedSize":79965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT4rGCRA9TVsSAnZWagAAYPwP/0Qlb3qmcDGEu+LEoYpa\n2fWYeP02c4liH9xh1c8ICraPTaLgTBR5vtxnM7qPMvKuXc5+uUa1jQnmLpMa\nylVUL+Pp9LXLEpAdgBgXTVYrmKSDocNV4tzBNOq9Lib1EeSndkZQjcgIcgl/\nCjpV28/TcGX1wMZtviuoRWZUXz9P5xvtfjmra8AluQ4WxhS3bkhnoSJooFlI\ndwuFb06eaC8KiVfyPiFgSOAdv2LLMJisLkxRqJ0inUjWCHKcE1ehm+lk4YqK\nhjT0VVJ0B1IqNWFm5R2eJ+cMrJrYB5sVuPNM32Df2S9N55sdXx0VPxYn5yCa\n2m1sFHviXvb5tX+a4AmXqVvXOhGn7o+HFe7rp3Yo8hSmZsylFCWNzdAiqvBG\ng5zltUqA1wWrWBVoTbszTem4KFM2aEnd195zWj6ibjJoQQ9+LClHnIcN372F\nWm8TI3DTFDTU7XCSYMlaYLK2sfY41jmx92vlLBr8KkJDgQhofevlxycHxJ0E\nsY+hmAPI4gK/kIw2m4/XuE1whfN2Ucpp3ssI+KimcS9DZRk8ScUEZYT9WrIo\ntzAXz9js8pNaX7yK4D+2R3/W+SclRkGk5qGHuXelCUxyoFSNZn5V5N8gZDzl\nc1HyV5CsqZK+TmbKv+YRfs7dXvnS+bcKK2M1P/hECCe6sq8OG66wHi+uYb+D\nZsQW\r\n=wwF7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClGDyZ1QjWqEucGqG9H3b6biag7kDQcoK9+mYUmELnqAIhAP9RHqJ6jgUrGmzMrgDoY4gbBx09gFO1QZ+NxSdRy1N6"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.282_1615825606059_0.08652018949359719"},"_hasShrinkwrap":false},"0.3.283":{"name":"warraysorted","version":"0.3.283","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"4bd01dac987ec4b2bb0a89d3d0b9a158c3bd749e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.283","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-LFBGM/8xizw1+0RH8kFfMJPC4Jgv634PsZjp5bCVMwJrRitrNsnTblB5dS+qIG/qmR6PSo3xBQr9ve/3MF5k8w==","shasum":"102119f731569445dfc138e07f438e2c86b3951a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.283.tgz","fileCount":6,"unpackedSize":79971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXfu8CRA9TVsSAnZWagAA5QoP/1M4Bvsrp62itxWUF/DC\nmT7BFKXU26y2VhnRQaPKWknoXCVigArl2iVcJcOtJ4IvdBKWV8Ga1E8aalDu\nuPj+fqMdjy52EpJCv7Tus6uYssrhBfkpnqXSqJXeMmzTpyvXp7noubSeEXU9\n2jOFkzkgSOhZ99R3v7/RzIdnMUUHTKOnv0tFYmmoOmXo2xX64rzSITGaCyMx\nQE8ncvKJSPfBjOhjSVIARi8v5oVNwybZFBOnPghv34w3P38j8X9a66bpI5+H\nC6ODQ/m3O+0FL3mnmn73GxSwp2UBBITCLf2h4p6w1Nqn/jzfAMU3dXGIA+87\n/er/iNrnV/5XHaU39gSSkUaEjoiPTKxr9d9BK7xzzbOH2Km9zudBcUkDpSdM\nPIapoa9x8eKSbCAoGvkl+GJTHjDYVPhf1EjgQXibaDwVH+v43165x700YSIJ\nfCifnUB5GXzpdOZm4410CDqT50l+LUCF9MWyD10xbAFcxSo9ghZ2MVHJiemE\nmTEj5U7RQal97p2LEjsDDh0LVwPh+JtLjuBVehA4PsIGluvU1lW2Wb7t0/sE\n6aoa0oCa3KWYmyBCnWoQuCuzFVlSMUdcXIidXWOwhpiaSL12sv/0dBqayGQU\nDH822sY8H77QpGIxWFSpYaB2uCM3LD6EVXri8nF3ob4Nw0CKCDHIW2B+fHyG\neUVY\r\n=zrqr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcUmaT6hNy8XQ8BfAimchgJ5IWkQRUAmLNFuz5Kkz0PAIhAOQ9Y+xEcqUUbWhTIn472d6yd3aCgjtqC7faVJwtxFZc"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.283_1616772027515_0.9333203212851262"},"_hasShrinkwrap":false},"0.3.284":{"name":"warraysorted","version":"0.3.284","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"f11d10fc7b326db1dcb3e36666b01a7fd36e39bd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.284","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-uVo/UGzSM+cSvTph1JfYHO4gdR0+WBXROkTVhJ0sy7Ojk21ZK4daJir2Qk7+WwEWDTFc0zhAFDlRCFnXtXML5Q==","shasum":"e16fa9cc81e8085ed2e0094bd56dd77fd08cbc7f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.284.tgz","fileCount":6,"unpackedSize":79971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXhBKCRA9TVsSAnZWagAAc38P/2M8ry12wc7BwaFneSYM\n8RNbh2PAHZMZ9yydYhgiRJY8wvZxYwq9Lc16h569XWvuF5NZ/eliKkEk1EYl\noHyFlSy1NZh4ikm1kdLkbLlfTS6xpx0Wxe6GmBCdn15NgHdaa1kRI4gf+vdH\nLrlLnrB5prIM22x4YH3h6kdUGpc8dweryW3xAVStr3kEboYG+u9mKrviGcMf\n2B9SGGYIs2fCueJDFNhX6CieWF1XDaGB1K9qVO/eOchnvgm1yWtEbC+evxS2\n8dlJ9VJlOSyowodO98XDWtzapbWq5ndKfKM/qLOS2LTAdhzM8OfCAjI2LLIk\na/EPC6A6DnZ0mp1kqGYfImzpJF5f0pHCOmKkXIQzJgy65Hy/l3w9FYnRPQ7S\np62ZjnBsFcWeKIQmAJzmtL9z2ouhsVD2kKhKGp1lGdGFbJqdQ+8FOtLLCR4X\n1aNks+OxdLO7K2nL7rbc0vSIWkewDesQW/HtBarfkhY6snzLjWruP4kWOIt3\nNQR+vU7ES2Tv9HmfGZ3wvU4u/GoMDRDmNoTJjU71kNgSrDw63/sQvN3YTCfV\ngKpk9Cy0AkoMnKiBlKT7QJ/rkY7E99NrjIuH+7eSG/ZpqLWCxGgUKONl/ta8\nRETz58Lbhf7BMq6wtbiiuf29kv8TtAkO5pf/VIjjnnKDR4pddluAV5joVOir\nGLc0\r\n=b1O6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKxDj10pV1XTgNXsAiP9jKMGTTXdQc5HCfTmxF/7GkbAiEA/ICu7WeRN+QFMaJ65cObiwi4n3W+AqcatOOzAi3AhMU="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.284_1616777290337_0.03476002466796069"},"_hasShrinkwrap":false},"0.3.285":{"name":"warraysorted","version":"0.3.285","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"40e07caf064e837968c27b0378200c17a5bf9e45","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.285","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-WGfoLQOJUevQlvuopttbS4UpYu5jYW2wTUWqYF9wTEWWB1JPaoQiVnDxUawqv6+FqphbGY3szwF5Ul3XOgE4Ng==","shasum":"7dcfac35e3953e25b774c27f32d6314d5091ba59","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.285.tgz","fileCount":6,"unpackedSize":80006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYWR0CRA9TVsSAnZWagAAvZwP/ijEUKlYDm/kT1knVW3A\nM8Ba4FTh9DLD4RB84SJq28vOa+qyQdc6UzpyyJohIzTk33SVY2gKe6OGjgu/\nUevLYADxtkGJLBqFe3Zg6exFokpqT7MwxqqePvw1cdVcW+EXjwrsb20f4+fF\nwXBuSl07VYsinnwAPA5GUD3Cm6/ph9lRgM16n0BDDGKViJIm1pctHpmUcWuq\njC9rAz+72X+acRqIw6eVR7bAkKoKO1qEaz0XnCieOgj0YLJs3mONyHJemMtC\nXK5w3frs5JlU4ZWxhd6cMr/iPsYWi2+W8IZE9AxusL27NnXPeZFFg7NQAn65\nYELKkFaZkE9csFWB5/RVRptD3eJ9A3qFMdwXO+tmEeymBfKylwuUOva3ngm0\n53ALwF+unz+ajBe+VEgnaVkV6HlzGd2gvixze6zGILGkyD3eKXqBPfSlUfdb\n/fM42Bwyu3Z84i6/Nz/mYYJMn3tGzI2HRKGgf6CmbbKo2ETcf97al2dc5J9o\nb68hLyHF9sPb4kzJM6tGVGkNDIMDzXeReLMzAVh3WapCdviF2kLy7NHaJAlR\n7vbTjhp+Hrb++/hF+r6Il5ozbKttvNwjmzVsOoZtDIKI6Tx+wgT+nQU/to7w\nSmqs0JAAQOElsXMesKT081yqaz6v5PNrV+8vrQePHL4ywxHMwqqbQc7N3y+0\n7fY7\r\n=N9iU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUGDW9VYX65H753KEJ7nopfMruMHCU14wJb86tTeHGfwIgKSxiFsD2ZkRaaCmuZaRguINcdGT+n/e15Rli5Dffs8Q="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.285_1616995444525_0.7539820777242889"},"_hasShrinkwrap":false},"0.3.286":{"name":"warraysorted","version":"0.3.286","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta","warraysorted":"file:."},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"986dd574400402b369e6f2399bdb4e68f7cc4fdf","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.286","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-55h3nKgio/qqMjy5R/0xEjdVCrMs4Vj5k59m7wJWs6P2ODvvtVPclTgDs+iDTmILwABzkVGRxNsW1QzSLno+HA==","shasum":"e0e2de7034323e8857d8e4cf903bdf4c0b98ac70","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.286.tgz","fileCount":6,"unpackedSize":80006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYWxDCRA9TVsSAnZWagAAJYYP/iIKyhT2EJfdMEJE+znl\nW70lWv/rGDkBbSTCUL20gV6IAr6NB0tGYI7RvsvgIdi8BMiGF36YxCHru6WU\nT/JOFgEtgMWGGQT0OrsLC/zEy5ieiXoKDJx1gB8qd+rokn5pRSgiuFTjdik1\n62CZq1zZexUmwsfScczpYMZWVJnCLP4KqzXHf5sKoST/78pPQr1yMM7L54bP\naAi4Zt1s+ho+u5vCKZf3WHu6flj7tYYIwEI85LUrpGviuM1fu9u+FRm3sAxn\nW+kDW9csjnXWJCVV9G0e21l3qanpxM3zq6xjxCmsEcRx7yi+uMIFJSCVFz3/\n0Yx7MM478naoq52omCZudtuPM8jaFc2F7qDhVHUOAIGxY91dSjRRRo2hwAAc\nTrZYFiNA2cGgegg05JbYqgzWL2rQ/dkI4E8aWrC7jx2fCQXEanCt8fZemyGM\nBOeahCy83YXK+1ksGRbHcqlV2PBO9/pWLYD67NNm4BmLCmc69rpymxDr2LLe\nVOznqd0M5+cCvs/KRFpFN7cEGzQHU7qPKnhH7hYJ9yEcAhPxp4QutKuFmQNv\n4OnfcVe1L5oeoAB/ucMhuIVhXYop4MawJEKivRLbyXOyjQZIkpEi43o3uzM7\n3DPnyZ68Vj+iYNEXZkYdUlfS3G5UCG94Kv5BzQB0jLM7sKTDmQeQP13F8Qqt\nnU1k\r\n=XzsZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1L1qSxCDsUz+MUvltbrDvnPO1E1cb3CsNvZHuBP2tgAiEAwFm8KulrtUYRBNa2OdMO9qsA/SdY2rL+DApggaLFA70="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.286_1616997443404_0.044149271193413275"},"_hasShrinkwrap":false},"0.3.287":{"name":"warraysorted","version":"0.3.287","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"dd6bbacbf795e1cc32c568d325b3a1ac4598cfbf","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.287","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-bTWd8++dLxTUdp5Q5+5mNL+5WwTiuQy3/6uFRCZxiz1DNKaodfoXhwmODrhZxqsefkRqpVUjkVvo0dQOxjHCtw==","shasum":"02ada0afe1a3a5463b4ab983a3c36e1d6f17306e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.287.tgz","fileCount":7,"unpackedSize":80129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYys/CRA9TVsSAnZWagAAL0gQAKPffN8Kla62OAY5jYIS\nJ4QF+yUsxOWJunNEif6hQHD+bWvEfjwxVLuBO+hoba4Do13ua5sfukpmKSRw\nG6yklXGVhSNRimDga2iBm73aXq9Qd5+TNrd3mn/I9i5gsnXtr82ykM80I9yH\nEa03kVsShNspIX7Rbpq9ugukZqnrTrA3o0EZmQDZ7P+K2zdNJmgJvhyO26uI\nPqqibNp2pMjHqed6eHQiQZFAo9FMLqLNDFWSC6ECHU2juY0z2NaVgvry7fiu\nlZKrXTQh7UiO7zgdH6EnG9MZsMr3GtzNakmA0e7GaJlqzdaub5fkQP3HoIhS\nLXFRuwKi295i9HNxDiNUdH7gQPnV7x5rb7Ss31w/IkqjfDT8rQS7xbDUa/b/\n5l2fUbyhwa01/yLGADrjTiSRd0UecD7oNdYRjBzdsxXjA+MeDIlDFCJo2m91\n2NdOItW8Mifolqw6gJm8GEG7E+cns5/CyYMVDCbKIhfMp/uJYc82hVIWS1kc\nuPJTu81DO5mXicZXR9pF4FLJEdv/JwyXs+TvHcgP/gX6C6XjGUqhjZpaub95\nFHq7ft8fU3D4vrREbHi8+eIaUXGfxDstGQsFXTyeXFLjT2V39P4AHGDWF2dH\njuZtEomo8dwqnuwZcwdjcJ5ST71hdStjMWAURhcmlkcRxGZK+ePl3bJE6znd\nOqf5\r\n=gyza\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7HxzLJlvWnLzlikmG2zee2p/DOEc1CIiQbGVLol1O1QIhAL4XvV2NoDAHlmuw+5r7yjkqcy+8539Z9sw15zY6DEng"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.287_1617111870804_0.6598186887224857"},"_hasShrinkwrap":false},"0.3.288":{"name":"warraysorted","version":"0.3.288","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"d3e01bdb8e573d7a76d2622e62d91f9bf7af2f7e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.288","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-k2T6jRyeI5qvIDV41kUQcnFCPS/AhUu2IcuiL7SioCLY8tMGHslKGszxjVLrThhrx59qki6L4Olu6WwlsC8Okg==","shasum":"1e8a362ebc47c087519c781a4ea9df47972af4ef","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.288.tgz","fileCount":7,"unpackedSize":80129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYzCdCRA9TVsSAnZWagAAf00QAJV8JeBmFLb10EksnA4z\nqB8RtHDJr0XMyCVDZNI1W4ISegTH4oiKx+DRfAbK7UzQAVgw0htX1Nc2EBLd\ncmL6S3hbYOibCNvqbEtHVZAvlCu/Ztjptfb1c2Gs0wKI5V0ylTD0Yr2o8kmf\nLkFvdrw114gUBhtSBotmAcMmILi+ToU0fOqkXXnWNamqwI/Jo1xwZvIqgLzE\ni7YemMR6heu/pnlUEEu4eTLaw+o9x9isMjoGOIOdDuQi3YJXl3BA2BjIu4rH\njS7wehIwOtBX5JT/CZT1Sb1BhlBpKrEfKR5VB6V7BULmPid0L0eaHegdwE/f\na3RcoOIGbsp2yPEnAcialP9AdM0hG3gIRtNdQnGcUuNgvXKMbGKpAsEX231y\nMms+GltycHaXoxCE99f707Dl6NYozhXV7OQdrubQbA58m48RvTJtTA6Nn/lS\nqj/lARFm4n9jA0R4YrT8p9CqrnWmEAS0jxUgS53z68O8dxqDHlICDQqEZFR7\nRQkQZ1OgVYLaE7khWz+zdk6Rf3grojpgN4GxUzFPrvbTUJC0Xnnpo2jiyW8J\nY0F7QLT5wfD8nCRpuL2KlzRdJ+MPpoqYqUgRlAeil0JRqWM5StpjSwVB+pqz\nI1lxx4L5XwBtZlZRuuep3NReJtvvtkNis7SeDtGb+3kma5/ILaOHpZODDP2c\nscy0\r\n=u4jM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGpNJizUjdUCHDDSitAhnfk5V75OnEzu/S9v5WC6D0FmAiAM/LznhBSLbVQj3FTqxFhcRhR8hKFKW/5kk8TAZ9iDJw=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.288_1617113244505_0.93878127302034"},"_hasShrinkwrap":false},"0.3.289":{"name":"warraysorted","version":"0.3.289","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"07c9d2e31d86aa39c7c6f08ad1906bd0fbccd96d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.289","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Jsg9OUUwZtRKp5eB72HVFv4/SWbt0mOA1w+vzBLBOO4avZjOhxz9Y4F4tx4AJoO8OuosneOQ/KaK5fdnflpaPw==","shasum":"94786d07f37d2de322bf267464d3e1e1e5853431","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.289.tgz","fileCount":7,"unpackedSize":80129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY0GGCRA9TVsSAnZWagAAofsP/16AmelFMJLPe8R79/UF\nkui3k7Er5i0AA15LE5IduVWXScGl6DHuZcbTOjn846yw2BGvn7+guHuSLK3m\n2RpqBR0Cb7TxjcL5lWZGVU9AAMneWs1YAlDftnBR1QXMi6VR5aDA2pmOVpMU\nwaZXknz19geBSYRuZC/uIruaQGuUjValKAY+Ms+XHyuRTg0EY9/PgrNCDFAR\nL3mGdQ+hJW7fPfFntzRe6/v0jTKS2pC5Xa7w349ZUsPMHYZbrZ4KB+gIkPso\nQDq/Q8Ks1dAzwXfsbaZbsWjG1eCfcZ7Re2eDM7cgw8RQ3sxnUhkeZXQpv8+M\nA2uZMv+oJEH5ChpAAH1gd6s9C/p1QtekgaBkUAbrlwB8HzlWmvDIRT7i5U++\nA/rm8PXhswEfRnb1bnlTkAwd0Oz6TRT/Q26+QFseX3Hdf1NL0QyVIbLXMCmE\nPSBeFSXe2MGVBLxXhQgs7MLusbVyDqv3q50kkahzMZ3jR7+4nXQPZrLu4zfD\nBnbDDEq0GJeqpMBW2gYDmcOyMVHXIQOUZ+P5s8tQHwtIDweAZOoIouxTU6kg\n1mbH52TrZHcsOIJ+llhBopGYL3tnjoT/qvSZ5Pm5ordoJj7CnMOaG6fJtRZl\nQTTctWkiv+QsO+iHe6UAY99Fnrp+VTXgPWNQ190cWTLHTA3OlHLzYVOS503B\nCSwT\r\n=s5Y5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdSLjm6dMbAumnCJDOOKnE3s6g3EGRdUdJRfdKlqk0fQIhAMAwi3IMc3nTvmgwvtnQfYiIs2Nlh12BVsvkBTpEgXd4"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.289_1617117573846_0.8870822683752799"},"_hasShrinkwrap":false},"0.3.290":{"name":"warraysorted","version":"0.3.290","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"9ac59c50229c4fa464dfd81e1ed2c6a70ae76d24","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.290","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-tc2z50JjhedWdofga5QlnhI1maUYOb0Wy77fTfXAPLdBhYCRaA47tJqRgpfs5dzpwCXM099i6XsPMfdnFEJpNA==","shasum":"76b3d6d6361aed6d5daf1411e99f83eddd1d5ee3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.290.tgz","fileCount":7,"unpackedSize":80129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY1ZkCRA9TVsSAnZWagAAX+IP/30nxf0/+x6Ap8CHP30f\nB57RR6U33l2uB9bS9NvUxQbUXohMyQVoGqjmy9uEFZfFhC1NoV06pXXBiC+/\nCqSKEXb4VhsqOF918oDDHlr2XvhEzPbecATA7FYIbJR4ptufYsl7H9nHdzCb\nOowM27EBE/UYsdkkIGmdXjissMmDhmrK3P5xvMLg1D280qnmEdQauOjpvYeW\nktvi/8WHvm/UVkgPAr9xdQEoP5Gqay4C6YNdTB4TNiB80hc2Y4ZhOo4r6ZWV\nq3PuxAcBiCjJ5b/AP1G65QbMU/x2TOl2RgIifVoXZfPKbD9h8pBkMwwDHy9S\nmFtXgNWycszfxjQZcb9sMtx77L/1M0hDqUshjzVVFNuoAMWlJGn4g57Dfyob\nBhMzJImeglWIGejRZ2XdXqWjrw50G32MlxKj4bKnG+92ko4WPS+9enP9BxDo\nfGxPYS1dRHBkPRbYkBju67yjKSO3UP/CCs1t65x3tdgWWA+TjhUtctpdffPL\n9aPZ8Jcm0Bm+OWbwbhJceDVMZ8MkJJ1eBm6HTxZ2Z+K4W1OoaycHwkYJAaNF\nzMGixJPffytw/ditwjaX+rWA9U43otgc2pWCM0tZqtmW9rE4ytNHOtTCc1tt\nj3S+uBQUJzdMyG8M/z70yEOcnhmXTQ1hrDNXMi3BbqA4dR6lweJFn9W+rv70\nAIE+\r\n=Cxlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjQSdbNzflcKRRgeFuecdOLMpZyNPwcgnG4v5afGWDxQIhAJd1WNzuq2HzZrj8Jupbl/a8cwYvceVeXVFGzJGoojNM"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.290_1617122916428_0.1442345563877141"},"_hasShrinkwrap":false},"0.3.291":{"name":"warraysorted","version":"0.3.291","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/wtools/abase/l4/ArraySorted.s","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"b24aa4d9d73fc75a746095ce423f5eab0a0b89f9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.291","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Y+q2ucjU8oAnPJ4/vJLhzTcqbIr83GpwMTTdYcYx2vM7HsTrR+SG/Yb2bwrppurKiksFJkkRuFXAQd74f5dHoQ==","shasum":"aae6c90023af49342d066159ef1a5ec41dea7b08","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.291.tgz","fileCount":7,"unpackedSize":80146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZWRuCRA9TVsSAnZWagAA3cwQAIyrnrO885XR1uYx9H1U\n2ISlYf5ZGC10jCJDDtifIZfARDB2lT2QeItYLH0FTcAtFsTkUAXEkFWgb7mn\nEqYoqqHH1csbT0Vu3Ezy8iItGaxR4V7Kj/ZhQsYFESpqYfe7znWvv2lCymux\n03CCA3tiT63w5szKeew0Xan2chMMoaxCV7qaHNOpbK1hvbJ8Px3VcaGj7o4C\n7aXs4Ch/gT6mbsI6Y10g/EICWLsFHmW+XBvGHt+kcmPe7xHaRg1i0LRsG2gm\nDDTXga1wn3l/W1Kum1tRzki2wKJTbk9smuluUU+3ee8XuiqOsedOXX21lpKI\nAQ50gcK+zCD3cP98pMm+s7Aj4jmlm8x/plXuWlGOki4qzYRGzfZhND8RCRlF\n8by3mttnXTgrbksdf1PrO2cSJMIkrLTV/r+RWBrwKkqGgsfhd3CcelYnw2lm\nvE+IRsaHNBSfKY2oBiZpBVemDeaw1q3xjNBiFESHXF5fUbRiz4botuR9KdeU\nde01nlz/RBiNYiWiFn9y3aLSOJ4fnBWQHkRQdmfF5wlxD/szPlMdeGWpEu2P\nm2pOFei6EdfoGCWFKbsgP2yxbKyznOnrvoJzfUEYeegPp0OjOKB14P/Brbrq\nc6KULPDEWp8qcnpW2TNbULqnbqsqAeE0p8Ht8RvbKwJAD/tY/6cEfDs8AHar\np6Os\r\n=bjiu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFp1bBJu9nC9j0anPVLm/UL9SfMVcuO2FKHhlhjk1fegIhAKpG5HoKiONOfQ5xTRukL4TGMTBdIlOsONm7D0OVIPdP"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.291_1617257582000_0.5640255940131282"},"_hasShrinkwrap":false},"0.3.292":{"name":"warraysorted","version":"0.3.292","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"/pro/module/wArraySorted/proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"70c3c1af8a335880c056414ff4f805475ce7cd6f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.292","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-A4idOtlWbNFJb6uafTZ68pIb2lnH/TylUfzsueWwL3EF0Ekwv+WTmjgMvD/Hl/M2OIhafNBjEroabGXBqy/yJQ==","shasum":"30652771410793d2c37aac9ff5f48bb433197810","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.292.tgz","fileCount":7,"unpackedSize":79649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaG1xCRA9TVsSAnZWagAAam8QAJpJIgXtYbIfAjxQ1VM0\njOLOHrSPdbTMuI94mFVFyztmqCT7LOMZbFH5KkwGuLZLwn+1PwrOvFfqTgsh\njQPeMXl8BLKRf3R+FVtDv/gDFY79WyacNaysaiHspviLzu+TTw7t5ZPvIjvB\nquvDIKwNh1OQPEM+UIRSHn8vvvQGMBk7vepqj1DIW69O/Ag3NOHYYrQ0tkco\n1/tq/7ylUQEJtVDEWDLcmlP+Kq+cMLyKHUahZmqKdxhC9x2M4ICMaoM1MToY\n9CXRdc//xHw5P5tSSJbufs+H8AK6gatKHRfbHHszukGf43mv5b1P2IL8vJs/\nR13IJCfiAVyvsmD9XmCAvgmuwtqIZro5HdK1fVowSfv82bVQypFQ2xvoZU0a\njXlJWtOu7cUxbiFBPnxqsq9/1Ry3/YrRHmBzjWBjbIpKt98bts5QEvr8H8rH\nHM15NKqyoJ6glQlsU5yRQIdGLgxVheMDkGGjeW33Yn142al1RCD8RNN9VWvy\nlPp9MQZ2xcVeaF7WIcE7Favg2BrzHXowPrCVGqEQtKtAlJSPJr14oAyfP/WJ\nFgvrpxpc0tZua45gquIMywkano2/rOKvqM/BEmU4dv243UrK30TPGHRkm6lB\n8is4qVtajl6Bec+Q3Z6KwOmOySKcI5hvMNpqv/rlAzm44F3zERa2ZeCbUnsJ\n+3U/\r\n=5kxq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpUaeUg9mJpOBXoP1sukAITJ/RvDYI2IELrZilLLo6CQIhAJh++Shxn0xx2fUBeaMfgDhOKoK8m3l26wrg6Bpa+9gW"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.292_1617456497106_0.2781916475517656"},"_hasShrinkwrap":false},"0.3.293":{"name":"warraysorted","version":"0.3.293","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e2e7bcc2a56f4c6a8c294d013a2944aa61ac70a8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.293","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-kRgW70pCZYtptUuOQFcNh4nZObV4V4+V4RWL8mKfLMIpyBXoncK/lef1ZZioQiCS9w6bJzMn0/u+tsWCa7lIrQ==","shasum":"120587316a9ff2118c994e7a55d2fcb5001c4794","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.293.tgz","fileCount":7,"unpackedSize":80672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaMHeCRA9TVsSAnZWagAA/LUP/R38L/SWwq1L1WoQx6aB\nx/6ztOc/44ljC8oU/FV/DKmbdtqAV0DLc4wRSX7b11X+dL9R6smOm2RwNPL4\n15fKg69zm3dgi3SHD1d3Z2Pskl5O6jM8SNVDVj+8xb4VH4Xbug6FWlt0ohTc\nyQ/U2GizCQqfDmMjCCIAWxHxHsGZ5T/PBzs2Ieho1A2SO7HpgdksEz4hpH0t\nEELSDS9O5xm12Bbl8xFSCs92eRienZoggkuks1hRRq++myBGJs/Ey3F/vyib\nEzeek64dpkmCXhktPBP11khdSr3/gQe0QQTb7WjG4CBHyUoWfEkPav0A5IBq\nesSwT65uhF3g04n78iouVe1kUNQPtTxEnZc05kS4TT/NCujwen7LRi/n7+TQ\nOR1ao9B6ppVuMglbe5Z9AlHE102nXwvXdOuw88GEAEPYqn6zDstfc792ChKe\nXW9roNkDAZkmEdwnCbGqLj8gNXR+Pf3VKgoxoPlcReONt/FV3V79Sr12rCc2\nPBAu4nIRuLXRpDsDMwaqQWTPZdvBm8Ljy+27JXamgdgyE0l/0NTP/gR1mZUQ\nnMvEf7dzLJAgsOIGc9g5WIOGo067gZElpR1wpaY7hNtK88heWYEUCvsQPi8Q\n0KpTRtLrOSyZFjDdixTceG8K7NqxPRuF6c2fbYsonpt8ADC2XqxKfHGgg9KZ\n0/ox\r\n=26Cv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChMolO3J5V2ZRe6DI7FSXOXlv5afmeXDoaY8bAtuaXuQIgRkPjJwdl7bqg2Ud4x2XLNAab8HQUgtGf6/9716llqAA="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.293_1617478109709_0.10275673770207927"},"_hasShrinkwrap":false},"0.3.294":{"name":"warraysorted","version":"0.3.294","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"dc8f7f1511436ba3bb3805f5d462efa5f54f2cbc","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.294","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-4WPlaS8eHmaskHv77mO2XIHghJFin8GNyf7P7qcnbiAzlGDNZywhdUwmAYQ2A+i0+PceASgb1D4ssMkL9Njb5g==","shasum":"de75efafc4019e81d8bca239560c55f1bc09b2d2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.294.tgz","fileCount":7,"unpackedSize":80612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaWqfCRA9TVsSAnZWagAAC0IP/2MS2vR3QpeQ2HWJSXqS\n6uHzXQGrCt/dEgzzf5re/T0NoqjNh2Tr5NfEpD9ULY+DSf0xwIuU0gQqwXRd\ng0z6OYXjnxVmWLLMggR69aFE7MJEhb/Wf+p0QSCLyk30u+QzHGrkd+2y3C3p\naYfg/5DqQof6fZNYmK06jxnRTT7v6tGp/fvLd8UUfJ02muaNDPjSbqh83EqN\nYCVBT5ii+K6mxWatkWBZzuUetalBxkaVakcAL/z9k/4SOKSzCxZKH7lgJR7p\nxLBhQS6J2m3o00s4Qr9FMXl+YxZsbeMM/ziDoywT7pHqSVQuD/mx8VdvzbVO\nzQG4it2zCZPawiQ3rwXyTuSGdxnzUb1TbSUpGnfE6TbeUD21gvO7xDVsv+b+\n0cMlXSdNTbZoipO4ODY+7P+dHv0cV8ZDh1sN6G9zUknuKVctTGBcmejzrPSE\n2ee1TKoK3Vbhw/0T9ZWxS1rqULL13qTY2rSVEzDCGYccJinHQwuKBH3dZQsZ\nR6/o6Y1K1drsXrEb8Eo53ZK9pmAWPBftHfK274ufvpNtg4vfqZkzRRXr0fcK\nHlzsxT8KZBBlFaxufegCipvr95skgqHkB/ILfF5jDqnFABtKtSliEqmnL0mO\nQIwl4xuCnEh9272hk6TCKzWFa3eTIJixJTDu4ttdboxF2d3YSx/o9Uy9ihMV\ngGUx\r\n=lAAY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3wLB/dZn0lP8+Oq3e12Y0xm6dFQm+ttlaIt1p5hiFjAIhALdtWUJFSByyTIh0DGOgeP7hJd79fz/6rpmO6HhJjsRn"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.294_1617521311171_0.04450998379122928"},"_hasShrinkwrap":false},"0.3.295":{"name":"warraysorted","version":"0.3.295","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1429f7744c66942e38b3592a07693ed6ce621a8a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.295","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5CKSliZFXOit3ExeUxZYBHP80UUrlr8VsEG/WA18C3Ff2zPkHuqIAl/szhWffGnvPrnwAXMQ+L5uBsa+YAX2OA==","shasum":"1b8d7e67b4926cbe790fdff8c8a7764f6dbbab86","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.295.tgz","fileCount":7,"unpackedSize":79624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJga0K+CRA9TVsSAnZWagAAYHsP/R9z2TGmSilY2EjyT2kp\nb5O+o/zCrNR8NpIAHvwZ3TnL4aOlOHbyU/JlJLUGl0juB9Ok3Cd7KOICj2hv\nEGZvQt1HPf9P9dd9T+K63czabd8mAFITMeI2I6HHn72MODJBB2WGR8bTKe8L\nM34WGLi4Rz9ScQfMWKKB74lRFg50+w59QoyQjxOfc+twCmQa3IQi4sEzeHGU\n4cZ/z+gD4rThwPW48NFIhFHR+r0eVb7MGVoeXDgloTjp1Q3lcyIn1eZ2jW3h\nhm25frJUdI30c87ZtxVeLtSyVWvbaJwm1tr7rsfxar3vUyERggWIOd7lYc65\nFMRv3AHVXf0CoM0C5B+9+qOpvY6ttpWULyT+NUl0GPa5FQFV6TzDThKM7AjE\nc16MW7fry/WG6HJ4cxUJbuKJSMGp6FUpmjitTw1Al7ZaEyr5OQ/QJ4oDfbMb\n9uebpNbVXynYrMMPBquDw7uYM10+CCitBSYqzjkBd/H7py66a0+CskTrQI2s\nL7cd5WgIkcBhfFYWgCjP8UYZJTsRWHc4jKG/YHEDvn+tGlNt/IoxpTS2YDFj\ni1gXkmEkYsWIAw5sgEBECkfNi6DsEZPVlJaO1H0gDKKV5OccJk3kxLy+a3Lj\nyn5fF6K7MmCWpHvMTIH7J0zOzSWL408f2Ic1zpItSxyHh4NRB9slroWKXEto\n96/N\r\n=mNt1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0ktIfPQ/P/DZA2Nz+Md1VLrN1c4omxrDXdyYamRw6rwIgQKgcrnTzSDXUAwD7fvVYzwXpYjSOCvrU4kT9jd3im6U="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.295_1617642173761_0.9885259390344876"},"_hasShrinkwrap":false},"0.3.296":{"name":"warraysorted","version":"0.3.296","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"81a84d0a948980d8742889fd68f3bdfc20c88e67","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.296","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-GHs6wL1oh0G7ALKWuX4IJGpna2tSm8vBrM5orrpc/G1k5JtMoOWTOf0rQXpLdzSF6lZQwspAsi3+HEGTtJVgrA==","shasum":"373d053aa8c896d5b05dd2d053f27ce21c009de6","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.296.tgz","fileCount":7,"unpackedSize":80676,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbFwLCRA9TVsSAnZWagAAzqcP+gPG+JaWIj84ZrwGR9Zk\n9YZtRg4y4fKaGxy+qXsND6foSnsrgxadmnqLEuxWokpODLYqWCZ61POQuBHF\nq8LbhlStsopl4PGsVNOzpF3FzbIXZU8LBBQZyx+aWHbJBctsc6D83lmPwlrx\nMBtipsdvxGHpEF4xGxnVoRbEp5eZuBLq+gnveHWNN3Dfj9veUc99uUmLpg0x\nWIHjjR8B2RN0D9aYVrPE73hKyafodK1j+ZRMqP8ZZI9sfO+qoGQkIQy1P9Eo\nPHdzETUEfra46fll3elxONRgOMMpLL5h4xnCJBqCWo5DkC/9zApBXmLuEBGU\n4OyoN84jpsh6jLjIucrZr6lTSR4LOF72jjkcsMTHjSQGkih4t2RvZpXRGAcw\n8rIQLc+fW3C161kyOYJH/ISv2+eqnoeuOyeXN4lfLkoOvmlw9rjRzKIDWZwC\nvC889kkSvcKzcsd4L1xHmgjkVMHgsxH6LBJAZbtavOsfPLoXUntWh1f9ZRfY\njifEFsy+5YtVj0p2JMYnypYe2PuGf8RjO2KNH2DCTGzfshfIQvrmo7cReYNF\nNk3JKqPlshTCYftSVUozdMXlK48Xy+2UEEiX9nPbB005jNZ+ElWR3eF5Qowm\nbdqQIpwvfceW8B5ltu9ED/98/Ag3QuefzqbJvYQQEyTV9ECQ6rJvh3jA1CYF\neemt\r\n=2MFu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvKEK8JnlZTGNBnyoSSbVMOPqUKE3aKkoVv2Q6/nhgaAIgAVHPpoqhooXDfRjTa9vjHYyxsCwEXSxfpQCzDDQ6b1c="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.296_1617714186686_0.235942650898481"},"_hasShrinkwrap":false},"0.3.297":{"name":"warraysorted","version":"0.3.297","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"8089270ca60d166b0f8c769f4ea9674bc8a76db8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.297","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dzT5k5P16bb+d7gDCTZM886GOlcB9w/BrF282WB55K3CeOsqj4GSKmrm06DB1B5oK4lJGFBFG6OD6nJpvLpCGg==","shasum":"a5e3f302bf93c84c902fbae95ea0742b1b7fa6c2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.297.tgz","fileCount":7,"unpackedSize":80604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbGNXCRA9TVsSAnZWagAA/ksQAI/5vdlxQ0GCcUXIdJW+\nmCbpGoPtbJl/DsYOsv5G8oidQXzD4JmTUwN0hxkIR+sMetUrqZgAhM2frdbf\nXkCH6Cic7sY7Ffnnt1TWktFVl1Rz7dvE0czRsp5VAcMlC9tDZGSx2mfTS4BL\n1IG9TykScNFwLnbszsmbcS1uw8TqVz3j9ogVEEnz8ZJyNu8yYWZzzi7j39Ww\nUZwoj4LL2xoc0LWNjPGiOl0gFbCmi8p03hBo8FTh8xN/mtWbXg+1ZQbrfIVo\njMz91AcxZZJcdbz9TRupgCEpQiLdSy37J7+egJwaVcwgFxs0iBvp3ZMqN6VY\n+nNQj7QUUjD4v6FT19toejRy2uKP02+YPckBkALXosCsHr8QwqWtLmHUpCDa\nK0+ppKF+epp15CB79A42nRfoi7C+N+HcrGKLiJPDd60cHzlQd3jWOGhTn26o\nwT5uc5Ac0b/Mx11cADCnMBLPvvSGc+TUCc5/6Bf0kxj7qr0wNwbmyJ2JBHF9\nIXzAYC/vTerM2JjYq2QDEffMM332rasqrPRBYQiuBeeEe+kcDPQ4xYC2/9t3\n2tguulK1NbdS2jZEIWd9Nqj/+kusC8/ODyQfvozh4o0o+iRew2YuuUIZk2u+\n1aaSNmzEmNwCCvrcneGfDrgJjRUzqmz5csz10U+4gYicpul6RNQSN4JKYpfD\nwEhW\r\n=YP9J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTU5nJDx9YxxXb5ooPogSl/JEZ9GGOqP/fv0Z4hkxo1AiBkBrzCdP7zBjB7NSRS/KWvT8dOKflcZTy1lonREa0n6g=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.297_1617716054603_0.8146513887353166"},"_hasShrinkwrap":false},"0.3.298":{"name":"warraysorted","version":"0.3.298","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"1a609d3aaa0e74b10d2e01783e2f4ace8452e262","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.298","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-7ocRTdTZs5MRPZPULqvnSoe5sZaivzO1OVEQZDuoGtmWZdeb0nL3Hd47p4hwpEyk7EbbU74W2tBoMW5TOxy1Og==","shasum":"cfa47e3ceb0d8f501cf6d646209f570e417e5675","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.298.tgz","fileCount":7,"unpackedSize":80604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOAnCRA9TVsSAnZWagAAjzMP/jEZwtJYZLMLn3Ixew59\ns4KJ9tN8H4rCkV/1otp8SLx4lsMC3371RPxyfQwa5Zf0qE7qOhyH5FP7w/vf\n+FUy4u+9KzRqDhSennn5hECrgaoiwgiwWoPZFgCPncPgMYyYTlMEh9K/DF5U\n5DN6lQvWWCVMVrfsT60r0+7H/WULUpHzFyzGCc2tMSC6/Un7ipubYn3UF6jF\nlFK8l8ywReGupkUPQCjvKkU94DHiZO72LvVAx3YU9OBm+CN0o+PzR2oeLxe4\n3bJuk+s8ayniifqfK0nxyfy24hprdChccrV+6Hcm+RRlTOPoynkgYiY+H+TB\nh/Xo7arkh9opHKY6fZyP0fsQuxSBazvFawdX8s2mEvp6x7do71rZlQlNwo5C\n7lDwaDYZg4jPH+h9p0XTBr1UFvYdmHArJkwIeWjibNwUptFXni8yUTcpGsQF\ngYCB9CrvZZXKN0PJzbFdhN9MZ1EuIA3qpAL3d8rTyrdJ/FqxPnUNIyGhI7en\nejFsUPZefYp7IKriGDTECjDFL+bT5jDECV8Wl7BFCqc3uS29/j6we1XGJW+T\nQcfmxeu+l/g/lTpW+eUdKK8kLBtFHQLM1+AK+gcTrI3I3G0T0qLMCPFpjk9i\n4pPQpTMI6VBzjcmWP71r7EcRUV1FV+gZWNOHMljWQ7q+InYNRvdOa4r1QY3l\nteDu\r\n=cot8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqYTe4AVPrexdvDnIHWpJKolXLtnX/8MXKNl+wSO97JAiBau97CJQEaWLzN25L3ACGJ16+HJ3IAP/h5PbaEtT3ceQ=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.298_1617748006942_0.45257374733945954"},"_hasShrinkwrap":false},"0.3.299":{"name":"warraysorted","version":"0.3.299","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e5d483d2886d7977be8cb9356f3c964eb5d9ea28","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.299","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PLPXMfYdw1YBuMSm34NduSghLmY602YSZUVTsanPd32cQ9bCOWeOqQ3+Y50pJQboReDw8BO0zNwAacGYDeoD8g==","shasum":"1a47134fb34715506aca9c31c6477f8d1f41315d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.299.tgz","fileCount":7,"unpackedSize":80606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOyLCRA9TVsSAnZWagAAQv4QAJ3tG0cOT0WuYw+i7w3A\nQdhQeUqA+RJ91SsV2JSdpTc+HpMoTNN2oU2LljePsI46J2awgv2kEpkyy395\n0v2oLQoq8sAv+pM9eve4pmJjqgPw8AAr4htGyLrLZhyKJLB9tKMU2Mbtg4rv\nH8G9MxKIONXl8xfDbM4fxpUQgfX+glEXGpNS+Y7vyw57lhegi0DymD5JHrGs\nrPT17iY6DlMSGMFtb6aoty3F8ZyGOXaaW76Fn9U5IyqrWSSNJlyeL/9pWXq6\nGJESYb8AMXySW41CgkzYso00wbVEGUNeEkq9tmdk7YwRVG510UXHp4LVqNbp\nujbUiuHcUBhDJzYdo6TxeZmiQjV+tOl/kfS9MtGlPALbeot/bDp+oJY3xquJ\n9wF57s6qm+xCM22K08bAI0VEsfqZj6UocejWMrlOSLv3OjrJlhfY+C8SiauQ\n9+CSGAO4XNWSovGH4zbAZGs0MEIxDyJ3hifN8qlPWqLUR5z2NO/0HSDDNsqm\n83zSKUmt29Q1sovNzPdSlOC+JFEKbnFKjv5zdnFrpwxlOl6YDdeg84JlWAsB\n90FUKMJpz09+Y9pGH07WE6TAUL+juQT2G6vrmOlpzBXtjzBKX6sEedCOTtnp\nDlBqTVrOFoShKIf01VPA/jSd0KrdlqrsYEOLWz2dyPzQ+M66NgRegNMxT1fa\nV8Jn\r\n=TBBB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaVRoF4oODdAIhc9DPIqIA4MVQHVPDsbayRMKBa6bdzwIhAK+ED1uSON/qGBeEGRhHnelbd/hxJbxMy4BveiAb7ZSq"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.299_1617751179023_0.7597987749801056"},"_hasShrinkwrap":false},"0.3.300":{"name":"warraysorted","version":"0.3.300","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"e226347ef1d3858ca6c89a73af6de03d346abd1d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.300","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-NGoQTv+ATVAUqUYaSUkxfKdw/V8k28QP1G5lVpZyEs6KPR2N9CjmrHRwRF40OKDqRJNwQPid/7ppnvP2d5S/xg==","shasum":"804433681c6d93bdff35f2aa0eea1642e75554c9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.300.tgz","fileCount":7,"unpackedSize":80735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbpqaCRA9TVsSAnZWagAAKB8P/1NPifm05lcAncaOZgpa\nmNWY1fQm7RXB38FdBtFpKWLkFDeE4WatKVvdErEZa1oH3C+mgZSYGNSZX48D\nq9+MR1GuX+KaZI45BDlT05FPf1fFS6YV63/MhTQFDBd1LbmxXD+JYNQSUrJH\ntng5k9NKsESshWxpY2++E8SHN8ZDTGw+By7Eg6bbGAg2b1DVDWsamFIXjM2k\ncZt/o4GAO0DbG740bHtl+6GfdiX3YrcBVQ/tp4omNUVIamEUajguwdNuem9e\nF+s3ZmNcyCxkYw3qkvGUSBektDDFS7KQfDI5skag0wZlr3EFzSXTJNZKi7Xl\nmNYbN8tfoO/wuXxhvfKKNSaA1Dp0NoQqAMTiEIwlXc0L1vXGjWMeHUpRKLj0\nysfd7fowFj7KYHQdYh7Tp/DmI9Rq7VSLSwfCwp1SGFRb4LTuqlaqPaskzLgE\nZx0QuMzbaPOvHGcBfnwDsl99e+khOmSXl/mAVAydZFoKmjN1SxxHnu2TgrPm\nmUYCbGU2NEUOCei+FqjDjiaodKYnrHDOnIe3eTgbIqWpppOwqxXxO8DKJqI5\nBSxT++367PYw32BbpV33x9oNqieVerIE6+k5Em67PuMZAxWOm6+sV+HzyQex\njxxvuTsJRuIdecOw4tDm0m55BKF0CBtU1Bkff+9hFrTrhh1BbmVCCNfoG1CT\nmIgI\r\n=+VB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD3D3XCxT5ZIzqyoG/JEKkx+SIyb+UdxY/FTYrtsp3wgIgcLtVeLYa68XYztnDaMDcPRLDsHVrHdx+prfIO24ZcNg="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.300_1617861273717_0.19193413065020493"},"_hasShrinkwrap":false},"0.3.301":{"name":"warraysorted","version":"0.3.301","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"825c3e88ec00812520188d230bc505fd683cfba2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.301","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-udPLtV889uoww4mtKTV/ve07OyGOxQVztDTS5OF/q7dsyAowQ6AmNM75AoTBoMcQkRYF+QbB2Jc8+/yQm7DoMw==","shasum":"9f8581735fcd1f2760aadda928aa5c1d53c7b327","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.301.tgz","fileCount":7,"unpackedSize":80735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbqzgCRA9TVsSAnZWagAApw8QAJR2qIBsn4NAGZFWO809\nEOFzAexODPhTeXqHQwR9gKLhgXB2xdpQzrW2b+2XzzuSENEwWj94r0qdYdYM\njQ47oOYXQT9CmCoP8Pisk9Od4gMvMfevx4Lp9/+z0bz4+QWwlJMEG2fJlZyR\nJfUKS6/xOtSi8u37IOMUuBYmUTRhXsA96/bm3cDgnbgwJMASzeV7CoG4nKVW\nw+NRH9FCSqo5CcWxvVguuvolvTgnLdIurcJTioHdHxkDhBPlYFoklHbXQytP\ndj0Uz1Vx4TwlthpSIAFAuW9p4Do3db3O+iYSb+MaDfD3Oq2YSIJvxRCEEuPz\nOpeV0++8ibExRaAZ4O3UItD7B59353WPoFcfHlSPYK6bqJ5fkDygN/GdX7gj\nyKB1ySLoz2wWNSbzLGj8XXEbMhktiAo6HTTfau7fZLk7UqToQueYxp79BKNk\nV0oNIghsC548OpetiCRQUegAWktTDYBRAbxwguW7ZkTSlMtgK3Y6ttEYDMbV\nnNelZKUwDnq510Fq2ClO/kXdXl3G5z2UFw0oiK+DsJQG+L6eBGbuEtY6fUVE\ntCv1AXzltEjnt8aohPWdfNv6oSxWXizTpCe2Y1StV6+f8RSkskW1lO5NE/EP\ni/elbGsfm/RIyPwlLbBldhzFNcp+gtFiC0GiPcu1ciazmKhiYVvKXvxuigd4\nC5aw\r\n=PVt8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFek3nxZ00RFYmE6FH/mx0oOCqv14+L3ESJO4HaBy9FnAiEA74K87ovpBHNvaKhv7WN+dtzqO5X5LgbgwxuKN/NRHno="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.301_1617865952548_0.19301337744269342"},"_hasShrinkwrap":false},"0.3.302":{"name":"warraysorted","version":"0.3.302","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"53f65f8232a4ca243e58823580431e06bf158001","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.302","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-WCyeNlqqBTnM7Zbgy0W+fPBhi7oq7eGbRGnf2m/cfNW39Kdsa1gOgrWqrKwZpZKCuSQCF/+OG8VMp2UBAtZjog==","shasum":"46f5184a5f27cf0666ac2fa8454746e4ee9b28b1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.302.tgz","fileCount":7,"unpackedSize":80735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbr37CRA9TVsSAnZWagAAOtEP/iu7QbU2ywrN2Zfl9cdE\n9DG+SNJBUVol6QfVbPE2DJt87VABvyS2Xj+XC9NSe/Dl7NM81mqal3wTeKsg\nKEJncd/JGEc1dmJB8yEws05NyKfSWisZaPDQf1b+Pdu/+zLOBSn4Tx+TOuKg\n3ye7NIr8Jc448CZbQGptXwY3GDwgF1KfcFF6BupUqvkd8qNArTWh2mvqYTyl\ntf780s/lQala0v/ClUc7Xskf17i+ZJHXfo6GBp5ZAKSgJU5PeMZ39KWvEvOc\nkGD+e7oeYhsi5kYu8hULYYZikF6KkLpPNPuykw+L5DLTYmR+NO5VcRKI6b0P\nKKnuKg5lhJ85IsvwdGXbeXan7CJyIxvRXYH+wtOo5PgflX4qntMRz2d1ILGy\n2b35HnNBTE0SamE4wrdr3HcG/WRO+T041bhjP0ebeVsLZkkXXr3Rx8hujb8h\nsWHixhcQ2lAzrfp3yqGu666sR2lHLcNhF+nFlzxNNcJphqLOos/CUTWUMgCZ\nmLQZtr9eg1/XycAL2KB6ulL40eoDV+c7Yz59fptj6+G/pN2Ex/+LGald2gXC\nuTcGYmzrbg0l1mjsNi/fE9Fd18n1igacZGYBtr5bX8Lfabv9KW/e/Liu27yn\nfn1I61a7b7dkKb49kjNrXkwfRoRgYwXo+IYTRfc3s1nnmrkggi2nMMK+Os+p\ngHpJ\r\n=ik2E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG36Ju4xfkhnWSV1EG8ENGUL0mxvVrPvEthG+DbDwrVbAiEA3/BG8u4k331wHmg7AvDgGlaPAUMr+s6BG39ie0+qll8="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.302_1617870331007_0.37590468691590573"},"_hasShrinkwrap":false},"0.3.303":{"name":"warraysorted","version":"0.3.303","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6b66f44bace5a61ba5f98ed0748ca379b2607ab2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.303","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-iCdQzPCmXxAsPIho7Lc5qn2aGgLiFdwdw+wuwdgpLEB9GNoWjZAa45Jok9AoiafC6jbgHcq2Rc22UEypUQpiYQ==","shasum":"dff42bc2425847d2660a6a437b6c5b5de8b56492","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.303.tgz","fileCount":7,"unpackedSize":80735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbtXwCRA9TVsSAnZWagAA0XEQAKBemlJb0/sEyauuSns7\nLsH5plmvfw0rBR8/dcRqlGQpOK9UeoUBAEqJbfBGyzGBAgQ7xe2X96dZa/KZ\nRxZSvOq/gxKEspxlXrz5Bk3rp82qrgOb8IJcaplakSa8Brz15SwuMyWbV0n8\nNsdDhvOGFAI/FUBvP435SDz3szymJhLeSe8mtAvsx/PFSSEEoGGRi7xIZw+j\nrQ7WouGeOHW77n9i6NIT3AWYe3hx7KV8y6wvzJrwEcv3q0jZt+Pdwmv4S6sI\nECqGhQEU/X/z60n3Lgs7SEhZo6MWOE9hF343uhPkluPqsv+L4q5h3Z/c1Jja\nLQJyP1yjcODM2PsBx/rvklx9wNlZFlRKD+bgCVyCXqJI0aBHYP+hVBrSkFut\nt2IAZTbIjzk+zynpmxwV+xqrYH1pJui111NJXAynhkvDvjqCJJKQdmkEyseE\n0bPR5qqjUlmCT2HXXYAlSmBA8TJo0hR8u38ww7z9TKE6zBdkBAXyZhCFOoG9\naQednq7XBxCaiVGxJFGi9B3BK0n2AOy5pKk4QLQTRurbj4hL+GbFztIOisi6\nLHM6LyOrZ7fu3hZP2x3KxwGw7QzGUuvZ9EYDqHSMYodGQULF8pI+Zxehir8f\nvgyQSRLdCEvjC1OnyRXK1+r7q7+LPZMOCOK7QeiHdZXY7ycRs40OeiR6SS/L\nmSOI\r\n=xqWt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt/etDT9OOyZYbS+xEZ8WujfY0ENzGahC+hbvQlASx+wIhAKHJHCnm2KMIjEMW5Aj5DH9shMhAOojZpfFhQx4pfHJA"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.303_1617876464030_0.0776906720325461"},"_hasShrinkwrap":false},"0.3.304":{"name":"warraysorted","version":"0.3.304","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"cca65716a6ea26f3295e6c20d087bb3597f448a4","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.304","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-rpWW/an0MLrjvAQrX4cd4NZ6EMGrS9m1Cdomu+/6qj2RcKHpRdYuG+WdRVeAEUDY2LbR01qvJiREk+pMdi40BA==","shasum":"4296af1f40396bb7375df306b41eba19adfb01fc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.304.tgz","fileCount":7,"unpackedSize":80735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcglpCRA9TVsSAnZWagAAUYQQAIuRJVNoRHAiIAzzpNxE\nYHJusBf1CGpaaSQC7dsCwEdfrGmFCS2vUkjn8y5h5IwX6XkUbmz0srxBV/R6\nDKRtRx+/iU6+mYtfqegPYS0t3Pjd++pNRIL6VSGYhp129Ueyf4WjLEtpRDso\ngkcGDU+VgDcGmcWwOakU/dY+esOHBI7z279AfUOxxdQK8JilKtL2NGZ99A5h\nXZPXiaNGzuGKaBjbwNwQQCq2R7mL5sMH4ki6CTZqdq4HvB/6T54RwpC9RgRe\nZEfyQ3qUDiB+7ybt9nWY+WHWU71BI9u7GFC4yhvLWT+KfQ/NqU/yElSrVQCV\nGk7gSCnot2GcQgS8m6a+6sLms9FNL/6MDIlA6AA0fmPqUZ8Xn3hFBX0uxL4A\nAQoLtEMt0ViZPHrI0S9NMYW4vAPsktof655U3izc/LvB+Y7otC612D2lgRd8\nHgw3ADZgunZJb1fHvr8cuJPK3Z8gpa6ikKfQKZFs2adhn98CvEfrdLdzD5eO\nrc89QqipGMksU4/dqxkQHgQGiBc0BpjuuxN7Hl0Ur+Ub7esLTnM/AFWTfGww\nIJL6cxgdI1rKpra+16MQLWPPRR8c3v6WG6yRDCxJpxMIdzwV1pQzcHghQazX\nuDThLrqG9gs0S9I0VF5A77f+hjkldE+qFVH65hr/wV/lMpf4v3zW/Oo2eEFL\np2Nl\r\n=7/WG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHcTNCk/WROT0swNXKEePmDe5Zv0xo2w6+mJb3fxnAu5AiB7konqAFYYqAF0EUyoH2EqnRyXxXtrlGVhda21iT5bHg=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.304_1618086249306_0.9355004795619843"},"_hasShrinkwrap":false},"0.3.305":{"name":"warraysorted","version":"0.3.305","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"6b59d7f71008abe0b487be460b97b7e2bbe8f184","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.305","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-CWcs0MyfhHF4wMdTSo6iAesGx8njU7ttdU9r+IwRjZlE6rOOxQ9Mk+lodsDR/doQslwzjcSFGk2F1kz5RqASxg==","shasum":"219a23f46bdbe8d65638c072c197739e7219e955","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.305.tgz","fileCount":7,"unpackedSize":80738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghrsFCRA9TVsSAnZWagAAAUcP/0mXZSeQ2fmC6EvqMDBH\n5pR0DEJGYC+bx7avIvrKwqrxy7iAIV8z3MntePWRIocin1c35ROFMxM4qdpx\n5+jZvJPrtSZUqN9QzTSC+HjefjN5gX1LKc7aqp51J497cTGMFRgxgnZtwl6Z\nups/EMniiZcLy/b6qvWUZM+dLxZENgqc++kn62dFZ/4bSk4zABdJl3UOFoCF\n7pf53cMPpGYI5Rn34ZTw1NCieaB2zxA0zQ83fuQxxh2ajUIIDxrsTTXAMgvW\njVQlVmTOWoqnjwty2g5u5i0D4ZPM5pBGp1BdI0izqSNKgj4Oopyhx9R2nE0t\nbtVvVt34wuc/P8DX3DC7TDMlqRsWBvV6OY+2LsOFMctIVCGcTjXxrbdt6a6/\nZL0p/by7eddmCFgiHekB8pndJsp4EAGVXZoObGGBvctFKCqP70TF19IxYbOj\nCEsCRCOZD/VIJpbzqsjIrYT/pk1/E6dkU42FvhriAltM1mRnhmgD4ledxIwR\n4A5nuk29N+r9Nerrr1edx65RY3d2j/8LDpIj9mG2QT013/IGJa3x8ssqsWIp\n8Qu5mqGRxKUCnbI/uTpMnLpJqOSN5Xt27WiMRvB7IjUYm3D1BkC3lnd8Xq4G\nkgZskNnjLes/kh7oFAlx2whxFDnumo+q6DVI50yEfQJKLk8detV2d7XqF2zV\nqwr1\r\n=0U2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBlIwiJjwyMlRjQYOucLV7dVLFmnFvbN7a9gZCmmGZowIhAL3aDrErHloFTHAHyogNUDMYqGz066BATA48bcLGdN3i"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.305_1619442437042_0.3027409391194773"},"_hasShrinkwrap":false},"0.3.306":{"name":"warraysorted","version":"0.3.306","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/workflows/publish/badge.svg)](https://github.com/Wandalen/wArraySorted/actions?query=workflow%3Apublish) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n## To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"32669106428e87f100866497c0c94a05b26db885","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.306","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-842+IP4EM5DIRXn6b/m0uZ2U7ckw9zL/RjX7hh9BQw/CXR0slhLr6atp7jcy8uTc9e9+UaQld4B+KXKbVJJoXg==","shasum":"ad64c7edbb938e0692b71514b5645482a736b212","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.306.tgz","fileCount":7,"unpackedSize":80738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh9nJCRA9TVsSAnZWagAA7XYP/jn2pdMkWj5KqrXT2UP5\nBJ98L0C0paOt5HBnS6iYA31LLfhM5nN6GbLvyHw8WzvK3x5znYcdB2uVDQAv\nO3YNQVEsVihk4Gfu90xROb+Ryq7Lhi3wpaREnwdQQ31ZzInHcr6xpIAUptB6\nt9Il1JgGoQcrcc7FLyjaH5N26eA7JfLNAw8Dral9lVDyEJ8eTroix6CXsWfF\nqLxje/3sK8YT5+J3SXke0NVwZzEyrJtmI23tDcEEjNTjTxHWKN/JaEOLs3lz\nGvlJK2NNVZKJuEh4IY/s5fezb9pw1mgS3MMTcndKVDCg5w77mOHpoQ1lM1rK\nCyoxpv8Pj0kFPOTDX2AAyjvccKFOJbpwok0XcEOjy3opmQDFxBoWuwZ5jW+1\ngqDhsIpk6V0OZKwX2tmBdhtGD5JrIRK7wAEuR/aU8yHfwqqWod5mSya5MU2J\n51DOe4Hfe2lM/tYOVK5T8iiRoxsU+c9GYcQlYjGURA4LenBiU4OY+a8J805j\n9Xj9BWKG4ZX58CUt+ARK+btYdcL5UFsn5QFEsQvpWaT0lKB9qgXmaSkhhzwt\nvJjLd/w7GE6Vq4Lq9W+cLrguudB1n0YqXVOcB6wF2AFrVg4L8fH+aTLOb/BW\nXEFpETkM7fTJoKxzZvuXSqij5P+Ze2c7kN1NBNyppSeyQ8DGnZBUvMxvSecv\nIjgP\r\n=/3ZN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFguJ7xMwahzf6vKiF+AUfvjr0vjWPlWT9V3gIOlTeDuAiAHPuzN1qpyZk02yZyQrhNpoaDKeVS6ZuNPAXiJneenog=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.306_1619515848690_0.554701585008559"},"_hasShrinkwrap":false},"0.3.307":{"name":"warraysorted","version":"0.3.307","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nnpm install\nnode sample/trivial/Sample.s\n```\n\n### To add to your project\n```\nnpm add 'warraysorted@alpha'\n```\n\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"README.md","gitHead":"55d4baafc7890c8406ea36ae34cab509d0b52872","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.307","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-rqF+sQ6INzyjN+4K1TjlEyyfanWi/AJSM5WRmojr+3b5UpxmOu2EHvHpFNFWXycWJ83YtmSbuxUPcRPhnARPdQ==","shasum":"0aa23fa43413bfc160add8dcc69ad2b18463efe3","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.307.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmcZqCRA9TVsSAnZWagAAw48P/0uy+TsyjLvB1zEq4+HO\nXuE7s6ePIwKo/uWQK0ncnSpwk7Fu1lxFDmNFkXG/6cY3NGLl60ZKI56TloDp\nkSAOHxX09R+xebhW9FggGMJyRxvZQ6nBekcCZs/6uPU2bLjI2wFAG5L8JE+K\n8oWfdO82r04+HByqtuCLQ82rpsqrzWB6BwjPE208qLBHNwIi95nCI4Wv9FD8\nzNLpxnoCL4fdtESj8KvrCybbqSM5rQiGeYl7OpuTR5dL5dV8qaLhQ1anSvDs\njSyrj3eiucPAy+lpAELykYuC3viSTXKpPgcC0eDidJuEM6qBa975xn7wtYJ3\nu1w3JA66VhgkOgiIasT2xPfp3+Pi0OB2tIL9p9EI4fVZ2003D+1rTPMIqyvW\n3lK0CN6Aj8HA/0Udnv+BPsCC4ljnyeewV9ia/Ui2jtbfh6t1CkaG+U7MBtgi\nEtZO3dXMCda9dlcFDKPLKQPy/tpOu4VpNjcDv97YGxXysfCo0yw3bjxGycN8\nlodL0EqLG3Gl7/gFzuaGybQVpU4R/uI97BoyX94bPSuptJl/CXaxMeWd4pTb\nGz+i1LOSWs//fmiwgaUg8WXIMKV/AZnOCU72heXff5ydFc4A9BxNz29YiQRA\nRLSWFRFVQqTxlVlQf7tIF/760vP5VM/HHA/BxHYUvUCplqC38uVThDCAfb/m\nia57\r\n=sIUG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICtrNlQYBe4+n++6J5WwjQ3VT8NufQjkfNMrcfOgDX1/AiBzVgzuG6u0EMXUiOXDwyzvrxYzedsQbJNrKSssFLwXew=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.307_1620690538006_0.3711677218098477"},"_hasShrinkwrap":false},"0.3.308":{"name":"warraysorted","version":"0.3.308","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"eslint":"7.1.0","wTesting":"stable"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"d09881be7757703788182faa3b1017a334b34d9f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.308","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-4lVofHQkR+rIauVFGtJIqcfBaxEoSbX/H6fCi8Rf8e6jxr+9UBgiIRxHl3z3tAWoe1tFYrWpjWSw3iPUpvnJbw==","shasum":"a7370fa9e1304a3304c026cee90e01127c2de778","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.308.tgz","fileCount":7,"unpackedSize":79996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/Y5CRA9TVsSAnZWagAAYXYP/iVkaRyE/NqVVqJOD1T+\n+iflHWGDEJccsz4jHnUIYIgvMbmQS39WVAzVZeaXBdX44y/x88QvruVKfNp1\nOWptmMzllHbGP4RZdWzXZhNUq6ViUjDwEqvmLoPXAY0a47wOIzPRnPLN4Rr+\nyHsrF/9YGa95bPgLddCHvqrOQEfqMXI7HP2dgXmASYx/oAIV7lUnQPrLYy8x\ndDgJKFqgu3Re2/Jl04IefdF6XWUfiorhu6IDY+8bxXjYpX/AGFplAOvuiDfW\nA5OK5EhGJcZ7NTtuLtHGZG3IOlUi8lI81ogoGPZ2RDVgtfdZ3bnSrCC9VdfZ\nLb9X+72W6ntMbAB45rlCcx3vqHTHGkbIPu26AT6FUSl+if4v9XlrZYuWTaQx\nunPKsD5Ic3nZ1zbCd4Iq9CScPX+c1HuuSYE5V+Cd9Dxt5Z7LJWLnQAnLBl+n\nBdPPTDhNDGclGGgP+pbmZYHOGd3ymDJX319Rd5zsox/FhjDIq/YUCcOtGRSX\ncUjUw51sSBQo7IO5KV+ezsZUnRK/p4GOVGctxnZAR3Uftpj7mzi4CRp6tXZy\nDb4riCHWwvw3KqBRjEaIyAaJfBgjMTvsP9PYo/I7mYE/ON/QykYFBs8/hGwT\nuJIa/TNcwazeI4NCLNwzgN47EAQ/Ldab+0cD5P8QmggfUDF5yyR/VE0NlQ9b\n9AI1\r\n=q6Q8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHEBzr3q3Y2AqN8y8yB2XbziVRZkA/0upP0HanrTgFvGAiEAxIEiOS5oMcOj017pfzb9H2kuFnXh6jKTdMvzOT7b2EM="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.308_1620833849220_0.7594166161087155"},"_hasShrinkwrap":false},"0.3.309":{"name":"warraysorted","version":"0.3.309","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"eslint":"7.1.0","wTesting":"stable"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"2a7831af636d538879da7c5dbdeb97a082d2594a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.309","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-1k1uvM/zCHB6Uy4wnqGuXtUxqRpYbfPTUkzOxQ5Ie7uDq1uSpe6Qd+UGtxvTunt6VO4iN2plzIwvlcjoQwTcPg==","shasum":"e0411afeafddcc247ae2f3bee9d32a995f1e9add","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.309.tgz","fileCount":7,"unpackedSize":79623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnW4qCRA9TVsSAnZWagAA4GcQAKUSKlgOcgXgwjw7P03R\ny2DhBW5Gf3irNdHBOmmd2lsvbxkl6jxkTx/FMQMC+4C4nqF9Yms/YUHuYa71\nY5YUSClRsuT1fF9XlJXHWOpPZO7kBTsBP1kO2rEMnHa7zwdcAms/GgK5UxNn\nU9iGXCR2bwTR3NR0RpJaw83CX8I4TJQniyx3PCSIL1Upru4gQ1kK6wfFiUT4\niG/8vjhaGwr/inmOComRBvatvitazFvxT21MYXPI9JQiAuSRqk/YA3v9UUKz\n25RO10xNntV4zKb4XV/VUkWLNQKgbwsMRP1Y06zDghbjtxkeftkMZ9c51vgf\nv+gVW/HApO0TseOXY4DfQawwjDFUcsGWRBbfwG7+MHv7jMSEGCg7tCsSrc/f\nEYyRJUPL2KEOlG3MFLcRXlYYmuNc6Er04Zjf5dhB+MgQTRHz6dqWogJ6+y3P\nn6b/pQ/4jaE4Eet+0I0Nbz4fEWSVqzj8JeMXUo6BKZRcIIywO6G4/qMQzm2/\nAlJdhWCex+RrUmqrHE80DjLf+qxDofIrLh/3IwMPpfXIzkUE2TOBZDPTW3se\nFS21crzsGLoKTgKCp597u6iWtYxt1tIFV8myDJLQT7u+Sc9NHIQjo4Zo+OIT\n5XLaW9Wchi3ejV1coRufIOU23AdUtVQdD9mcyLJ84tx/5iiNdmBTcCAN1NkO\nTMZC\r\n=26yz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsZOm9HFb0x30ssSfDkn2lyoVgjR2RqY2CkIjke1FkMAiEA+jcDTc1XEbDLu6uK4TuFJRVYIjhDvkxzQTPjQwo0x24="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.309_1620930090085_0.2915593036021136"},"_hasShrinkwrap":false},"0.3.310":{"name":"warraysorted","version":"0.3.310","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"eslint":"7.1.0","wTesting":"delta"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"6ca7922d7a9b95b506996bcc630c3221ed19a597","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.310","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-S7U6zI2t/Ccrn8PbZZAyWYtal0hYwoi1zC+xYi8E+xxsL+khYg9sAWFiYZJadfaY5SXbasA+/Ffs5vyjzUk7Dg==","shasum":"eb7390aaf9ab32b7372eefa30f6eb37d6272b144","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.310.tgz","fileCount":7,"unpackedSize":79621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnoRBCRA9TVsSAnZWagAAm/oQAIJqOcjBsgjDvtBTrUfM\nPLmWm+Q1FMctaFF53T60xIYg8aBkm8boLybQk5q+vBdcJNiJyOJZ+TLUvesV\nYi6kGc8GuX+KLQO57mtoiD7Rr3C6bzTnhUFRmnW5+I1rBLJxLRtdHSzx9/WC\n0SGgKb/H3KulgQm+/4rOHaFlVAGr+LQavWRSMT1oWrR0h4RdeIFgSTdxO+XQ\nf+dVgHU9eijLmALJ04+6NA42HR8NtSa2EyEOCExamygvqL8bcKWLU2RnY2Ty\nEobDmPfCY3Q9vc1Hz6SUIrzkxMtrPw7kyrsOBY2BfXw8fcF9IOWkX0Km5y4+\nsIzebyAE5gCCNMCwbtnf0RxL4PWq4vMrIp+uSnL4/p1wa7dxUR9s3IUXPuW6\n8Zv2eXRXqtCBcj9eLHqiMwJMIi6b1fPZGNKvnoNiT2AO0Fp6uaqmS9hyBEJq\n+zt6oMer6p4EpNRo9bVUqNAjl5FldMLF82tjfo7pp6PbEpGRPkNGVKJ99mJL\nR1+dUnamgJpdtWT2fPju7BcHaxRXisVlvuKK6ULwu1YWlullHNzdtKunHRex\nZRNWPQ8EE4YS0RpgMsefY+D43HKuxcw0fAFL9mag6AG/fwkV4DyXH6RJAYVf\nlupqNKj45jIlaZoJaP2SOmlGjlc5KvxhfYKE2oCO/KpJ0wAxHgx7/yiLUtku\no1TB\r\n=yO+H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtG/PYvHcNWfnV5taITe+ChCgzIlVNto6teJMrPvgyeQIhAKiwTwnnmXPBDWLY+gEKMK7X4LtFmvEG3WLcYj4MtxuR"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.310_1621001280538_0.754617432363381"},"_hasShrinkwrap":false},"0.3.311":{"name":"warraysorted","version":"0.3.311","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"53abc693374c47f2ec6a62d3abb0870c496cfa10","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.311","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-r2I+7ojvEZ7cCR0p/RZ/aFPWhvFUlkM9udM9gEL1hnyAV0SdNj7TjB5/+BPVhtjkXPvMVp2YX/b+8g63PqgbmQ==","shasum":"4c9db3f4f080f72dc7e5b2137670d8e6bcbcbef5","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.311.tgz","fileCount":7,"unpackedSize":79627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo/ZtCRA9TVsSAnZWagAA3VwP/0drD3pd+7qiq4ixy8q8\n3QJ07f4Tn4t5t7wUVTPlzu1ZgKwU3uCtnBCLKIGLQRDyCHa/rr146qtVmiXZ\ng2m8uC7JJu6XtKA5fU0UyriDGyaZGa73cwxgxfhlUGTgMLjW0Hl2rR5lQAEu\n6TBhazFYS1g+v5xMeJJxa+PmcNz+USJxy9SuJmjDlBf8m7sxh0Bj6gJJsO+h\nItyaiRZw2nZvO6s1M03i/+e1EY0CioE4Ziv7htYW6dHyaF5ki6Cz8BLRf1Yb\nNhkI2HEHzbKC8SFtDvFBqI9T+Ph0bqTP8mUaWd8nutErXfOD4VKt7SDKch7A\nq7wKpml6be4spyNz4Fq+d3DRDzbgVXcCy7ogcrhcdx84FOfhyjuaO3Wl1mDs\nSayT/uo1sgva06sJLMgvW61evId8qDtYG0UeR6VplCg/KdwExITeLbUyyH5q\nEvGz9qOxJjDe5x0SY1C+h9TXjdK7jOXnKNS72azf18J4rcxWKSDaST9VAKw7\n7YseQpDW98jOE650+bSYJt8GiO5SmTqLVHlnsVgiTpz6Xx6dXUP6fFLLSzJj\nmCJJkRx2uZXug4BZWDBB5nRujJ3HW5twMPR6NmnrPBAqLlqz6FLXykskCNhv\nFtSNpB7I9Xu23v1YrXgEDpiz7RvYVahmUe9sOh6hTbqYx747S4k/tCqVeWSE\nzWZR\r\n=LtFm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3JHK8g95Vuuz1TpOC/PpTsYnRz6FioyyvCuNC23Al8AiEAnoedQVJ3ADIqzHkMA9Ehmexlcuf9r+MzBxj5C940O3U="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.311_1621358188789_0.07031343596541295"},"_hasShrinkwrap":false},"0.3.312":{"name":"warraysorted","version":"0.3.312","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"32ad45a48f083c2679ff8e764fff8a0fa9afa651","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.312","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-BgFgzBtd5l3GOwOLGGdsCLacKYJ8CXrQ7mZjnj/4eOtgMd7GQZnnKKplWA5WRDOOTCIsYyCGgI0nyeLsdgPLyg==","shasum":"44316b22557c3f88352ba32f2f2838ea63c935b9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.312.tgz","fileCount":7,"unpackedSize":79627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr6//CRA9TVsSAnZWagAAHOQP/iPMJnf43hsPPW5P+87d\nvelu80t38Rxoz3NzXp5vZYwrrYlfuJAOLVagwNpYsVlp7wdlLZy/KEmgR+Aq\npBI8YM4HSDusvlx8RNbEODeZO3nTbX/R1h14iN12wZVogkFbxV0OQ1u9AWkJ\nF+24nxlxliqhbxpKeFL07Bn6yEGBg6o81DHmWASAMzhhLVT/yxYuLeGTDjFZ\nrZ+8IkYusdmA5l5FUePfgMP1oXKv1QnqfMZLdEtvG5Ck8vd4ukOL7sO/KmBr\n/bJvQtw80sgDyjBYaArVCEgnLQgP99Gj4orM4bjYzhtDXBa2/Ws9wAL5gY4V\nQV8CmjERc6kfImVRDIpDJRXmxxJkgwagwvlY9krH6qMK0cacemGo/C6MNiYw\n9zoF4ruHEcdpf8FvVw3obfvAlhJA2twwcvbrFhjbU3Mp7FP3lD9HEUT1GjIt\nrUBlYK1hC2n8kXDLd/4F4W0Azh+dIuALYw3GseM9N4nT2swPAfvah8CiozEA\nE1eFvXEyWG8rOqjHU66ITMb8W0qQaES/3j3C7Va6yd7CqDSfMGlBBik2ovGz\n+86hqKgqt9WxKgXIm+c7vAqZNImV8shbggmj0NV2vBKh/R5mtKg3KrCLi1k3\nxNflBcyPYYPbQnBvkahtTLZgjb8d3hMPwaqHepHZq8u4uA7GPuIRi6CQtzkv\nMlpG\r\n=KqQU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICa6prwCtTn9HFyTEGS61iQAI+PjsCXKinEdkIhMBQZ8AiEAj4uhmocRpjaZo7B3DDA47DE3QC6iclOkVRpgQdVhVhs="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.312_1622126590641_0.41982986030524994"},"_hasShrinkwrap":false},"0.3.313":{"name":"warraysorted","version":"0.3.313","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"ce5b754bfc67025d8dd671a50942ebe747bdf985","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.313","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-zbBOMs+58Krvt9N+wBFVVP39HR+SCWZBCKzMjoWuP9vBGzUbLoGJwB38lcaEg87smsWcRBVSHlIbo5v9T/e5Eg==","shasum":"e6df554c9a67a48dbc82c1b504908d60d918df0b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.313.tgz","fileCount":7,"unpackedSize":79641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt0AECRA9TVsSAnZWagAA8hcQAJSBiipUjr/qCpJd6ogk\nHCSJamo6cK30oehSf6pbyFRgdH6cuoH/0yT1rZE+is9miMLM4F/pLt94E7/b\ncji80k/x6uX4GUyvjg5R6sXEAc06VqLci3iO0afMEkEOKuHSR1C0EUd9ll7I\nkW1TIKuh5EhyF99dV2JDoy3kyl1PHbxJwer4AR+kHcaTZJAxCJs2G6zncxjN\nRL85QtGDTuj3kQ9YX7bierbSgm13HG3wtmbSv3v/QvMJTQ8kx4RAw0yrEE4r\nJKSTN1BiOf4Cq3Hk7tkE80CkC8dUvFpdE6zJEpqdC+BdswnnZEyA1pXl8GqS\nZlnFKTWh+sVrrh+7adjRXHM0jG5STDluDGIdfgeo+t0BA+gWRo6a8OYiL8PD\n52VncrKCwLnNhrVL9teQzIIr80tFAOuFCNs0RrVEr1dp2FjLN0hscPgRo+N4\niowIc/0cN99cT2LqCftZFqFCwJC5S1kPa2qzADnbgiKrg3flTsctC1bJ0hse\n1Ifha83PI8282rpkywc5XnfE4W4MBxasZvMgHaXONZ9jnyYJb2H3lpP7qpDC\niFCF9ZaX+W8PdF6BDnl8BSeXCZUUh0fgWeSmsUbEP0gUL+c+Iau0o50N1rNE\nMOG2Ig8PqnjvNBjgCuISpSmacirl0LJv7I6TO8V/OWoHWXsMD5sjMVxE8PXv\nhyTs\r\n=ijky\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXnDAWY9Pb1CJIUxFbRsnyZEZdUMwtcGnzEtZ4OqikoAiBySsH+L0agLzyItftmi+VRow5yhgempwtz9clLRMkwBA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.313_1622622211931_0.8674789373518066"},"_hasShrinkwrap":false},"0.3.314":{"name":"warraysorted","version":"0.3.314","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"a20a0b9b4416402af1a24ab8d7b21ca261ab2765","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.314","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-fRIrnYmU5E8CgMoHpK2qs2ZShqTJaesT1YoplfL1upJ9ms0xpCrX6swKAbiOesDZwLMovA2LtjJc5RCqbkhD8w==","shasum":"a724218ead462b251c34f36d7e1068fbd66d2571","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.314.tgz","fileCount":7,"unpackedSize":79641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvFpACRA9TVsSAnZWagAAyPYP/RqhHgBNWFOHD+n+1dL5\nQ6xUhgC1XMLgDyu2vFxRl/GjpgjeFg8M3W3jbPbhjoACuzxkImBDtOt4Zn/8\nFxnfRRMEjw8PEcIm5IVtfwCIup260cHwNwUsgMKYJ7/vlkPsOyThy65fZZ6u\nDZNrJgZR+jnJHpbiLp4xfBK15B0G/Np7F6qNPDjB7tBblZYAsQFFT9L8Wfbx\nXHC+FwqTCzydeyFX6ceY2KPw8KNmAD4h6sZM21HLq8ZqNH2Sh6iPu60Smkfo\njvMMaliA6FYE2RIkyaESDxrqi6boQSjrAHwrkmcSPfJXadDl5tsDfVqrwPBe\nj8+OMtpoxx5wZBMBts1V8xuBX/pbk2U9yee/CUHQJTNXaTOq3gLPeRN9kwts\n9juyn4Pd5BwEzdOWSNt8UttESuhPREyEFCVslTLbllJ+cRam0XaoOG2TX/ys\nts4dhICWxJ/xkZK7TxsxFI1iwQ1ObAuIRU0Dw4Y5i40S1U6NVr1lpj6wNGmf\nTz29L/pZZGxtnCEfVTOtPzXcS7VJDDfu063DNxO/+LhY8s6oLOE3LWBIjuQv\nLoZ+OXgnKXfbki/jkC7LLyQGWQTt3Jw2fK7Q4MjeCbEN/BDG9NtZDWxzQ64g\nAYZXCvc7efIZm0m7MC8LebQogt6FowtY3FdBG+CfN8IzDYGLIma+Kjjhn7M5\nrqnj\r\n=J/1L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgKLwJoDD8stORVMo686bkwlyhpjSVJJeAtuUJYqKLBAiAEyO6cSgjoj/V4D+a9pOJkEJVKuSC/oAc6KFyxmC6S8g=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.314_1622956608052_0.749514119678061"},"_hasShrinkwrap":false},"0.3.315":{"name":"warraysorted","version":"0.3.315","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"eslint":"7.1.0","wTesting":"gamma"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"0593a73990c6162905b9d4233db90a2e286a0118","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.315","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-TydEvHZvsQLoimn20Y62pMubtb/esT6hch6OgatJuoaKWoy81suVengxqT7AHl/k7Gyclr99jqSmIVIi+hlYDg==","shasum":"f5f909773116adc01131c2b1132d8cdfd5f829fe","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.315.tgz","fileCount":7,"unpackedSize":79704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwEC9CRA9TVsSAnZWagAA97gP/0EvmtzuLKuunDD1G8t+\nOFh9URBwRHnmnDnOFVGqW4Yz7k+C5lE5GwsqzGq7PaIr76AXELSV8cCwDADg\nGGLVeDaEwdRPsNV6kwPufrahNqEoseXBJbiBDNq1momPP0NtndyvIk+KrAAC\n48ymsq7ySSxGp9jfEMH386hxbQGvmDor4j8LGXJN7NUpkZ47uOOKWBXH1Hnb\n56UPTTDlBv76EPv7seLywjjw7u5/JNS4oZfWLsgUwtoCTLrzFpwltFAtNFvo\nHgEZgxuVScNNb62VcG2aRQRlVHkFW70cE2XdhN/F4OcYF8lDShgLNWw2z9Ec\n7tINL32hM080KQEq77ATOuqr/u78pMY3RXcDr6CFiS7Jc1AqMboJ6JSoDGfG\n+bDYyYRaEJYyq+O0dUqUPUL/MPNyF/B1g9JTubUaxXRAnC0Xt48NH9R/t8Tu\nj4Mr3IH8daCGvDsyapdg2wHX9eoav3bgWOrJrbxDb4h3UNP3xgci/k8fUVIC\ngnjVeoGrHA41hl8QJ3kdtqv0UHvhzBalnrNGBuloh6S3+ZdYwLwEF6Vz8UYv\nLzaAVutVtH5mmPr8jDAzM4uhacI6tIBqf7AMDv9frNc7rDvSOCklxAhiC54x\nNWMkBGW/96IXizfu0Vtlda6kNc7ay2FzI3OOFaWRf9/Y9VXMVjfb7HtBFScS\nc/9F\r\n=JWQT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgsUffOKSE0Al9Gv3JSr+4yEvSQKPuOagQrbSw54vtnAiBzmrkpFMLrLz1yVefhTbzvxvRxxliGnN0yUDCvExSyhQ=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.315_1623212221722_0.803269290163211"},"_hasShrinkwrap":false},"0.3.316":{"name":"warraysorted","version":"0.3.316","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"c5e9376c4f31c4b85a3904c5f783e2667cb72b42","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.316","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-3CVBTabGFoh9shH6J7/MnkWKZDfH+oI27AgyIzbigNu6IW97wZgFebCjEzVUS3FMiqDicu4V1EHGet5hIqYnOw==","shasum":"7e089dffbaf17112d8e648523470ace4eb1a6d93","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.316.tgz","fileCount":7,"unpackedSize":79774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3UycCRA9TVsSAnZWagAAJ6YP/1FJAIbuOCFuEMsGZv1Y\nXJvkR30Trm9iIBSHWS+dWnGAfX9mzumGO4JM7cnbubxXAmWJoCUqk4oJFxLW\nUPcYAuZiNlCSYpyKxZRf2zx++28fiY2JIgsMJMSxm4RN+nnj2Y/DGijTu5gr\nArBn02//HXWHnkZ2SvAY1MFlq4sCq2tylFoKTT1m4NKps7QmtQJQSWl3bnX1\nPn86DxFJOVX9ECXsja12PLEK3vWufKfayxdVQcX1q+B+o4ghjPrrl8Byl+1F\nHvGrPuPpYnU+yUsV6kO9LIhNZQDJQJp/iS6n9Idyp4mi5yLhY/WR4npwJA1c\nLtZSeE7MI28YUnJuyPgZogrBOQEB93HA9FZKaZUBR05kmQ9OJirNw5SCQKjo\nrPPbBNmTR/dPN4Xh2GiKyIDxlHOmC8MLq1eeYzQDodAaFVXLEv/6Mh8oRelI\n31mfApx76N6qfOGRuUUe9H3iqNiKpUcO/c7q2yeDuylO4HGQe+voxEu5Pilc\n0YWM0lNOIqKWaCswUhEUq2PaKwg2kf91bwnd/4QQ0mH64IGLK9LZgBe64Ud1\nP08ObIGwKFdJS/ZZWxb+dmEyV5gBh4SK8Ow/JVZkep1Xc6aVt7hwvJsULEBl\nceXo/aJ2vSQF6jq8zx8P9Q8WNUPR9jwjoaJEszey71QJ1KINDnpP5GQooo7t\nI2nU\r\n=55Br\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHe9gmyukfIIh/gAyd3Lm+Uow1KwHhyTJS7PKf6ctIHMAiEA72aNiF9X8T5ku2HOjHpjUkHY+5NiSk2M+hDRoTnCqWQ="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.316_1625115804450_0.6953679772911459"},"_hasShrinkwrap":false},"0.3.317":{"name":"warraysorted","version":"0.3.317","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"wTesting":"stable","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"17958ea74dc49b1840d0b90c2e363165c6457da3","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.317","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-42znyaYudUufXqrhSVSv7PRD7JtHrTsxfR5nAiMLyTTNSBKmOeUYX3UfcnXL796ZfZqBVZ8Ukct9E8ewUnryEw==","shasum":"25bf0a108d5485bc5dc0e18064ce22c975ef6c4c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.317.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3r74CRA9TVsSAnZWagAA7WAP/1/Lgj8h1fENnaTK/S52\n0RdCwuXzaT0aEcT1eXXbBIUfLHlJ19lFVJhBwlnpfiU3lmfc5g2+rkIYeHDk\nPF+dSiC8zHWPGpMXKtOSbw6rvP4xwNp4dnmWTFnoBGawkr7IEGPlaEpF2QsJ\nVtCdceAoumfYHZsyOPHKq93uPUIQEOnBnkGX5K0t4ujQrGNBkzrhKcGRGcRz\n5owxvFur3aMwYYKrJAH4rPddFu/9yGXEvNcb72qPDv+3+jVVU8eSGSe5d5Ic\nXlwlJ4Sn6ZBWCtbE2AvVh7OkSO4OH/2JuwaZRmK5Y3b6/OJsMOrEZTmk2b7w\nns+T46p3IhvxYcG3k7VE+WdzsLNDqn9x64okBiAAvpG7dVSLWseTjUZXBsFZ\nIWFSlowbw+mpgL8IuegMIWfOKY/ipzBSu7+yUx4aRjaYGz6ci4oVstAg+WvO\nKGaE+D887acpFGADzATOKCe76YhGhG21ZxBWa44e24J95EepmOTXdIg1SaU7\nnyWVmrSMaqkjw3C546gRamSo+Ozk1a6mMXtx3qHClW7sxc4InZU7HW7Q/GKW\nbJwCE3GmautHh4zzqkeH+dQjv7YEhQtJEbdzu1czsVJ74Jkwu/e0380ZcUdS\niE3SsgsrPisugx5+pM6CmTSL1h9G/LY4xQgNU87UEPZLQFgNz4kWZet6WZNA\n8Fm4\r\n=pGyu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCydPt8NlkAOz6njDuw3G7zXUi3h3YfCqdxsNsKjhBB8wIgQECcRFnCqebbfVA+E4os9OpQ8xaU8pJmu18+G0m0W80="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.317_1625210615686_0.8725534706737796"},"_hasShrinkwrap":false},"0.3.318":{"name":"warraysorted","version":"0.3.318","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"wTesting":"stable","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"f511ce4e748ab4b052ce52a3f60ed9c0c2f5c313","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.318","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-DIc76YgrzKP6r5ZBW8xCPYYvair9ESQmniuJZMUeueAkDzWiTvJ5mLEhd2obQ2RhMArmrD4MGxo0a5iq9sYs1Q==","shasum":"e89339f90376fb39da02b685f7f0b52694cfffa8","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.318.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3s9NCRA9TVsSAnZWagAAe7QP/RLfm77LhvumooHNayp3\nHBnyLBY87uFg++V3oAPH+QYSv0SjQpuWYkfPie9twnOAAZGdtCiZCW/ZIf4U\nyBF7OyXqO00Nyq4Z0Sze1pLEfygEE5eOLRKWmFjqd2FPKibh4X4FpFAX3B6r\nMh0tm3mBhQp+hxvZW+L9bEw5JKL3JtTiHRCdH5EkL35VTU3X6iM/q8SPg2jQ\nJDhhfnspqyABtn4T7KtUaQ9poZbCn9hwh5cz7FVPtDUUvz2z5WmS5WR9Ly+c\nZzaSPElom0X158fRsl7bofx01EKnuESaECqphHKTJgGpTqwR2L2uwZjQdbiz\noGvNGKhMMVdxdMc1kuD+nVmKqOLElDMuaKToWw0vth+5wOgx7iGwPGLHLLRo\n9dAjsis0X3u9RqeuC/c7m5PiybotguEDaag2s7OZmKulHLTsSdlRmIdh4TlT\nV8dclKbbU2Ye1SqVtpUk6inq3LFhwODOnpvMt++XiPke6J1Afs5p8agdTf9j\nFf7mT018cWjXhEDSz4sfc/3ontKm1KUmv8dJtbfP6qK7JVIJBgQt728XIvsW\nygDLH/56ms1kjU7veqhcmaoYPgUmxN4Fa3xFKlSp+3JKZrLzPoqkLQRsCFED\nKcscSl6EI1MpCkq4I3dsFjjMMrD/+DvagfMtwfmwqgfzBgNsx3xyYHdweD6r\n61s+\r\n=qQuz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCht1tKcDTFt7XAX7wvGA78HTD9wBSkscJlyn2haH/pAiEAuPnkPGDz8LFtFEmFYQqZ7V0tQrOBKePeRuAY699fDn4="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.318_1625214796572_0.2476151409728644"},"_hasShrinkwrap":false},"0.3.319":{"name":"warraysorted","version":"0.3.319","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"wTesting":"stable","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"122b7cedb4eff21531f08f2d8935c5d866236650","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.319","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dywknZSR1pOLMWgl5676FiYZtmBBFXQPzwVTVmDSfZ8Yr0eumEJIY+PVYZCCske8zD1n+JVjOP3iaWTz3Ynx3g==","shasum":"b8ca9616a122194a5ef926a6a20a5825eb22c446","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.319.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4GeICRA9TVsSAnZWagAAkBwP/jldAMoFm5r3blcnAYf/\nmbDfjhzHq6IOTU/43j6rjP2NmEab9SqIWX1GvsLkvJapLejmHtrWZQqCdwt2\nD+uHY8B9iTr/8uDQbeWeyhsc4D4BjtZjon+Nm16UxG1VuSX4DimQyW0CcVL5\nZZ2qk9Ui1IPFkm5ac0azMBh/SYqFg67CfT1L34ZGFZmWJb63Hn/cwtYb2P+/\nz29CveRNw3Zf994lY1kOv1M9fTuc3z71u7bZoiE36RS4VkqIXqUaMTjKwysL\nx6pmmUGxOtYB0UPWy118gfQe6nTb5ZiAa7CI7JlU8WNajUnMydQSpCAhII+D\nEGg0lTDUIcYXevbAXqHdX5seMQ/PXUeoVBqLGk2zn/4WAlBeK+9aTRdUUGv0\nboy+1mP7tCruTFpUa14LYa21UmxAPb4YnCa7FPLAR/AqCCkTow+r/6hD4fyx\noO+6CcMeotgiZLQo906lXAlRmnS2aiAnbCgfNLOmf0W5TAwuT4g1WVHom9qf\n0T4wOrKtafqXXFhv38lJUxyMAP8HFb3jpaYJNkgyIJm4YW5VxgPZ+xLO3rqA\nRYwqyugTUOTNseKcSM2yTfamssASQ48jX8rxW7o7MH3FnQb8o9QdUi1M9Mgf\nt8cUYr3UWUW8NWZw3DdprCLSLr5XHtZ75grJoJo5RwDGWO0mBH7yvvRWZhWJ\ntL0U\r\n=B3g6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUAugXsfezn3rE92vLH/GMmlwatMgSEvyeOUjThlq5NAiBUUw3YXKvvDuZdAT7KHROzyFCr3LCZnTSQ0YdnAiN6WQ=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.319_1625319303965_0.9653516512467191"},"_hasShrinkwrap":false},"0.3.320":{"name":"warraysorted","version":"0.3.320","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"wTesting":"stable","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"f4cec2eeba0cb4da2bab30952810c1a0e949ae52","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.320","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-qYI74qb8AiqSMuhPP9nObjSO8/4InqbTRI2KcBHjOvgy0W33cIprFvma9+LVM0xLs6bvUNtLDc9R9qMVZ9oQUQ==","shasum":"2daf6765b6bad2b45474c6bc156450f1958c0e37","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.320.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4YvECRA9TVsSAnZWagAAGuMP/i7aove92uncvBfU5Yq0\nWAQYEjdf6fF/Ht2Kr4M2ANFU4MJzRvaOTt0eL1D2/CMMIjF/nRomUnhjoi6L\nmDQ2Y04+B4iyg7DrHp+AkRk4zkLG94XTY4anw+7I5ndUy4QM6bZdfiPioXee\njYa/wKXN017A1q9Eb0At9bSPJJ8+2gPXebU82oX0xxRx0GTAKdpyR3pW+pd0\nTbqur30Mc5ttSQVTHi67M3xn98Jchs1xVCH4i5CMPI9dc6U9cvFvrOkqKHnh\n12EG3GqFmx8eb6MvZXblS4KrxDbvYOkwgFGbzdZZFciE/RwAL+HkyNFP2jGY\ndEvwrjTn6m1b+mtj6PuHnR/3uMjv5ge9vXxcAT04ohW6uZCwqYgb44xBZr5L\nFZr2tSoVjVj5ca2PXVfsAvfMBKtVBhuq/0ReSsWfCew7CXaNnkzee334n70/\nEk6Hw1a0oMe7LI0vPkxe8t9vuKwLLYhM46+T8SZ85O0/4f71U6qlJXWG+qzE\nO/ifY5APSzXvTyfX2rdNLvLLGEJkWRcpUqa3qMpWe4L/fP9nh6wrwxFLGBOC\nItcNhYP1jOweVo2At0iWADTSWBjfcgwdZVxA7pIKXASHHxWUQB0rymMp/M1n\nWYFBgFUKDe2cNjOYp+80k7bE0T7X6t+aDZRvM3S0/CuUyp5LEfcFpq/ndZmB\n0vTf\r\n=+HCm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAzxUFJtXvYPUbLkXywCCeKz3lp2dgaXxVipJODotMaxAiApXrKNh7AU6+31dTIlrDFa00PFz3GwJK8tVHSoV3S5GA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.320_1625394115893_0.3743689424566774"},"_hasShrinkwrap":false},"0.3.321":{"name":"warraysorted","version":"0.3.321","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"stable"},"devDependencies":{"wTesting":"stable","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"a4601e1e194dc6aa0e76380dbf2a2f49aca55685","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.321","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-JQymiGpROqXgOe9rWNxMF9bIdjWg8XNi2zXjQt6ymk83hLCODGqDxjOlGtN6bJGYKMFkGCFif5BjbhRQuRt2Tg==","shasum":"c4b54f252bc0d1fad9100d84fecc390a06bbf5f0","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.321.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5p6BCRA9TVsSAnZWagAAjUsP/AtrenURF5UScF/+M+qw\n8uK1XN7aIj4PwgJfiZGOq0gi+odgsfGkRVWUrVGEPqM/tqz5QE3jWk5rM1sD\n5HKPlrmKq+Fq7VH3wQ3DeNdDJtxUQ6CmeiMZ9/r02LD/vy9hKcjjtNyZcfEu\nmQvtjXVrD7JqE4/qCVg2ahdd/7RzSB8yDZOe91sZjJ8Fr9dG80imlYewMcjm\nKSmTLtu7uQmlxLsBGzX2QbdwMsZYk3wTkb+6rPaEp5mFIN8Is294cMHwWBd0\n0ZrZLhiZv2cIb+Lrx4DS4RJZHsjCU90rH534L0YFn1dTNqcRNpOo6+VBWoyz\nBvbTEK6yVo0Atl1JpP3sdlKUJ2WdARievtWBMDgc3olAZ9+mgm2AvhNzuU2R\nzcZj/s8g/PQ6DvbvboovSVGT+qP+zUzPY6FNJQcI8osLXEAVHBaq5O75jEtn\nECUtA32R1D4PESfXgu/Ul/fqS7CV8+RbcceSAqzaUuW4lM/Toq4fOqUBgsTa\n9otItkfA5V+qsPdBHmUFSFOIldbcliX54zkWiuMCv1kZcMgXPWBicbbEYdwi\nqkHpnaFOieAxR0OgAF6mfjq3H6ASlYF/51KpmtZA5t+M0W7mt+AW1pcGa8aR\nbMAU92Omq1f7JpXuHKyaK+fAOzdMHJoE8mBrcurdcKATtQNZgdwtvfbBwkda\nkfr1\r\n=kyoo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHcdwKLYPkfhrQZ+QNOS4yOraq21NHC4d2fnZqCg5ApcAiAledS+rHzZm76evALUYWTdPitoXzpOU/eWclFxw8b4ng=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.321_1625726593124_0.6183605726073851"},"_hasShrinkwrap":false},"0.3.322":{"name":"warraysorted","version":"0.3.322","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"48dd1a0995593a2d7971a0f9d6bd8b9aa8883c5f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.322","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-B7k7mRViqUwDkf7jyqk7KE+VZ6r9olMj/obhHzoDl+E3GrAOt2RpotzBu5RIvvJtQ+LmiFXc7LCmonTYXSJ/VA==","shasum":"efc34cc8612618ef816700dbf793f57071210d30","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.322.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6d7FCRA9TVsSAnZWagAAJq0P/29KQgfLgYPhT4mr/7lq\ngfW/ULSLbHIfxjuwjtGJ1XpktJbxP7R0R1nFlFlmDto8Unmfvg2awcjlwTHw\nZdCWKbpIJ5u9HEnbH81JN7qsgWGUin7uOoB4hg43Pfp34Pv+qZFojMi00TcF\nJxQivrShPq96+549kGiAGaDQy4kGP5UCZV9SEF4uzoz1Xg08IGiTEBKKsP+i\nS0ks8xpnyOtTxd2LIz1EVBdUQpxE5RoDLmUx2jGUKPDo/MkcDFD1vP5fc0ic\n3e3tI9FUnNxsxaWpwT9PqC1AzmuobVOhX7/72VmjvSGuBCKj6gtWq5YGI7+Z\nclWQIoPK4cNMsxKg5mLg9pjT8TWBSVeJCzP2rehOjnWaviu9cZ6hnV0fJeb9\njTsdsCTW4vv21U4cm5PbY/4DX/tanNkUQRyGoET0zQBKe6o8/YH5X+U18SRO\nsYFavLC4o6egjDN/oYRjingeiYCj14FE9+CvCbTay0QFvNQtbAAbhz3upXrj\n1/NaGkRdrra4fYqzmnRM2Eq2uSl++gxiig2c/MNJPV6DESbBq6DQxytRrfue\nbsCfdh5vxMs13v9GV93QvnMcDUJOsbKbmWp8I83mYvC3j9viipBpFhOvFASc\nIgHQoNYppuJ377nTwAMTNuNvoDyQ2N1yE1nrHZ9NEDA1tRF+yW5W4SsSsH2Z\nFgSA\r\n=R6PI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLFQtEcE4lxKP5DRLwZaWkyFs0rcBlAFIV87r3vF7YzwIgIvwEhVs53Imo2HKkhhWrHWF85YAhHF9FVNBYK42DvDU="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.322_1625939653441_0.9481029783348283"},"_hasShrinkwrap":false},"0.3.323":{"name":"warraysorted","version":"0.3.323","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"88fcd06dd6fe1fc5202aa623e40e5473d361349d","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.323","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-HwKgeIRrqIZ3k8SsUQSzxK0WbegOHU68at8jliuv4pmXKDpj8oKtSTao/jr8aHE+1n+MJjdNOXnUbiAFdNf+Cg==","shasum":"16642bf96c334a499c72b1059dc37e02612ec30e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.323.tgz","fileCount":7,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6w9xCRA9TVsSAnZWagAAaK0QAJ2GD+MXFnhFezAR85l6\nWZ652IeuVUygVvVAAwFlRXtzreU/4RVmuqdCkkXIz9vUK6fwAmLy7M+1nd2H\nfR/9l+KdrtynV8bQKOoygQqxUKfm1r1iH/fl87LF0A5Jmf+unePjEgTpX1vs\n2kr63GJFiHROfyh0x0PQE3AX4VTDezuEX51KuQ4lCmjO6RMRSOH5bB/hdif2\nheRYOWHi8CKIjOqH/Sw7IBbFharXV3F5HKs9qMzW088yxOWmgcmwa5GLtLfp\nFm6X2zH9UhtzjX+RUTbua8f4HRxTgGM7k5ZTelue53IoxCOB5EKFu76FmO32\nyzgRAdEQ+UhIyyj/+OodvLk+S/muPVboYaL9pTEV94v+KcxbToumh7Wh8nZK\niG/XaLO7Ah8ZQLwKz+QgP+mLI34vFPULV4J8nVko8QEy5eDzajwgzBOoH1Lx\nHXCqEwzNYQuT3ye9Tu2me5bGv4cz9lZTKoOkpx9l2aUgFwLW/SLyJUm0usaX\nY82ro7U01Mgy4AjoKgNjQD+8m1685FnfLfwutHWa/ePMR5sdxdWiOq/h0IJU\ncii8JB84vGBjbIq0KpAKbgqe02BXCDEWtvu9BKqCp/PGe79hlBZWxCLqP3dx\nu6BH+mkGl/ro0DxUmX2AG+Rtgnf4u+kBG8adpk8/7L5FBc6Lv1Iky95vP/l9\niTk0\r\n=Dr1r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2OgUwR7GgovzK6Fkff1OrqPY1vXkvhPZR/24/lZgHAAiBNQ7uam0R560x1h6T3KR90CdNQhZbty40TVN/V71pwfQ=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.323_1626017648542_0.42081655693526154"},"_hasShrinkwrap":false},"0.3.324":{"name":"warraysorted","version":"0.3.324","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"b13451f010c99aba1d634a9eb269a83c2f6f0340","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.324","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-JoI9tnFXABqlWP0VqT27xXsRhaI3JQl27EX5FRPnN0Ua5tOfyXS02cFz3mcMABv7n0vNdoZZGc9BwyKpSGmfFw==","shasum":"a9a0bf97eb2fe92a8e3a7fd656487933bc81c31a","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.324.tgz","fileCount":7,"unpackedSize":79774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCs1PCRA9TVsSAnZWagAAswAP/iBzuDrrfyR6mrKcv9OH\nJEeXL6SFlh88MTMIp9KSHxo7WMuAveMHyX8P2iyjF7Is9WJ7IbcuN00UUjOy\nUoZFKnWgxkX/JYFpu8Hnz8kJOkAptrFd6OpbwH9cfrpKtuCa0pgMdy3LylDG\naxtUogKqdSxhFk72eUD3plqQKnmbWNnu5E0IdVsFFJmAqiOZafoAy2TZYviu\nSVjG/coTicTwguq83WUxvdidZrRiWvgzQAFjn6W+mxLQTtNAsN3pu12hYcBi\nhwM8DA/CrZvubNLXkF5KNRc/lTTp3Tjqg1Ywrfcn47b22kR/H2oL45J1k+xB\n4ESKvI7mADDOYoHW0Mw48/yDXPvDtPk8oHWG+YH8BL3rsd32qWwFwaW6TKm7\n6RkqpRoqBGfHebvMnDk0n9oneQmaUV/daSN0ehs9KH6uoabVRNyPO4mURNgd\naaVKOuxEaFx+vb3D7QHhXfRZiMLVBp8lX+ROEoxPYiZLZCBXQIBs7QQZIJOq\nt2w4/tf+sr9NaOV7XdipRja8jTk7HLdQ0I6si+WwbXJBL+ZVBT5I67doCNpP\nWaKExrFR0bFej25IVu/QXtiC3TnTREZBsrlV6m//bMNXCv6Hk96R0UOXE5lO\noOivV9frJGNMuuMRfUxOuIg53oD2iUSced7Ay1D5YxOCg7iNlsIvIPOCn94w\niWE9\r\n=eQN3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvT74ABTqfv+mi3X3MmQsB05AM50WXz+VIvzSOiuURWAiEAqSyC+4P0U+7gpzGhfcTm7hjpcYhK7LiPzhUGOKqGwYE="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.324_1628097871507_0.27081047066689745"},"_hasShrinkwrap":false},"0.3.325":{"name":"warraysorted","version":"0.3.325","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"65ec91b69b143e5faa38c855e38203ef75e13c7c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.325","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-FMcVBJ6tSxzPS8340TKEk5UOvvYRgYV88yktPQmFEdoHccj6uEFXqIQwTmESd4AHW4DmoWhllZtlQAjvy85guw==","shasum":"a1d7a2c3e96d9ddcd14f797dd37b4a1733a2566b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.325.tgz","fileCount":7,"unpackedSize":79750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC/1CCRA9TVsSAnZWagAAjBoP/iv7pNEi5vuI4WPeh7Jd\nAbDWuwoMK7gifRfW9a0EXZxdKNiQ9JStghY3514XazLj5/KgN3ISV1HMbVD9\nUmvAlHFgSBdcdNa3UDH7BwL15mtYvvqPJYryM0gF56KNP+VhKOYoHFdj5tFR\n4OC1gEp9e7UJk59b5Z8q5Nwr2YUeG8FOFxoOqt5gxq4W7nFnRoU/rQ/f2y1N\n9OxeHS+xhhB0RsBCZYqrumxtymuVyGgq7Hpb5SfiSjXxlDEE6s+RHnYtPGYB\nAqMz1DnhaE351OtD1NWTc7K7GamfihdHuwqlMijncRHk5L4VF27o90MKNdGr\nfjhQOotvd93ySMkQnQguqy1mqaRkyuPiZVnHgVRg0TWhOwRttCg+jpGLP1ye\noIJomWAGsF8fV6t9yIRxyWcwrvXaLmy8satfyDobyqkIVEuMYrKzqscOtQZr\nhfNj66A+1ov30nONmgd6jGqPp0NvolTpcXkx59MBsPdesjqQcXaOLAjA+mcl\n1pIywadxLp3xOBlBOtkM32O5MuR4wGHpdZa7D+7SvjzszZU7z9Z/qkzKiEWY\npUwrZFIdgBICWNHdeOZZ33ic0QKTGIoP3b4Y1TN9HGpECw4eEGlUGYkPraJ6\nC8YlnKyGs/Sg4TnQuau/4Wf/vCSJKLf3WqlB5vMcSFVkPEiES9giZ2/MEscd\nMsZE\r\n=4Q0B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqFaF/6KM/9VrdJr5URjwhlkozQSDQJ9CUswbltnXRawIgSpQXngAwUCgQnhltH8rYuJ8lFKrPpNsSKsBTt/s2Uig="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.325_1628175682621_0.6297713071805959"},"_hasShrinkwrap":false},"0.3.326":{"name":"warraysorted","version":"0.3.326","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"9431c09a79c263a8bb368fdd86592ebc04d8a023","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.326","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-9RpVBuJZBwZ3Iga337w2Z1O+3QHWJCFRJN9wKgSZvjuVYZVWCypH5pIGmqkfQUfkh/h9Eq1OAycxhxJ0AhQBGA==","shasum":"c510e11b6e97ecf5676b4f7a811ea160089d6aa5","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.326.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDBjJCRA9TVsSAnZWagAA+p0P+QBIxP3lY7lNclzUlUcl\ncnvYGuEJpgE7a25piYa9OE0e8hNY1V+yxvmRx7eszpS3wczO0+BXj1F8ixsW\nxbvBNgr5QCgKb7bzKzCKcoWDOXfDXmuQITH6sUww4zq4/Ah15+4tchy7bam9\nYi/W89B33Vn0XO83rdWRlMJ8t/sUJTxOR42zHzsPJRh7IYTfg8AXe4m76Rgr\nkqOm9WlYIiUO9k+YN++r7D3mXbbLbxz0YLDPSXo2c3GIJDm/0cKFTKaof5ix\nSW9U73oSbDhOVJIZqNnhFn2G4RNQq8C5hvXQnuaiLXiTQG/kD8CL6O3vQJv2\n1sxCRNZ8AwIBb1DUnLaQYYvExqBQYnGWRuQiyINKjFOS1/+3vKGZzrAfX3/9\nAuiQ2pz2QKrlpqttMM/GGA6a4zI6tUPPBXnBi4WgRPREjDxdBg/cZ4SoMqca\nYcIFgZnzErLcbfZ60UHe42iqtkTJTiprsjUn+EhBzmFCgAgjkamPTdJg2kN2\nk6kySTXQHuOBe1Y5wfN2zSFFGLxXml4rwEFYUNHdrfRChD1jABmpE5tOtak4\nEOiGevqdOOR2bw6vgAGp0vm/H+m/B+uX2Rs25tUPkGwaLq3mVDAd7sCIcnhU\ntShK9ljWv2n7Vf24XQ035D1cJTjf73EbP16CoYITPcZYcrvAAmsyHiQ8c805\nN1bR\r\n=4E61\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOvzid/NoVpIgZS1TLRi7jdrf+mhbxpg4axIYhTxBz2AIhAJ0NkY5rfmy4k87BYFv3Fs0hIO1GMSfDibNrOqtmAuyi"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.326_1628182729030_0.45178340868397404"},"_hasShrinkwrap":false},"0.3.327":{"name":"warraysorted","version":"0.3.327","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"f43a7edd28f2fb1f4448379223593daba38f2f98","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.327","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-q6E8Rf4lfOizPuN80JH8hqg3sSHp18h7QjvtC3X8Nm+iHO3gjehanfbPGQywYT0Abu9H/MAQrTKYKSlBGyxddg==","shasum":"4ee5951ea9897040d17962c7370eb1e9f5c78422","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.327.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE6XUCRA9TVsSAnZWagAATyAP/3NEA5tHX54rqQceUfTC\nZyCfeJztx3ZVKeqtdFguLO+p/ct3igy0Sb/9c+2bvbvAtPSb9zqUaiVMZNkn\nl5pajxP+drIKNxqhWK8mZtw0gMZyc9KifO2HcRdTiwy9ao1debkrAaGvRdR5\nsgNQ89xZ62m54NE2x95eXYq2PSx873gi/hlRM2AiiIr+QwpAVzSI8hgJZtaY\nYYt2XNO0WL388ap3pskTs2E/eV3DxEIaIrMUSSYs7N5hlhgQBil7OpvVQnPV\njWYyhKh3vXTzdSsoh3X5crkonV2njsflrPLrCqt/S7Lj7yS5Be5NWW6EHofk\ndO0P9xyW/adPZ3X9vFl46I6VAsbQ9POmioWO6rvz/neYSo4JpeFERdsnvWG2\n5Kl7MCMgoKt9Jdsl26aFz6E0Rn5BhVB27J6d4qr3a5BM61XFfhisR+RS8z7L\nOlttmqTSxdWuY28wD4xSZ1bl6vYOH1Y8htHi7r7CXKMVrIK2dNE5eZt0NWl3\nR9qWcA7ZEFlxXzHb9X4DatprPM5CWIlX634habLS674CofYv/vvDDx17pplS\nXHDpIB2OzVtmPtqq6YPPmqdZT5gD6wzgS96w6aNkNlETKOUQmdaNI9gchNPo\nHHedBm1OguK/mY8RSTWV9ExT0bU86vBmJK+Por+sJ/l8rI1AVnswucRtyylU\nhNvZ\r\n=lULq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEL79KcC49DCx0Qn+3Ar+MN9z3wMESu4StUfsfFbSyGMAiACFJIqL9EkRBgFI4tuTirMcf643jsGL3+Pbyx9h9l0qg=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.327_1628677588763_0.30585709682491635"},"_hasShrinkwrap":false},"0.3.328":{"name":"warraysorted","version":"0.3.328","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"44d0dd841ce26999e9bce7777b8f8b62f2a4daff","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.328","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-qtU/rZHPbjqG15y8FpQYYCNcb/KcjuNGh0fPVaJW2pPdG+FvRu7ZUt+iJ3pfaOh6BNn+kMPmF3lglV2xhSKdSw==","shasum":"baeb71991accf6e1ada03780d25bea0231d2a710","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.328.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFTcQCRA9TVsSAnZWagAAiWUP/17E4pq0zXOnkmSb8lVd\nY4hVMNDzN/n/SEzTpKS8sRThzLKh+PRnw8EDI4/ZQTABU2TqJmML7rMhcS5p\n2DqwQ2vPymS8VztJGOcNjU8rmYuDsJO2zhtM7eiL1yJEVzJzvlR3jQJjgiL7\nwrjhGbtttbzkK7GDtxCiyreOqRPmo7+4hJ7rw6urazMMEZEvzRufspbNrqjw\n+MylZZURQf7mK2W30B7c5X9PZXNYcDOrRQFXJOO4azZ6B1MabNRfIMTUMZqW\ngxWzRYi18g1KbyJKuZxVv5omfJteFoAGPRXeL6XTNGlxxulcs7XiibtfEIcN\nkdKyxTtdy8QDO6DJJtU7aUNihJmgxRfX9W5CaZfTz6ErbF0DUIHV2LRPGjDb\nsqz+WWbM9wgPyGY3RDaU1m62ZSwKOyUDMcbrPouafpe30vA6DCKHXDp9jVjs\nS9okpHcqndREv/j58+qs0s8LjKULKeOlIiBXtyXMA6XpEXbbjxlT8JifVeJG\nIIYLB51EFI/LZAZL+d1ipQUPB+gto2O2Oh7wv0ifBnF/HU3bnPejn4Pn1BGB\nakgLepWufFkxPjDhp2hVuxhNs1rFejF4x3RTNqMT8NerTylepQGfDi+mQejL\nU8JhXtBEvqFAG+SiAAvLLX0eTN7reH1NZ+c9wJ5QsySXqRZb2jQIUboPkhK6\nMclw\r\n=QZMZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBnwxHj0SKKMTc96cKdYK9wS/OX97CVj2qgOH4B3aMyOAiEAyRuYh/L9BFcuDcIcQmR/nNqLRauyDJ9RVfGXinbt5HI="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.328_1628780304779_0.9179299009886945"},"_hasShrinkwrap":false},"0.3.329":{"name":"warraysorted","version":"0.3.329","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"599c81d72c5ae9276f1b7c0153859d36b712234a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.329","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-I/9RblUc4FBsDiU+w0JSJFbZ2Ln7gOiCT2ew/MLRGt0K9MLxETXQw9JMvFOvjawCnEZPP1hdhRZE6BSIhZgRyQ==","shasum":"61cbf2e865d662b0b426195accb3ed2bb8faa119","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.329.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFmmbCRA9TVsSAnZWagAAyo8P/0h0a2i34px4gDy9pm66\nWaeSE28c1iX84fmPYXmNbbQNpJq7Fa8Ec5L6c6nltxNqxDLqBPadBKlaNjoO\n5VH2oxJOcLu7rRc9T7ux0XBCuG87DS4MfA1hSHP7co6iZICaSUefrn+w3Dps\nJA/6srJRmQXPWvv/qi0jlTQqvMmEPQSK0eHxJJteG8Go6VED+M0+sZaRHDL1\nHvL32RopsojNwlaRcbULrN1ckPEkwbgu2iTrNqJrfMZnp1KaN2ZfXOqv9Hqs\nc7ZngppsGQt8u5js886BGbUhOeOARetq8miXCZwJkOJQ87OlNFEfi2ve2Z5/\nEXon3rCXwg6J8oGHwlXu8kFbvIlNze56ZPbS6ik8de+cMXZaaLbCUWv1fQQV\nc0i1yZgycqT82UGyGIOVGPiP7vaPlJAs58HD3ePY7xkhR1T6kAorm6EOJ6+F\nEtX6rhoBDWneH+Jt0N0/dLTDwBGLS4EIDIkRa/66gVzgQvB24Xffl6YLNyRG\nPTsBGXjCuRbycjmSMAzn/u9lTMAyil4JbGohjdOMvZ1RuB4pB5cALYAr9pP/\nGrnbef6BuSGWOfxGkpjj83aqJ5VcA9ydNxknvVCKvt2xQlshwCdCJCxMUGBT\nSMCk5BVWIwhTzAsxi7sP9mczYdjQd39itkomudGB21fmqXnx2Pvb+SO1t4jb\npHy0\r\n=+39L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp2uTg80F+Xv+aW8n+EDWoIzm7aBf7cXz4wIl3HOjoNwIhAMjM38HQrMLXBBaEc9C/ive6rhmNHrjAcsoavg4n5Vu8"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.329_1628858779506_0.6127017532845782"},"_hasShrinkwrap":false},"0.3.330":{"name":"warraysorted","version":"0.3.330","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"c1c50ed6b090eea928463133d026d8600bb0d62a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.330","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-T7bEKNHm4DaIXrmiq64hydrG9oVsQtGuR9yFKSNRyNAUzwsVEUv8eajOXudhm9ecoj9YozEpV806JzqkbNTfZQ==","shasum":"37aa9fcbfa971373dfdc0bbf5651995be129dde7","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.330.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhF23gCRA9TVsSAnZWagAAd1wP/2Y0gapW0usj6+foV38U\nFDWPdBiZ6CJHs2uZsAsVAQL4ZGxxunqZywxZpY2nzLHYZWniv3Q4mWfp8ncB\nwJBrYM1zoQyXGmw8KSav8RE+BnRT1zdaZeXSlJf6UCcmyQ6gyquUzLtuLuY5\n30gPqHQ4i0eU3wgJp7OGvMrpPIQrJI0zgGy4zzEIPB+bfdE3lEnkkIeG0NvV\nkrgxTcaioQFJRwi3+chmwP4W4W41BdYRnMiTdB+/DxE7TX0EL80Fx/ZWpsRO\nYY2nk4abVbC+7llF3k/sqlbbd6C82Z70BVftaiV4j7Sd4XMwCI+i5pXFH6j3\nyD2LAxcEbvT7aqy5XQihXNKIjzlwOT8UJBj7FoGhdz57iqgrBgJfbB+/YM5E\npmNpu+El1C80h8YSOFyaIhaJwaafnoybrBTIPc2HfrfLt5CoLnIwhy8ohVAL\n5d42YtMvUqjsxsVQGdHcmuasP+rKt+KdDM1KwFOawwAQfnYKH410r55262p2\nYuNFo5ay0lF3CfIja+pJBnXcohAuRwNq0x1nXGoJefdpIff81QOOnQAy+og4\n3hcXFdK0PnXn+f2FF3uNIt3UpqPIMDu1ZY/aHDgyZGtD/BtPNfhucHd2MFZE\nouJCr0arZzqnCeR4vUGvExbEtAwvRDMT4tqkYFSlQ+cPODtj5Vii+Bu/3zqg\nvFHt\r\n=ybp8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwuA8omuWPMSDxP4ZR/Hn9UrHdgeppKoQqvj4Mi+GTvAiEA8PedBmpOv1H1famMhjWNbJo0zQdHTIhkKsqgYdDtmIE="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.330_1628925408410_0.4657652907444221"},"_hasShrinkwrap":false},"0.3.331":{"name":"warraysorted","version":"0.3.331","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"449ad8b7324b12636367500d754349cf51580c8f","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.331","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-HXmDypgtb26xW4jAcC5rPd5YD6vk6yIVBrktgGpPsj3wNWmUhvpfh5f6gyx459FQZLcIhld/b3Ja4iJNMgASog==","shasum":"cb18b774ac18e5ad50ecd105f849a0b35fbf06f4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.331.tgz","fileCount":7,"unpackedSize":79748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhO1k5CRA9TVsSAnZWagAAhHoP/3MSsR9YS/ektEdoDaGr\n2Vr16pDpoEMInJm2sBaRxV/TPusKhbPkZlnYp2ZmCmYyXx3D9qJPOqeW+/u+\nSKl12yTXq23GZj6mjp2x7SXRe9BxrGprtjdNjuReXh2/RhYYKYHyrDboRygr\nh0j4zS4+4IyuMZzllR6vjh+PUokew2d+JAb553CbhyiOZD+XHpxEeo7Xq99P\nqRL44yc40/eIWN6QCDlria/OdeHM8a+rlIYivGnheSTFZ90yuhmB9WONb7zz\nnrVMUsDXwx8vE8CI8CVoHh2lbzG8SMAI4rqFiUg63SREu9mOQzBjO/8fz47R\nHu/o/v9mU7nu/WyQeeAZeTDHPWlZXXNg5AeF44/KwEyY/JW825Zn3cJms9Lu\nxYX2qUzMMtpz7JInpKOgrw9ouqUlTflAD2868vEnhPKrbnX0xj0yg7Tvh2ZX\nv6PuPeC40ixFm3A1RmPMbM+rOHNnwBx2ymTdz19T80wm6vbyTLTK0wLfZI8E\n8Sjew/zlKnIz2t9JpkJ85s7hjkHuH6hQ4g35Hqu+fxA35iao+wepsA+KpJXZ\nIUD206FN/FYIthe8E614JAI/71eNyAP5JZcmSEwjGirfwtD0aclFWv0W+3/5\n+NsIEmwIWShi8t6nZu05yoawedkjJYbV7x0sEU88wMk2KI3FszXnXykH+rD5\nmQdr\r\n=Mmlt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBEHycK2ZajqKBIp8b4gKJTa3dobrxs4RbSNt1fjt90JAiEA7VOZ8HUBtRS6/kyPYTT/P2W8P9b9Df69s6gHWobj12U="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.331_1631279417035_0.05322987732507922"},"_hasShrinkwrap":false},"0.3.332":{"name":"warraysorted","version":"0.3.332","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"6beeb041ba49a0a43042072cfe97cb16eeee6be2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.332","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-phMb23PBwcuzWabYaTIx2AmZP0Ja75hLcORxRejorHhM64seAEj7t0DErZOYyDdILb2qVpf0Thb0G3Q6or+bJQ==","shasum":"7222488666489fcf52c9010353e1c916f8042789","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.332.tgz","fileCount":7,"unpackedSize":79748,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwQh/XOXlK7c/79fMWm4z8kMbwHj7GGQhdDjO15HRkrAiBZhjZ+ROmGX57uaQIH6iHt1q8/0I51q2o/5Ri7EVC38Q=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.332_1632870972931_0.10962957372840632"},"_hasShrinkwrap":false},"0.3.333":{"name":"warraysorted","version":"0.3.333","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.1.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"3ec291e747f302516288351a46e5d858fb2633b2","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.333","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-C2+CFmMQ832qud1WQaWrBq58EVUuRtP5ZxMJF0b5mLQZUbQQjcih5Gy/HF58RNslBPKKRNEqsRsxpl+r6wt9qQ==","shasum":"ff75912419f891fd079c8f07b67603cd487293ba","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.333.tgz","fileCount":7,"unpackedSize":79748,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCl6k8xYYcylvNTOPrbastvB0zUAMxjqqoXo8CR0+oVAiEA9ChpiDoYNrBY6uzymFWE8epFwfyx7wzlwNMKzNFC3Co="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.333_1634028027677_0.5484904444424059"},"_hasShrinkwrap":false},"0.3.334":{"name":"warraysorted","version":"0.3.334","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"745a6f797739c73eb74b1ad3bbcf256058bc24fe","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.334","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-2tuH94gEj3rx2A2t3Gw/COiSFYC/q7WxWr+jLLVe558z5JcnmVqo0e3Hn2CDmXj2iSs2Y7beufhob/4jm3i32A==","shasum":"6c96657993d9cd98682a8f0a8c3327306c9d058d","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.334.tgz","fileCount":7,"unpackedSize":79749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1dVK0V8XHjKHGn0iVgOtLGdyLfKNxpZZV/T+kKW//vQIgCtveRjMvw5xvgKMzQDSyldztrGEoamkIP8g6IZ7WriE="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.334_1634191405716_0.416705262940966"},"_hasShrinkwrap":false},"0.3.335":{"name":"warraysorted","version":"0.3.335","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"f8c6b22ff6d78a765036b917a7e4b4d60a4257ba","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.335","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-VcO17IR2uoske9pwZwnhu/QOZSHt/mcpuIAyKWDnLU4aBGwXew4h1R4ytJELaLffpk0AX5AYq0EZNX3md6SupQ==","shasum":"4a02780282bbe61d34f553560c00f8254ff28c90","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.335.tgz","fileCount":7,"unpackedSize":79763,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKWTNzOy+/xz5xkg+r5UtF5DoO3QsaCjT2m5BleYWWawIhAM4S2rbUB/csm7Ffa7PHavjXRuT6qnhGBJ2HK3vHQHGj"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.335_1634884162696_0.40957532001924446"},"_hasShrinkwrap":false},"0.3.336":{"name":"warraysorted","version":"0.3.336","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"29a40a1d47c37342e149ce581178531c47154e39","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.336","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-8AszkRAHcK5mj4h3i11XVLeorD1glC1ha2MWSuPgSZhvLQgdTg+CYkTuA0a5zl2XY7mRNCTVP0df0wshMpyE4w==","shasum":"3205f6df642834d97fb270c88b73951269e9549b","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.336.tgz","fileCount":7,"unpackedSize":79763,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDQMNKZyeNNel9ojXW8k30NYZ8P6iQTv0lWMGWZvYq/yAiEA4fdmtU1OW5luGFV161bv2Cb9a3ZOH6Dv5eQtaHBMjlk="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.336_1635490788217_0.8881453570455715"},"_hasShrinkwrap":false},"0.3.338":{"name":"warraysorted","version":"0.3.338","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"gamma"},"devDependencies":{"wTesting":"gamma","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"bb82295cc5c65efaac65c573041608e02f24398c","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.338","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-j/ZvkvaZi6S1YpNdFnDWlQRvjn19vXJPJLzwTv5ZudSK1ecQZetyI4zs4/mr+AoY3Osx3D08KIXt/umfTfI0BA==","shasum":"3531091499661b9245b6718a5fbdfc14c74cad78","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.338.tgz","fileCount":7,"unpackedSize":79385,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkrOpQcgPlECTVUXJpP18ls6/fKUPzo68/Qo6ewnHYsAiEAqxt73Z/X1GdpmfIiwHdYloGZpTxfYIIK6bvmKL5MQQY="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.338_1635590194133_0.6949180095407357"},"_hasShrinkwrap":false},"0.3.339":{"name":"warraysorted","version":"0.3.339","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"3539434e33c9e9690033eb341314e7c0f7f278a5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.339","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-NCxog2gSyZuKPczG7CkH4mwY7b45ltdrZxE6zcGVAmROjUewTq6zSGh4V0BhxWbdxkh2E+2nTlgady+2FipjsA==","shasum":"2b89d67c6ff34321a1de84ea4fa0f06b8861ed97","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.339.tgz","fileCount":7,"unpackedSize":79385,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpMxvUMR/X7iNwAIBf32ln7rWHgk5c18Z/Eyegad7aUwIgWeBPkyD5e+GjU9Qeov6tO/p5wvFawi5a6qvwvad74uc="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.339_1636468275780_0.42839293984649585"},"_hasShrinkwrap":false},"0.3.340":{"name":"warraysorted","version":"0.3.340","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"e1563f23fa60c36747ddb41d73b245bd32c5b5d8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.340","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dIXhcGgu1OzTOUAWHE4NWEn0jzmHPf0GefsqbXzhMSMlUiQg3jurxsjUZjwHZTRoU0cUbs146CUjy+HySzFAxA==","shasum":"b53cea061bb22a7c19709b13c81916157ab60ca4","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.340.tgz","fileCount":7,"unpackedSize":79387,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2vjOVbE3e3HjIsTLQxwrMaL9D3rWRrXp2mzxEqCM2sAiEAp6WZseQfxkjsfzUTGlsnATCJEA7tuLesulWDQPY2Lvk="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.340_1636523500559_0.3208123423134479"},"_hasShrinkwrap":false},"0.3.341":{"name":"warraysorted","version":"0.3.341","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"4dcb52b5f8fcdcf8c1bd57c8e58e63a341d78fcd","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.341","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-BEB23aMTCyl9gTSGkJWWDAGDm7rPab6etGZc1Iw3U0IjbUEBw9Dpu9cwh2UR5S0v0IJRw+uIN0Q6Er3XVVoPeA==","shasum":"79b8f9d90f08bd0fe133294637f02396e0792eda","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.341.tgz","fileCount":7,"unpackedSize":79385,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVwdZX5Y0dn7RvLIPbxFVXYExA8cRJoWn0Pg1+BGJSfAIgP2XplEOIXn4OTzNVZ56+dQ/294kRtwxj/ae8HMtR5WA="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.341_1636539437125_0.13991333771312697"},"_hasShrinkwrap":false},"0.3.342":{"name":"warraysorted","version":"0.3.342","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wanalen@01.school"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"e16ed5892debe650f6b1d976f68405609640aa07","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.342","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Z3TxuqDRpRSvI2J32FouwfCMKD9yXnlhSDJZIolGTq4JaHpeW5jRQmnmN2uVnx7wYFoAuUXRDa79+wbOFTQcog==","shasum":"a072196b33ef4e11deb73aa48d0348296a0c10c2","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.342.tgz","fileCount":7,"unpackedSize":79385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhndQcCRA9TVsSAnZWagAABvoP/1u6L1nXDtHnh06m5KgG\nB0sLaKPut8HeFHAtarMlNtjlkqqDukn1nSzUp/BEI6XeYLXYdeLB/ecLF2si\nrQ3hZ9paXAT90gNo26BH6iWeuvZFhIJBsK8ELwhx8oA3ILOq6K8FuLs3NTVm\nRN4ZpliO8yJ+mC4tdd3ZLvf7uw4JPLDHtXiOzyf3JtqdJPRcfWNjcrsZ3P56\nfTwxkYG9CZmftsc3yWkyz/BAq9c/OknELz1AyXoVbl5uSJUDqYekPtsEeMe/\nkVC1nNMfqD6F89BrJF3rdQ6490joJf6cywrpbRuUa3Qk6BWeW7a1j1COPonZ\naVc9kGV5Ps3If6MuKGbMBiTLvyQUoBcBBn+G3M/sLVBWjd9nxMuCmto6jhJD\n8sxVMPxiN964OPe7AoF6TcV90ixkuEc+SYegziKVxEc0GhlBa+HP7sxJLyNz\n75nc5hDFt0xh5dhT6j0/w3P+7g9sKiHyHL0m5dns6Tv6c8Tsra0GJIfqFoqZ\n/CSvgDqYz/N4SMkF8sLd72drtAzGRPdXG3zXt1cmVbmn2diPNXA5ZHUuIlwV\n6yP/WKawAnpqEdgAOsxNC+sf1zb77jgZv7njwhBo58qGY3xwkXNgJqowtPRQ\nZY6Av3wgGXjzKB46u0EOCl/c8GM7LySZK80jrbDFx6zCBzUEgP+K7clA8e13\nREBE\r\n=XCBv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWCIm26IaD8AMteX1M958wxKAUAlce+fCsa7iNCG9YhAiEA9WxHh5eMCQ/oZSP+t+GnpyPxjjoVK/T+l/K3AXwJVao="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.342_1637733404054_0.35119227202037173"},"_hasShrinkwrap":false},"0.3.343":{"name":"warraysorted","version":"0.3.343","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"629c9ec62bf290d2241fad9c4b2162481966d7b5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.343","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-qYtrJw7h9LDQSXehx7/TDN9v5Z0VBxbjZqSqTVqtPugsaHiKNP5Ir4OgszPwAzUXM9z7X3sny7ovQkYPgFxUug==","shasum":"459a471cbae9a7a43871cd64d8c6f7497d53979e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.343.tgz","fileCount":7,"unpackedSize":79405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpj7oCRA9TVsSAnZWagAA23EP/jY6dFqt8GCeE7CKf/A5\n+FbIned2IH6Q1cEHXokXeoiPE+vnctOJH0qRb+ngdqPuk0k+WdCAyswwQd0v\nQfgpV06ub3OzuRLyDd9tFMlEa/263LhOqsLOT656dqhW0bIkun7zYCvtvBeG\n0VHqtDCxDdEpgLfiwFa5v0RK2JlGRoGXDZawMP2JfjtUMYV4vvLD0MbsaERD\nIP/NbPhlzX0KGIqN3Us4w0GpsjinkBnQt6WdiwiEP1KtNNQCXOevznptfItx\nlcx9KHmZJAwy/KjWpjNXWvAir+Yuf4WRAr1ns6uNGe+uYkIkrUE+6JBTlF4p\nVqDu8eWnspW4FTew0JX86f5uHdL7UBM16PF8HQ6zppQfEJdaYxo0zXtxyipR\ntrVHjtR6+rBpcB4vUItY5aUdnHBNMH3oM/o0JXbbFIRFAILP4O/nWtXnoQH9\nMUTL381HRNudbEmlYBxfpnSAvS2xewWd9OxF0YegFDVjE38zrba7t9B7HPde\nmqVn4dvjE/6kGNTux9pQ6713TUhJDsZmQLk3+q9Y1jeHPiLoDjE3bZl5RBpd\nJ7KSJg+Xy+I+dBZliNe8MCTNUUs+VKTyhrh/fPBgKNyrmI561XYzzmhiTBi/\npLXighrHQYgdIfcfDM81313m4rIiLjgzoGBv3spHERiWJcpmNFNtnj3YsS5c\n+zDv\r\n=qy9x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvXGuam8ocMjhFoNZM61CFAtIE8V71wRiRM91kREcYNgIhAIYKIVbZyCEcKfLlmrfPbhAMEj6pDNt8ZHBvg0a04CJ9"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.343_1638285032610_0.1702250033359718"},"_hasShrinkwrap":false},"0.3.344":{"name":"warraysorted","version":"0.3.344","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"delta"},"devDependencies":{"wTesting":"delta","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"a63d6c7d9e923ad0f1aee2863821a1261bdba25e","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.344","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-4cK7y6a8XKsDB1CSmWrVbKO9WIMp11PGCpCL5k1lR6C03v5FEEw/LoZW9sazBoIAY0Usul9Sd9+23NWWJjxclA==","shasum":"d2f4d778896fb7a89f03f07f6f598a9222a1ba9c","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.344.tgz","fileCount":7,"unpackedSize":79405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvD57CRA9TVsSAnZWagAAKsgQAIagmDlHuSkiq8t4N9By\nKQUvQj3GQmzgA+mOUg2zKnVicTr2yrvG8tmXB78RVYXHXlTS/NkbhK0tb1XZ\n23HRWax3qQ5/LjKk2LU9OH1q+LTsSJlRv9faLNT+6jYkj8Ea4/khBmnOreHG\nEsmYyMcQgKoV7qeP5rYB9TEE07J5eYcEBy56QNCjzEoOFlMFfXaqqdy7eDa4\n9ljlFiM2BqmQtOUt8UtOTeb4Oh/wF4cv2n9XXElqfCI2hSvJimQzVvM37pxc\n4QwkvpdCAZe0VuVqzJpHmOsqD0wdMKgw/WgFnsJYGYgscZqp2dSMn670/d6A\nqsWV/7A1WmqRBQUVHZaBp4EXMAoknoiR26DgWbO8Tz/oNgdJPz5drOtdQpJw\nqyA6az8lqrRElEKZBVBK5vLj6NAA+mxGaR56Woh8T06595pRK1ykaW//Kct2\nSB/GZ/ubWJt3ZSF3pMobIt5Yt6rml5u5HqA3wuwPHkJw3ItPa/yUAqxCp1XT\ntDs+xclwz2dYzL2QV2OIB7/u/t33OQw1ts9MUn09H1IyoNeBqctupAdDi2P2\nP+K3ObKlnrfOTWJm0TzbzgFB1qR5ck5nS0VwAWwRXUaXg4L9ge2Z579AdxpC\nkBROFpyXTAeQWC+AyyhaD8l8LoPn+GHGqtEeuH5iMHIKU55INcCeJ6acnsdQ\nbF3C\r\n=7pTn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs3Uk+J5sqMNUe5FjOQzWd8V6WHCfcQWlGZm7Lw2hoiAIhAKO/FUB12Tnr78cDQXgbJAhN8IFd1F626RDDjmVyrgRY"}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.344_1639726715474_0.37082937617256984"},"_hasShrinkwrap":false},"0.3.345":{"name":"warraysorted","version":"0.3.345","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"615560d28d8fde7e7fa49c10c036420b1c3f36bf","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.345","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dFdUkIFKZasdbpQ+HZ71xHC1b+h3jU5MnAsxxahUZ1Vkl9+L15TT6ig1o2UWIe0ioUfzFTvqe0f4BKDgoigvsQ==","shasum":"d49336136769c2f978a632975ae52d8302dc7bfe","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.345.tgz","fileCount":7,"unpackedSize":79405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvfK7CRA9TVsSAnZWagAAJUAQAIYWO/If/5gkCxnGt7Tn\nkLvf+QZnDTJR9Z0t9jTHYT3iZJuDVBpXNTTWJd0du9kh2D1Ryldc8xyESTo5\n/hgVO+vmCzW7HuaVqBwHvwvT3UyZ5VtsRR0/aBx+evo0mBGxIRPeS3G2U7uk\n5O5PuleFKWFZ1k58tur9gpEy+bUB8q7E64Eq/dTbPQ3A3Ca4D6NqncFTeK01\nzjatUA4hEZbtj+kvb0afy1d7+f+vP7aSbAVlXTLGOZ47DIs9n2lcmOBRB5LP\n2nvX6sZODIRVd+UpELjLIAOrLyo8u5pagqL+nB/wIrpIGuwPRraAes2jsXUE\ne+fyPFBLbnBDeNqmSvyME4ZVYEWsTFFS3+DXHl5gH8QN9EmofXXvsWCPn383\nsChTtLFBM2HNs5/e9H6Vhl0c2hv4JLk2QX5kxuCnpLdRkNrW7PXa+LfucuxV\nCAYsjGhMEMMx4i/oOYHysg3k6jRIST+TQvpZHIBtMQtk9SNZi6KGB9Dww4Id\nze2yhcmsEl9UfNxJ/x1ebESUg8AG1WugH+327/+jIzHizbcDPds+x8e8Lo5R\nCmaC5nnR6bRNlseTgiW+PqijZjVoagg3d7ncE2WqGJ5MbenuqYcnpk6AYQEL\ncwr/3Ci9bMrG/zQCUCWz1H9wXKT7rfSsJbVGgu5DHVpU2kPHFE3E9SM+ucwk\n5IoX\r\n=OS1t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAemDtXX3TnIi6MmbViqhhGyEYgDgHb37tag9eQWXy/mAiBkdFYdyLklFYF6Aq4OqL/tN4jRGiqvmKyoOlWW5JKvRA=="}]},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.345_1639838394711_0.040663981070625965"},"_hasShrinkwrap":false},"0.3.346":{"name":"warraysorted","version":"0.3.346","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"bfb3876a76133591cde86ec43f1b318bbf9e31b5","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.346","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-va0dpqmBHEtYb7hka41g8Cj7FrgApvPSWbWu+cpBtPe+w/NYKQ6KDVQSQsmJE0iO8TCGx1BvCy+A4fvNjmyw7A==","shasum":"ec9cb0cdd9d3f51b8bb87a9842c5e5e369ae1afd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.346.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIEA0cHwAZAODyxOCkK68svz3VtGthN1/o5KkWQVik+JvAh9orcuLq5+P8ChuSHR1N5jqnIlraGfBD04WwVphUIbM"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJia8QsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpeZBAAjOc3ogzh19fFzjHrxaNZK5GGQoYn3p045f+BIr6/yDz5MCsM\r\nLjcyaf9oHVG7dN2l98Ov/3B/Lk5Zt6XhtdKsVxCMp/wpQm8koUjcIuKyGchT\r\nVFSVA5L8WBHpBB6fDMWH5Lnnt92gKLR8PZ8+0USGc4jO/fFp8D3rTE/luuOQ\r\nd/hgVrXdzjPtrViM8GnTI8n4qyI1FRPQC26eOCgWtTk7WW6g+ro0/nCmgZtE\r\nKEnMEXc78jTo53sDk6oXvJqd2Z+yU1lGOtX2Q+FcfQ/HFk0Dv0vf1ICKyMXh\r\nZqmdJtyjSJ0Jqv5fE0Kul+p47saEOv62fz2rRUjV9SxA9Hhxy6D8TjcdmNpV\r\nHe0QANAwpEY1msMrV8YB9mX0TDbk1/Pc4DY3mROdxzH0Qq9VpEE5RqWZWWOX\r\np8ZqQJN+yk8TyjnIgctm1DbiLZE7R7L5C9ilXs0eK8whNsl4kCxHyShf0waD\r\nBDP60ltdI7P85iVzIxExAEw/EgwTgI3t0Q/oGjkcgGxPlD1mUxA6D+Fp1Amv\r\nH7oEgaTPU3mLNPg7YGwJQOGjw9PShWgNZlCabhBU3VNAXBMBhOzig8hxcTQh\r\ni/sdJ3boP58vz98ozvme824+7v/sE+k28X5ZdRKyZccWRlFxacNB5Dnusjgb\r\noRur10WjPFLy9kZPGXehwqH9RWTmznqP7fc=\r\n=sSOo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.346_1651229739808_0.5061986863827299"},"_hasShrinkwrap":false},"0.3.347":{"name":"warraysorted","version":"0.3.347","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"0106dcb0785139b1e78d4027c516161a6a3a6120","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.347","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-0Zm1SGNyJumthduljbLE11N1UWbSBgC5OC/XFRrM/LmXR8Sq3M39jmvKI/NazPX3xTPt64Mz+bObIPMbwa7jKQ==","shasum":"31616e2e9afcfec0274027908d2892992d35b915","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.347.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIUyUHl2gMKqPRSJI4vrjifcoiIn+1DgYj/pyJNQnyNQIhANDwWbLkyDe0iliRCSk6q0y8SfPafegkQI4LwizFjMqb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicBBsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+9RAAk087Najq98kuh6TRGyKEAkdVE0sWI7l89ogEszozlTqEd1gz\r\nIjQh6IqDwmKWM1SM+9jSxS6XlVTBsPstWnYSg4YEoSBXYM4Z6w5p+zftm06U\r\n23JW8wpzyG1FCcNvNHO8AjBHbuavMKBtmqE4hCYM0mJbthYAw5kw7mtgnz4L\r\n/isoRIMzte/HUpenv3T8uZJqULZXhiGjhL6NtNY3tqq/Fq5lHWRNkEJTPBon\r\n8CtGYFIy56+KJSytiVv1uQAqJxou5xhEQ0hZU2iHK7WjFkWAEqIZqByIXgXU\r\np4/xbj1ThDFlOtKIZECw9d3wufRB0RLEOTZWKE4AtvWiqgv0X843GwSNE0JC\r\nddBoeVkGma3Ptu9Urkpv5xwzkC7yDIO8JXWyPnClINIDRFleC+LvtArVdjFL\r\nK71U5Ho4KVZPzl8ZAXO+x5rxpy2hoiQgFTRlCY/C/X5Y8NYUvZ+fuJ09nqG2\r\nIiN1I4E4KQqJkjlD/HrqU93QnWtNN48Jde8AHqx7Ze/e04+xRVCOS4P/JnCr\r\nEcrisO0hR4VuBKLaW3/T7gLAVfU5Ud1d5jfUPFhBdFQXjubz1rcdZrN2chqZ\r\njT2yNqUo2DQzvFV0Q3o8xte7hAEPv2z6MMV8Jbj1DS6mdBE910NZsOwakCIx\r\nku/n4sKOzfsC8yQc4oYLFlA+FUuoXOgYDWw=\r\n=qB53\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.347_1651511404228_0.6214904821384448"},"_hasShrinkwrap":false},"0.3.348":{"name":"warraysorted","version":"0.3.348","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"1d2c5e388ae76c500a463657f29f90820f4cd958","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.348","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-SUWGbXZWwnorTfBblukgRJR3BO+uVGuBHxLGDJ0IRxz+9YBDMrsAaiBovOowIKbQBPfWqfydLIX1VAFo1EYnkw==","shasum":"dc87a556d161b0f9eb98b14e6ebbf53665933af1","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.348.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHeXraO0vaqMDFHDmoAENC7kViDCtvGwu/l06QHBeyMAiEAviILktImKRD0hKoaADT75PKnqF08Z0kEZyRy186AYTE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicMycACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrunxAAlFPRaHd6PctYYWoMLHRZe2SVyEoWy5ORGMIJFEwB6yDC/fPP\r\ndhCbDxkPdrxLAQfHUbJT7TtAYSJ/YEVkz5jX9UhrScY0qj+HVcechwFthCL5\r\nliiEdvIOf8hD8rxgy5iX+WslRuW+Sp2HVuWpc5nrFVs/yXjmbhNFCtEeIsHX\r\npogKLl2FE+5ljUyFXxxup6zKMbjYs2Ld6KPdH3wg/9fNmZ/PyJitr8MvMELS\r\n51qmNhDxcJNg+e1UhPywjAuhdCNcoD27eMm5Xcr96rd0mbX7ydvT90XYwgyr\r\nb/L6gg1C+CBzlemPpRioRUQ0gY47iJbf1d3Yq1HGcCzSIwAJzr+BGe4aCANl\r\nQbK1JkXRV4wp0Dn9xAcscensBU44Anz8yaVcikoUzwqbSmhsG8EVFmSn7ZlE\r\nvZegOa9bX81FQ8tEqZ/rTmUTYtC068HOtLPfbaubem84XdSs2W4YWakGvkcw\r\ncQaLXi1cgqyFO2pOWK5qjingFZ1BpzVuVlna4Cb0WiMSUqUSn+NR1IiY4dzB\r\nn+fXegVgUx6GKrlwgYkvxcFP2XVjPSYBjlUP6rnzEbXoxMF3V6b09MdcgTrT\r\ngQUE53nX0XOpfycqkw3+bJusoZmdSadxuJYAYxW1Sj8Bw5qkhPjV35om40V3\r\nKOOH65V3gj00l/I2k3YU/qZ++dCBeoTrWJc=\r\n=6nv1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.348_1651559580514_0.5042901679532505"},"_hasShrinkwrap":false},"0.3.349":{"name":"warraysorted","version":"0.3.349","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"702e3eb312f784a72460b0a880c19273a980d859","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.349","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-UWxMXPHzUP5v/D3D4fMSpNfwOa0EK8QbH5LWoX9V6SnVAugT9fpKlvkZQj9VH3MdCFDmbTDX2bsEN7iMpFl3Ig==","shasum":"bb1d274176b2df07aa0de8d68a6ac3cdb38e4e80","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.349.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtmPjNXFgSZwEFuNow0gEvtDEDXFwJi4J/CUf8wgrXKAIhAJgBqMYqO9xKg/tJHiEglLwIrwKfRlPPnQsSl5KKqtAl"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicRUIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9dg//e/Fy7F88pybVXvOX1yNcbW44mu0ShLjuriUJU3bwF4f6zrCL\r\nn+O8WGMrNAC42z57hH81yRVTKFpV8ojtXqp67VrCrzf639WhhES8B2/+doj0\r\nAi5FJfg75/7Px0jd3fd+t5Vbkw/AnSP7DmogjdzzeEifn3zwT4Y6Pdcy37qU\r\nvhr8ILnVCXoHYuIRSFwASFx42gfVW1eOL7X1766bShlIAiKUzV+xzNKmACgz\r\noUoYBX/t2GpG7hQf67GZsQGQc9/5ygjzCHaEJFdi8xNt1OmM4c7/z3/Ex54T\r\nbtCqLw9MC4i0r2uHryqQBnY3Zb5I2nLKQbdiJFUn9bYTKL2A97cprpEhkft6\r\nwQ1g0x8zn8VhpLjB/+P8ltsflA0ofKhrKO1gXBHiE2c9YQkCSwrJ9dXT2QY/\r\nilbskDEcXnqdbrHQkSlPjNfB58Iqfx0cGNDG5slaqgjzPDncQ5cExSaR1jUo\r\nTrWAyixD4tGFzMFejLnpAb52vCG/4CZqVgLB2qer74hxAJQjVHSZlmEcZ2Uz\r\nysUhK29WdpQFOUyiTdY+CgucBmgf1IssRAVW190j4mchLk9auKSchr+16+tP\r\ngWKNvC3Gn3ZPRurSQYwQklcAaY0lJqpn8UsQqHehDpgjIbgD8v2GL33KhYku\r\nKIxUub+5lv44LXet8h456M0HPQn1p0rJ4bQ=\r\n=NJbD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.349_1651578120178_0.09584652443962827"},"_hasShrinkwrap":false},"0.3.350":{"name":"warraysorted","version":"0.3.350","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"d1e1fdaf336fe765ef60392b199a51a214460b92","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.350","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-7GPHGJbIwFY+OpY8+teVRBA4TvDNJDHPo4MZcDSKSIPk3M0pa7e6w7uDcdFSVxEAmyeb01NhnrHnbbfs3fEcOg==","shasum":"fa5274d8e58dd593d1bf640705ca64cb6b3e210f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.350.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcLN7DIeBFOCCtHEo181ZG3VrPk0NUczjhskxtl1r+XgIgVsflC9YmU4sxEN7zorlEWMKQMucON6CCNIRO1vZpZV0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic5GoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpr2w/6A8UQ/iQsw6GV5nd5pYWL+hMQxuaaOIrpnM9k6R81yhh9O6no\r\nnEYNCMLHMIBoV/JNC+vZ13aZt99lPJH0kurRK7TxQRlnGg+rsGbJBoCLt5d3\r\n8ZhHj/+juNxLXDAWdK7IJ5fIUtjrTQR8vwoC3ZZ09QDbwY6DunBG9EVp0cNr\r\ngHIqNxB/vRsKV1jqw/ISLCLOmvhDbOnBMQUqrteN7u9+8YpBkafrMgfqw8HX\r\nZnkP76fPmStCsoVmO1uCEFiV6EKQzrCh/8EizL5PBEEUWYoFQX35ZS06wsE8\r\n2tUwK5WcrPiuAVecek5pM1tzxAdrR4chQNw1JFQf9qL7/ztMr8AQN296cv9a\r\nIMDCWjUVMN2g8sVc7PI/tvCRgdne0YS05q9KY7UnqqFLyW6BWeFWhuVSqFcK\r\nFx8B5myJKAMB/tzVc9cLlFkd8ZgpUNLJKS3pVmiceS/S3vWki0nRp1sI7He6\r\nelDC53iRoMLqBctM0THZlZpjPYqDWvUnBoOxW7N1aqA32YdQ2cK2efRwi6Ab\r\ndZ7SIwdr8y9y1BuZg5M1oLiYizg3EcCFObl8qlwVsvycFTlj+diOQ/ez2cht\r\nQzCbSPJs7ZxFhIbFSO+vxgadgy62MybDpnZSCvZSVB04LSFI2ek5WvwdqOn9\r\nDeDSw05sit4Ln3uv2tDXWX2UVx7oHGrM6Mk=\r\n=hUMd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.350_1651741096394_0.9845059318909015"},"_hasShrinkwrap":false},"0.3.351":{"name":"warraysorted","version":"0.3.351","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"dd2440110b0459dc2591e2095ca86c94fced1125","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.351","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-Gk7LGdjliv8dbV0gB3kIYaeDSwOzecvouWBeZc8SqMcxfL0dYTX/HGPNvJwORkrp2Pfot6f39vI2y1AFmvh5cw==","shasum":"eec7c369763a2e5bdcc536b91c321a21d5b290fd","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.351.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCk69Ej6ZmpYcISFOug9JTBqIatzhHCjhwX7YeOo558yQIhAM/INo2vXpgIfAVvr7vBa6dh1Xpr3InQS3lrBQsntm8/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidSRAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzHRAAjPspdf9BpuqgBn9xMMwbAmqfCaWk9Y5vioIavzh/mvP7awFY\r\nK1ycrH9zB7QBvg1yEYy+Q3ZwsRhnlVm7sqFrcjRwtiSuhY9/2pEaHrj7PUD2\r\nRPNHbZpRwfJcSWGGQTy94l4m8qhrCbWL6aWNpq90YMNOQGoEmRmIC+jQvghA\r\n4evyh4di5SVZwhomTuXE1O/7ItCuAIs1T3Npjttl9ta+a9HXw+Ovc2UVuOvM\r\nZYkLkLtp4DuK/K5SgkYai4ysikpbWAbCJNvRbJqdDIr67I2HOziR+6pzUtBe\r\n65cxcQ4ey9/zV0CfcOOzlHBc/r5Iv6lETBB7b5SFMXS2q/7v6lFxS4NRd0Sj\r\nhs6k4uW43Fn7ePoV8M8VFmXDiofR4DcnUDJa5dtyuPPVPurD/0OL02E2N3AG\r\nA9bL030bfQuXmzNXfJCE0LnoHeyoVzo9zBoe7xNMvy73oNX5f/c6FSCnCtuN\r\nCfE7AXcegO8wwGXNxoXbN2LLdx0ilK1lG6t/YC6IXKnHYeYbey3z0rZjZhoT\r\nP40z//NRsoqrZcmKwLHmKiASuJtQA0LRtZF/BqEcdaP3XUYO2EK2AHXouQfY\r\n+ZHEY6d4YB/BkUChjZ6wbssQtaeX8i8z0vgUXM2sPH3fvc4v4SdUKGp1sFcx\r\nWGG3pestWyPtJTWLCvTAzzUI5Da1By6F49g=\r\n=yhPA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.351_1651844160093_0.12680372820235886"},"_hasShrinkwrap":false},"0.3.352":{"name":"warraysorted","version":"0.3.352","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"ca2d36b8bcf66216354d9e400bb4e1f18046b4f0","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.352","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-ypOtjcSsr6h2Ds9z87RVrkcAEoosvGgQeKKjynUyGlZnfWtF95uTf3dmujbPZr9nrAR5kTqOB3BNobCPkOci8A==","shasum":"2eb43d7ec7bcfcab74b884afbabbce3c7a2a739e","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.352.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALt5UGp8Ch10UF8ff3oaxrTz9RGcQiPgFm8nShMtkVvAiEA+37A29fp+2fnagElonyIdojANEsEyDp2LGlQ38RQH/g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidX8yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMDg//fUjVCUzvJQ5FeW1NUXwunb11f2DvQRnfdGvCcRFFxzY/qLlS\r\nQb/r1aMiIVH0fM1dL/V+RkZMJ8Bw3kmsJjqCIdourd5GkMAhIgl19w7bqAj3\r\nFcjEssneffv1RsNeF9Awe+Gh/czpAS/vZQCdcSymAp3BnKZWQqjUOAFAyaVj\r\nYgUWMeksHAJf/yL558Znq160CLVpI+kus+44Ur4MZayN8R04HUR7aA7VseAt\r\nR+X/YBsPnoB3+g2sN/7x8iiRXL2Ih9WlrNFySjKxJ/kgZUiGJZqEoMt5sx+x\r\nkLpq3scZHgaKVud/F1H5X456VTuyoX+c7RBl49M1Gdf99lmn+x5FRWZAeqAI\r\niCUheY3e+PnQMqhrrYOTXh+/uNUcEAadRmKdn548B7ffK1CCB3gspGSXhaUb\r\nQ3p0ntRs6Byhpgb/QTO7qBkepojaW8yqwWmWJS1jPHmNXxEKyBlR7wStsP0M\r\n/kDnFEA/dyN3tu8LdxM1ddcqajGyPWztYPKeINgMq+w/Qq+huOXTGQuaSnAn\r\nsnC/2qiTOY8DCahzkmxn2aKH97I/gvw9ADhozcO7b/BMMC/ylsok9ZuJ349q\r\n/vrH9GomKstc5u/YPOce+vD6YCyYqVMC7hxBq2RgHZCsQVKmifBzmJXIpWT3\r\nlsUXrO45B8Yz1XLaLw8uHqCyz3YU2VIn6Zk=\r\n=oDbO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.352_1651867442183_0.7311253663516271"},"_hasShrinkwrap":false},"0.3.353":{"name":"warraysorted","version":"0.3.353","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"alpha"},"devDependencies":{"wTesting":"alpha","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","readmeFilename":"Readme.md","gitHead":"0843df518af653598223d63a05b3ae7cc93686d1","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.353","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-BFGwnc31INdQidqMEtdFAMLvxmxV8hIVeI32dRm70orvoqqniJVRd60WcWVi6vzzT64bkHGhZNjLrizHKZ+pjw==","shasum":"eaa7bfc8ab747c8a2ff89959c8993d14b094679f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.353.tgz","fileCount":7,"unpackedSize":79405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+VL9SubbPj28IiS0TUiftUIwMv/vaK3DgiH5gRVFc3AIhANgcBS4W9BenSdBi0qotFEmsqI3M1KgWXfz+D7tmifvO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiehfXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqcRAAlxUDZpbHFLCNxFxbfw+tL8THdFAHNCpW3QGdGDFyoejlIdAz\r\n05bg6m5I1SC0UeWP3oYbunMy7q2z9mn+J+Pt6Yd5PsSvHfHnBT6Um1UV5+Xe\r\nRdb6jusis6cIxGY8SnLCn33cciV/ERp7W5XjoSkjNPU3dRg4BLbZFQsqQkFu\r\nRlnw20tPRTswvAjNYMXtHWx+vHCfgJrlAamQsBlQlAiztJBzYsh5hBpUIWmA\r\ns7LX0Wp3y5FGsGFxyepok8XsxRCrZjlRqvzZPhPX8rOGcuBvvBBqIC5zdvzG\r\nqHDHK+jhulbO/qd/BLjkH55YfMeHJzdyNisGwcBvvharN0e+0RgAVFf+lyTg\r\ngkRXpzrSEGAF0U1SlHGuf5NwD/UQm0IEQyJ/svT4Y4PyNvCh5MwYq0Ez1It6\r\nm1jyWvkunH2WBgq1gxeXPTioLOa24Ka0DHgNY0yD+QegdZo25VrmDgltww8K\r\n7p9D+aggGjrNtqSL6N5IGYeTK25D6sE+sxkelVnYwWlq8YUx+emZFvjCf4od\r\nduESshcBhHhaYKR+Dcngm8QgFrANiE8nFQCOLw3ZnddQQpSo/7lg+vYXvnec\r\nrqZeCfS086nhuY6smekYVYY1rgHxbJ5KfkFtN6Pj7MBM7dyTeGcGFkg9hjOS\r\nM+AAI69AN0DxFbuQpq93jJVl/hW6DqV9tKY=\r\n=Ck23\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.353_1652168663624_0.2660452412431902"},"_hasShrinkwrap":false},"0.3.354":{"name":"warraysorted","version":"0.3.354","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"7966ffb61562a68f0253d8df8299f83aa54eadf8","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.354","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-kWc1moH3M1YhzenxmrlEHeOf/G+sdGpdAGfLb+yRzXiZw5+NWuFUBxyLKpLwf4CTWQb2NmFAnh2JsPCDDxxRgQ==","shasum":"022033f050d8aed53ce1fd27aac7101f2fbcbe36","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.354.tgz","fileCount":7,"unpackedSize":79407,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWrMRMiHUXRPBLSsHkm697cbVwx68O3hqzgPS3DllQRgIhAPlGKf02uEZputNX/I2ZcB1VikhdIFcX+ZCs9sl+dujR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifLyDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTKQ//abKOXWMgj54Ii4wZKC9A9kdPVZuZ39OlYMaIum4xsXRDJJ5s\r\nn/Ayqj8Vs76a0MonraMT/v7n+ncuqTr0HoNSgJ6Yrv7+eHgCFXJabEQpTSad\r\nzCKtTPhaObEwVfME8dPIBkt8IksYPoD9KwAC/RcO9kBEE1GIU/ruRVCxvUPa\r\n9lUYyYMwZW0HbQGQ9uKlz8jpmAhzKu/ZCSoHnBBhwFwSDsRchb42VqjgJvUd\r\n270AbS5QJG/E3mpcM/Ejw1h/V6bJ9LISibDvl9oPDNp4dXCnba/VPVX++0yT\r\n8fJrCCo9veriZM7oo5BzSBS+K3hfYvJXitykPXSehimTZmF0pDxcLyysdI85\r\nPqawOaJQP20mugXDSx2UAhS1QeOlvKULfxU7kznRYWBusrJlqX0iec+wQujA\r\nL5vi1PS4aF3tYkbcceCnjL443kysNd0fPaXDISeVPvzJbB3D1vm1DANtsbTs\r\nP5PhunzeUdEErZXQQb+jscCd1cOqj3TBhYCPxRAfCGVXb/31eibArbKBSOS2\r\nbJm1I9Z0jGGu1ZFbEv0xxipZ4eIAgZ2L6b/MiIMJncL1AClBEMQmWvGvKHN9\r\niSK5+2boOhuc5h1Lk+SA1XbN4dQzKlTrPyAYqAsIOAYW3WLl1Y1+62rMMQ3c\r\nHUzh5Hky7Uhg0X+rLmk5ClVIJO/eP79zQ74=\r\n=aKPY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.354_1652341891566_0.5874172904360535"},"_hasShrinkwrap":false},"0.3.355":{"name":"warraysorted","version":"0.3.355","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"832b54623290588711fe855c0762aeb817cfa5b3","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.355","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-NVHhdiiV/KzosxCWr6+ZKKsobv+TVqDo/QLvzo032ReQ7XH3NO3TIxQQ1KwHGTxuvL4Mg1EfmeHqB1/1Xx0IzA==","shasum":"87b90871d650a686e7fd044d26e6a2f4f33756e9","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.355.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdnabIP7Y7Pw4suBXg0vYe2sHPxSfSjC4RpUfFThPnoQIgCjxQlu8rfVnBMNv4n/qQInUBNoJG3e6tRLuinmcNRr8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifisuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqD9Q//doLfMX9k9ZnlTS6TsRr9jgT7j/8o4qeSkly26O1ERgvySmjA\r\n0t3VB2CyMj5yV6z8JZ/7fbBYefInAett7oB8rCOTiu/N+fZSMDjvGw1mrbt2\r\nlW0I5938S76A6FFtYRPXfCfWeqvntK7jH/ZEIGgLEwNWMQNDDuCPNTF6WpIo\r\nVcr35fJEqWpnGkSfQ53kA9+oTQlGkJpZYEImElPFLkPHecUh8OfVCoDlURxP\r\nysoMyLa7WxlncGSGDKwC+USEanMGNR8CartuvplUVwOw1FZhJa+DdQ0A/08o\r\nIeBJg72cBJWohO5Pb8E4HEK2bQqrn+qtalPAFbEE4wHVYnQ+CkCAPz+Aofhw\r\nMy71oKS3/vYShy+vB8QMa521sAidyHCJQXXXQ2e+wnYyPXb5z1fyLSQukQz2\r\nLQQwFTiBumd71CULVklm6U6umuKNPCRTryQh6Jcg2zeIqGddgmhYolUcgg+v\r\n3W6lvBSdTs9csQ3CD+lWsuZ7gC7vQrhpwSg4/a8d8tfdWLuSy+OD4sSxOnEW\r\nWRtplKfRY8xuZZ3Kvbc2X9KSxSKebxSrGJo+mioojehyYfNDueNF9ve8w+4s\r\nM/9tc1EvLiV+ZaKgA6z21U7jWippI2AWpPEmZhd+0VvEHdJZZZ7CjvR/juUJ\r\nTocLMxcYKENPm6zTG0UWcRJH/yRfFWBlNoM=\r\n=c7tm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.355_1652435758691_0.8407546501048919"},"_hasShrinkwrap":false},"0.3.356":{"name":"warraysorted","version":"0.3.356","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"2029f1698cdf5e906e3bedcd6c08be2a7794ec80","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.356","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-3edqsYfCqyxXRelwoaNwwxQlb+YDWMFM5xcq+k7Pye2kUojDM+wym8ZFLjlpgp+W3QKwEBSgRPcfrgU9q+XpiA==","shasum":"5777f47d5a9cc19df225d0b497de1cf3b74e97bc","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.356.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPQ2ZOUhGKYtSrXTc3CWD+nmf6UdxRfMF0gOvsbQQ0CAiEA+7+bklBucnn4Zd/PQeQVuHHp1nrLhVNUcmAJK4lKW2U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihI89ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmphtg//Tl0MsUlfja18P78+qwWiyKFIwi95VaNIy1ldl0v6WFYoSXWt\r\ninP3rMnHOCnP6fo+Rb2qpj++QE1Zp8GYbjTJpcraMiv65YKtOT26X/6e5P6v\r\nK+yaUBNuaxiPiePywbpEftFnIpkL11LR+FwgDqzgkY92T/dQ5jyBibeftk9y\r\n7nF02HKOEF4i+sEIu/obvxJ5EqHcQ3AenleNWiw41gZt+nG/XdgAzvjdtyaR\r\nT+B94rgh1G91ov2/AK9HBMH7477uirLlTo6lRb41ndjPI6gaPCaHEq3R1Naq\r\n+SITvy6z86Hr1JmhGmY1PvmkcTl7/J9VCb3VgkNt6PXL/jG0DUqwwiks/gQ5\r\noV9mxNr4Y3wpDcdwwaunuvqFVUSb3EKOSe2I2m6u7KqZIA/IsZ/LgN4AYfH7\r\nsHwLtdnkJyQklZ22yVm47AN1SAz48H570Gse8L6P9espwcfd1m9VyeLVh8A3\r\nZ0v5WRq556REjPE+uhwY90LX+qLsYyZZ7jeOHKnG/dHEOKJyRMC+kc+LreG+\r\nVetjAuVjeLZHsW6JQYmARvhLv0M879LzsjH/LKd1KOs1CR6Gmd6qPSL4TkGP\r\n74cP4M2FddVOG6kFCl5F8ma9NDS6zGCVbkbAyjuK381JbQVF8Tq+zd5DnKYf\r\nmSZUVlT1lZh8lfJ1asGvufUeGUTX7SxEOJI=\r\n=A9rT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"wandalen@01.school"},"maintainers":[{"name":"wandalen","email":"wandalen@01.school"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.356_1652854589635_0.7479388938858125"},"_hasShrinkwrap":false},"0.3.357":{"name":"warraysorted","version":"0.3.357","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"8fd9f767abc9fdf3eaa3e97a55e36d52534309a9","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.357","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-MHDHwoqqmrb20kq4WGIwuMVnlh1y5/3i6wFWXGapnqkHJKrOF3Cp0VIwbgqHHf23dRmfA5hC3owcCy34cToDJQ==","shasum":"cdd0761e505250e70c760d340eea3c97d27c9d8f","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.357.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEudu0dwqpmt1/fTYzu0/Cycr+1eKOiIlpkYHueFgrhgIgESZRbzIOA/vulmlCDtDUJHDk3fe1gAVfESk05lcD7hY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqbWQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmphbw/+PSMklYg1VyQlh5OsIoWpgYhQHQI/S17S2u403F3w7RfBfd7f\r\njW/qZ4g6amqJ2/CebruARvsGGfPUUkm6AqgnaFvJ19oWnbsQzuEwTtMVmLBj\r\nAmkQsfApyz+5tc/mIquW6Py239klC+MVoWhHX35fahPW/m8G2l7kPDowTeMR\r\nI9/mq+Tq4NoQD6JFus2T87obQp9ZOfAS+vVUbApw27JgmSAwxp1jYdiPCtLQ\r\n1UvOYTAB5yNbrPc1/njQz60aFzjcdPlGqOC0WUS3UgKJCJ/agu5atPOlga3p\r\n9olS/x38+1kWm+vX4l0i3TbuJ9taerCgDXyTJCkFHMxS15z8Nbs9qxu54aO9\r\nuIAiDmkivjXrpoF3MsibNDZKRcqKyjBcXokXCg1D/ChvxLA83cvKPGLufCtD\r\n7895PM8vHN8OGh692vnt0oDiuNkpjyoz3tNa5Ds0Rsl0UMg4HmPbw7rAeTEJ\r\na0FBYrzMVD7LaS28ncyQHWGhSRysns1Xu0bo7fRQbiCQJI2KwTWkTRQTlj/u\r\nVsQrowz7fRIfMapxSgDHx+TqnNYes0cuWh2lSkyfB6DTmSmZeprYd2/abT+x\r\n4y+yl7kvRywt6d81tScdYuXijLhT/fI+6J3L8v3br9CxY5TsSt+juFopx2uW\r\naJAXo3sHFiEt6OHOmPUZmjh3OooV6yVe+NA=\r\n=hmmj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"kos.listing@gmail.com"},"maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.357_1655289232592_0.9669770195250702"},"_hasShrinkwrap":false},"0.3.358":{"name":"warraysorted","version":"0.3.358","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"0d936ea8ed27bcea63c181b8a5d0436ba705d440","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.358","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-ZrX9B93uO4p1OR9yJdBFqtEHFIOxOAAK5FCS9ODpAesiXK6PbtUQaboGF3Q36pnqAgtoU+APznmkOmBQV/c/1Q==","shasum":"e962ee04d45c23e7e68eef41357668d125556b73","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.358.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYBD9I9XpkYOCbMcy8moxoB6+K3iG7PnNm44qukqTSfgIgP+Z1Ng3rppn20BFPAXrpNqpXsDNMz2mWMvkmRckXs0o="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirSNhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0ig/+L7JjyTwwASObrBOoi8U9tZKTOonJJSlq4/+Ly7YPUgsxwQOf\r\nuBk7kVxr5yVWxL95zwaKs3IkRpw+IhOqKLsKU8HCmmEtXc2ZReq7mJPedkfr\r\nYgjObpkiCSaeUhDPHTGv49+8dLk9ZBvawOpJzO75yfMBjbB+RZ3cIkz3cXaT\r\nf1ZyIscL4C1pnIkoWgVdzXDyHyyNYDOjqG4FziUghDm2k6khKNzdClv6cWBL\r\n6N5rKNE44wr31Fm7STsM/jBnPuEfjdwR6lYpun777YytOJX4Ra0XwIevU88O\r\nZfF8jbyXIZ5TQW4x7LENQDLzuO2zP7zb/8IZPWhxsoOYvJ+5LTP2Wta07HY4\r\nSkBvlf3Ul2H0dikdzNXcji1C11pqyzF4yCWhidGJALC9uSONUj7lnLmC0sQ/\r\nBG+HCC1Z8fG6yBC/o7CQW4A9vY/VANk338cA5qW0Wsw0CAWL641XvHbs7VPF\r\nN8Vteuq8mgLSjbtg28Ba13tFAS90/JtaluQhkz1qLe/e9vkwi+TmMiMtGNIl\r\n12srsJD8JZYj6Tvyy5JeBw8tj8H/Q78Jg8L4G2rNKj/BQQHMau/nANzCeprS\r\nP2UINkkB6kd+BQb9dfBihP4Mnt8biW7PKpT/R710/3RqxP6wbuH35cEQcpql\r\ndQs+xOuz1ZwVr4+9hS0ep7Em3fGN0+06Yek=\r\n=N81m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"kos.listing@gmail.com"},"maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.358_1655513953088_0.9530051553853263"},"_hasShrinkwrap":false},"0.3.359":{"name":"warraysorted","version":"0.3.359","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"239d23922bc443f8a47557a5c7ecd2b6d5e3dd57","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.359","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-uub7ngFaQwpnM6v7FaXteVIhb9tCLO4dvTdYBTmuCCTBt3yvv2MsW/RXdIoOiG87S7t8i3VHEGGJmJ3VcrWsQw==","shasum":"201a5fc51dc7a401fca0ccf8ef68eb24a2ef1679","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.359.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHueO6I5y8pb0QNtuStfdoNGxhyZcwiNqvWHMnaiKmL+AiBT6RhTalz/BouV6ljNQnzQ18vseCVI8F7Y6qbAvP/0xg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirTDyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmDA/9E3ouJAcVG999CffKB4Dr9+amxJAxw6w/kEnuwpKd1hzyoWMT\r\nm8cw8F9ZfUchOpTfPi8BApkbpFDRuyii6L3meWQWS1A6dtNXG/Rq9Xwn2+9B\r\nboUO+u4Gpk/YmDbL90u4tBkK4/ZuJznx8A9IYQ6hgw1lbY68m9FCGC+3LtaJ\r\nL6qeqCJj/WRQ/prrAI7NLPBOlmBx/RnWr9Sg5KRTHYxQTnaZ96hiJQ/MImXA\r\n6+3JKV/GNToXlX+pYFZGQzvLQRSgRGQrEpTaIl+VPBm6H9oLACzfAMHS9kWx\r\n5ooIPhUXAcwBnH2WBl41m/d6lO10D14+RWdFyMFMj1r8zRcNz/j5yk9cP0E3\r\npbofR0h/tXPF4aSKu6aJ6QqlwwfK1xUgNa453T02xL4iU4TXsl1965kTcGir\r\n++oljNvDiZEaHjQRRKJQwutFkC/Q94cU2UtBc2oAwfXrNM6M6MNgsZYbO8sN\r\nOySG137vYwVUkTB2SyM4YLLh/dOJrsnIx3NtATI/mxDl0eXcKjP4XS42yl5g\r\nF31U4V+iJYIE4aY6hGBTGX1RPD19U9IhRwRdMf0eMGrF5LvRYyKW0jqk/ezT\r\nM6DbQ0Uk7bps1mX6e1H/3pl5Gv4ioK7CQl4luNiAL1pK5QbDhnIEB8wISe8V\r\neHqoS/8Zxtv5VHdWEwOKwMNWEnrtU0JDg5Q=\r\n=MbDZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"kos.listing@gmail.com"},"maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.359_1655517425863_0.875587234736251"},"_hasShrinkwrap":false},"0.3.360":{"name":"warraysorted","version":"0.3.360","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"83f42064e55e205d49483bd436f55f3c80cd6163","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.360","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-hpvPd9WJNRXEnP5VQLBecJfDX95D7TAwJLSwInsU2nLaOly+uslL+oyFfgzHR1ZAyvDA+E65LPFYRlpj7Jw1/g==","shasum":"cced7f53cada73175181d04df84aefd8ef703abb","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.360.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEG5RX7c8BbnuqnpbACkcsYeSeiohg+gMl4iDD/W9RQuAiEA1M7FWhuPSbT+0+I6pkvgXEjjW2L1Vi8IGVz7lm0je54="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3PVaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0ihAAjpxCApAXILT7e4BYgj2MgeZevole55ffNL8YECu8PDp8v5ce\r\n5JkvjYGAsoQzfggSzgkWXmJwKKxC3e74BAQyFRXE9E6uAedTqC+mvgY0YmLU\r\nI8GothpehU96yiUfI/OSGw2j3aFOn9UH8X61IET7FWO/ht6gs4657D78JrWU\r\n3GPcIwnYK77SB2NiLHCmTLaGcD5IlNMq61e4CqfS+pMtGPygsy7NsayaRGD6\r\n7goPnaW2/rcSamiVz6jWNJ5+ocKe7Pb3i+UCbflRDxbVCvLsJ5Rg9ZhGBkgi\r\n0OCeciMmPcF7IuE9VPynwu/f5uONe0eHUBA1K46rE8VxtDUKEN2FwKOBYJeB\r\nyDsAuvRO7zRhIOikHjW7nedGodrTYtNXoXBTyRR04vfZAvljsON2zS0Qmr8V\r\njrb+8eVdj4NofqghdJY1ExnLklMNo6Um2CrIejb/sBjZkrMEQ3BPr8QGU3dK\r\nemcKGAxPoDChMZGNbhrVlgN/UGnxQgO119n9vdJDlhoIbhnSRO8fYsh580fP\r\nifK32bfyby2smOYC7T7CnNH1NByAbrEQVy/uAQjS2LD8rlM3hTgut9qacFYe\r\nf6iiHWBsJBCnlnyLjQ88zi+hGPiyYPd4TPGIT4amCNaO/m95zFo9SfrZu9sx\r\n/KhAGBiDOO87zHY4z2/e/x1zw5UusGBcWaQ=\r\n=lWqB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"kos.listing@gmail.com"},"maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.360_1658647898357_0.2719503437979114"},"_hasShrinkwrap":false},"0.3.361":{"name":"warraysorted","version":"0.3.361","engine":"node >= 10.0.0","description":"Collection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted a","author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"license":"MIT","main":"proto/node_modules/warraysorted","directories":{"doc":"doc","main":"proto/wtools/abase/l4/ArraySorted.s"},"scripts":{"test":"wtest .run 'proto/**' rapidity:-3","docgen":"wdocgen proto"},"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"dependencies":{"wTools":"latest"},"devDependencies":{"wTesting":"latest","eslint":"7.32.0"},"keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"gitHead":"4ad78b01e18cba5d28375cf6c422081721bd4d8a","homepage":"https://github.com/Wandalen/wArraySorted#readme","_id":"warraysorted@0.3.361","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-O+WDHgvqOeK/rhNn/dCLCVXz24BAwcBfpU7DbMvK4P8cxvSt3kvaHYlmcCgTCKl40Bd+hNpcZkooxWWkiDn7pA==","shasum":"2bae68e08f7dd1347997b74334bda90eec9fd541","tarball":"https://registry.npmjs.org/warraysorted/-/warraysorted-0.3.361.tgz","fileCount":7,"unpackedSize":79408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC37VdFrDTMNQ5jpFfotg3kHMZ3o1u86mj2tbcKBcphIwIgZnfoAoR0TElZzm4DadQo5nibMQ3TFG5XmHHu28UW2cA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3pQxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpl+Q//SXGX1a948yizHSAjNkgq+6gahGyFGpV0/ehsz0uiWTV1US9Q\r\nFi8Buxfiw/KgOyLMadLbsROYHL3KalWdhlZtDnplOWn43eZf8lTpBNNqRfyu\r\njQGaNaVAScEiJMFI88FQjDv9IS7e6i3VlkOMUJntbtDUPlHoa66clE6diJM3\r\nTBYPL/ws8qKKGidj2D8PWQyXEyl9Yvald860mYTPRLorPfRIB1Ga6U5YHMR9\r\nw6hwQkusXIv35iwMOGFcdMkx8ou9AQ22wRm7W9KgufUnywJRW88rJDTPE9n/\r\nJgHTJjInqoZa/41l2IdvtbHPyCOiuF/yx2NBUGBjnVE04Uc158XSLa9O81EH\r\n3Gw3vlh1BZMzktSJNWuFjkunurcMQpZWfEmodTXVQvrwYAbWPsLgxIo+jeUb\r\nve2/MLju4rU1SylkYzeSwNk+pc6aa2VR1ASYyQ7e3qZU8MmmZ110a8RntRKK\r\nPRaWOg8cej0iC8YDtL4jSDHa8Ru0bqv80OhUGKAFOLbclRzRo3dm+KQ+ujBm\r\nWn4EH4AgOpsXF7gz9MlW8cD+6HIjkYlQLhHv798JHfpi2AKE2Flpc8qGm6C3\r\nL1G6SwR8o34ecq0LlLdmJLL7vXPpiWkPon89gJCYT4UKsQWjboAgO+Mc+vnd\r\nD1Og5fhHSWWOf/EiLRKxKsKfIn239BIez68=\r\n=WqIc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"wandalen","email":"kos.listing@gmail.com"},"maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/warraysorted_0.3.361_1658754097533_0.9500254222057789"},"_hasShrinkwrap":false}},"readme":"\n# module::ArraySorted [![status](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml/badge.svg)](https://github.com/Wandalen/wArraySorted/actions/workflows/StandardPublish.yml) [![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)\n\nCollection of cross-platform routines to operate effectively sorted arrays. For that ArraySorted provides customizable quicksort algorithm and a dozen functions to optimally find/add/remove single/multiple elements into a sorted array, add/remove sorted array to/from another sorted array. Use it to increase the performance of your algorithms.\n\n### Try out from the repository\n\n```\ngit clone https://github.com/Wandalen/wArraySorted\ncd wArraySorted\nwill .npm.install\nnode sample/trivial/Sample.s\n```\n\nMake sure you have utility `willbe` installed. To install willbe: `npm i -g willbe@stable`. Willbe is required to build of the module.\n\n### To add to your project\n\n```\nnpm add 'warraysorted@stable'\n```\n\n`Willbe` is not required to use the module in your project as submodule.\n\n#### Binary search\nBinary search algorithm is used for finding an item from an ordered list of elements. Its based on dividing in half the part of list that can contain the element, until the count of the possible locations is decreased to just one. [More about binary search.]( https://en.wikipedia.org/wiki/Binary_search_algorithm )\n\n#### Comparator vs Evaluator\n* Comparator - function that makes comparison between two values of two elements.\n\nDefault comparator looks like:\n```javascript\nfunction comparator( a, b )\n{\n  return a - b;\n}\n```\n* Evaluator - function that makes some operations on passed values before they will be compared\ndefault comparison in that case looks like :\n`evaluator( a ) - evaluator( b )`\n\nBoth can be combined together to perform some custom features.\n[<b>See examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/ComparatorTransformer.js )\n\n#### Difference between Index,Value and no-sufix versions\n* Index  methods returns index of element as result or -1 if nothing founded.\n* Value methods returns element value as result or undefined if nothing founded.\n* Non sufix methods returns object with properties: value, index if element exists.\nOtherwise returns object with undefined as value and -1 as index.\n\n  [<b>Examples.</b>]( https://github.com/Wandalen/wArraySorted/blob/master/sample/IndexValueDifference.js )\n\n\n\n## Methods\n\n* arraySortedLookUp - binary search of element in array, returns object containing properties: value, index. If nothing founded returns object with value property setted to undefined and index to -1.\n\n* arraySortedLookUpIndex - binary search of element in array, returns index of the element if it is found, otherwise returns -1.\n\n* arraySortedLookUpClosest - binary search of element in array, finds element equal to passed value or element with smallest possible difference. Returns object with properties: value, index. If nothing founded returns zero or length of array as index, it depends on element value, if its bigger/lower then last/first element of the array.\n\n* arraySortedLookUpInterval - looks for elements from passed interval that exists in array and returns range where this elements are locaded.\n\n* arraySortedLookUpEmbrace - returns range where all elements from interval can be located even if they do not exist in the current array, range can go out of interval boundaries for minimal possible value.\n\n* arraySortedLeftMostIndex - returns index of first element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedRightMostIndex - returns index of last element that is equal or bigger with smallest difference to passed value.\n\n* arraySortedAdd - method adds the passed value to the array, no matter whether it has there or hasn't, and returns the new added or the updated index.\n\n#### Example #1\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 5\nlet i = _.arraySortedLookUp( arr,e );\nconsole.log( 'arraySortedLookUp(',e,') :',i );\n// arraySortedLookUp( 5 ) : { value: 5, index: 1 }\n```\n\n#### Example #2\n```javascript\nlet _ = wTools;\n\nlet arr = [ 3,5,6,7,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpIndex( arr,e );\nconsole.log( 'arraySortedLookUpIndex(',e,') :',i );\n// arraySortedLookUpIndex( 4 ) : -1\n```\n\n#### Example #3\n```javascript\nlet _ = wTools;\n\nlet arr = [ 1,2,5,9 ];\nlet e = 4\nlet i = _.arraySortedLookUpClosest( arr,e );\nconsole.log( 'arraySortedLookUpClosest(',e,') :',i );\n// arraySortedLookUpClosest( 4 ) : { value: 5, index: 2 }\n```\n\n#### Example #4\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,1,4,5 ];\n\nlet interval = [ 2, 5 ];\n\nlet range = _.arraySortedLookUpInterval( arr,interval );\nconsole.log( 'arraySortedLookUpInterval(',interval,') :',range );\n// arraySortedLookUpInterval( [ 2, 5 ] ) : [ 2, 4 ]\n\nlet range = _.arraySortedLookUpEmbrace( arr,interval );\nconsole.log( 'arraySortedLookUpEmbrace(',interval,') :',range );\n // arraySortedLookUpEmbrace( [ 2, 5 ] ) : [ 1, 4 ]\n```\nFor more examples see: [samples/Interval.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Interval.js), [samples/Embrace.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/Embrace.js), [sample/LookUpDifference.js](https://github.com/Wandalen/wArraySorted/blob/master/sample/LookUpDifference.js)\n\n#### Example #5\n```javascript\nlet _ = wTools;\n\nlet arr = [ 0,0,0,0,1,1,1,1 ];\n\nlet e = 1;\nlet leftMost = _.arraySortedLeftMostIndex( arr, e );\nconsole.log( 'arraySortedLeftMostIndex(',e,') :',leftMost );\n// arraySortedLeftMostIndex( 1 ) : 4\n\nlet e = 0;\nlet rightMost = _.arraySortedRightMostIndex( arr, 0 );\nconsole.log( 'arraySortedRightMostIndex(',e,') :',rightMost );\n// arraySortedRightMostIndex( 0 ) : 3\n```\n#### Example #6\n```javascript\nlet _ = wTools;\nlet arr = [ 1,2,5,9 ];\n\nlet e = 0;\nlet i = _.arraySortedAdd( arr,e );\nconsole.log( 'arraySortedAdd(',e,') inserted to index :',i, \"array: \", arr );\n// arraySortedAdd( 0 ) inserted to index : 0 array:  [ 0, 1, 2, 5, 9 ]\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","maintainers":[{"name":"wandalen","email":"kos.listing@gmail.com"}],"time":{"modified":"2022-07-25T13:01:37.816Z","created":"2017-02-01T17:12:12.233Z","0.3.1":"2017-02-01T17:12:12.233Z","0.3.2":"2017-02-01T17:14:19.970Z","0.3.3":"2017-02-01T17:39:34.870Z","0.3.4":"2017-02-01T17:50:07.414Z","0.3.5":"2017-02-06T14:29:20.938Z","0.3.6":"2017-03-16T10:11:51.207Z","0.3.7":"2017-04-23T17:32:02.765Z","0.3.8":"2017-04-23T18:01:35.512Z","0.3.9":"2017-06-02T07:45:34.240Z","0.3.10":"2017-08-25T13:32:58.359Z","0.3.11":"2017-09-17T07:55:06.984Z","0.3.12":"2017-09-17T11:54:00.968Z","0.3.13":"2017-09-17T11:57:27.080Z","0.3.14":"2017-09-17T16:40:25.796Z","0.3.15":"2017-09-17T16:53:26.694Z","0.3.16":"2018-01-29T16:50:01.340Z","0.3.17":"2018-04-09T07:56:07.974Z","0.3.18":"2018-04-12T20:03:41.667Z","0.3.19":"2018-05-04T06:53:55.502Z","0.3.20":"2018-05-31T11:28:09.147Z","0.3.21":"2018-06-04T19:24:50.929Z","0.3.22":"2018-06-07T07:09:43.988Z","0.3.26":"2018-06-07T10:20:50.082Z","0.3.27":"2018-06-13T19:06:55.839Z","0.3.28":"2018-07-02T07:30:48.412Z","0.3.29":"2018-07-04T18:44:17.219Z","0.3.30":"2018-07-09T13:20:40.831Z","0.3.31":"2018-07-12T11:17:39.648Z","0.3.32":"2018-07-14T14:00:01.007Z","0.3.33":"2018-07-16T15:04:22.305Z","0.3.34":"2018-07-17T10:18:27.599Z","0.3.35":"2018-07-17T16:09:44.352Z","0.3.36":"2018-07-18T07:47:32.279Z","0.3.37":"2018-07-19T08:08:29.190Z","0.3.38":"2018-08-06T08:02:37.825Z","0.3.39":"2018-08-08T19:49:21.939Z","0.3.40":"2018-08-09T12:53:50.326Z","0.3.41":"2018-08-09T15:41:14.290Z","0.3.42":"2018-08-10T13:49:43.046Z","0.3.43":"2018-08-13T06:51:05.723Z","0.3.44":"2018-08-13T08:19:23.032Z","0.3.45":"2018-10-29T20:37:36.521Z","0.3.46":"2018-11-01T07:07:59.960Z","0.3.47":"2018-11-01T08:39:21.070Z","0.3.48":"2018-11-01T12:29:46.650Z","0.3.49":"2018-11-01T14:52:55.651Z","0.3.50":"2018-11-02T10:18:52.627Z","0.3.51":"2018-11-03T10:51:50.433Z","0.3.52":"2018-11-05T07:32:22.939Z","0.3.53":"2018-11-05T08:49:47.683Z","0.3.54":"2018-11-05T09:19:28.825Z","0.3.55":"2018-11-05T15:03:24.901Z","0.3.56":"2018-11-06T15:05:52.427Z","0.3.57":"2018-11-12T16:07:53.038Z","0.3.58":"2018-11-21T11:17:51.111Z","0.3.59":"2018-11-21T13:13:18.135Z","0.3.60":"2018-11-22T14:22:13.076Z","0.3.61":"2018-11-26T06:27:30.172Z","0.3.62":"2018-11-28T13:42:23.852Z","0.3.63":"2018-11-29T15:53:13.540Z","0.3.64":"2018-11-29T16:11:29.601Z","0.3.65":"2018-11-30T14:26:24.136Z","0.3.66":"2018-12-27T10:34:04.382Z","0.3.67":"2019-01-25T16:57:55.173Z","0.3.68":"2019-01-28T06:57:13.062Z","0.3.69":"2019-01-29T06:57:30.874Z","0.3.70":"2019-01-30T10:04:42.499Z","0.3.71":"2019-01-31T08:48:26.855Z","0.3.72":"2019-02-01T14:31:32.613Z","0.3.73":"2019-02-04T06:28:32.369Z","0.3.74":"2019-02-11T20:02:38.737Z","0.3.75":"2019-02-16T21:17:27.162Z","0.3.76":"2019-02-21T07:16:33.584Z","0.3.77":"2019-03-07T20:28:24.433Z","0.3.78":"2019-03-14T10:18:12.870Z","0.3.79":"2019-04-18T05:41:53.039Z","0.3.80":"2019-04-19T07:53:51.275Z","0.3.81":"2019-05-06T07:05:33.164Z","0.3.82":"2019-05-09T06:36:00.897Z","0.3.83":"2019-05-26T17:41:30.067Z","0.3.84":"2019-05-26T18:13:50.206Z","0.3.85":"2019-05-28T07:11:22.356Z","0.3.86":"2019-06-10T17:19:41.962Z","0.3.87":"2019-06-17T05:32:43.335Z","0.3.88":"2019-06-18T10:15:55.230Z","0.3.89":"2019-06-18T11:00:18.297Z","0.3.90":"2019-06-30T12:20:02.326Z","0.3.91":"2019-07-12T11:22:13.659Z","0.3.92":"2019-07-12T13:11:12.066Z","0.3.93":"2019-07-18T13:13:51.283Z","0.3.94":"2019-07-23T04:00:31.723Z","0.3.95":"2019-08-01T06:59:12.492Z","0.3.96":"2019-08-01T08:47:58.959Z","0.3.97":"2019-08-14T05:20:46.224Z","0.3.98":"2019-08-14T10:19:20.339Z","0.3.99":"2019-08-16T09:18:47.103Z","0.3.100":"2019-10-21T10:07:45.056Z","0.3.101":"2019-10-25T16:57:58.897Z","0.3.102":"2019-11-08T13:24:04.179Z","0.3.103":"2019-11-14T22:05:51.701Z","0.3.104":"2019-11-15T06:59:06.222Z","0.3.105":"2019-11-15T20:54:47.672Z","0.3.106":"2019-11-16T06:32:55.095Z","0.3.107":"2019-11-16T07:07:57.274Z","0.3.108":"2019-11-16T09:37:07.955Z","0.3.109":"2019-11-16T09:53:43.057Z","0.3.110":"2019-11-18T16:00:14.668Z","0.3.111":"2019-11-18T17:24:53.324Z","0.3.112":"2019-11-19T11:35:11.003Z","0.3.113":"2019-11-21T16:31:53.375Z","0.3.114":"2019-11-29T10:07:40.703Z","0.3.115":"2019-12-02T07:02:26.213Z","0.3.116":"2019-12-04T13:53:04.669Z","0.3.117":"2019-12-05T19:30:46.792Z","0.3.118":"2019-12-09T18:35:41.913Z","0.3.119":"2019-12-10T19:02:06.743Z","0.3.120":"2019-12-12T11:04:37.919Z","0.3.121":"2019-12-12T12:07:19.207Z","0.3.122":"2019-12-16T14:36:08.621Z","0.3.123":"2019-12-19T09:13:19.884Z","0.3.124":"2019-12-19T09:56:53.553Z","0.3.125":"2019-12-19T10:14:36.793Z","0.3.126":"2019-12-19T10:47:10.796Z","0.3.127":"2019-12-19T13:48:00.936Z","0.3.128":"2019-12-25T16:07:09.865Z","0.3.129":"2019-12-25T17:12:11.090Z","0.3.130":"2020-01-05T13:41:09.626Z","0.3.131":"2020-01-15T10:01:10.731Z","0.3.132":"2020-01-17T17:54:44.053Z","0.3.133":"2020-01-19T13:31:53.267Z","0.3.134":"2020-01-19T14:09:12.506Z","0.3.135":"2020-02-03T17:11:06.502Z","0.3.136":"2020-02-03T18:26:17.654Z","0.3.137":"2020-02-03T19:13:59.663Z","0.3.138":"2020-02-03T19:58:06.985Z","0.3.139":"2020-02-03T21:56:56.918Z","0.3.140":"2020-02-04T06:42:17.769Z","0.3.141":"2020-02-06T17:53:14.555Z","0.3.142":"2020-02-07T13:30:09.027Z","0.3.143":"2020-02-11T11:41:52.144Z","0.3.144":"2020-02-11T13:51:31.726Z","0.3.145":"2020-02-11T14:48:02.376Z","0.3.146":"2020-02-11T16:36:23.922Z","0.3.147":"2020-02-11T18:42:01.357Z","0.3.148":"2020-02-17T09:20:26.728Z","0.3.149":"2020-02-17T17:05:43.431Z","0.3.150":"2020-02-17T18:01:51.014Z","0.3.151":"2020-02-18T06:36:59.015Z","0.3.152":"2020-02-20T16:53:44.531Z","0.3.153":"2020-02-23T17:39:15.263Z","0.3.154":"2020-02-23T21:37:07.331Z","0.3.155":"2020-02-24T05:18:40.262Z","0.3.156":"2020-02-24T07:55:05.515Z","0.3.157":"2020-02-24T10:09:00.269Z","0.3.158":"2020-02-24T10:53:30.298Z","0.3.159":"2020-03-05T14:50:39.169Z","0.3.160":"2020-03-05T15:07:49.904Z","0.3.161":"2020-03-10T18:00:18.143Z","0.3.162":"2020-03-10T18:59:12.872Z","0.3.163":"2020-03-11T09:04:03.886Z","0.3.164":"2020-03-11T11:07:00.862Z","0.3.165":"2020-03-11T11:47:17.931Z","0.3.166":"2020-03-11T12:00:20.769Z","0.3.167":"2020-03-19T09:23:21.858Z","0.3.168":"2020-03-19T09:36:43.752Z","0.3.169":"2020-03-19T10:16:59.162Z","0.3.170":"2020-03-25T16:24:28.401Z","0.3.171":"2020-03-25T17:52:16.007Z","0.3.172":"2020-03-25T18:50:19.999Z","0.3.173":"2020-03-26T05:23:08.879Z","0.3.174":"2020-03-26T06:24:48.100Z","0.3.175":"2020-03-27T15:08:20.177Z","0.3.176":"2020-03-27T15:41:32.651Z","0.3.177":"2020-03-31T11:38:32.858Z","0.3.178":"2020-04-05T07:27:33.399Z","0.3.179":"2020-04-05T07:55:52.595Z","0.3.180":"2020-04-05T08:26:16.871Z","0.3.181":"2020-04-05T10:49:04.930Z","0.3.182":"2020-04-05T12:00:56.451Z","0.3.183":"2020-04-09T09:14:26.394Z","0.3.184":"2020-04-09T11:07:42.271Z","0.3.185":"2020-04-09T14:06:01.164Z","0.3.186":"2020-04-09T17:37:17.802Z","0.3.187":"2020-04-10T11:48:39.974Z","0.3.188":"2020-04-10T14:14:24.351Z","0.3.189":"2020-04-16T09:58:24.330Z","0.3.190":"2020-04-21T04:07:23.085Z","0.3.191":"2020-04-24T04:56:12.003Z","0.3.192":"2020-04-24T05:56:57.147Z","0.3.193":"2020-04-25T08:46:19.934Z","0.3.194":"2020-04-25T09:29:32.448Z","0.3.195":"2020-04-25T10:06:35.725Z","0.3.196":"2020-04-25T15:04:24.623Z","0.3.197":"2020-04-25T16:55:22.174Z","0.3.198":"2020-04-25T17:55:10.523Z","0.3.199":"2020-04-26T04:05:10.060Z","0.3.200":"2020-04-27T07:16:07.461Z","0.3.201":"2020-04-27T11:34:33.066Z","0.3.202":"2020-04-27T11:59:51.045Z","0.3.203":"2020-04-27T13:41:29.545Z","0.3.204":"2020-04-27T14:10:23.310Z","0.3.205":"2020-04-28T05:55:31.123Z","0.3.206":"2020-05-01T13:01:08.846Z","0.3.207":"2020-05-01T13:45:43.951Z","0.3.208":"2020-05-01T15:01:20.943Z","0.3.209":"2020-05-01T16:53:31.565Z","0.3.210":"2020-05-03T03:45:15.688Z","0.3.211":"2020-05-08T05:28:19.028Z","0.3.212":"2020-05-21T13:15:00.572Z","0.3.213":"2020-06-01T11:48:30.646Z","0.3.214":"2020-06-04T14:04:45.930Z","0.3.215":"2020-06-11T04:26:05.702Z","0.3.216":"2020-06-12T10:07:35.048Z","0.3.217":"2020-06-16T12:06:29.894Z","0.3.218":"2020-07-05T06:03:18.121Z","0.3.219":"2020-07-06T18:57:58.947Z","0.3.220":"2020-07-07T13:41:48.861Z","0.3.221":"2020-07-08T18:13:04.948Z","0.3.222":"2020-07-09T05:18:13.083Z","0.3.223":"2020-07-09T12:42:12.198Z","0.3.224":"2020-07-10T12:05:45.658Z","0.3.225":"2020-07-14T13:41:15.747Z","0.3.226":"2020-07-15T13:36:49.538Z","0.3.227":"2020-07-16T11:53:04.519Z","0.3.228":"2020-07-17T14:07:24.836Z","0.3.229":"2020-07-18T19:45:21.204Z","0.3.230":"2020-07-25T20:41:26.557Z","0.3.231":"2020-08-15T14:02:51.378Z","0.3.232":"2020-08-15T18:07:18.874Z","0.3.233":"2020-08-15T20:17:51.323Z","0.3.234":"2020-08-19T13:36:46.821Z","0.3.235":"2020-08-21T11:51:33.903Z","0.3.236":"2020-09-04T08:23:28.490Z","0.3.237":"2020-10-07T10:03:24.924Z","0.3.238":"2020-10-15T09:05:56.137Z","0.3.239":"2020-10-20T11:25:54.157Z","0.3.240":"2020-10-22T19:17:00.324Z","0.3.241":"2020-10-23T11:24:46.362Z","0.3.242":"2020-10-26T11:58:45.656Z","0.3.243":"2020-10-28T18:08:14.358Z","0.3.244":"2020-10-31T14:36:49.513Z","0.3.245":"2020-11-02T13:00:04.149Z","0.3.246":"2020-11-06T09:24:13.888Z","0.3.247":"2020-11-12T13:48:52.296Z","0.3.248":"2020-11-19T10:37:06.688Z","0.3.249":"2020-11-20T06:56:03.880Z","0.3.250":"2020-11-25T14:01:01.959Z","0.3.251":"2020-11-30T07:45:16.408Z","0.3.252":"2020-12-11T18:11:08.462Z","0.3.253":"2020-12-19T20:44:32.426Z","0.3.254":"2020-12-21T13:44:22.157Z","0.3.255":"2020-12-23T04:23:43.954Z","0.3.256":"2021-01-10T19:12:40.917Z","0.3.257":"2021-01-13T14:38:41.440Z","0.3.258":"2021-01-21T17:40:37.592Z","0.3.259":"2021-01-22T11:09:42.515Z","0.3.260":"2021-01-22T17:39:44.236Z","0.3.261":"2021-01-24T14:01:50.462Z","0.3.262":"2021-01-25T19:06:51.176Z","0.3.263":"2021-01-26T17:17:56.009Z","0.3.264":"2021-01-27T16:44:42.106Z","0.3.265":"2021-01-28T17:31:19.338Z","0.3.266":"2021-01-29T05:43:05.465Z","0.3.267":"2021-01-29T15:05:50.621Z","0.3.268":"2021-01-29T16:11:53.498Z","0.3.269":"2021-02-02T07:46:42.949Z","0.3.270":"2021-02-04T21:23:52.721Z","0.3.271":"2021-02-14T19:38:10.337Z","0.3.272":"2021-02-15T17:16:03.513Z","0.3.273":"2021-02-17T18:57:16.076Z","0.3.274":"2021-02-18T10:59:20.635Z","0.3.275":"2021-02-18T17:14:27.003Z","0.3.276":"2021-02-20T00:21:41.124Z","0.3.277":"2021-02-22T14:55:48.171Z","0.3.278":"2021-02-22T15:53:21.123Z","0.3.279":"2021-02-25T17:30:36.945Z","0.3.280":"2021-03-12T07:04:00.708Z","0.3.281":"2021-03-14T06:55:21.315Z","0.3.282":"2021-03-15T16:26:46.397Z","0.3.283":"2021-03-26T15:20:27.735Z","0.3.284":"2021-03-26T16:48:10.526Z","0.3.285":"2021-03-29T05:24:04.700Z","0.3.286":"2021-03-29T05:57:23.583Z","0.3.287":"2021-03-30T13:44:30.983Z","0.3.288":"2021-03-30T14:07:24.731Z","0.3.289":"2021-03-30T15:19:34.050Z","0.3.290":"2021-03-30T16:48:36.676Z","0.3.291":"2021-04-01T06:13:02.270Z","0.3.292":"2021-04-03T13:28:17.332Z","0.3.293":"2021-04-03T19:28:29.876Z","0.3.294":"2021-04-04T07:28:31.407Z","0.3.295":"2021-04-05T17:02:53.866Z","0.3.296":"2021-04-06T13:03:06.804Z","0.3.297":"2021-04-06T13:34:14.833Z","0.3.298":"2021-04-06T22:26:47.168Z","0.3.299":"2021-04-06T23:19:39.161Z","0.3.300":"2021-04-08T05:54:33.901Z","0.3.301":"2021-04-08T07:12:32.674Z","0.3.302":"2021-04-08T08:25:31.144Z","0.3.303":"2021-04-08T10:07:44.180Z","0.3.304":"2021-04-10T20:24:09.482Z","0.3.305":"2021-04-26T13:07:17.233Z","0.3.306":"2021-04-27T09:30:48.817Z","0.3.307":"2021-05-10T23:48:58.167Z","0.3.308":"2021-05-12T15:37:29.335Z","0.3.309":"2021-05-13T18:21:30.242Z","0.3.310":"2021-05-14T14:08:00.835Z","0.3.311":"2021-05-18T17:16:29.117Z","0.3.312":"2021-05-27T14:43:10.752Z","0.3.313":"2021-06-02T08:23:32.183Z","0.3.314":"2021-06-06T05:16:48.225Z","0.3.315":"2021-06-09T04:17:01.895Z","0.3.316":"2021-07-01T05:03:24.581Z","0.3.317":"2021-07-02T07:23:35.921Z","0.3.318":"2021-07-02T08:33:16.707Z","0.3.319":"2021-07-03T13:35:04.146Z","0.3.320":"2021-07-04T10:21:56.003Z","0.3.321":"2021-07-08T06:43:13.254Z","0.3.322":"2021-07-10T17:54:13.583Z","0.3.323":"2021-07-11T15:34:08.708Z","0.3.324":"2021-08-04T17:24:31.620Z","0.3.325":"2021-08-05T15:01:22.777Z","0.3.326":"2021-08-05T16:58:49.170Z","0.3.327":"2021-08-11T10:26:28.951Z","0.3.328":"2021-08-12T14:58:24.971Z","0.3.329":"2021-08-13T12:46:19.630Z","0.3.330":"2021-08-14T07:16:48.625Z","0.3.331":"2021-09-10T13:10:17.195Z","0.3.332":"2021-09-28T23:16:13.101Z","0.3.333":"2021-10-12T08:40:27.793Z","0.3.334":"2021-10-14T06:03:25.872Z","0.3.335":"2021-10-22T06:29:22.870Z","0.3.336":"2021-10-29T06:59:48.383Z","0.3.338":"2021-10-30T10:36:34.291Z","0.3.339":"2021-11-09T14:31:15.917Z","0.3.340":"2021-11-10T05:51:40.691Z","0.3.341":"2021-11-10T10:17:17.256Z","0.3.342":"2021-11-24T05:56:44.243Z","0.3.343":"2021-11-30T15:10:32.745Z","0.3.344":"2021-12-17T07:38:35.682Z","0.3.345":"2021-12-18T14:39:55.101Z","0.3.346":"2022-04-29T10:55:39.995Z","0.3.347":"2022-05-02T17:10:04.395Z","0.3.348":"2022-05-03T06:33:00.709Z","0.3.349":"2022-05-03T11:42:00.420Z","0.3.350":"2022-05-05T08:58:16.629Z","0.3.351":"2022-05-06T13:36:00.317Z","0.3.352":"2022-05-06T20:04:02.356Z","0.3.353":"2022-05-10T07:44:23.833Z","0.3.354":"2022-05-12T07:51:31.735Z","0.3.355":"2022-05-13T09:55:58.890Z","0.3.356":"2022-05-18T06:16:29.791Z","0.3.357":"2022-06-15T10:33:52.860Z","0.3.358":"2022-06-18T00:59:13.282Z","0.3.359":"2022-06-18T01:57:05.993Z","0.3.360":"2022-07-24T07:31:38.567Z","0.3.361":"2022-07-25T13:01:37.713Z"},"homepage":"https://github.com/Wandalen/wArraySorted#readme","keywords":["sorted array","wTools","binnary search","range","interval","search in sorted array","sort"],"repository":{"type":"git","url":"git+https://github.com/Wandalen/wArraySorted.git"},"contributors":[{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"}],"author":{"name":"Kostiantyn Wandalen","email":"wandalen@obox.systems"},"bugs":{"url":"https://github.com/Wandalen/wArraySorted/issues"},"license":"MIT","readmeFilename":"Readme.md"}