CborArrayEncoderStream

import { CborArrayEncoderStream } from "jsr:@ende/cbor";

class

class CborArrayEncoderStream implements TransformStream<CborStreamInput, Uint8Array>

A TransformStream that encodes a ReadableStream into CBOR "Indefinite Length Array". RFC 8949 - Concise Binary Object Representation (CBOR)

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborArrayDecodedStream,
  CborArrayEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage = ["a".repeat(100), "b".repeat(100), "c".repeat(100)];

for await (
  const value of ReadableStream.from(rawMessage)
    .pipeThrough(new CborArrayEncoderStream())
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborArrayDecodedStream);
  let i = 0;
  for await (const text of value) {
    assert(typeof text === "string");
    assertEquals(text, rawMessage[i++]);
  }
}

Constructors

constructor

new CborArrayEncoderStream()

Constructs a new instance.

Static methods

from

static from(asyncIterable: AsyncIterable<CborStreamInput> | Iterable<CborStreamInput>): CborArrayEncoderStream

Creates a CborArrayEncoderStream instance from an iterable of CborStreamInput chunks.

asyncIterable: AsyncIterable<CborStreamInput> | Iterable<CborStreamInput>

The value to encode of type AsyncIterable or Iterable.

Returns

A CborArrayEncoderStream instance of the encoded data.

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborArrayDecodedStream,
  CborArrayEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage = ["a".repeat(100), "b".repeat(100), "c".repeat(100)];

for await (
  const value of CborArrayEncoderStream.from(rawMessage)
    .readable
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborArrayDecodedStream);
  let i = 0;
  for await (const text of value) {
    assert(typeof text === "string");
    assertEquals(text, rawMessage[i++]);
  }
}

Methods

readable

get readable(): ReadableStream<Uint8Array>

The ReadableStream associated with the instance, which provides the encoded CBOR data as Uint8Array chunks.

Returns

A ReadableStream.

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborArrayDecodedStream,
  CborArrayEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage = ["a".repeat(100), "b".repeat(100), "c".repeat(100)];

for await (
  const value of ReadableStream.from(rawMessage)
    .pipeThrough(new CborArrayEncoderStream())
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborArrayDecodedStream);
  let i = 0;
  for await (const text of value) {
    assert(typeof text === "string");
    assertEquals(text, rawMessage[i++]);
  }
}

writable

get writable(): WritableStream<CborStreamInput>

The WritableStream associated with the instance, which accepts CborStreamInput chunks to be encoded into CBOR format.

Returns

A WritableStream.

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborArrayDecodedStream,
  CborArrayEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage = ["a".repeat(100), "b".repeat(100), "c".repeat(100)];

for await (
  const value of ReadableStream.from(rawMessage)
    .pipeThrough(new CborArrayEncoderStream())
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborArrayDecodedStream);
  let i = 0;
  for await (const text of value) {
    assert(typeof text === "string");
    assertEquals(text, rawMessage[i++]);
  }
}

Source