StreamingReader.d.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Writer } from './Writer';
  2. import type { IReader, IReaderResettable } from './types';
  3. import { Reader } from './Reader';
  4. export declare class StreamingReader implements IReader, IReaderResettable {
  5. protected readonly writer: Writer;
  6. /**
  7. * Offset from the start of the buffer (x0 in Writer).
  8. */
  9. protected dx: number;
  10. constructor(allocSize?: number);
  11. /**
  12. * Returns the number of bytes remaining in the buffer.
  13. */
  14. size(): number;
  15. /**
  16. * Assert that there is enough data in the buffer to read `size` bytes.
  17. *
  18. * @param size Number of bytes to read.
  19. */
  20. protected assertSize(size: number): void;
  21. /**
  22. * Add a chunk of data to be decoded. The chunk is copied into the
  23. * internal buffer, so you can reuse the chunk after calling this method; or
  24. * this chunk can be neutered by the caller.
  25. *
  26. * @param uint8 `Uint8Array` chunk of data to be decoded.
  27. */
  28. push(uint8: Uint8Array): void;
  29. /**
  30. * Mark the current position as consumed. This will free up memory
  31. * for reuse.
  32. */
  33. consume(): void;
  34. get uint8(): Uint8Array;
  35. get view(): DataView;
  36. get x(): number;
  37. set x(x: number);
  38. peek(): number;
  39. /**
  40. * Get current byte value without advancing the cursor.
  41. * @deprecated Use peek() instead.
  42. */
  43. peak(): number;
  44. skip(length: number): void;
  45. buf(size?: number): Uint8Array;
  46. subarray(start?: number, end?: number): Uint8Array;
  47. /**
  48. * Creates a new {@link Reader} that references the same underlying memory
  49. * buffer. But with independent cursor and end.
  50. *
  51. * @param start Start offset relative to the current cursor position.
  52. * @param end End offset relative to the current cursor position.
  53. * @returns A new {@link Reader} instance.
  54. */
  55. slice(start?: number, end?: number): Reader;
  56. /**
  57. * Similar to {@link slice} but also advances the cursor. Returns a new
  58. * {@link Reader} that references the same underlying memory buffer, starting
  59. * from the current cursor position.
  60. *
  61. * @param size Number of bytes to cut from the current position.
  62. * @returns A new {@link Reader} instance.
  63. */
  64. cut(size?: number): Reader;
  65. u8(): number;
  66. i8(): number;
  67. u16(): number;
  68. i16(): number;
  69. u32(): number;
  70. i32(): number;
  71. u64(): bigint;
  72. i64(): bigint;
  73. f32(): number;
  74. f64(): number;
  75. utf8(size: number): string;
  76. ascii(length: number): string;
  77. reset(uint8: Uint8Array): void;
  78. }