smol-string 0.0.0 → 0.0.1-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,42 +1,28 @@
1
- import { i as o, c as F, U as G } from "./wasm-helper-6790be72.js";
2
- const w = (I) => o(I, "data:application/wasm;base64,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IgBBgHBqIAEgAGsQmYCAgAALIAJBEGokgICAgAALOwEBfyOAgICAAEEQayIDJICAgIAAIAMgACkCADcDCCADQQhqIAEgAkEBEJeAgIAAIANBEGokgICAgAALvQEBBH9BACEEAkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCWgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJaAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQmICAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJiAgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCYgICAAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwALLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), a = await w(), A = a.exports;
3
- function h(I) {
4
- const { ptr: C, length: i } = F(I, A), g = A.compress(C);
5
- A.free(C, i);
6
- const B = new Uint16Array(
7
- A.memory.buffer.slice(
8
- g,
9
- g + (A.memory.buffer.byteLength - g)
10
- )
11
- ), E = B.indexOf(0), D = B.slice(0, E), Q = G(D);
12
- return A.free(g, E + 1), Q;
13
- }
14
- function J(I) {
15
- const C = A.allocUint16(
16
- I.length + 1
17
- ), i = new Uint16Array(
18
- A.memory.buffer,
19
- C,
20
- I.length + 1
21
- );
22
- for (let Q = 0; Q < I.length; Q++)
23
- i[Q] = I.charCodeAt(Q);
24
- i[I.length] = 0;
25
- const g = A.decompress(
26
- C
27
- );
28
- A.free(C, I.length + 1);
29
- const B = new Uint8Array(
30
- A.memory.buffer.slice(
31
- g,
32
- g + (A.memory.buffer.byteLength - g)
33
- )
34
- ), E = B.indexOf(0);
35
- return A.free(g, E + 1), new TextDecoder().decode(
36
- B.slice(0, E)
37
- );
38
- }
39
- export {
40
- h as compress,
41
- J as decompress
42
- };
1
+ import { i as F, c as a, e as G, U as h } from "./wasm-helper-57a16a1d.js";
2
+ const k = (I) => F(I, "data:application/wasm;base64,AGFzbQEAAAABUQxgBH9/f38Bf2AFf39/f38AYAZ/f39/f38Bf2ABfwF/YAN/f38AYAJ/fwBgAX8AYAR/f39/AGACf38BfmACf38Bf2ADf39/AX9gBX9+fn5+AAMdHAMEAwQFBAYFBwgACQkJBgQJCQoHBQQAAgELCgoEBQFwAQQEBQMBABEGDgJ/AUGAgMAAC38AQQALB0QGBm1lbW9yeQIACmFsbG9jVWludDgAAAthbGxvY1VpbnQxNgACBGZyZWUABAhjb21wcmVzcwALCmRlY29tcHJlc3MAEAkJAQBBAQsDFhcYCv83HF4BAX8jgICAgABBEGsiASSAgICAACABI4GAgIAAQZiAwIAAaikDADcDACABQQhqIAEgABCBgICAAAJAIAEvAQwNACABKAIIIQAgAUEQaiSAgICAACAADwsDfwAMAAsLcQIBfwF+I4CAgIAAQRBrIgMkgICAgABCgICAgBAhBAJAQQFFDQACQCACDQBC/////w8hBAwBCyABKAIAIAJBAEEAIAEoAgQoAgARgICAgAAAIgJFrUIghiACrYQhBAsgACAENwIAIANBEGokgICAgAALXgEBfyOAgICAAEEQayIBJICAgIAAIAEjgYCAgABBmIDAgABqKQMANwMAIAFBCGogASAAEIOAgIAAAkAgAS8BDA0AIAEoAgghACABQRBqJICAgIAAIAAPCwN/AAwACwuHAQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyACQQBIOgAMAkACQCACQX9KDQBCgICAgBAhBAwBCwJAIAJBAXQiAg0AQv7///8PIQQMAQsgASgCACACQQFBACABKAIEKAIAEYCAgIAAACICRa1CIIYgAq2EIQQLIAAgBDcCACADQRBqJICAgIAACxkAI4GAgIAAQZiAwIAAaiAAIAEQhYCAgAALOAEBfwJAIAJBACACGyIDRQ0AIAAoAgAgAUGq1arVeiACGyADQQBBACAAKAIEKAIIEYGAgIAAAAsLDwAgACAAQQxqEIeAgIAAC3ABA38CQCAAKAIAIgJFDQACQCACQXRqIgNBCGooAgAiAkEKbCACQQ9qQXxxakEDakF8cSICQQAgAhsiBEUNACABKAIAIANBBCACGyAEQQJBACABKAIEKAIIEYGAgIAAAAsgAEEANgIIIABBADYCAAsL2AIDBH8BfgR/I4CAgIAAQRBrIgQkgICAgAAjgYCAgAAhBSABKAIAIQYCQAJAIAEoAgQNACAFQYCAwIAAaiEHDAELIAIgAxCJgICAACEIAkACQCAGDQBBACEFQX8hCQwBCyAGQXxqKAIAIgVBf2ohCQsgBkF4aiEKIAkgCKdxIQEgCEI5iKchCwNAI4GAgIAAQYCAwIAAaiEHIAYgAWosAAAiDEUNASAFRQ0BAkAgDEF/Sg0AIAsgDEH/AHFHDQAgAiADIAooAgAgAUEDdGoiDCgCACAMKAIEEIqAgIAAQQFxRQ0AIARBAToADCAEIAE2AgggBEEIaiEHDAILIAVBf2ohBSABQQFqIAlxIQEMAAsLAkACQCAHLQAEDQBBACEBQQAhBQwBCyAGQXRqKAIAIAcoAgBBAXRqLwEAIQFBgIAEIQULIAAgBSABcjYBACAEQRBqJICAgIAAC+wFBQJ/AX4BfwJ+An8jgICAgABB4ABrIgIkgICAgAACQAJAAkACQAJAIAFBEEsNACABQQNNDQEgADUAAEIghiAAIAFBAXZB/P///wdxIgNqNQAAhCEEIAAgAUF8aiIFajUAAEIghiAAIAUgA2tqNQAAhCEGQqya4tOj0vD6HyEHDAQLQQAhA0KsmuLTo9Lw+h8hB0EAIQUgAUEwSQ0CQQAhBUKsmuLTo9Lw+h8hB0KsmuLTo9Lw+h8hBEKsmuLTo9Lw+h8hBgNAIAVBMGoiCCABTw0CIAJBwABqIAAgBWoiBSkACCAGhUIAIAUpAABC29HQhZra34FnhUIAEJmAgIAAIAJBMGogBUEYaikAACAEhUIAIAVBEGopAABC442j5Inemt6Of4VCABCZgICAACACQSBqIAVBKGopAAAgB4VCACAFQSBqKQAAQsOZ3anHudnM2ACFQgAQmYCAgAAgAkHAAGpBCGopAwAgAikDQIUhBiACQSBqQQhqKQMAIAIpAyCFIQcgAkEwakEIaikDACACKQMwhSEEIAghBQwACwtCACEGQqya4tOj0vD6HyEHAkAgAQ0AQgAhBAwDCyAAIAFBAXZqMQAAQgiGIAAxAABCEIaEIAEgAGpBf2oxAACEIQQMAgsgBCAHhSAGhSEHCyAAIAVqIQkgASAFayEIAkADQCADQRBqIgUgCE8NASACQdAAaiAJIANqIgNBCGopAAAgB4VCACADKQAAQtvR0IWa2t+BZ4VCABCZgICAACACQdAAakEIaikDACACKQNQhSEHIAUhAwwACwsgASAAaiIDQXhqKQAAIQYgA0FwaikAACEECyACQRBqIARC29HQhZra34FnhUIAIAYgB4VCABCZgICAACACIAJBEGpBCGopAwBC29HQhZra34FnhUIAIAGtIAIpAxCFQq/I9cXHrIe7oH+FQgAQmYCAgAAgAkEIaikDACEHIAIpAwAhBCACQeAAaiSAgICAACAHIASFC1gBAn9BACEEAkAgASADRw0AAkAgACACRw0AQQEPCwNAIAFFIQQgAUUNASABQX9qIQEgAi0AACEDIAAtAAAhBSAAQQFqIQAgAkEBaiECIAUgA0YNAAsLIAQLiRMGAX8BfgV/AX4cfwF+I4CAgIAAQaABayICJICAgIAAAkACQAJAIAENACOBgICAAEGYgMCAAGopAwAhA0Gq1arVeiEEQQAhBUEAIQYMAQtBACEHIAJBGGpBCGoiCEEANgIAIAJCADcDGCACI4GAgIAAQZiAwIAAaikDACIJNwIkIAIgCTcCdCACQQA2AnAgAkKq1arVCjcCaAJAIAJB6ABqIAEQjICAgABB//8DcUUNACACQRhqEIaAgIAADAILIAJBGGpBDGohCiAJQiCIpyELIAIpAnQhAyACKAJwIQUgAigCbCEGIAIoAmghBCAJpyEMQYACIQ1BACEOA0AgBiEPIA5BAmohByAAIA5qIRBBACEGAkACQAJAAkACQAJAAkACQAJAAkADQAJAAkAgByAGaiABTw0AIAJBMGogAkEYaiAQIAZBAmoiERCIgICAACACLQAyDQEgAigCGCESIAIoAiANBgJAAkAgEg0AQQEhBwwBCyASQXxqKAIArULQAH4iCSAJQuQAgn1C5AB8QtAAgKchBwtBACETIAJB6ABqQQhqIhRBADYCACACQgA3A2hBAA0FAkACQEIBQSAgB2drrUL//wODhqciB0EIIAdBCEsbIhVBAXQgFUEPakF8cSIWIBVBA3RqIhdqQQNqQXxxIgcNAEF8IQcMAQtBACETIAwgB0ECQQAgCygCABGAgICAAAAiB0UNBgsgB0EIaiIYIBU2AgAgByAHIBZqNgIEIAcgByAXajYCACACIAdBDGoiBzYCaCAHQQAgFRCagICAACETIAIgFa1C0AB+QuQAgKciGTYCcCACKAIcIhpFDQRB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"), J = await k(), A = J.exports;
3
+ function c(I) {
4
+ const { ptr: C, length: Q } = a(I, A), E = A.compress(C, Q);
5
+ A.free(C, Q);
6
+ const { start: g, end: i, capacity: o } = G(A.memory, E), D = new Uint16Array(A.memory.buffer.slice(g, i)), w = h(D);
7
+ return A.free(g, o), w;
8
+ }
9
+ function s(I) {
10
+ const C = A.allocUint16(I.length), Q = new Uint16Array(
11
+ A.memory.buffer,
12
+ C,
13
+ I.length
14
+ );
15
+ for (let B = 0; B < I.length; B++)
16
+ Q[B] = I.charCodeAt(B);
17
+ const E = A.decompress(
18
+ C,
19
+ I.length
20
+ );
21
+ A.free(C, 2 * I.length);
22
+ const { start: g, end: i, capacity: o } = G(A.memory, E), D = new Uint8Array(A.memory.buffer.slice(g, i)), w = new TextDecoder().decode(D);
23
+ return A.free(g, o), w;
24
+ }
25
+ export {
26
+ c as compress,
27
+ s as decompress
28
+ };
@@ -0,0 +1,56 @@
1
+ function o(n, e) {
2
+ const t = new TextEncoder().encode(n), a = e.allocUint8(t.length);
3
+ return new Uint8Array(
4
+ e.memory.buffer,
5
+ a,
6
+ t.length
7
+ ).set(t), { ptr: a, length: t.length };
8
+ }
9
+ function f(n) {
10
+ const e = new Array(n.length);
11
+ for (let t = 0; t < n.length; t++)
12
+ e[t] = String.fromCharCode(n[t]);
13
+ return e.join("");
14
+ }
15
+ function c(n, e) {
16
+ const t = new Uint32Array(
17
+ n.buffer.slice(e, e + 8)
18
+ ), a = t.at(0), r = t.at(1);
19
+ return {
20
+ start: e - a,
21
+ end: e,
22
+ capacity: r
23
+ };
24
+ }
25
+ const l = async (n = {}, e) => {
26
+ let t;
27
+ if (e.startsWith("data:")) {
28
+ const a = e.replace(/^data:.*?base64,/, "");
29
+ let r;
30
+ if (typeof Buffer == "function" && typeof Buffer.from == "function")
31
+ r = Buffer.from(a, "base64");
32
+ else if (typeof atob == "function") {
33
+ const s = atob(a);
34
+ r = new Uint8Array(s.length);
35
+ for (let i = 0; i < s.length; i++)
36
+ r[i] = s.charCodeAt(i);
37
+ } else
38
+ throw new Error("Failed to decode base64-encoded data URL, Buffer and atob are not supported");
39
+ t = await WebAssembly.instantiate(r, n);
40
+ } else {
41
+ const a = await fetch(e), r = a.headers.get("Content-Type") || "";
42
+ if ("instantiateStreaming" in WebAssembly && r.startsWith("application/wasm"))
43
+ t = await WebAssembly.instantiateStreaming(a, n);
44
+ else {
45
+ const s = await a.arrayBuffer();
46
+ t = await WebAssembly.instantiate(s, n);
47
+ }
48
+ }
49
+ return t.instance;
50
+ };
51
+ export {
52
+ f as U,
53
+ o as c,
54
+ c as e,
55
+ l as i
56
+ };
@@ -1,5 +1,5 @@
1
- export type Message = {
2
- command: string;
3
- id: number;
4
- data: string;
5
- };
1
+ export type Message = {
2
+ command: string;
3
+ id: number;
4
+ data: string;
5
+ };
package/dist/worker.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export type Message = {
2
- command: string;
3
- id: number;
4
- data: string;
5
- };
1
+ export type Message = {
2
+ command: string;
3
+ id: number;
4
+ data: string;
5
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smol-string",
3
- "version": "0.0.0",
3
+ "version": "0.0.1-beta",
4
4
  "description": "Compression for browser localStorage",
5
5
  "author": "Senryoku <maretverdant@gmail.com>",
6
6
  "repository": {
@@ -54,9 +54,9 @@
54
54
  "@vitest/browser": "^0.34.6",
55
55
  "typescript": "^5.2.2",
56
56
  "vite": "^4.4.5",
57
+ "vite-plugin-dts": "^3.6.2",
58
+ "vite-plugin-top-level-await": "^1.3.1",
57
59
  "vitest": "^0.34.6",
58
- "webdriverio": "^8.20.4",
59
- "vite-plugin-dts": "^3.6.2"
60
- },
61
- "dependencies": {}
60
+ "webdriverio": "^8.20.4"
61
+ }
62
62
  }
