CborMapEncoderStream

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

class

class CborMapEncoderStream implements TransformStream<CborMapStreamInput, Uint8Array>

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

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborMapDecodedStream,
  CborMapEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage: Record<string, number> = {
  a: 0,
  b: 1,
  c: 2,
  d: 3,
};

for await (
  const value of ReadableStream.from(Object.entries(rawMessage))
    .pipeThrough(new CborMapEncoderStream)
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborMapDecodedStream);
  for await (const [k, v] of value) {
    assertEquals(rawMessage[k], v);
  }
}

Constructors

constructor

new CborMapEncoderStream()

Constructs a new instance.

Static methods

from

static from(asyncIterable: AsyncIterable<CborMapStreamInput> | Iterable<CborMapStreamInput>): CborMapEncoderStream

Creates a CborMapEncoderStream instance from an iterable of CborMapStreamInput chunks.

asyncIterable: AsyncIterable<CborMapStreamInput> | Iterable<CborMapStreamInput>

The value to encode of type AsyncIterable or Iterable.

Returns

A CborMapEncoderStream instance of the encoded data.

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborMapDecodedStream,
  CborMapEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage: Record<string, number> = {
  a: 0,
  b: 1,
  c: 2,
  d: 3,
};

for await (
  const value of CborMapEncoderStream.from(Object.entries(rawMessage))
    .readable
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborMapDecodedStream);
  for await (const [k, v] of value) {
    assertEquals(rawMessage[k], v);
  }
}

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 {
  CborMapDecodedStream,
  CborMapEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage: Record<string, number> = {
  a: 0,
  b: 1,
  c: 2,
  d: 3,
};

for await (
  const value of ReadableStream.from(Object.entries(rawMessage))
    .pipeThrough(new CborMapEncoderStream)
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborMapDecodedStream);
  for await (const [k, v] of value) {
    assertEquals(rawMessage[k], v);
  }
}

writable

get writable(): WritableStream<CborMapStreamInput>

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

Returns

A WritableStream.

Example: Usage

import { assert, assertEquals } from "@ende/assert";
import {
  CborMapDecodedStream,
  CborMapEncoderStream,
  CborSequenceDecoderStream,
} from "@ende/cbor";

const rawMessage: Record<string, number> = {
  a: 0,
  b: 1,
  c: 2,
  d: 3,
};

for await (
  const value of ReadableStream.from(Object.entries(rawMessage))
    .pipeThrough(new CborMapEncoderStream)
    .pipeThrough(new CborSequenceDecoderStream())
) {
  assert(value instanceof CborMapDecodedStream);
  for await (const [k, v] of value) {
    assertEquals(rawMessage[k], v);
  }
}

Source