(
aI: number,
)
| 357 | } |
| 358 | |
| 359 | async #decodeFour( |
| 360 | aI: number, |
| 361 | ): Promise<[CborArrayDecodedStream, lock: Promise<unknown>]> { |
| 362 | let releaseLock: ReleaseLock = () => {}; |
| 363 | const lock = new Promise((x) => releaseLock = x); |
| 364 | if (aI < 24) { |
| 365 | return [ |
| 366 | new CborArrayDecodedStream(this.#readDefinite(aI), releaseLock), |
| 367 | lock, |
| 368 | ]; |
| 369 | } |
| 370 | if (aI <= 27) { |
| 371 | return [ |
| 372 | new CborArrayDecodedStream( |
| 373 | this.#readDefinite( |
| 374 | arrayToNumber( |
| 375 | (await this.#read(2 ** (aI - 24), true)).buffer, |
| 376 | true, |
| 377 | ), |
| 378 | ), |
| 379 | releaseLock, |
| 380 | ), |
| 381 | lock, |
| 382 | ]; |
| 383 | } |
| 384 | if (aI === 31) { |
| 385 | return [ |
| 386 | new CborArrayDecodedStream(this.#readIndefinite(false), releaseLock), |
| 387 | lock, |
| 388 | ]; |
| 389 | } |
| 390 | releaseLock(); |
| 391 | throw new RangeError( |
| 392 | `Cannot decode value (0b100_${aI.toString(2).padStart(5, "0")})`, |
| 393 | ); |
| 394 | } |
| 395 | |
| 396 | async #decodeFive( |
| 397 | aI: number, |
no test coverage detected