package/src/common.ts CHANGED
@@ -2,18 +2,17 @@ export function copyToWasmBuffer(
2
2
  str: string,
3
3
  exports: { allocUint8: (size: number) => number; memory: any }
4
4
  ) {
5
- // There's also an 'encodeInto' method to avoid a copy, but by encoding first, we con allocate only exactly what we need.
5
+ // There's also an 'encodeInto' method to avoid a copy, but by encoding first, we can allocate only exactly what we need.
6
6
  const utf8Str = new TextEncoder().encode(str);
7
- const ptrToStr = exports.allocUint8(utf8Str.length + 1);
7
+ const ptrToStr = exports.allocUint8(utf8Str.length);
8
8
  const inBuffer = new Uint8Array(
9
9
  exports.memory.buffer,
10
10
  ptrToStr,
11
- utf8Str.length + 1
11
+ utf8Str.length
12
12
  );
13
13
  inBuffer.set(utf8Str); // Copy to WASM buffer.
14
- inBuffer[utf8Str.length] = 0; // null terminate it.
15
14
 
16
- return { ptr: ptrToStr, length: utf8Str.length + 1 };
15
+ return { ptr: ptrToStr, length: utf8Str.length };
17
16
  }
18
17
 
19
18
  // Horrible. Surely we can do better...
