This commit is contained in:
squidfunk
2019-12-18 20:58:31 +01:00
parent 367211f477
commit 60330fd18d
8 changed files with 95 additions and 21 deletions

View File

@@ -21,10 +21,45 @@
* IN THE SOFTWARE.
*/
import { compress, decompress } from "lz-string"
import {
compress,
compressToUTF16,
decompress,
decompressFromUTF16
} from "lz-string"
import { PackerMessage, PackerMessageType } from "../_"
/* ----------------------------------------------------------------------------
* Data
* ------------------------------------------------------------------------- */
/**
* Determine methods for packing and unpacking
*
* While all Webkit-based browsers can store invalid UTF-16 strings in local
* storage, other browsers may only store valid UTF-16 strings.
*
* @see https://bit.ly/2Q1ArhU - LZ-String documentation
*/
const isWebkit = navigator.userAgent.includes("AppleWebKit")
/* ------------------------------------------------------------------------- */
/**
* Method for packing
*/
const pack = isWebkit
? compress
: compressToUTF16
/**
* Method for unpacking
*/
const unpack = isWebkit
? decompress
: decompressFromUTF16
/* ----------------------------------------------------------------------------
* Functions
* ------------------------------------------------------------------------- */
@@ -43,14 +78,14 @@ export function handler(message: PackerMessage): PackerMessage {
case PackerMessageType.STRING:
return {
type: PackerMessageType.PACKED,
data: compress(message.data)
data: pack(message.data)
}
/* Unpack a packed string */
case PackerMessageType.PACKED:
return {
type: PackerMessageType.STRING,
data: decompress(message.data)
data: unpack(message.data)
}
}
}

View File

@@ -20,7 +20,10 @@
* IN THE SOFTWARE.
*/
import { SearchIndex, SearchResult } from "../../../modules"
import { Subject } from "rxjs"
import { SearchIndex, SearchResult } from "modules"
import { watchWorker } from "utilities"
/* ----------------------------------------------------------------------------
* Types