smol-string 0.0.2 → 0.1.0-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.
- package/README.md +22 -22
- package/dist/common.d.ts +13 -13
- package/dist/smol-string-packed.d.ts +2 -2
- package/dist/smol-string-packed.js +30 -30
- package/dist/smol-string-worker-packed.d.ts +2 -2
- package/dist/smol-string-worker-packed.js +46 -36
- package/dist/smol-string-worker.d.ts +2 -2
- package/dist/smol-string-worker.js +46 -36
- package/dist/smol-string.d.ts +2 -2
- package/dist/smol-string.js +28 -28
- package/dist/{wasm-helper-57a16a1d.js → wasm-helper-C1VfMvbY.js} +56 -56
- package/dist/worker-packed.d.ts +5 -5
- package/dist/worker.d.ts +5 -5
- package/package.json +7 -6
- package/src/common.ts +1 -1
- package/src/module-packed.wasm +0 -0
- package/src/module.wasm +0 -0
- package/src/smol-string-packed.ts +5 -1
- package/src/smol-string-worker-packed.ts +29 -29
- package/src/smol-string-worker.ts +29 -29
- package/src/smol-string.ts +1 -1
- package/src/worker-packed.ts +21 -21
- package/src/worker.ts +21 -21
- package/vite.config.ts +13 -1
- package/test/basic.test.ts +0 -29
- package/test/common.ts +0 -15
- package/test/json.bench.ts +0 -51
- package/test/localStorage.test.browser.ts +0 -39
- package/test/sessionStorage.test.browser.ts +0 -39
package/dist/smol-string.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { i as
|
|
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
|
|
4
|
-
const { ptr:
|
|
5
|
-
A.free(
|
|
6
|
-
const { start:
|
|
7
|
-
return A.free(
|
|
8
|
-
}
|
|
9
|
-
function s(I) {
|
|
10
|
-
const
|
|
11
|
-
A.memory.buffer,
|
|
12
|
-
|
|
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
|
-
|
|
19
|
-
I.length
|
|
20
|
-
);
|
|
21
|
-
A.free(
|
|
22
|
-
const { start:
|
|
23
|
-
return A.free(
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
|
|
27
|
-
s as decompress
|
|
28
|
-
};
|
|
1
|
+
import { i as w, c as a, e as k, U as h } from "./wasm-helper-C1VfMvbY.js";
|
|
2
|
+
const J = (I) => w(I, "data:application/wasm;base64,AGFzbQEAAAABVg1gBH9/f38Bf2AFf39/f38AYAZ/f39/f38Bf2ABfwF/YAN/f38AYAJ/fwBgAX8AYAR/f39/AGACf38BfmACf38Bf2ADf39/AX9gAn5+AX5gBH9/fn4AAx8eAwQDBAUEBgUHCAAJCQcJBgQJCQoHBQQAAgELDAoKBAUBcAEEBAUDAQARBg4CfwFBgIDAAAt/AEEACwdEBgZtZW1vcnkCAAphbGxvY1VpbnQ4AAALYWxsb2NVaW50MTYAAgRmcmVlAAQIY29tcHJlc3MACwpkZWNvbXByZXNzABEJCQEAQQELAxcYGQrqNx5eAQF/I4CAgIAAQRBrIgEkgICAgAAgASOBgICAAEGYgMCAAGopAwA3AwAgAUEIaiABIAAQgYCAgAACQCABLwEMDQAgASgCCCEAIAFBEGokgICAgAAgAA8LA38ADAALC3ECAX8BfiOAgICAAEEQayIDJICAgIAAQoCAgIAQIQQCQEEBRQ0AAkAgAg0AQv////8PIQQMAQsgASgCACACQQBBACABKAIEKAIAEYCAgIAAACICRa1CIIYgAq2EIQQLIAAgBDcCACADQRBqJICAgIAAC14BAX8jgICAgABBEGsiASSAgICAACABI4GAgIAAQZiAwIAAaikDADcDACABQQhqIAEgABCDgICAAAJAIAEvAQwNACABKAIIIQAgAUEQaiSAgICAACAADwsDfwAMAAsLhwECAX8BfiOAgICAAEEQayIDJICAgIAAIAMgAkEASDoADAJAAkAgAkF/Sg0AQoCAgIAQIQQMAQsCQCACQQF0IgINAEL+////DyEEDAELIAEoAgAgAkEBQQAgASgCBCgCABGAgICAAAAiAkWtQiCGIAKthCEECyAAIAQ3AgAgA0EQaiSAgICAAAsZACOBgICAAEGYgMCAAGogACABEIWAgIAACzgBAX8CQCACQQAgAhsiA0UNACAAKAIAIAFBqtWq1XogAhsgA0EAQQAgACgCBCgCCBGBgICAAAALCw8AIAAgAEEMahCHgICAAAtwAQN/AkAgACgCACICRQ0AAkAgAkF0aiIDQQhqKAIAIgJBCmwgAkEPakF8cWpBA2pBfHEiAkEAIAIbIgRFDQAgASgCACADQQQgAhsgBEECQQAgASgCBCgCCBGBgICAAAALIABBADYCCCAAQQA2AgALC9gCAwR/AX4EfyOAgICAAEEQayIEJICAgIAAI4GAgIAAIQUgASgCACEGAkACQCABKAIEDQAgBUGAgMCAAGohBwwBCyACIAMQiYCAgAAhCAJAAkAgBg0AQQAhBUF/IQkMAQsgBkF8aigCACIFQX9qIQkLIAZBeGohCiAJIAincSEBIAhCOYinIQsDQCOBgICAAEGAgMCAAGohByAGIAFqLAAAIgxFDQEgBUUNAQJAIAxBf0oNACALIAxB/wBxRw0AIAIgAyAKKAIAIAFBA3RqIgwoAgAgDCgCBBCKgICAAEEBcUUNACAEQQE6AAwgBCABNgIIIARBCGohBwwCCyAFQX9qIQUgAUEBaiAJcSEBDAALCwJAAkAgBy0ABA0AQQAhAUEAIQUMAQsgBkF0aigCACAHKAIAQQF0ai8BACEBQYCABCEFCyAAIAUgAXI2AQAgBEEQaiSAgICAAAuhCwIBfwt+I4CAgIAAQcAAayICJICAgIAAIAGtIQMCQAJAIAFBIEsNAAJAIAFBEU8NAAJAIAFBCEkNACAAKQAAQs+Awfyyx9rwmn98IgRCJ4kgASAAakF4aikAACIFfCADQgGGQs+Awfyyx9rwmn98IgZ+IgMgAyAFQhuJIAZ+IAR8hSAGfiIEQi+IhSAEhSAGfiIEQi+IIASFIAZ+IQYMAwsCQCABQQRJDQAgADUAAEIDhiADfCABIABqQXxqNQAAIgSFIANCAYZCz4DB/LLH2vCaf3wiBn4iBUIviCAEhSAFhSAGfiIEQi+IIASFIAZ+IQYMAwsCQCABDQBCz4DB/LLH2vCafyEGDAMLIAEgAGpBf2otAABBAnQgAWqtQqfirL7Ji/LSQ34gACABQQF2ajEAAEIIhiAAMQAAhELPgMH8ssfa8Jp/foUiBkIviCAGhULPgMH8ssfa8Jp/fiEGDAILIAApAAgiBELPgMH8ssfa8Jp/fEIuiSAAKQAAQvPk4/T7za3JtH9+IgV8IAEgAGoiAEF4aikAACADQgGGQs+Awfyyx9rwmn98IgZ+IgN8IgcgByADQiKJIAUgBHxCFYl8IABBcGopAABCz4DB/LLH2vCaf358hSAGfiIEQi+IhSAEhSAGfiIEQi+IIASFIAZ+IQYMAQsCQCABQcEASQ0AIAEgAGoiAUFYaikAACEHIAFBSGopAAAhBiABQXBqKQAAIQggAiABQUBqIAMgAUFQaikAACADfCABQWhqKQAAEJqAgIAAIgkQm4CAgAAgAikDCCEEIAIpAwAhBSACQRBqIAFBYGogBiAIfCIGQvPk4/T7za3JtH98IAcQm4CAgABCACADQn98QkCDfSEKIAApAAAgB0Lz5OP0+82tybR/fnwhCCACKQMYIQMgAikDECEHA0AgACkAMCELIAApACghDCACQSBqIAAgBELz5OP0+82tybR/fiAGIAV8IAh8IAApAAh8QhuJQvPk4/T7za3JtH9+IAOFIg0gB3wQm4CAgAAgDCAFfCEMIAYgBHwhBiACKQMoIQQgAikDICEFIAJBMGogAEEgaiAJIAd8Qh+JQvPk4/T7za3JtH9+IgggA3wgACkAECAMIAYgC3xCFolC8+Tj9PvNrcm0f358IgZ8EJuAgIAAIABBwABqIQAgAikDOCEDIAIpAzAhByANIQkgCkLAAHwiCkIAUg0ACyAGQi+IIAaFQvPk4/T7za3JtH9+IA18IAUgBxCagICAAHwgBCADEJqAgIAAIAh8EJqAgIAAIQYMAQsgASAAaiIBQXBqKQAAIANCAYZCz4DB/LLH2vCaf3wiBH4iBSABQWBqKQAAIgN8IAApABhCCX4iByAAKQAQQs+Awfyyx9rwmn9+fCIIIAFBaGopAAAiBnwiCSAAKQAIIgp8IAkgAUF4aikAACINfCAIQhaJIAZ8Igh8IAcgDSAAKQAAQs+Awfyyx9rwmn9+fCIJIAOFfEIBfCIDIAV8IAlCFYkgCkIiiSAGfEIJfnwgA3wgBH4iBkI4hiAGQoD+A4NCKIaEIAZCgID8B4NCGIYgBkKAgID4D4NCCIaEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhHwgBH4iBkI4hiAGQoD+A4NCKIaEIAZCgID8B4NCGIYgBkKAgID4D4NCCIaEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhHwgBH4iBkI4hiAGQoD+A4NCKIaEIAZCgID8B4NCGIYgBkKAgID4D4NCCIaEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhHwgBH58IgZCL4ggBoUgBH4gCHwhBgsgAkHAAGokgICAgAAgBgtYAQJ/QQAhBAJAIAEgA0cNAAJAIAAgAkcNAEEBDwsDQCABRSEEIAFFDQEgAUF/aiEBIAItAAAhAyAALQAAIQUgAEEBaiEAIAJBAWohAiAFIANGDQALCyAEC5kKBQF/AX4HfwF+A38jgICAgABBkAFrIgIkgICAgAACQAJAAkAgAQ0AI4GAgIAAQZiAwIAAaikDACEDQarVqtV6IQRBACEFQQAhBgwBC0EAIQcgAkEYakEIakEANgIAIAJCADcDGCACI4GAgIAAQZiAwIAAaikDACIDNwIkIAJB+ABqQQhqQQA2AgAgAkIANwN4IAFB//8DIAFB//8DSRtB5ABsQdAAbiEIIAJBJGohCQJAAkBBAA0AQXwhBkIBQSAgCGdrrUL//wODhqciCEEIIAhBCEsbIghBAXQgCEEPakF8cSIKIAhBA3RqIgVqQQNqQXxxIgRFDQEgA6cgBEECQQAgA0IgiKcoAgARgICAgAAAIgYNAQsgAkH4AGogCRCHgICAACACQRhqEIaAgIAADAILIAYgCDYCCCAGIAYgCmo2AgQgBiAGIAVqNgIAIAIgBkEMaiIGNgJ4QQAhByAGQQAgCBCcgICAABogAkH4AGpBCGoiBiAIQdAAbEHkAG4iCDYCACACQRhqQQhqIgooAgAhBSAKIAg2AgAgBiAFNgIAIAJBADYCHCACKQMYIQsgAiACKQN4NwMYIAIgCzcDeCACQfgAaiAJEIeAgIAAIAIgAzcChAEgAkEANgKAASACQqrVqtUKNwJ4AkAgAkH4AGogARCMgICAAEH//wNxRQ0AIAJBGGoQhoCAgAAMAgsgAikChAEhAyACKAKAASEFIAIoAnwhDCACKAJ4IQRBgAIhDUEAIQcDQCAAIAdqIQhBAiEGAkACQAJAA0ACQAJAIAcgBmoiCSABTw0AIAJBLGogAkEYaiAIIAYQiICAgAAgAi0ALg0BIAohByAGQQJGDQMMBQsCQCAHQQFqIAFJDQAgCC0AACEGDAQLIAJBMGpBEGogAkEYakEQaigCADYCACACQTBqQQhqIAJBGGpBCGopAwA3AwAgAiACKQMYNwMwIAJBxABqIAJBMGogCCAGEIiAgIAAAkACQAJAIAItAEYNACAGQQJHDQEgCC0AACEGDAILIAIvAUQhBgwFCyACQcgAakEQaiACQRhqQRBqKAIANgIAIAJByABqQQhqIAJBGGpBCGopAwA3AwAgAiACKQMYNwNIIAJB4ABqIAJByABqIAggBkF/ahCIgICAACACLwFgIQYLIAQgDEEBdGogBjsBACAMQQFqIQwgCSAAakF/ai0AACEGDAMLIAZBAWohBiACLwEsIQoMAAsLIAgtAAAhBwwBCyAEIAxBAXRqIAY7AQAgDEEBaiEGIAJBGGoQhoCAgAAMAgsgBCAMQQF0aiAHOwEAIAxBAWohDiAJQX9qIQcCQCANQf//A3FB/v8DRw0AAkAgAigCGCIGRQ0AIAZBACAGQXxqKAIAIggQnICAgAAaIAJBADYCHCACIAitQtAAfkLkAIA+AiALIAQgDkEBdGpB/v8DOwEAIAxBAmohDEGAAiENDAELIAJBGGogCCAGIA0QjYCAgAAgDUEBaiENIA4hDAwACwsgAiADNwIQIAIgBDYCBCACIAY2AgggAiAFNgIMIAYhAQJAIAUgBkEEaiIITw0AQQAhByACQQRqIAUgCBCOgICAABCMgICAAEH//wNxDQEgAigCBCEEIAIoAgghAQsgBCABQQF0aiIBIAZBAXQiBzsBACABQQJqIAZBD3Y7AQAgAUEEaiAFQQF0OwEAIAFBBmogBUEPdjsBACAEIAdqIQcLIAJBkAFqJICAgIAAIAcLkwIBBn8jgICAgABBEGsiAiSAgICAAEEAIQMCQCAAKAIIIgQgAU8NACAAKAIAIQUCQCAERQ0AIAIgAUEASDoACCABQX9MDQAgACgCDCAFIARBAXRBASABQQF0QQAgAEEQaigCACgCBBGCgICAAABBAXFFDQAgACABNgIIQQAhAwwBCyACIAApAgw3AwAgAkEIaiACIAEQg4CAgAAgAi8BDCIDDQAgAigCCCAAKAIAIAAoAgRBAXQQnYCAgAAhBkEAIQMCQCAEQQF0QQAgBBsiB0UNACAAKAIMIAVBAiAEGyAHQQFBACAAQRBqKAIAKAIIEYGAgIAAAAsgACABNgIIIAAgBjYCAAsgAkEQaiSAgICAACADC5gDAwJ/AX4GfyOAgICAAEEQayIEJICAgIAAAkAgACgCBEUNACAAKAIAIQUgASACEImAgIAAIQYCQAJAIAUNAEEAIQdBfyEIDAELIAVBfGooAgAiB0F/aiEICyAFQXhqIQkgCCAGp3EhCiAGQjmIpyELA0AgBSAKaiwAACIMRQ0BIAdFDQECQCAMQX9KDQAgCyAMQf8AcUcNACABIAIgCSgCACAKQQN0aiIMKAIAIAwoAgQQioCAgABBAXFFDQAgBEEBOgAMDAILIAdBf2ohByAKQQFqIAhxIQoMAAsLIAEgAhCJgICAACEGQX8hDAJAIAAoAgAiB0UNACAHQXxqKAIAQX9qIQwLIAwgBqdxIQoCQANAIAcgCmoiBSwAAEF/Sg0BIApBAWogDHEhCgwACwsgACAAKAIIQX9qNgIIIAUgBkI5iKdBgAFyOgAAIAAoAgBBeGooAgAgCkEDdGoiByACNgIEIAcgATYCACAAKAIAQXRqKAIAIApBAXRqIAM7AQAgACAAKAIEQQFqNgIEIARBEGokgICAgAALJQEBfwNAQX8gAEEBdiAAakEIaiICIAIgAEkbIgAgAUkNAAsgAAs/AQF/I4CAgIAAQRBrIgEkgICAgAAgASAAKQIMNwMIIAFBCGogACgCACAAKAIIEJCAgIAAIAFBEGokgICAgAALNwEBfwJAIAJBA3RBACACGyIDRQ0AIAAoAgAgAUEEIAIbIANBAkEAIAAoAgQoAggRgYCAgAAACwvbBwMBfwF+CX8jgICAgABBwABrIgIkgICAgAAjgYCAgABBmIDAgABqKQMAIQMCQAJAAkACQCABDQBBqtWq1XohBEEAIQVBACEGDAELIAJBADYCICACQqrVqtUKNwIYIAIgAzcCJCACQQBB//8DEI6AgIAAIgdB/////wFLOgAsIAdBgICAgAJPDQECQAJAIAdBA3QiCA0AQXwhCAwBCyADpyAIQQJBACADQiCIpygCABGAgICAAAAiCEUNAgsgAiAHNgIgIAIgCDYCGEEAIQcCQANAIAdB+P8fRg0BIAggB2pCADcCACAHQQhqIQcMAAsLIAJB//8DNgIcIAIgAzcCOEEAIQcgAkEANgI0IAJCqtWq1Qo3AiwgAkEsaiABQRhsEJKAgIAAQf//A3ENASACKQI4IQMgAigCNCEFIAIoAiwiBCACKAIwIgZqIAAtAAA6AAAgCCAALwEAQQN0aiIJQQE2AgQgCSAENgIAIAZBAWohCkEBIQlBgAIhCwNAIAohBgJAAkACQAJAIAkgAU8NAAJAIAAgCUEBdGovAQAiCkH+/wNHDQAgCUEBaiIJIAFPDQFBACEHAkADQCAHQfj/H0YNASAIIAdqQgA3AgAgB0EIaiEHDAALCwJAIAAgCUEBdGovAQAiB0GAAkkNACACQf//AzYCHAwICyAEIAZqIAc6AAAgBkEBaiEKQYACIQsMBAsgCkGAAkkNAQJAIAggCkEDdGoiCigCACIMDQAgBCAGaiAEIAdqIgogBiAHayIMEJ2AgIAAGiAEIAwgBmoiDGogCi0AADoAACAMQQFqIQoMAwsgBCAGaiAMIAooAgQiChCdgICAABogCiAGaiEKDAILIAJB//8DNgIcIAJBGGoQj4CAgAAMBAsgBCAGaiAKOgAAIAZBAWohCgsgCCALQf//A3FBA3RqIgwgBiAHa0EBajYCBCAMIAQgB2o2AgAgC0EBaiELCyAJQQFqIQkgBiEHDAALCyACIAM3AhAgAiAENgIEIAIgBjYCCCACIAU2AgwCQAJAIAUgBkEIaiIISQ0AIAYhBwwBC0EAIQcgAkEEaiAFIAgQjoCAgAAQkoCAgABB//8DcQ0CIAIoAgQhBCACKAIMIQUgAigCCCEHCyAEIAdqIgcgBjoAACAHQQdqIAVBGHY6AAAgB0EGaiAFQRB2OgAAIAdBBWogBUEIdjoAACAHQQRqIAU6AAAgB0EDaiAGQRh2OgAAIAdBAmogBkEQdjoAACAHQQFqIAZBCHY6AAAgBCAGaiEHDAELIAJBGGoQj4CAgABBACEHCyACQcAAaiSAgICAACAHC9oBAQV/I4CAgIAAQSBrIgIkgICAgABBACEDAkAgACgCCCIEIAFPDQAgACgCACEFAkACQCAERQ0AQQANACAAKAIMIAUgBEEAIAFBACAAQRBqKAIAKAIEEYKAgIAAAEEBcUUNACAAIAE2AggMAQsgAiAAQQxqIgYpAgA3AxAgAkEYaiACQRBqIAEQgYCAgAAgAi8BHCIDDQEgAigCGCAAKAIAIAAoAgQQnYCAgAAhAyAGIAUgBBCFgICAACAAIAE2AgggACADNgIAC0EAIQMLIAJBIGokgICAgAAgAwvSAgMGfwF+B38jgICAgABBEGsiAySAgICAACAAKAIEIQQgACgCACEFQQAhBiACQf8BcSEHA38CQAJAAkAgBiAERw0AQX8hCAwBCwJAIAUgBkEEdGoiAkEIaikDACIJQgBTDQAgAikDAHsgCXt8pyABSQ0CCyAGQQd0IghBgAFqIQoDQCAIIApPDQIgCCAAKQIAIglCGYinQYB/cSICIAggAksbIgsgCGshDCAJp0EIIAlCIIinGyENIAhBEHRoIQ5BACECAkADQAJAIAwgAkcNACALIQ8MAgtB/wEgCCACaiIPQQdxIhBBB3N2QQEgEHRxIA0gD0EDdmotAABxRQ0BIAJBAWoiAiABSQ0AIA4gB0kNAAsgAyAJNwMIIANBCGogCCABQQAQlICAgAAMAgsgD0EBaiEIDAALCyADQRBqJICAgIAAIAgPCyAGQQFqIQYMAAsLVAEBfyADQQFxIQQCQANAIAJFDQEgACgCAEEIIAAoAgQbIAFBA3ZqIgMgAy0AAEF+IAFBB3EiA3dxIAQgA3RyOgAAIAFBAWohASACQX9qIQIMAAsLC9sBAQN/I4CAgIAAQRBrIgIkgICAgAACQCAAQYAQTw0AI4GAgIAAQaiAwIAAaiAAIAFBgBAgAUGAEEkbIABrEJaAgIAACwJAIAFBgBBNDQACQCOBgICAAEGggMCAAGooAgQNACOBgICAAEGggMCAAGoiA0GAIDYCBCADIAFBf2oiAUEQdCIENgIAIARBAEGAgAQQnICAgAAaCyACI4GAgIAAQaCAwIAAaikDADcDCCACQQhqIABBgBAgAEGAEEsbIgBBgHBqIAEgAGsQloCAgAALIAJBEGokgICAgAALOwEBfyOAgICAAEEQayIDJICAgIAAIAMgACkCADcDCCADQQhqIAEgAkEBEJSAgIAAIANBEGokgICAgAALvQEBBH9BACEEAkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCTgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJOAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQlYCAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJWAgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCVgICAAAs+ACABIACFQuna4NmOwfrvnX9+IgBCL4ggAYUgAIVC6drg2Y7B+u+df34iAUIviCABhULp2uDZjsH6751/fgtCAQJ+IAAgASkAACACfCICIAEpAAh8IAEpABB8IgQgASkAGCIFfDcDACAAIARCFIkgAnwgBSACIAN8fEIriXw3AwgLLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), F = await J(), A = F.exports;
|
|
3
|
+
function f(I) {
|
|
4
|
+
const { ptr: g, length: Q } = a(I, A), E = A.compress(g, Q);
|
|
5
|
+
A.free(g, Q);
|
|
6
|
+
const { start: C, end: i, capacity: D } = k(A.memory, E), o = new Uint16Array(A.memory.buffer.slice(C, i)), G = h(o);
|
|
7
|
+
return A.free(C, D), G;
|
|
8
|
+
}
|
|
9
|
+
function s(I) {
|
|
10
|
+
const g = A.allocUint16(I.length), Q = new Uint16Array(
|
|
11
|
+
A.memory.buffer,
|
|
12
|
+
g,
|
|
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
|
+
g,
|
|
19
|
+
I.length
|
|
20
|
+
);
|
|
21
|
+
A.free(g, 2 * I.length);
|
|
22
|
+
const { start: C, end: i, capacity: D } = k(A.memory, E), o = new Uint8Array(A.memory.buffer.slice(C, i)), G = new TextDecoder().decode(o);
|
|
23
|
+
return A.free(C, D), G;
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
f as compress,
|
|
27
|
+
s as decompress
|
|
28
|
+
};
|
|
@@ -1,56 +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
|
+
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
|
+
};
|
package/dist/worker-packed.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/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
|
|
3
|
+
"version": "0.1.0-beta",
|
|
4
4
|
"description": "Compression for browser localStorage",
|
|
5
5
|
"author": "Senryoku <maretverdant@gmail.com>",
|
|
6
6
|
"repository": {
|
|
@@ -52,11 +52,12 @@
|
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@vitest/browser": "^0.34.6",
|
|
55
|
+
"smol-string": "^0.0.2-beta",
|
|
55
56
|
"typescript": "^5.2.2",
|
|
56
|
-
"vite": "^
|
|
57
|
+
"vite": "^5.0.0",
|
|
58
|
+
"vite-plugin-dts": "^3.6.2",
|
|
59
|
+
"vite-plugin-top-level-await": "^1.3.1",
|
|
57
60
|
"vitest": "^0.34.6",
|
|
58
|
-
"webdriverio": "^8.20.4"
|
|
59
|
-
|
|
60
|
-
},
|
|
61
|
-
"dependencies": {}
|
|
61
|
+
"webdriverio": "^8.20.4"
|
|
62
|
+
}
|
|
62
63
|
}
|
package/src/common.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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
|
|
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
7
|
const ptrToStr = exports.allocUint8(utf8Str.length);
|
|
8
8
|
const inBuffer = new Uint8Array(
|
package/src/module-packed.wasm
CHANGED
|
Binary file
|
package/src/module.wasm
CHANGED
|
Binary file
|
|
@@ -28,8 +28,12 @@ export function compressPacked(str: string) {
|
|
|
28
28
|
|
|
29
29
|
exports.free(ptr, length);
|
|
30
30
|
|
|
31
|
+
//console.log(ptrToFooter);
|
|
32
|
+
|
|
31
33
|
const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
|
|
32
34
|
|
|
35
|
+
//console.log(start, end, capacity / (1024 * 1024));
|
|
36
|
+
|
|
33
37
|
// Includes the tokenCount at the end of the stream (2 * u16).
|
|
34
38
|
const compressed = new Uint16Array(exports.memory.buffer.slice(start, end));
|
|
35
39
|
|
|
@@ -61,7 +65,7 @@ export function decompressPacked(compressedStr: string) {
|
|
|
61
65
|
tokenCount
|
|
62
66
|
);
|
|
63
67
|
|
|
64
|
-
exports.free(ptrToCompressed, compressedStr.length - 2);
|
|
68
|
+
exports.free(ptrToCompressed, 2 * (compressedStr.length - 2));
|
|
65
69
|
|
|
66
70
|
const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
|
|
67
71
|
const content = new Uint8Array(exports.memory.buffer.slice(start, end));
|
|
@@ -1,29 +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
|
-
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((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((resolve) => {
|
|
26
|
-
resolver[id] = resolve;
|
|
27
|
-
worker.postMessage({ command: "decompress", id, data });
|
|
28
|
-
});
|
|
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
|
+
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,29 +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
|
-
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((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((resolve) => {
|
|
26
|
-
resolver[id] = resolve;
|
|
27
|
-
worker.postMessage({ command: "decompress", id, data });
|
|
28
|
-
});
|
|
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
|
+
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
|
+
}
|
package/src/smol-string.ts
CHANGED
|
@@ -49,7 +49,7 @@ export function decompress(compressedStr: string) {
|
|
|
49
49
|
compressedStr.length
|
|
50
50
|
);
|
|
51
51
|
|
|
52
|
-
exports.free(ptrToCompressed, compressedStr.length);
|
|
52
|
+
exports.free(ptrToCompressed, 2 * compressedStr.length);
|
|
53
53
|
|
|
54
54
|
const { start, end, capacity } = extractFooter(exports.memory, ptrToFooter);
|
|
55
55
|
const content = new Uint8Array(exports.memory.buffer.slice(start, end));
|
package/src/worker-packed.ts
CHANGED
|
@@ -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 =
|
|
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
|
+
};
|
package/src/worker.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { compress, decompress } from "./smol-string.js";
|
|
2
|
-
|
|
3
|
-
export type Message = {
|
|
4
|
-
command: string;
|
|
5
|
-
id: number;
|
|
6
|
-
data: string;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
onmessage =
|
|
10
|
-
const { command, id, data } = e.data;
|
|
11
|
-
switch (command) {
|
|
12
|
-
case "decompress": {
|
|
13
|
-
postMessage({ id, data: decompress(data) });
|
|
14
|
-
break;
|
|
15
|
-
}
|
|
16
|
-
case "compress": {
|
|
17
|
-
postMessage({ id, data: compress(data) });
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
};
|
|
1
|
+
import { compress, decompress } from "./smol-string.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: decompress(data) });
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
case "compress": {
|
|
17
|
+
self.postMessage({ id, data: compress(data) });
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
package/vite.config.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { defineConfig } from "vite";
|
|
|
3
3
|
import dts from "vite-plugin-dts";
|
|
4
4
|
import pkg from "./package.json" assert { type: "json" };
|
|
5
5
|
|
|
6
|
+
import topLevelAwait from "vite-plugin-top-level-await";
|
|
7
|
+
|
|
6
8
|
export default defineConfig({
|
|
7
9
|
build: {
|
|
8
10
|
lib: {
|
|
@@ -17,7 +19,7 @@ export default defineConfig({
|
|
|
17
19
|
},
|
|
18
20
|
rollupOptions: {
|
|
19
21
|
external: [
|
|
20
|
-
...Object.keys(pkg
|
|
22
|
+
...Object.keys(pkg["dependencies"] ?? {}), // don't bundle dependencies
|
|
21
23
|
/^node:.*/, // don't bundle built-in Node.js modules (use protocol imports!)
|
|
22
24
|
],
|
|
23
25
|
},
|
|
@@ -25,6 +27,16 @@ export default defineConfig({
|
|
|
25
27
|
},
|
|
26
28
|
worker: {
|
|
27
29
|
format: "es",
|
|
30
|
+
plugins() {
|
|
31
|
+
return [
|
|
32
|
+
topLevelAwait({
|
|
33
|
+
// The export name of top-level await promise for each chunk module
|
|
34
|
+
promiseExportName: "__tla",
|
|
35
|
+
// The function to generate import names of top-level await promise in each chunk module
|
|
36
|
+
promiseImportName: (i) => `__tla_${i}`,
|
|
37
|
+
}),
|
|
38
|
+
];
|
|
39
|
+
},
|
|
28
40
|
},
|
|
29
41
|
plugins: [
|
|
30
42
|
dts(), // emit TS declaration files
|
package/test/basic.test.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
];
|
package/test/json.bench.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { describe, bench, expect, test, beforeAll } from "vitest";
|
|
2
|
-
|
|
3
|
-
import { TestData } from "./common.js";
|
|
4
|
-
|
|
5
|
-
import { compress, decompress } from "../dist/smol-string.js";
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
compressPacked,
|
|
9
|
-
decompressPacked,
|
|
10
|
-
} from "../dist/smol-string-packed.js";
|
|
11
|
-
|
|
12
|
-
const options = { iterations: 5 };
|
|
13
|
-
|
|
14
|
-
describe.each(TestData)("Compression: $name", ({ name, input }) => {
|
|
15
|
-
bench(
|
|
16
|
-
"compress",
|
|
17
|
-
async () => {
|
|
18
|
-
compress(input);
|
|
19
|
-
},
|
|
20
|
-
options
|
|
21
|
-
);
|
|
22
|
-
bench(
|
|
23
|
-
"compressPacked",
|
|
24
|
-
async () => {
|
|
25
|
-
compressPacked(input);
|
|
26
|
-
},
|
|
27
|
-
options
|
|
28
|
-
);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
describe.each(TestData)("Decompression: $name", ({ name, input }) => {
|
|
32
|
-
let compressed = compress(input);
|
|
33
|
-
let compressedPacked = compressPacked(input);
|
|
34
|
-
|
|
35
|
-
bench(
|
|
36
|
-
"decompress",
|
|
37
|
-
async () => {
|
|
38
|
-
const decompressed = decompress(compressed);
|
|
39
|
-
expect(decompressed).toBe(input);
|
|
40
|
-
},
|
|
41
|
-
options
|
|
42
|
-
);
|
|
43
|
-
bench(
|
|
44
|
-
"decompressPacked",
|
|
45
|
-
async () => {
|
|
46
|
-
const decompressed = decompressPacked(compressedPacked);
|
|
47
|
-
expect(decompressed).toBe(input);
|
|
48
|
-
},
|
|
49
|
-
options
|
|
50
|
-
);
|
|
51
|
-
});
|