@@ -23,3 +22,18 @@ export function Uint16ArraytoString(buf: Uint16Array) {
23
22
  strBuilder[i] = String.fromCharCode(buf[i]);
24
23
  return strBuilder.join("");
25
24
  }
25
+
26
+ export function extractFooter(memory: WebAssembly.Memory, ptrToFooter: number) {
27
+ const footer = new Uint32Array(
28
+ memory.buffer.slice(ptrToFooter, ptrToFooter + 8)
29
+ );
30
+ const streamLength = footer.at(0)!;
31
+ const capacity = footer.at(1)!;
32
+ const start = ptrToFooter - streamLength;
33
+
34
+ return {
35
+ start,
36
+ end: ptrToFooter,
37
+ capacity,
38
+ };
39
+ }
Binary file
package/src/module.wasm CHANGED
Binary file
@@ -1,4 +1,8 @@
1
- import { Uint16ArraytoString, copyToWasmBuffer } from "./common.js";
1
+ import {
2
+ Uint16ArraytoString,
3
+ copyToWasmBuffer,
4
+ extractFooter,
5
+ } from "./common.js";
2
6
  import init from "./module-packed.wasm?init";
3
7
 
4
8
  type exportsType = {
@@ -11,7 +15,7 @@ type exportsType = {
11
15
  tokenCount: number
12
16
  ) => number;
13
17
  free: (ptr: number, length: number) => void;
14
- memory: any;
18
+ memory: WebAssembly.Memory;
15
19
  };
