{"_id":"@aliclark/binary-search","_rev":"3-e44f2488939c3ff7d8d3de4c915f7e71","name":"@aliclark/binary-search","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@aliclark/binary-search","version":"1.0.0","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","scripts":{"test":"jest","prepublish":"tsc"},"dependencies":{"fp-ts":"^2.9.1"},"devDependencies":{"@tsconfig/recommended":"^1.0.1","@types/jest":"^26.0.19","jest":"^26.6.3","ts-jest":"^26.4.4","typescript":"^4.1.3"},"_id":"@aliclark/binary-search@1.0.0","dist":{"shasum":"b0888c0bc30485251d77b7c55d3292d3c2f7aa82","integrity":"sha512-XQGiXUh6bE3GdIqbZ3K17fnOShj2TIfZ4oCmSBBbWvAHRM7p34ZNXkcA10Swhb6hPlyA+QsFRGyTpNzsw1GyuA==","tarball":"https://registry.npmjs.org/@aliclark/binary-search/-/binary-search-1.0.0.tgz","fileCount":11,"unpackedSize":4090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8f0ECRA9TVsSAnZWagAAxIMP/1R9y87qCXU5mXHNf40Y\nsBns5nvZJaPQ19movxspH4CU98ktlbztQh5yd9ON6TVPHF5oW9BgQig5BrIY\n89uMWXN8m/zo0e3QLS2HfQb9/0yADY9hLpCqEE9pmPLHgw+rcDe6qwBP1+wf\nkWSca62d4XGpOTr6wGfLq9NL3m+eqWtVaQJAlGvqMeCTeqWQ2bd4SNkHfY07\nB0P2lo/xfDNvpyVrVJbpe/f4JBA60C0GCF4n11H8rdnvmIZdCUvnz0fVM0EB\n7cvEFT8TwFV84BYqWbAny6A1cnDOcVjvK9aFZ9uqeGDz5AjveH//c02++mQq\nKBebg+zz1qfPM6PR7sV0G71+hZwRwYsPgWhoEogoH4NXZY822a0/9WKIr8jo\nHXVh8Clb0CwvI7m39MRFzYj14iG+czRVjTRr9cjfbhXVe5ZB8T0qT06lXPgQ\nFGAiK2NJXURJaSt7zew/1G/V9jZgvH2qsL6zqevfWZNMiqRGUUaVSuoyQHZX\nMrZb7Z7A3xbrCkkDpFuTKriX4Ckhj/dCyOxJqgjBXzNJbHs6AFn8oAfy/lzW\n6ZPSvE3uPQgb7yJWfF4Z3Aw7p39xo+Qs1tgCOWZ/2lXqs/ZTzEGlM7a8HMry\nmJ7OIaXJzjffAQ0PHXMUaVsPWo0tCO4sjumRmbH5fIEg6NJ70NheJVxaar9s\nPWnz\r\n=KxIj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTVV/tYzZGvzgRJgf387lZFrGC1m4zQzEGVGnBTqT5VQIgDkL4ByXfL/+s5/FZ/kwrfHIKBqy2rjL6LH60hKMc3SQ="}]},"_npmUser":{"name":"aliclark","email":"ali@aliclark.net"},"directories":{},"maintainers":[{"name":"aliclark","email":"ali@aliclark.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/binary-search_1.0.0_1609694467862_0.33707834523303526"},"_hasShrinkwrap":false},"1.0.1":{"name":"@aliclark/binary-search","version":"1.0.1","main":"lib/index.js","types":"lib/index.d.ts","license":"MIT","scripts":{"test":"jest","prepublish":"tsc"},"dependencies":{"fp-ts":"^2.9.1"},"devDependencies":{"@tsconfig/recommended":"^1.0.1","@types/jest":"^26.0.19","jest":"^26.6.3","ts-jest":"^26.4.4","typescript":"^4.1.3"},"_id":"@aliclark/binary-search@1.0.1","dist":{"shasum":"da40a5e1abe48e9201a8941bc127d6684dbc4248","integrity":"sha512-5gxEPJ9H96y8Tgn59Hp3BuBrQikEdUSGHV7EUoNm9MxBvCON0aXGZo4rx7hF2lNOpHD4gOYnVPGV/yUi84g2RA==","tarball":"https://registry.npmjs.org/@aliclark/binary-search/-/binary-search-1.0.1.tgz","fileCount":11,"unpackedSize":5019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8gNeCRA9TVsSAnZWagAAMAEP/0mZI6TRlKAAe9eyCKUO\nlRu/qwmlauyHuhHVbn0stnnlme7haHLk5Say49KLcumQa/ZoLSo5eadBIzhQ\nCLPyn6fy2o77S6JuqPUjM1nf3wEfb+5q69y1JsBVpl3UqLBAtYL1s0/ON7Hx\nzddkflFVAI5GPB5pi4PKCiDAXLPQOM9A1bDTO/WmFYh+68x2PUBMNtc6Vni9\nVBrBA3C+alYgmmBRKOMu2DLEFZlL27ohh1fAUhvQlZlzCB+4NPVkaQhGsHgx\n+Wih2crukMec0lTZaVfJrVRT6DUf2ZcZnVJeTbXekEFKphBtuSd1ft87bMUP\nv/q8xRSAjpxxJkqiISARYxspYMoTwdeZ5SgYe/qffXxHRHCVtm3eriNM0Thk\nm1xARmo4eHqt8DXNfT4ZzDVSOtxSx4u9WoSSTJdh5MGeI9q8j1QQS3Irrha2\nD5D+tDgM47xOhHIX2fBPbD3UjHrfahurpulCg8/ClUE7bGX8T11/45Sffuds\nJS1pN/suiFIcUXG63BTYZaKP6BU+qvhlCsjbEkEb6hVBQ8cAni5PdG521sdR\nqM1u9lcok7ez6m0IMf58DFa6h2jjL/5QhdgrwyJTlkRA+mpSZNT/YcnH0xcU\nx14rEm5ucm9kdQsjK6D75DwmCvSRLXKfePn308nQxkIKvsh7vAn2uZBUiIPg\nPAa3\r\n=ppao\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDERoTuhxjpQERtTlyhguWREJlpR0yY0a/WbCGsAdScuwIgMG+m6ngebFM1knoHCtZICj1ADmBt4Ttja5rTpDW6xD8="}]},"_npmUser":{"name":"aliclark","email":"ali@aliclark.net"},"directories":{},"maintainers":[{"name":"aliclark","email":"ali@aliclark.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/binary-search_1.0.1_1609696094187_0.7687532500849508"},"_hasShrinkwrap":false},"2.0.0":{"name":"@aliclark/binary-search","version":"2.0.0","main":"lib/index.js","types":"lib/index.d.ts","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/aliclark/binary-search.git"},"scripts":{"test":"jest","prepublish":"tsc","prettier":"prettier -w 'src/**/*.ts'"},"devDependencies":{"@tsconfig/recommended":"^1.0.2","@types/jest":"^29.5.1","jest":"^29.5.0","prettier":"^2.8.8","ts-jest":"^29.1.0","typescript":"^5.0.4"},"gitHead":"2746564d8aaddc53b45af080694cd5c9186ea467","description":"An implementation of Binary Search algorithm in TypeScript.","bugs":{"url":"https://github.com/aliclark/binary-search/issues"},"homepage":"https://github.com/aliclark/binary-search#readme","_id":"@aliclark/binary-search@2.0.0","_nodeVersion":"18.15.0","_npmVersion":"9.6.1","dist":{"integrity":"sha512-Ai2r8sltZCbZsCUgtkYOLtgRogFXSkOZwOgRfIwMmk6PCJKj3qUjZ4LEywXtXgAGj/cQnSBHEvMVrFNrFV9lKA==","shasum":"13c46a891a675dd2161e46272a59c5a96ea62e16","tarball":"https://registry.npmjs.org/@aliclark/binary-search/-/binary-search-2.0.0.tgz","fileCount":3,"unpackedSize":13695,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2lQsStvNCFGqIn3OMIge7g7qH3j4/F3erDR+WgTwpEwIhAOA084dFUlIdowrhzNe0z6tS8AYJdGRjcSsBRtgH2v3u"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkR9NVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5Mw//Q/SguKV9HN91jaBUn8nvMXOt8a/Tnkpar1OdCgszBfimHWEc\r\nMbOPs7eodYYBSSjbsXiWJRNRQwzWJhuwhG0ujwNerdysP8n54xOO6AkJJi0D\r\nryZoclrAfSwvQfmHzTr/IQZHSPT8OOdgzi650lXSoEnTIxCWqYjeY07CF4Xg\r\nU9X07QBuRZU/yrOpkUFWLiJ+RxwGyYzHDVvSH/MwleyKxgmwHDk0Ld/Gs0dK\r\no117Jw/+dOVxyr2RLaBZ6xjQjNcXPd+avHoedE098JzFzfrVsYhW7tuy5cQN\r\nDyHc7soGXp3gu7yk/YCGYd6LXHOat0fph+yWNYbz/zA9jwqxcsLtUri5JTYL\r\nJOQXEmiNzHsarN7B0wq93xM4ndJpFps9qUXNX4IezVZkk9fg7V9E2xu57ufM\r\nA+xNSth9jSBkojst4RmK7uuIEMbq9DmOoFobxbm+ePyIWk1dYW11IelW+YGd\r\nnZ7RzEWSEVuVrIp3a5vseCIcc8NsCglRum9IqTy6nr4+kfyYi9rqvSWRIokA\r\nSgdTV/0yorcoN3KGiT+7YBnJoYh5HftzVfEPu1upObC/2vmPtWR4Jv/3uNqj\r\nYSywDJQajFwEfmdxYeGyDb9lNReg5LsVHaunUSm0/64XJHNi7JVdUJP2VHIm\r\n1tJ+oCTk7xGW5kNn1qVy+Jf8Z623QX8/5gI=\r\n=7+wC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliclark","email":"ali@aliclark.net"},"directories":{},"maintainers":[{"name":"aliclark","email":"ali@aliclark.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/binary-search_2.0.0_1682428757717_0.9830306686825565"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-03T17:21:07.821Z","1.0.0":"2021-01-03T17:21:08.027Z","modified":"2023-04-25T13:19:17.958Z","1.0.1":"2021-01-03T17:48:14.322Z","2.0.0":"2023-04-25T13:19:17.855Z"},"maintainers":[{"name":"aliclark","email":"ali@aliclark.net"}],"license":"Apache-2.0","readme":"\n# Binary Search\n\nAn implementation of Binary Search algorithm in TypeScript.\n\nBinary search allows searching within an already-sorted array in sub-linear time relative to the array length, with `O(log n)` worst case time complexity. For more information about the algorithm and its uses, see the Wikipedia page on the [Binary search algorithm](https://en.wikipedia.org/wiki/Binary_search_algorithm).\n\nThis package implements the [leftmost variation](https://en.wikipedia.org/wiki/Binary_search_algorithm#Procedure_for_finding_the_leftmost_element) of the algorithm in a function named `binarySearchLeftmost`. If there are multiple items of equal sorted value in the array, the index of the leftmost item is returned. If there's no item in the array equal to the searched value, then the return value is the number of elements in the array which are less than the searched value.\n\n---\n\n## Quick Start\n\nInstall the package:\n\n```bash\nnpm install @aliclark/binary-search\n```\n\nFind the position of an item in an already-sorted array:\n\n```typescript\nimport { binarySearchLeftmost } from '@aliclark/binary-search'\n\nbinarySearchLeftmost([10, 30, 30, 30, 50], 30); // 1\n```\n\nSearching with a custom comparator is also possible:\n\n```typescript\nimport { binarySearchLeftmost, Comparison } from '@aliclark/binary-search'\n\nfunction customComparator<T>(first: T, second: T): Comparison {\n    if (first.value < second.value) {\n        return Comparison.Less;\n    } else if (first.value > second.value) {\n        return Comparison.Greater;\n    }\n    return Comparison.Equal;\n}\n\nbinarySearchLeftmost([{ value: 10 }, { value: 20 }, { value: 30 }, { value: 40 }, { value: 50 }], { value: 40 }, customComparator) // 3\n```\n\n---\n\n## License\n\n- See [LICENSE](/LICENSE)\n","readmeFilename":"README.md","description":"An implementation of Binary Search algorithm in TypeScript.","homepage":"https://github.com/aliclark/binary-search#readme","repository":{"type":"git","url":"git+https://github.com/aliclark/binary-search.git"},"bugs":{"url":"https://github.com/aliclark/binary-search/issues"}}