/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/quickbit-native@2.4.8/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const binding=require("./binding");function toBuffer(t){return 1===t.BYTES_PER_ELEMENT?t:new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function toBufferChunk(t){return{field:toBuffer(t.field),offset:t.offset}}exports.get=function(t,e){const n=8*t.byteLength;return e<0&&(e+=n),!(e<0||e>=n)&&0!==binding.quickbit_napi_get(toBuffer(t),e)},exports.set=function(t,e,n=!0){const i=8*t.byteLength;return e<0&&(e+=i),!(e<0||e>=i)&&0!==binding.quickbit_napi_set(toBuffer(t),e,n?1:0)},exports.fill=function(t,e,n=0,i=8*t.byteLength){const s=8*t.byteLength;return n<0&&(n+=s),i<0&&(i+=s),n<0||n>=8*t.byteLength||n>=i||binding.quickbit_napi_fill(toBuffer(t),e?1:0,n,i),t},exports.clear=function(t,...e){binding.quickbit_napi_clear(toBuffer(t),e.map(toBufferChunk))},exports.findFirst=function(t,e,n=0){const i=8*t.byteLength;return n<0&&(n+=i),n<0&&(n=0),n>=i?-1:binding.quickbit_napi_find_first(toBuffer(t),e?1:0,n)},exports.findLast=function(t,e,n=8*t.byteLength-1){const i=8*t.byteLength;return n<0&&(n+=i),n<0?-1:(n>=i&&(n=i-1),binding.quickbit_napi_find_last(toBuffer(t),e?1:0,n))};class Index{static from(t,e=-1){return Array.isArray(t)?new SparseIndex(t,e):new DenseIndex(t,e)}constructor(t){this._byteLength=t,this.handle=Buffer.allocUnsafe(binding.sizeof_quickbit_index_t)}get byteLength(){return this._byteLength}skipFirst(t,e=0){const n=8*this.byteLength;return e<0&&(e+=n),e<0&&(e=0),e>=n?n-1:binding.quickbit_napi_skip_first(this.handle,this.byteLength,t?1:0,e)}skipLast(t,e=8*this.byteLength-1){const n=8*this.byteLength;return e<0&&(e+=n),e<0?0:(e>=n&&(e=n-1),binding.quickbit_napi_skip_last(this.handle,this.byteLength,t?1:0,e))}}exports.Index=Index;class DenseIndex extends Index{constructor(t,e){super(e),this.field=t,binding.quickbit_napi_index_init(this.handle,toBuffer(this.field))}get byteLength(){return-1!==this._byteLength?this._byteLength:this.field.byteLength}update(t){const e=8*this.byteLength;return t<0&&(t+=e),!(t<0||t>=e)&&0!==binding.quickbit_napi_index_update(this.handle,toBuffer(this.field),t)}}function selectChunk(t,e){for(let n=0;n<t.length;n++){const i=t[n],s=i.offset,r=i.offset+i.field.byteLength;if(e>=s&&e+16<=r)return i}return null}class SparseIndex extends Index{constructor(t,e){super(e),this.chunks=t,binding.quickbit_napi_index_init_sparse(this.handle,this.chunks.map(toBufferChunk))}get byteLength(){if(-1!==this._byteLength)return this._byteLength;const t=this.chunks[this.chunks.length-1];return t?t.offset+t.field.byteLength:0}update(t){const e=8*this.byteLength;if(t<0&&(t+=e),t<0||t>=e)return!1;const n=16*Math.floor(t/128),i=selectChunk(this.chunks,n);return null!==i&&0!==binding.quickbit_napi_index_update_sparse(this.handle,toBuffer(i.field),i.offset,t)}}
//# sourceMappingURL=/sm/8dd44a587da6f8c056c4e39fcc4553d14f2cf57d12d3320957aa97c52aafc82f.map