16
20
 
17
21
  const instance = await init();
@@ -20,31 +24,26 @@ const exports = instance.exports as exportsType;
20
24
  export function compressPacked(str: string) {
21
25
  const { ptr, length } = copyToWasmBuffer(str, exports);
22
26
 
23
- const ptrToCompressed = exports.compressPacked(ptr, length);
27
+ const ptrToFooter = exports.compressPacked(ptr, length);
24
28
 
25
29
  exports.free(ptr, length);
26
30
 
27
- const buffer = new Uint16Array(
28
- exports.memory.buffer.slice(
29
- ptrToCompressed,
30
- ptrToCompressed +
31
- (exports.memory.buffer.byteLength - ptrToCompressed)
32
- )
33
- );
34
- const streamLength = (buffer.at(0)! << 16) + buffer.at(1)!;
35
- // Includes the tokenCount at the start of the stream (2 * u16).
36
- const compressedBuffer = buffer.slice(2, streamLength);
31
+ const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
32
+
33
+ // Includes the tokenCount at the end of the stream (2 * u16).
34
+ const compressed = new Uint16Array(exports.memory.buffer.slice(start, end));
37
35
 
38
- const compressed = Uint16ArraytoString(compressedBuffer);
36
+ const r = Uint16ArraytoString(compressed);
39
37
 
40
- exports.free(ptrToCompressed, streamLength);
38
+ exports.free(start, capacity);
41
39
 
42
- return compressed;
40
+ return r;
43
41
  }
