protobuf codec with static type inference jsr.io/@mary/protobuf
typescript jsr
at trunk 598 B view raw
1export type BitSet = number | number[]; 2 3export const setBit = (bits: BitSet, index: number): BitSet => { 4 if (typeof bits !== 'number') { 5 const idx = index >> 5; 6 7 for (let i = bits.length; i <= idx; i++) { 8 bits.push(0); 9 } 10 11 bits[idx] |= 1 << index % 32; 12 return bits; 13 } else if (index < 32) { 14 return bits | (1 << index); 15 } else { 16 return setBit([bits, 0], index); 17 } 18}; 19 20export const getBit = (bits: BitSet, index: number): number => { 21 if (typeof bits === 'number') { 22 return index < 32 ? (bits >>> index) & 1 : 0; 23 } else { 24 return (bits[index >> 5] >>> index % 32) & 1; 25 } 26};