use lz-string to compress share code

This commit is contained in:
2022-11-27 15:43:57 +01:00
parent 1dcc7c81c7
commit a774334031
3 changed files with 18 additions and 4 deletions

14
package-lock.json generated
View File

@@ -15,6 +15,7 @@
"copy-to-clipboard": "^3.3.3", "copy-to-clipboard": "^3.3.3",
"eventemitter3": "^4.0.7", "eventemitter3": "^4.0.7",
"javascript-stringify": "^2.1.0", "javascript-stringify": "^2.1.0",
"lz-string": "^1.4.4",
"meriyah": "^4.3.3", "meriyah": "^4.3.3",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"primeicons": "^6.0.1", "primeicons": "^6.0.1",
@@ -4359,6 +4360,14 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/lz-string": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
"integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==",
"bin": {
"lz-string": "bin/bin.js"
}
},
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.25.9", "version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -9506,6 +9515,11 @@
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }
}, },
"lz-string": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
"integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ=="
},
"magic-string": { "magic-string": {
"version": "0.25.9", "version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",

View File

@@ -13,11 +13,11 @@
"dependencies": { "dependencies": {
"@codemirror/lang-javascript": "^6.1.1", "@codemirror/lang-javascript": "^6.1.1",
"@codemirror/theme-one-dark": "^6.1.0", "@codemirror/theme-one-dark": "^6.1.0",
"@gkucmierz/utils": "^1.16.1",
"codemirror": "^6.0.1", "codemirror": "^6.0.1",
"copy-to-clipboard": "^3.3.3", "copy-to-clipboard": "^3.3.3",
"eventemitter3": "^4.0.7", "eventemitter3": "^4.0.7",
"javascript-stringify": "^2.1.0", "javascript-stringify": "^2.1.0",
"lz-string": "^1.4.4",
"meriyah": "^4.3.3", "meriyah": "^4.3.3",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"primeicons": "^6.0.1", "primeicons": "^6.0.1",

View File

@@ -4,8 +4,8 @@ import {
STORAGE_KEY_CODE, STORAGE_KEY_CODE,
} from '../app.config'; } from '../app.config';
import EventEmitter from 'eventemitter3'; import EventEmitter from 'eventemitter3';
import { toBase64Url, fromBase64Url } from '@gkucmierz/utils/src/base64.mjs';
import { APP_URL, SHARE_CODE_ROUTE_NAME } from '../app.config'; import { APP_URL, SHARE_CODE_ROUTE_NAME } from '../app.config';
import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from 'lz-string';
const ee = new EventEmitter(); const ee = new EventEmitter();
let code; let code;
@@ -25,10 +25,10 @@ const codeService = {
ee.emit('change', code); ee.emit('change', code);
}, },
setFromUrl(_encoded) { setFromUrl(_encoded) {
this.change(fromBase64Url(_encoded)); this.change(decompressFromEncodedURIComponent(_encoded));
}, },
codeToUrl(_code = code) { codeToUrl(_code = code) {
return [APP_URL, SHARE_CODE_ROUTE_NAME, toBase64Url(_code)].join('/'); return [APP_URL, SHARE_CODE_ROUTE_NAME, compressToEncodedURIComponent(_code)].join('/');
}, },
ee, ee,
}; };