44
42
 
45
43
  export function decompressPacked(compressedStr: string) {
46
44
  const tokenCount =
47
- (compressedStr.charCodeAt(0)! << 16) + compressedStr.charCodeAt(1);
45
+ (compressedStr.charCodeAt(compressedStr.length - 1)! << 16) +
46
+ compressedStr.charCodeAt(compressedStr.length - 2);
48
47
 
49
48
  let ptrToCompressed = exports.allocUint16(compressedStr.length - 2);
50
49
  let compressed_buffer = new Uint16Array(
@@ -53,31 +52,22 @@ export function decompressPacked(compressedStr: string) {
53
52
  compressedStr.length - 2
54
53
  );
55
54
 
56
- for (let i = 2; i < compressedStr.length; i++)
57
- compressed_buffer[i - 2] = compressedStr.charCodeAt(i);
55
+ for (let i = 0; i < compressedStr.length - 2; i++)
56
+ compressed_buffer[i] = compressedStr.charCodeAt(i);
58
57
 
59
- const ptrToDecompressedNullTerminated = exports.decompressPacked(
58
+ const ptrToFooter = exports.decompressPacked(
60
59
  ptrToCompressed,
61
- compressedStr.length,
60
+ compressedStr.length - 2,
62
61
  tokenCount
63
62
  );
64
63
 
65
- exports.free(ptrToCompressed, compressedStr.length);
64
+ exports.free(ptrToCompressed, 2 * (compressedStr.length - 2));
66
65
 
67
- const decompressed_buffer = new Uint8Array(
68
- exports.memory.buffer.slice(
69
- ptrToDecompressedNullTerminated,
70
- ptrToDecompressedNullTerminated +
71
- (exports.memory.buffer.byteLength -
72
- ptrToDecompressedNullTerminated)
73
- )
74
- );
75
- const decompressed_end = decompressed_buffer.indexOf(0);
76
- const r = new TextDecoder().decode(
77
- decompressed_buffer.slice(0, decompressed_end)
78
- );
66
+ const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
67
+ const content = new Uint8Array(exports.memory.buffer.slice(start, end));
68
+ const r = new TextDecoder().decode(content);
79
69
 
80
- exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1);
70
+ exports.free(start, capacity);
81
71
 
82
72
  return r;
83
73
  }
@@ -1,32 +1,29 @@
1
- // @ts-expect-error
2
- import Worker from "./worker-packed.js?worker&inline";
3
-
4
- const worker = new Worker();
5
-
6
- let nextID = 0;
7
- const resolver: Record<number, (str: string) => void> = {};
8
-
9
- worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
- console.log("onmessage", e);
11
- const id = e.data.id;
12
- resolver[id](e.data.data);
13
- delete resolver[id];
14
- };
15
-
16
- export async function compress(data: string) {
17
- const id = nextID++;
18
- console.log("compress", id);
19
- return new Promise((resolve) => {
20
- resolver[id] = resolve;
21
- worker.postMessage({ command: "compress", id, data });
22
- });
23
- }
24
-
25
- export async function decompress(data: string) {
26
- const id = nextID++;
27
- console.log("decompress", id);
28
- return new Promise((resolve) => {
29
- resolver[id] = resolve;
30
- worker.postMessage({ command: "decompress", id, data });
31
- });
32
- }
1
+ // @ts-expect-error
2
+ import Worker from "./worker-packed.js?worker&inline";
3
+
4
+ const worker = new Worker();
5
+
6
+ let nextID = 0;
7
+ const resolver: Record<number, (str: string) => void> = {};
8
+
9
+ worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
+ const id = e.data.id;
11
+ resolver[id](e.data.data);
12
+ delete resolver[id];
13
+ };
14
+
15
+ export async function compressPacked(data: string) {
16
+ const id = nextID++;
17
+ return new Promise<string>((resolve) => {
18
+ resolver[id] = resolve;
19
+ worker.postMessage({ command: "compress", id, data });
20
+ });
21
+ }
22
+
23
+ export async function decompressPacked(data: string) {
24
+ const id = nextID++;
25
+ return new Promise<string>((resolve) => {
26
+ resolver[id] = resolve;
27
+ worker.postMessage({ command: "decompress", id, data });
28
+ });
29
+ }
@@ -1,32 +1,29 @@
1
- // @ts-expect-error
2
- import Worker from "./worker.js?worker&inline";
3
-
4
- const worker = new Worker();
5
-
6
- let nextID = 0;
7
- const resolver: Record<number, (str: string) => void> = {};
8
-
9
- worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
- console.log("onmessage", e);
11
- const id = e.data.id;
12
- resolver[id](e.data.data);
13
- delete resolver[id];
14
- };
15
-
16
- export async function compress(data: string) {
17
- const id = nextID++;
18
- console.log("compress", id);
19
- return new Promise((resolve) => {
20
- resolver[id] = resolve;
21
- worker.postMessage({ command: "compress", id, data });
22
- });
23
- }
24
-
25
- export async function decompress(data: string) {
26
- const id = nextID++;
27
- console.log("decompress", id);
28
- return new Promise((resolve) => {
29
- resolver[id] = resolve;
30
- worker.postMessage({ command: "decompress", id, data });
31
- });
32
- }
1
+ // @ts-expect-error
2
+ import Worker from "./worker.js?worker&inline";
3
+
4
+ const worker = new Worker();
5
+
6
+ let nextID = 0;
7
+ const resolver: Record<number, (str: string) => void> = {};
8
+
9
+ worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
+ const id = e.data.id;
11
+ resolver[id](e.data.data);
12
+ delete resolver[id];
13
+ };
14
+
15
+ export async function compress(data: string) {
16
+ const id = nextID++;
17
+ return new Promise<string>((resolve) => {
18
+ resolver[id] = resolve;
19
+ worker.postMessage({ command: "compress", id, data });
20
+ });
21
+ }
22
+
23
+ export async function decompress(data: string) {
24
+ const id = nextID++;
25
+ return new Promise<string>((resolve) => {
26
+ resolver[id] = resolve;
27
+ worker.postMessage({ command: "decompress", id, data });
28
+ });
29
+ }
@@ -1,13 +1,17 @@
1
- import { Uint16ArraytoString, copyToWasmBuffer } from "./common.js";
1
+ import {
2
+ Uint16ArraytoString,
3
+ copyToWasmBuffer,
4
+ extractFooter,
5
+ } from "./common.js";
2
6
  import init from "./module.wasm?init";
