(input: string)
| 10 | export const nanoidLength = 21; |
| 11 | |
| 12 | export function nanoidToBytes(input: string): Uint8Array { |
| 13 | const bytes = new Uint8Array(16); |
| 14 | |
| 15 | let bitPos = 0; |
| 16 | let bytePos = 0; |
| 17 | |
| 18 | let oldBitOffset = 0; |
| 19 | |
| 20 | for (let i = 0; i < nanoidLength; i++) { |
| 21 | bytes[bytePos] |= charMap.get(input[i])! << oldBitOffset; |
| 22 | |
| 23 | bitPos += 6; |
| 24 | bytePos = bitPos >>> 3; |
| 25 | const newBitOffset = bitPos % 8; |
| 26 | |
| 27 | if (oldBitOffset > newBitOffset) { |
| 28 | bytes[bytePos] |= charMap.get(input[i])! >>> (8 - oldBitOffset); |
| 29 | } |
| 30 | |
| 31 | oldBitOffset = newBitOffset; |
| 32 | } |
| 33 | |
| 34 | return bytes; |
| 35 | } |
| 36 | |
| 37 | const nanoidRegExp = /^[\w-]{21}$/; |
| 38 |
no test coverage detected