@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
44 lines (43 loc) • 5.84 kB
JavaScript
;
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=