any-data
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

any-data

NPM Link Language Build Status Code Coverage Gzipped Size Dependency details Tree shakeable ISC License

Convert data of any type to text, json, formData, TypedArray, Blob, or ArrayBuffer

npm install any-data

Motivation

I needed a tool for dealing with the wide variety of data types that can be passed to new Response(). So AnyData allows lazy data conversion for response bodies to simplify http server middleware such as calculating etags and compression with Brotli.

Note that AnyData does not support ReadableStream even though Response does.

Table of contents

  1. Example usage
  2. API
  3. Supported data types
  4. Changes
    1. Changelog
    2. Roadmap
  5. Community
    1. Contributing
    2. ISC license

Example usage

import { AnyData } from 'any-data';

await new AnyData('hello world').bytes(); // UTF-8 encoded in Uint8Array
await new AnyData(myArrayBuffer).bytes(); // Array buffer as Uint8Array
await new AnyData(myBlob).arrayBuffer(); // Blob as ArrayBuffer

API

import { AnyData } from 'any-data';

const hello = new AnyData('hello world');

// getting data
await hello.text(); // get data as text
await hello.json(); // get data as an object; will throw if data isn't valid JSON
await hello.arrayBuffer(); // get data as ArrayBuffer
await hello.blob(); // get data as Blob
await hello.bytes(); // get data as Uint8Array
await hello.formData(); // get data as FormData object

// setting data to something new
hello.set('foo bar');

// utility methods
hello.clone(); // returns a new AnyData object with a DEEP clone of the underlying data
hello.isEmpty(); // true if data is empty
hello.isSupported(); // true if data type is supported
hello.getDataCategory(); // Either bytes, text, or unknown

Supported data types

data type / method text() json() formData() bytes() blob() arrayBuffer() clone()
null "" undefined (empty) (empty) (empty) (empty) null
string itself If valid JSON If valid Yes Yes Yes itself
Record<string, any> JSON itself Yes JSON JSON JSON deep copy
Array JSON itself as entries JSON JSON JSON deep copy
Response text() json() formData() bytes() blob() arrayBuffer() clone()
Blob Yes If valid JSON If valid JSON Yes itself Yes deep copy
ArrayBuffer Yes If valid JSON If valid JSON Yes Yes Yes deep copy
TypedArray Yes If valid JSON If valid JSON Yes Yes Yes deep copy
DataView Yes If valid JSON If valid JSON Yes Yes Yes deep copy
FormData Yes Error itself Yes Yes Yes deep copy
ReadableStream Yes If valid JSON If valid JSON Yes Yes Yes deep copy
URLSearchParams URL entries Yes URL URL URL deep copy

Note: all FormData is serialized to text with multi-part form boundary markers

Community

Contributing

Please open a ticket or PR on GitHub. All contributions are subject to the Code of Conduct.

ISC License

ISC License

Readme

Keywords

none

Package Sidebar

Install

npm i any-data

Weekly Downloads

2

Version

1.0.3

License

ISC

Unpacked Size

19.9 kB

Total Files

6

Last publish

Collaborators

  • kensnyder