| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.encodeIntoCompressedBase64 = exports.decodeFromCompressedBase64 = exports.decompress = void 0;
- /*
- * This is a TypeScript port of the original Java version, which was written by
- * Gil Tene as described in
- * https://github.com/HdrHistogram/HdrHistogram
- * and released to the public domain, as explained at
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
- const JsHistogram_1 = require("./JsHistogram");
- const ByteBuffer_1 = require("./ByteBuffer");
- const wasm_1 = require("./wasm");
- // @ts-ignore
- const base64 = require("base64-js");
- const JsHistogram_encoding_1 = require("./JsHistogram.encoding");
- const V2CompressedEncodingCookieBase = 0x1c849304;
- const compressedEncodingCookie = V2CompressedEncodingCookieBase | 0x10; // LSBit of wordsize byte indicates TLZE Encoding
- function decompress(data) {
- const buffer = new ByteBuffer_1.default(data);
- const initialTargetPosition = buffer.position;
- const cookie = buffer.getInt32();
- if ((cookie & ~0xf0) !== V2CompressedEncodingCookieBase) {
- throw new Error("Encoding not supported, only V2 is supported");
- }
- const lengthOfCompressedContents = buffer.getInt32();
- const uncompressedBuffer = JsHistogram_encoding_1.inflate(buffer.data.slice(initialTargetPosition + 8, initialTargetPosition + 8 + lengthOfCompressedContents));
- return uncompressedBuffer;
- }
- exports.decompress = decompress;
- exports.decodeFromCompressedBase64 = (base64String, bitBucketSize = 32, useWebAssembly = false, minBarForHighestTrackableValue = 0) => {
- const data = base64.toByteArray(base64String.trim());
- const uncompressedData = decompress(data);
- if (useWebAssembly) {
- return wasm_1.WasmHistogram.decode(uncompressedData, bitBucketSize, minBarForHighestTrackableValue);
- }
- return JsHistogram_1.JsHistogram.decode(uncompressedData, bitBucketSize, minBarForHighestTrackableValue);
- };
- function encodeWasmIntoCompressedBase64(compressionLevel) {
- const compressionOptions = compressionLevel
- ? { level: compressionLevel }
- : {};
- const self = this;
- const targetBuffer = ByteBuffer_1.default.allocate();
- targetBuffer.putInt32(compressedEncodingCookie);
- const uncompressedData = self.encode();
- const compressedData = JsHistogram_encoding_1.deflate(uncompressedData, compressionOptions);
- targetBuffer.putInt32(compressedData.byteLength);
- targetBuffer.putArray(compressedData);
- return base64.fromByteArray(targetBuffer.data);
- }
- wasm_1.WasmHistogram.prototype.encodeIntoCompressedBase64 = encodeWasmIntoCompressedBase64;
- exports.encodeIntoCompressedBase64 = (histogram, compressionLevel) => {
- if (histogram instanceof wasm_1.WasmHistogram) {
- return histogram.encodeIntoCompressedBase64(compressionLevel);
- }
- if (histogram instanceof JsHistogram_1.JsHistogram) {
- return histogram.encodeIntoCompressedBase64(compressionLevel);
- }
- throw new Error("Unsupported Histogram implementation");
- };
- //# sourceMappingURL=encoding.js.map
|