3
7
 
4
8
  type exportsType = {
5
9
  allocUint8: (size: number) => number;
6
10
  allocUint16: (size: number) => number;
7
- compress: (ptr: number) => number;
8
- decompress: (ptr: number) => number;
11
+ compress: (ptr: number, length: number) => number;
12
+ decompress: (ptr: number, length: number) => number;
9
13
  free: (ptr: number, length: number) => void;
10
- memory: any;
14
+ memory: WebAssembly.Memory;
11
15
  };
12
16
 
13
17
  const instance = await init();
@@ -16,61 +20,42 @@ const exports = instance.exports as exportsType;
16
20
  export function compress(str: string) {
17
21
  const { ptr, length } = copyToWasmBuffer(str, exports);
18
22
 
19
- const ptrToCompressed = exports.compress(ptr);
23
+ const ptrToFooter = exports.compress(ptr, length);
20
24
 
21
25
  exports.free(ptr, length);
22
26
 
23
- const buffer = new Uint16Array(
24
- exports.memory.buffer.slice(
25
- ptrToCompressed,
26
- ptrToCompressed +
27
- (exports.memory.buffer.byteLength - ptrToCompressed)
28
- )
29
- );
30
- const end = buffer.indexOf(0);
31
- const compressed = buffer.slice(0, end);
27
+ const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
32
28
 
33
- const r = Uint16ArraytoString(compressed);
29
+ const content = new Uint16Array(exports.memory.buffer.slice(start, end));
30
+ const r = Uint16ArraytoString(content);
34
31
 
35
- exports.free(ptrToCompressed, end + 1);
32
+ exports.free(start, capacity);
36
33
 
37
34
  return r;
38
35
  }
