UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

51 lines (46 loc) 6.25 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const node_util = require('node:util'); const Zlib = require('zlib'); const network_packet_NetworkSettingsPacket = require('./packet/NetworkSettingsPacket.cjs.cjs'); const asyncInflate = node_util.promisify(Zlib.inflateRaw); class CompressionProvider { /** * 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 network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.ZLIB: return asyncInflate; case network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.NONE: return async (buffer) => buffer; case 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 network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.ZLIB: return Zlib.inflateRawSync; case network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.NONE: return (buffer) => buffer; case network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.SNAPPY: throw new Error("Snappy compression is not implemented"); default: throw new Error(`Unsupported compression algorithm: ${algorithm}`); } } } exports.CompressionProvider = CompressionProvider; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcHJlc3Npb25Qcm92aWRlci5janMuY2pzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9Db21wcmVzc2lvblByb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ25vZGU6dXRpbCc7XG5cbmltcG9ydCB7IGluZmxhdGVSYXcsIGluZmxhdGVSYXdTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobSB9IGZyb20gJy4vcGFja2V0L05ldHdvcmtTZXR0aW5nc1BhY2tldC5qcyc7XG5cbmNvbnN0IGFzeW5jSW5mbGF0ZSA9IHByb21pc2lmeShpbmZsYXRlUmF3KTtcblxuLyoqXG4gKiBBIHByb3ZpZGVyIGZvciBkZWNvbXByZXNzaW5nIHBhY2tldHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wcmVzc2lvblByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgY29tcHJlc3Npb24gcHJvdmlkZXIuXG4gICAgICogQHBhcmFtIHtQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobX0gYWxnb3JpdGhtIC0gVGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBkZWNvbXByZXNzIHRoZSBidWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQWxnb3JpdGhtKGFsZ29yaXRobTogUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0pOiAoYnVmZmVyOiBCdWZmZXIpID0+IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLlpMSUI6XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBabGliQ29tcHJlc3Npb25Qcm92aWRlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3luY0luZmxhdGU7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLk5PTkU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jIChidWZmZXI6IEJ1ZmZlcikgPT4gYnVmZmVyO1xuICAgICAgICAgICAgY2FzZSBQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobS5TTkFQUFk6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTbmFwcHkgY29tcHJlc3Npb24gaXMgbm90IGltcGxlbWVudGVkJyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtOiAke2FsZ29yaXRobX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBjb21wcmVzc2lvbiBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEB0b2RvIE1vdmUgdG8gZnVsbCBhc3luYy4uLiBhbmQgcmVtb3ZlIHRoaXMgbWV0aG9kLi4uXG4gICAgICogQHBhcmFtIHtQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobX0gYWxnb3JpdGhtIC0gVGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBkZWNvbXByZXNzIHRoZSBidWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQWxnb3JpdGhtU3luYyhhbGdvcml0aG06IFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtKTogKGJ1ZmZlcjogQnVmZmVyKSA9PiBCdWZmZXIge1xuICAgICAgICBzd2l0Y2ggKGFsZ29yaXRobSkge1xuICAgICAgICAgICAgY2FzZSBQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobS5aTElCOlxuICAgICAgICAgICAgICAgIC8vIHJldHVybiBuZXcgWmxpYkNvbXByZXNzaW9uUHJvdmlkZXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5mbGF0ZVJhd1N5bmM7XG4gICAgICAgICAgICBjYXNlIFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLk5PTkU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChidWZmZXI6IEJ1ZmZlcikgPT4gYnVmZmVyO1xuICAgICAgICAgICAgY2FzZSBQYWNrZXRDb21wcmVzc2lvbkFsZ29yaXRobS5TTkFQUFk6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTbmFwcHkgY29tcHJlc3Npb24gaXMgbm90IGltcGxlbWVudGVkJyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtOiAke2FsZ29yaXRobX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNpZnkiLCJpbmZsYXRlUmF3IiwiUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0iLCJpbmZsYXRlUmF3U3luYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFLQSxNQUFNLFlBQUEsR0FBZUEsb0JBQVVDLGVBQVUsQ0FBQTtBQUtsQyxNQUFNLG1CQUFvQixDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTdCLE9BQWMsY0FBYyxTQUE0RSxFQUFBO0FBQ3BHLElBQUEsUUFBUSxTQUFXO0FBQUEsTUFDZixLQUFLQywrREFBMkIsQ0FBQSxJQUFBO0FBRTVCLFFBQU8sT0FBQSxZQUFBO0FBQUEsTUFDWCxLQUFLQSwrREFBMkIsQ0FBQSxJQUFBO0FBQzVCLFFBQUEsT0FBTyxPQUFPLE1BQW1CLEtBQUEsTUFBQTtBQUFBLE1BQ3JDLEtBQUtBLCtEQUEyQixDQUFBLE1BQUE7QUFDNUIsUUFBTSxNQUFBLElBQUksTUFBTSx1Q0FBdUMsQ0FBQTtBQUFBLE1BQzNEO0FBQ0ksUUFBQSxNQUFNLElBQUksS0FBQSxDQUFNLENBQXNDLG1DQUFBLEVBQUEsU0FBUyxDQUFFLENBQUEsQ0FBQTtBQUFBO0FBQ3pFO0FBQ0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsa0JBQWtCLFNBQW1FLEVBQUE7QUFDL0YsSUFBQSxRQUFRLFNBQVc7QUFBQSxNQUNmLEtBQUtBLCtEQUEyQixDQUFBLElBQUE7QUFFNUIsUUFBTyxPQUFBQyxtQkFBQTtBQUFBLE1BQ1gsS0FBS0QsK0RBQTJCLENBQUEsSUFBQTtBQUM1QixRQUFBLE9BQU8sQ0FBQyxNQUFtQixLQUFBLE1BQUE7QUFBQSxNQUMvQixLQUFLQSwrREFBMkIsQ0FBQSxNQUFBO0FBQzVCLFFBQU0sTUFBQSxJQUFJLE1BQU0sdUNBQXVDLENBQUE7QUFBQSxNQUMzRDtBQUNJLFFBQUEsTUFBTSxJQUFJLEtBQUEsQ0FBTSxDQUFzQyxtQ0FBQSxFQUFBLFNBQVMsQ0FBRSxDQUFBLENBQUE7QUFBQTtBQUN6RTtBQUVSOzs7OyJ9