11# zipurl
22
3- > Generate ** gzip** web-safe strings on the browser. Built in 10 minutes.
4- > :smile :
3+ > Generate ** gzip** web-safe strings on the browser. Built in 10 minutes. :smile :
54
65Dead simple mash-up of [ pako] ( https://github.com/nodeca/pako ) and
7- [ js-base64] ( https://github.com/dankogai/js-base64 ) to create ** gzipped**
8- URL-safe base64 strings from any data on the browser. Very useful for passing
9- large datasets via shareable web links.
6+ [ js-base64] ( https://github.com/dankogai/js-base64 ) to create ** gzipped** URL-safe base64 strings
7+ from any data on the browser. Very useful for passing large datasets via shareable web links.
108
11948kb minified, 15kb ** gzipped** , pun not intended.
1210
1311## Demo
1412
15- This package is used in
16- [ JSON Pretty Print Online] ( https://zerodevx.github.io/json-pretty-print/ ) to
17- compress and share stringified JSON via URL query parameters.
13+ This package is used in [ JSON Pretty Print Online] ( https://zerodevx.github.io/json-pretty-print/ ) to
14+ compress and share stringified JSON with URL query params.
1815
1916See it in action
2017[here](https://zerodevx.github.io/json-pretty-print/?data=H4sIAAAAAAAAA7WaXXOkNhaG7_MrtK692FQaAgIE8tU4tmfjxJ7MepykUklqS4Do1g4NHT5sd1L73_foC2g3bXs83krF0wLpICHpOe854tcvEPoL_kfo6N8iPzpGR8SLKWFBESakIJnvJYkfZn4YHS10NVHl_B4qeqa87E27mMShz1InS7PQCUmWOkkUJg4hHityFjCSpoON9iTrxC2Hdl3Tc3M1ZSWrMnnx6O94QXDiJtS22Iis6xt1b9V1m-Ovv96ULOOrusxd0X0d4PsA27psKesFoSnyLT-ty7qRbdOmvqtsvYqtlcHLuqkY-lDWbLi15DBK1aLga1Zyez2r1xtWbeWN9z9c31ycntg7UE2U8noprbXS2JtN3XQiYy60Gsaxqiv10K989A_qh1-i0KMOjnAy9D7PG962so4fxOikgr6d1n3TLdB5Kf5kt6Is-QK943foit-LrF4g6sX-0Dyt-042Pu9QLofNEavEGq3ZEgyxUvzRM9SKqkObphY5hx9rISuIHG1YIxi8ZsR7aIu4vMxysRGtyES1dNHJmnfTK6jol9ACQX85-qMXKOctb3qwCYXWRdd80_CVepeiQ1lfbpjtlO6PNCdtqkfVRQFWGRJNLyvUZQmN-rJk66xGonJ_a34bJqjhS9F2vOFq7WHPJ44XOV5w4yXHPj3GEXLgl-fZ-iXrRNfn8tXD2nSjIMTUt_fqamlvJp4bJ4TG5lbHlnImflUl9djJgIxtuZJkL8diBlPUr8eyHspYZvmkbr1e13k9qSxn40iVfje9KBoBj5x25C_zr9xL-bgZd5b1DUtFt2LobVlv8yNz_7-LAxb8GQuXNXSboZ9XouNPGsBzBmA_MzlN6BtYaCXfDlZ2xrdsOO9gOckm3_KyhCU92ZN_Q7_UPVqxW44o6quGsxytYcXBNm9dO78Fu61hSvjbphdq-bPNplSdVh2eR1zBo4BgwlOeQgGzh4izC8QizkvDIgtI4NACOBcmReSwNA6cOPPSPCe0oJjMIK5gZTvHuGARhoE77vwXMM728EnG_SSfCrMwh7iDgLs8ub748WqPcLfSVsoV4EpARr8-TLgQS8IRJ0jCYI5wfoROyhRMNyVH1zXLF-g7lvXrlC3Q-543XY2uFeN8j5A9xsEq4Wt0yyUoFNrEBkCRiVzkEkIKc2pvGvZM7ilkAXn0XkWcDexy0akGFSBM_7Fg4m03_r7nTQa7oxN1hUroUQNW9LMUzFr5EAtUF11sWrjP-o4PlXeYJ01b1KkK8Fg7Ii76FhghCW2rtKqfJ6aCQaodyrRnA9L1C6izjPGMQdt3dQuuN7cENxhCHV-D1xq4Di_WRVeaxPxev43JS9RG9ainboFNh6aA5qJzeW3wKvKP5L4Z2s7QwWPBlc56ANMX3QRek5rup5yBjx0fnEF8HITHHj3sDLAbhDSi0YwrcGjgejQmyQFfYKZnJLd-d2OZT1yCkPM_FqfAlwN7WPEV8P9dvUXfsqaB-ejq6kX8Py2ZgNl4z16I_7clX8vl8DPQonk2-kdUTcjve6-Lfs7jnLEgoRxHOY3zh-jHD9CfxHHggx52siLznBBj7qSpzx3ix3maFoz7RTSD_gPqNlh41Aeh8Rnktyt2h_xlzx-C_7K-480WFOR6I5fBs-F_8uHmx-uLOXkr7WXa3JsNePceCHPQASTY_xJFIHEDL_JnHAAFpXYjN73VuBfNnai0vP2ONy3fSnk78R0W_WdWaXI2CMtR0g4_JDB2RJtSphaV2n8YzoDolQ4D8D-9mdVVy0EzG49hoAY4kyXlYCymDQZNSd2yWlc_QNfOB8hNa3LLOQNKC8TKYNr6hH23I_2Tobpm6-BfFCsrwQC-H_SjJ4S2nYYLgx3bUrmpdgQ89FldUiN00Q8G7GZ0le0JB2g_ymXsSZHu-zdedIzxsRce5nLsuzQMYOLnwIxBNWGPEhvhPSTzjpyWccZYtK9qKsBhgrOOwzqe53M1bBt1Q475NfgMU7IsOWwidNJUsNFfptA5y1boJ3DJsNhfJtG3FVg47asK-rNi609Q6FOwvBDVKavgvydYndNIanXOCpLk_kRiG1bbNWJZzTgpYo9wJwhi4oR5gh1Ki8AJ0zyJIi-Nw5g9n9X-AnuRi-PPYLVNlTzFanC03RZ90zdV-wmJiIuz83_-sMfpjbSVSlNvgITL-rBEpxEQmmAHe8lcEiKKI9ARVVZnH9GHTq6DBToBf55zbjj9S918BEr7sbdH6fdWfhoEap6YQj7iTYX8LrrUGBmyCBZMokJKF5m_Wb8ROQMIDhoTFptRrmq_gzTOd6kG__Y2K3Ey4aCinGnaihHC77SS7wY6g_o1zHxcelLHi-FV3vge8O0Ye4_kIRLiEprQmM4xLqIuhVkZIrzHGCcmgJo6iMnVflI7n7_-emg7XTFwjqesuZ3Ivk_B2tlWpwz-w0A_vghrsIk-gohs6vpj-2ykTfbfhGfk-TiDxczuYG8026fkZx4QkgVB5McBjTLvIdKsZ7NIi_OcFTEBmhVJ7IQsBqRhQh1KAhrmBQ2jmM4g7VDmAS9I7LkR_gymzWUe5Cvdyzx8zyoOEQD_OMO0A0Q7PX93c3F6vse0j2DqTlp6I92dyPhhqCnZSX0nID6egRoJMTrjrAEyVFZ5vq2bFDRTfQdYu8jZChZEGCT7TLtQ6UmtrLQGmgDJoMTKNw2cn7jRl1Iq6WwrsM-G3GPj27rsN_CDm0oD_vJB0I7ReGtCYmAjSOAhR6AAOQAUwGWQqTWttquzB1cqA6sAqFSgzojcZ3zTcSC2MFQeGGvlniKjRrghttSlbEw16HzMTq6lm-ho5QNA5trEwaTimB9RUvdx0kaOFzqY3vj4GFNA7GHShoEbxoBmm9WdgjbGrhdiEhzK-A4v5HB690H2Vw1_UttO73jJvqkJh18p53tW98uStehdzcsXkRdIuGTomlUw25vVi9D7PetWEGnBrr8W9fPhO3Jiwt74_8DePMQsioqEp4SlBU0estdG1pa92M95SnHm5HmKndBjvkOTkDhZ5kUkIrGfRMknsDdY-J7vks-J_e1afTLrC7qNb9HNtv2EyP-DpO_1xekefVfSWCdtvWklfxuRHQ77Y6JFZYDJXNgfxRid33N5MmA15RWgGFZEC5gDgdmIP-uKAYETuk_gd4BR_jCuN0DWzFKBsEkcmhvmwEmp0DHks1G7Cm8VBe8tGXdCbQtrI111K3niZZTrqblvQ2jrAAx3p0-0fJOtpU9QpqCpOgiz-tME7FONrLunUt0TAavHO4bx3OQt1IhsrwfHMnaUj8lg1RObPDZ-RBkc_ZH1ATtZ7Snx1SuejPJJkUwdn954-Djwj8PgMLoD7EaeH8-R2_djF9MEk4PoBof2QN6ORf2yDp_RmYk8TH3evcohHaASnDUAu4E18SJkX7GmXTEQr6B4n5bbB47pGLoCmjw_STshy8uk8rMi_5CEJA-LkKZREsZR_BDV5AGqk8IjGfaIk7I0csKQZk6SF7nDQ5_JbxNAAhSf8g2Ch-URwGufz81E_ld1nW_Rt7AG6zu2fTarv7m4vLw6P9tD9VqaWxlrb1JYuWueH4a1FwOsYwhb49kMQBhRdAIDL8XwJQLEdk1rv0Som24lr9SlkMjGkZfsIft89lBKa1NNQHsQpTlkdLQBiwrCh7wmEPpMJnEBniqZO3wioK1Jcg0ZBiVZx28IND-1cYCspJmpOmaMBwW8k6zY8QZa4Q6nfhrQoPMHXu50eDjPm6pbVWN3lOOTBwob9GvB_mHyTCmpDe8HjCs4a3-gHjWcH1q7LrrRD5RxiIS-DgdsvSFq2HWsrRgSMS76F7QaPxNR8Yd6oA4j1ERq_zPrPc3nJ5NBPO4nYgf2sgd-wj_2yXH0SL7YiWOZE_Y8GzlPPUUkz1rCgNpDnX2N_wjmJxmS_eSx9Nljyayz8YJe06_hJ74XDbyZCp3DYqy7p1O9c47iWiyXLegtVj3nQHDOUZyuOIhaBqDqW_5sX7ELt4m7iF7kLr74_X8qHdwptSYAAA)!
2118
2219## Install
2320
24- Install the node package with npm or yarn.
25-
2621```
2722$ npm i -D zipurl
2823```
@@ -34,18 +29,21 @@ $ npm i -D zipurl
3429#### Use locally
3530
3631``` html
37- <script src =" path/to/dist/index.umd.js" ></script >
32+ <script src =" path/to/dist/index.min.js" ></script >
33+ <script >
34+ console .log (zipurl (' hello world!' )) // H4sIAAAAAAAAA8tIzcnJVyjPL8pJUQQAbcK0AwwAAAA
35+ console .log (unzipurl (' H4sIAAAAAAAAA8tIzcnJVyjPL8pJUQQAbcK0AwwAAAA' )) // hello world!
36+ </script >
3837```
3938
39+ The functions ` zipurl() ` and ` unzipurl() ` are available in the global (` window ` ) scope.
40+
4041#### Or without installation via CDN
4142
4243``` html
43- <script src =" https://cdn.jsdelivr.net/npm/zipurl" ></script >
44+ <script src =" https://cdn.jsdelivr.net/npm/zipurl@1 " ></script >
4445```
4546
46- The functions ` zipurl() ` and ` unzipurl() ` are available in the global (` window ` )
47- scope.
48-
4947#### Or with a bundler
5048
5149``` js
@@ -59,17 +57,14 @@ import { zipurl, unzipurl } from 'zipurl'
5957``` js
6058import { zipurl , unzipurl } from ' zipurl'
6159
62- console .log (zipurl (' Hello world!' )) // H4sIAAAAAAAAA_NIzcnJVyjPL8pJUQQAlRmFGwwAAAA
63- console .log (unzipurl (' H4sIAAAAAAAAA_NIzcnJVyjPL8pJUQQAlRmFGwwAAAA ' )) // Hello world!
60+ console .log (zipurl (' hello world!' )) // H4sIAAAAAAAAA8tIzcnJVyjPL8pJUQQAbcK0AwwAAAA
61+ console .log (unzipurl (' H4sIAAAAAAAAA8tIzcnJVyjPL8pJUQQAbcK0AwwAAAA ' )) // hello world!
6462```
6563
6664#### With CJS
6765
6866``` js
6967const { zipurl , unzipurl } = require (' zipurl' )
70-
71- console .log (zipurl (' Hello world!' )) // H4sIAAAAAAAAA_NIzcnJVyjPL8pJUQQAlRmFGwwAAAA
72- console .log (unzipurl (' H4sIAAAAAAAAA_NIzcnJVyjPL8pJUQQAlRmFGwwAAAA' )) // Hello world!
7368```
7469
7570### Use the CLI
@@ -113,8 +108,7 @@ That's it!
113108Ok, so it works much better with larger datasets:
114109
115110``` js
116- const a =
117- JSON .stringify (` {"students":[{"name":"Jack","age":17},{"name":"Jill","age":16},
111+ const a = JSON .stringify (` {"students":[{"name":"Jack","age":17},{"name":"Jill","age":16},
118112{"name":"Sue","age":16}],"class":"math"}` )
119113
120114console .log (a .length ) // 103 bytes
@@ -158,8 +152,7 @@ console.log(zipurl(b).length) // 1120 bytes - 77.4% reduction in size :)
158152
159153## Google Apps Script
160154
161- If you're using GAS somewhere along your pipeline, ` zipurl ` is supported
162- natively (kindof).
155+ If you're using GAS somewhere along your pipeline, ` zipurl ` is supported natively (kindof).
163156
164157Here's the gist:
165158
0 commit comments