39
36
 
40
37
  export function decompress(compressedStr: string) {
41
- const ptrToCompressedNullTerminated = exports.allocUint16(
42
- compressedStr.length + 1
43
- );
38
+ const ptrToCompressed = exports.allocUint16(compressedStr.length);
44
39
  const compressed_buffer = new Uint16Array(
45
40
  exports.memory.buffer,
46
- ptrToCompressedNullTerminated,
47
- compressedStr.length + 1
41
+ ptrToCompressed,
42
+ compressedStr.length
48
43
  );
49
44
  for (let i = 0; i < compressedStr.length; i++)
50
45
  compressed_buffer[i] = compressedStr.charCodeAt(i);
51
- compressed_buffer[compressedStr.length] = 0;
52
46
 
53
- const ptrToDecompressedNullTerminated = exports.decompress(
54
- ptrToCompressedNullTerminated
47
+ const ptrToFooter = exports.decompress(
48
+ ptrToCompressed,
49
+ compressedStr.length
55
50
  );
56
51
 
57
- exports.free(ptrToCompressedNullTerminated, compressedStr.length + 1);
52
+ exports.free(ptrToCompressed, 2 * compressedStr.length);
58
53
 
59
- const decompressed_buffer = new Uint8Array(
60
- exports.memory.buffer.slice(
61
- ptrToDecompressedNullTerminated,
62
- ptrToDecompressedNullTerminated +
63
- (exports.memory.buffer.byteLength -
64
- ptrToDecompressedNullTerminated)
65
- )
66
- );
67
- const decompressed_end = decompressed_buffer.indexOf(0);
54
+ const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
55
+ const content = new Uint8Array(exports.memory.buffer.slice(start, end));
56
+ const r = new TextDecoder().decode(content);
68
57
 
69
- exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1);
70
-
71
- const r = new TextDecoder().decode(
72
- decompressed_buffer.slice(0, decompressed_end)
73
- );
58
+ exports.free(start, capacity);
74
59
 
75
60
  return r;
76
61
  }
@@ -1,21 +1,21 @@
1
- import { compressPacked, decompressPacked } from "./smol-string-packed.js";
2
-
3
- export type Message = {
4
- command: string;
5
- id: number;
6
- data: string;
7
- };
8
-
9
- onmessage = async function (e: { data: Message }) {
10
- const { command, id, data } = e.data;
11
- switch (command) {
12
- case "decompress": {
13
- postMessage({ id, data: decompressPacked(data) });
14
- break;
15
- }
16
- case "compress": {
17
- postMessage({ id, data: compressPacked(data) });
18
- break;
19
- }
20
- }
21
- };
1
+ import { compressPacked, decompressPacked } from "./smol-string-packed.js";
2
+
3
+ export type Message = {
4
+ command: string;
5
+ id: number;
6
+ data: string;
7
+ };
8
+
9
+ self.onmessage = function (e: { data: Message }) {
10
+ const { command, id, data } = e.data;
11
+ switch (command) {
12
+ case "decompress": {
13
+ self.postMessage({ id, data: decompressPacked(data) });
14
+ break;
15
+ }
16
+ case "compress": {
17
+ self.postMessage({ id, data: compressPacked(data) });
18
+ break;
19
+ }
20
+ }
21
+ };