UNPKG

1.75 kBPlain TextView Raw
1import { promisify } from 'util'
2import { ZlibOptions } from 'zlib'
3import * as zlib from 'zlib'
4
5const deflate = promisify(zlib.deflate.bind(zlib))
6const inflate = promisify(zlib.inflate.bind(zlib))
7const gzip = promisify(zlib.gzip.bind(zlib))
8const gunzip = promisify(zlib.gunzip.bind(zlib))
9
10// string > compressed buffer
11
12/**
13 * deflateBuffer uses `deflate`.
14 * It's 9 bytes shorter than `gzip`.
15 */
16export async function deflateBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
17 return await deflate(buf, options)
18}
19
20export async function inflateBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
21 return await inflate(buf, options)
22}
23
24/**
25 * deflateString uses `deflate`.
26 * It's 9 bytes shorter than `gzip`.
27 */
28export async function deflateString(s: string, options?: ZlibOptions): Promise<Buffer> {
29 return await deflateBuffer(Buffer.from(s), options)
30}
31
32export async function inflateToString(buf: Buffer, options?: ZlibOptions): Promise<string> {
33 return (await inflateBuffer(buf, options)).toString()
34}
35
36/**
37 * gzipBuffer uses `gzip`
38 * It's 9 bytes longer than `deflate`.
39 */
40export async function gzipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
41 return await gzip(buf, options)
42}
43
44export async function gunzipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
45 return await gunzip(buf, options)
46}
47
48/**
49 * gzipString uses `gzip`.
50 * It's 9 bytes longer than `deflate`.
51 */
52export async function gzipString(s: string, options?: ZlibOptions): Promise<Buffer> {
53 return await gzipBuffer(Buffer.from(s), options)
54}
55
56export async function gunzipToString(buf: Buffer, options?: ZlibOptions): Promise<string> {
57 return (await gunzipBuffer(buf, options)).toString()
58}