// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. importtype{BufReader}from"./buf_reader.ts";import{ readInt }from"./read_int.ts"; constMAX_SAFE_INTEGER=BigInt(Number.MAX_SAFE_INTEGER); /** * Read big endian 64bit long from BufReader * @param buf * * @deprecated (will be removed after 1.0.0) Use the {@link https://developer.mozilla.org/en-US/docs/Web/API/Streams_API | Web Streams API} instead. */exportasyncfunctionreadLong(buf:BufReader):Promise<number|null>{const high =awaitreadInt(buf);if(high ===null)returnnull;const low =awaitreadInt(buf);if(low ===null)thrownewDeno.errors.UnexpectedEof();const big =(BigInt(high)<<32n)|BigInt(low);// We probably should provide a similar API that returns BigInt values.if(big >MAX_SAFE_INTEGER){thrownewRangeError("Long value too big to be represented as a JavaScript number.",);}returnNumber(big);}