smol-string 0.0.0 → 0.0.2

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, 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.2",
4
4
  "description": "Compression for browser localStorage",
5
5
  "author": "Senryoku <maretverdant@gmail.com>",
6
6
  "repository": {
package/src/common.ts CHANGED
@@ -4,16 +4,15 @@ export function copyToWasmBuffer(
4
4
  ) {
5
5
  // There's also an 'encodeInto' method to avoid a copy, but by encoding first, we con 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, 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
  }
@@ -7,24 +7,21 @@ let nextID = 0;
7
7
  const resolver: Record<number, (str: string) => void> = {};
8
8
 
9
9
  worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
- console.log("onmessage", e);
11
10
  const id = e.data.id;
12
11
  resolver[id](e.data.data);
13
12
  delete resolver[id];
14
13
  };
15
14
 
16
- export async function compress(data: string) {
15
+ export async function compressPacked(data: string) {
17
16
  const id = nextID++;
18
- console.log("compress", id);
19
17
  return new Promise((resolve) => {
20
18
  resolver[id] = resolve;
21
19
  worker.postMessage({ command: "compress", id, data });
22
20
  });
23
21
  }
24
22
 
25
- export async function decompress(data: string) {
23
+ export async function decompressPacked(data: string) {
26
24
  const id = nextID++;
27
- console.log("decompress", id);
28
25
  return new Promise((resolve) => {
29
26
  resolver[id] = resolve;
30
27
  worker.postMessage({ command: "decompress", id, data });
@@ -7,7 +7,6 @@ let nextID = 0;
7
7
  const resolver: Record<number, (str: string) => void> = {};
8
8
 
9
9
  worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
- console.log("onmessage", e);
11
10
  const id = e.data.id;
12
11
  resolver[id](e.data.data);
13
12
  delete resolver[id];
@@ -15,7 +14,6 @@ worker.onmessage = function (e: { data: { id: number; data: string } }) {
15
14
 
16
15
  export async function compress(data: string) {
17
16
  const id = nextID++;
18
- console.log("compress", id);
19
17
  return new Promise((resolve) => {
20
18
  resolver[id] = resolve;
21
19
  worker.postMessage({ command: "compress", id, data });
@@ -24,7 +22,6 @@ export async function compress(data: string) {
24
22
 
25
23
  export async function decompress(data: string) {
26
24
  const id = nextID++;
27
- console.log("decompress", id);
28
25
  return new Promise((resolve) => {
29
26
  resolver[id] = resolve;
30
27
  worker.postMessage({ command: "decompress", id, data });
@@ -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, 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,29 +1,29 @@
1
- import { describe, expect, test } from "vitest";
2
-
3
- import { TestData } from "./common.js";
4
-
5
- import { compress, decompress } from "../dist/smol-string.js";
6
- import {
7
- compressPacked,
8
- decompressPacked,
9
- } from "../dist/smol-string-packed.js";
10
-
11
- describe("compress and decompress", () => {
12
- for (const { name, input } of TestData) {
13
- test(name, async () => {
14
- const compressed = compress(input);
15
- const decompressed = decompress(compressed);
16
- expect(decompressed).toBe(input);
17
- });
18
- }
19
- });
20
-
21
- describe("compressPacked and decompressPacked", () => {
22
- for (const { name, input } of TestData) {
23
- test(name, async () => {
24
- const compressed = compressPacked(input);
25
- const decompressed = decompressPacked(compressed);
26
- expect(decompressed).toBe(input);
27
- });
28
- }
29
- });
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { TestData } from "./common.js";
4
+
5
+ import { compress, decompress } from "../dist/smol-string.js";
6
+ import {
7
+ compressPacked,
8
+ decompressPacked,
9
+ } from "../dist/smol-string-packed.js";
10
+
11
+ describe("compress and decompress", () => {
12
+ for (const { name, input } of TestData) {
13
+ test(name, async () => {
14
+ const compressed = compress(input);
15
+ const decompressed = decompress(compressed);
16
+ expect(decompressed).toBe(input);
17
+ });
18
+ }
19
+ });
20
+
21
+ describe("compressPacked and decompressPacked", () => {
22
+ for (const { name, input } of TestData) {
23
+ test(name, async () => {
24
+ const compressed = compressPacked(input);
25
+ const decompressed = decompressPacked(compressed);
26
+ expect(decompressed).toBe(input);
27
+ });
28
+ }
29
+ });
package/test/common.ts CHANGED
@@ -1,15 +1,15 @@
1
- export const json_512kb = import("../../test/data/512KB.json");
2
- export const json_1mb = import("../../test/data/1MB.json");
3
- export const rw_medium = import("../../test/data/rw_medium.json");
4
- export const rw_large = import("../../test/data/rw_large.json");
5
-
6
- export const TestData = [
7
- {
8
- name: "Simple String",
9
- input: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum",
10
- },
11
- { name: "json_512kb", input: JSON.stringify(await json_512kb) },
12
- { name: "json_1mb", input: JSON.stringify(await json_1mb) },
13
- { name: "rw_medium", input: JSON.stringify(await rw_medium) },
14
- { name: "rw_large", input: JSON.stringify(await rw_large) },
15
- ];
1
+ export const json_512kb = import("../../test/data/512KB.json");
2
+ export const json_1mb = import("../../test/data/1MB.json");
3
+ export const rw_medium = import("../../test/data/rw_medium.json");
4
+ export const rw_large = import("../../test/data/rw_large.json");
5
+
6
+ export const TestData = [
7
+ {
8
+ name: "Simple String",
9
+ input: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum",
10
+ },
11
+ { name: "json_512kb", input: JSON.stringify(await json_512kb) },
12
+ { name: "json_1mb", input: JSON.stringify(await json_1mb) },
13
+ { name: "rw_medium", input: JSON.stringify(await rw_medium) },
14
+ { name: "rw_large", input: JSON.stringify(await rw_large) },
15
+ ];