UNPKG

1.46 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 > zip
11export async function zipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
12 return await deflate(buf, options)
13}
14
15export async function gzipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
16 return await gzip(buf, options)
17}
18
19// zip > buffer
20export async function unzipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
21 return await inflate(buf, options)
22}
23
24export async function gunzipBuffer(buf: Buffer, options: ZlibOptions = {}): Promise<Buffer> {
25 return await gunzip(buf, options)
26}
27
28// convenience
29export async function zipString(s: string, options?: ZlibOptions): Promise<Buffer> {
30 return await zipBuffer(Buffer.from(s), options)
31}
32
33export async function gzipString(s: string, options?: ZlibOptions): Promise<Buffer> {
34 return await gzipBuffer(Buffer.from(s), options)
35}
36
37// convenience
38export async function unzipToString(buf: Buffer, options?: ZlibOptions): Promise<string> {
39 return (await unzipBuffer(buf, options)).toString()
40}
41
42export async function gunzipToString(buf: Buffer, options?: ZlibOptions): Promise<string> {
43 return (await gunzipBuffer(buf, options)).toString()
44}