UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

44 lines (43 loc) 5.84 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); require("../_virtual/_rolldown/runtime.cjs.cjs"); const require_network_packet_NetworkSettingsPacket = require("./packet/NetworkSettingsPacket.cjs.cjs"); let zlib = require("zlib"); //#region src/network/CompressionProvider.ts var asyncInflate = (0, require("node:util").promisify)(zlib.inflateRaw); /** * A provider for decompressing packets. */ var CompressionProvider = class { /** * Create a new compression provider. * @param {PacketCompressionAlgorithm} algorithm - The compression algorithm to use. * @returns {Function} A function that will decompress the buffer. */ static fromAlgorithm(algorithm) { switch (algorithm) { case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.ZLIB: return asyncInflate; case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.NONE: return async (buffer) => buffer; case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.SNAPPY: throw new Error("Snappy compression is not implemented"); default: throw new Error(`Unsupported compression algorithm: ${algorithm}`); } } /** * Create a new compression provider. * * @todo Move to full async... and remove this method... * @param {PacketCompressionAlgorithm} algorithm - The compression algorithm to use. * @returns {Function} A function that will decompress the buffer. */ static fromAlgorithmSync(algorithm) { switch (algorithm) { case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.ZLIB: return zlib.inflateRawSync; case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.NONE: return (buffer) => buffer; case require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.SNAPPY: throw new Error("Snappy compression is not implemented"); default: throw new Error(`Unsupported compression algorithm: ${algorithm}`); } } }; //#endregion exports.CompressionProvider = CompressionProvider; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcHJlc3Npb25Qcm92aWRlci5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL0NvbXByZXNzaW9uUHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcblxuaW1wb3J0IHsgaW5mbGF0ZVJhdywgaW5mbGF0ZVJhd1N5bmMgfSBmcm9tICd6bGliJztcbmltcG9ydCB7IFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtIH0gZnJvbSAnLi9wYWNrZXQvTmV0d29ya1NldHRpbmdzUGFja2V0LmpzJztcblxuY29uc3QgYXN5bmNJbmZsYXRlID0gcHJvbWlzaWZ5KGluZmxhdGVSYXcpO1xuXG4vKipcbiAqIEEgcHJvdmlkZXIgZm9yIGRlY29tcHJlc3NpbmcgcGFja2V0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXByZXNzaW9uUHJvdmlkZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBjb21wcmVzc2lvbiBwcm92aWRlci5cbiAgICAgKiBAcGFyYW0ge1BhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtfSBhbGdvcml0aG0gLSBUaGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gdGhhdCB3aWxsIGRlY29tcHJlc3MgdGhlIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BbGdvcml0aG0oYWxnb3JpdGhtOiBQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobSk6IChidWZmZXI6IEJ1ZmZlcikgPT4gUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgc3dpdGNoIChhbGdvcml0aG0pIHtcbiAgICAgICAgICAgIGNhc2UgUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0uWkxJQjpcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gbmV3IFpsaWJDb21wcmVzc2lvblByb3ZpZGVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jSW5mbGF0ZTtcbiAgICAgICAgICAgIGNhc2UgUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0uTk9ORTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXN5bmMgKGJ1ZmZlcjogQnVmZmVyKSA9PiBidWZmZXI7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLlNOQVBQWTpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NuYXBweSBjb21wcmVzc2lvbiBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBjb21wcmVzc2lvbiBhbGdvcml0aG06ICR7YWxnb3JpdGhtfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IGNvbXByZXNzaW9uIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHRvZG8gTW92ZSB0byBmdWxsIGFzeW5jLi4uIGFuZCByZW1vdmUgdGhpcyBtZXRob2QuLi5cbiAgICAgKiBAcGFyYW0ge1BhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtfSBhbGdvcml0aG0gLSBUaGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gdGhhdCB3aWxsIGRlY29tcHJlc3MgdGhlIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BbGdvcml0aG1TeW5jKGFsZ29yaXRobTogUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0pOiAoYnVmZmVyOiBCdWZmZXIpID0+IEJ1ZmZlciB7XG4gICAgICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLlpMSUI6XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBabGliQ29tcHJlc3Npb25Qcm92aWRlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmZsYXRlUmF3U3luYztcbiAgICAgICAgICAgIGNhc2UgUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0uTk9ORTpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGJ1ZmZlcjogQnVmZmVyKSA9PiBidWZmZXI7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLlNOQVBQWTpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NuYXBweSBjb21wcmVzc2lvbiBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBjb21wcmVzc2lvbiBhbGdvcml0aG06ICR7YWxnb3JpdGhtfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFNLGdCQUFBLHNCQUFBLEVBQUEsV0FBeUIsS0FBQSxVQUFVOzs7O0FBS3pDLElBQWEsc0JBQWIsTUFBaUM7Ozs7OztDQU03QixPQUFjLGNBQWMsV0FBNEU7RUFDcEcsUUFBUSxXQUFSO0dBQ0ksS0FBSyw2Q0FBQSwyQkFBMkIsTUFFNUIsT0FBTztHQUNYLEtBQUssNkNBQUEsMkJBQTJCLE1BQzVCLE9BQU8sT0FBTyxXQUFtQjtHQUNyQyxLQUFLLDZDQUFBLDJCQUEyQixRQUM1QixNQUFNLElBQUksTUFBTSx1Q0FBdUM7R0FDM0QsU0FDSSxNQUFNLElBQUksTUFBTSxzQ0FBc0MsV0FBVztFQUN6RTtDQUNKOzs7Ozs7OztDQVNBLE9BQWMsa0JBQWtCLFdBQW1FO0VBQy9GLFFBQVEsV0FBUjtHQUNJLEtBQUssNkNBQUEsMkJBQTJCLE1BRTVCLE9BQU8sS0FBQTtHQUNYLEtBQUssNkNBQUEsMkJBQTJCLE1BQzVCLFFBQVEsV0FBbUI7R0FDL0IsS0FBSyw2Q0FBQSwyQkFBMkIsUUFDNUIsTUFBTSxJQUFJLE1BQU0sdUNBQXVDO0dBQzNELFNBQ0ksTUFBTSxJQUFJLE1BQU0sc0NBQXNDLFdBQVc7RUFDekU7Q0FDSjtBQUNKIn0=