New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@xmcl/client

Package Overview
Dependencies
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xmcl/client - npm Package Compare versions

Comparing version 0.0.8 to 1.0.0

62

index.d.ts

@@ -1,5 +0,50 @@

/// <reference types="node" />
import { GameProfile, ServerInfoFrame, ServerStatusFrame } from "@xmcl/common";
import { TextComponent } from "@xmcl/text-component";
interface ModIndentity {
import { TextComponent, TextComponentFrame } from "@xmcl/text-component";
export declare enum ResourceMode {
ENABLED = 0,
DISABLED = 1,
PROMPT = 2
}
/**
* The servers.dat format server information, contains known host displayed in "Multipler" page.
*/
export interface ServerInfoFrame {
name?: string;
host: string;
port?: number;
icon?: string;
isLanServer?: boolean;
resourceMode?: ResourceMode;
}
export interface ServerStatusFrame {
version: {
name: string;
protocol: number;
};
players: {
max: number;
online: number;
sample?: Array<{
id: string;
name: string;
}>;
};
/**
* The motd of server, which might be the raw TextComponent string or structurelized TextComponent JSON
*/
description: TextComponentFrame | string;
favicon: string | "";
modinfo?: {
type: string | "FML";
modList: Array<{
readonly modid: string;
readonly version: string;
}>;
};
ping: number;
}
interface GameProfile {
name: string;
id: string;
}
interface ForgeModIdentity {
readonly modid: string;

@@ -19,3 +64,3 @@ readonly version: string;

type: string;
modList: ModIndentity[];
modList: ForgeModIdentity[];
} | undefined;

@@ -28,3 +73,3 @@ static pinging(): Status;

type: string;
modList: ModIndentity[];
modList: ForgeModIdentity[];
} | undefined);

@@ -38,3 +83,3 @@ toString(): string;

*/
function readInfo(buff: Buffer): Promise<ServerInfoFrame[]>;
function readInfo(buff: Uint8Array): Promise<ServerInfoFrame[]>;
/**

@@ -45,3 +90,3 @@ * Write the information to NBT format used by .minecraft/server.dat file.

*/
function writeInfo(infos: ServerInfoFrame[]): Promise<Buffer>;
function writeInfo(infos: ServerInfoFrame[]): Promise<Uint8Array>;
interface FetchOptions {

@@ -82,2 +127,1 @@ /**

export * from "./net/client";
export * from "@xmcl/common/server";

58

index.js

@@ -1,14 +0,11 @@

"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@xmcl/common");
const nbt_1 = __importDefault(require("@xmcl/nbt"));
const text_component_1 = require("@xmcl/text-component");
const status_client_1 = require("./net/status-client");
var Server;
import NBT from "@xmcl/nbt";
import { TextComponent } from "@xmcl/text-component";
import { StatusClient } from "./net/status-client";
export var ResourceMode;
(function (ResourceMode) {
ResourceMode[ResourceMode["ENABLED"] = 0] = "ENABLED";
ResourceMode[ResourceMode["DISABLED"] = 1] = "DISABLED";
ResourceMode[ResourceMode["PROMPT"] = 2] = "PROMPT";
})(ResourceMode || (ResourceMode = {}));
export var Server;
(function (Server) {

@@ -26,4 +23,4 @@ class Status {

}
static pinging() { return new Status(text_component_1.TextComponent.str("unknown"), text_component_1.TextComponent.str("Pinging..."), -1, -1, -1); }
static error() { return new Status(text_component_1.TextComponent.str("Error"), text_component_1.TextComponent.str("Error"), -1, -1, -1); }
static pinging() { return new Status(TextComponent.from("unknown"), TextComponent.from("Pinging..."), -1, -1, -1); }
static error() { return new Status(TextComponent.from("Error"), TextComponent.from("Error"), -1, -1, -1); }
static from(obj) {

@@ -33,9 +30,9 @@ if (obj instanceof Status) {

}
let motd = text_component_1.TextComponent.str("");
let motd = TextComponent.from("");
if (obj.description) {
motd = text_component_1.TextComponent.from(obj.description);
motd = TextComponent.from(obj.description);
}
const favicon = obj.favicon;
const version = obj.version;
let versionText = text_component_1.TextComponent.str("");
let versionText = TextComponent.from("");
let protocol = -1;

@@ -46,3 +43,3 @@ let online = -1;

if (version.name) {
versionText = text_component_1.TextComponent.from(version.name);
versionText = TextComponent.from(version.name);
}

@@ -102,3 +99,3 @@ if (version.protocol) {

async function readInfo(buff) {
const value = await nbt_1.default.Persistence.deserialize(buff);
const value = await NBT.deserialize(buff);
if (!value.servers) {

@@ -113,3 +110,3 @@ throw {

name: i.name,
resourceMode: i.acceptTextures === undefined ? common_1.ResourceMode.PROMPT : i.acceptTextures ? common_1.ResourceMode.ENABLED : common_1.ResourceMode.DISABLED,
resourceMode: i.acceptTextures === undefined ? ResourceMode.PROMPT : i.acceptTextures ? ResourceMode.ENABLED : ResourceMode.DISABLED,
}));

@@ -129,4 +126,4 @@ }

name: i.name,
acceptTextures: i.resourceMode === common_1.ResourceMode.PROMPT ? undefined :
i.resourceMode === common_1.ResourceMode.ENABLED ? 1 : 0,
acceptTextures: i.resourceMode === ResourceMode.PROMPT ? undefined :
i.resourceMode === ResourceMode.ENABLED ? 1 : 0,
})),

@@ -145,3 +142,3 @@ // tslint:disable-next-line:object-literal-sort-keys

};
return nbt_1.default.Persistence.serialize(object);
return NBT.serialize(object);
}

@@ -163,3 +160,3 @@ Server.writeInfo = writeInfo;

let error;
const client = status_client_1.StatusClient.create(protocol, timeout);
const client = StatusClient.create(protocol, timeout);
for (let retryTimes = retry + 1; retryTimes > 0; retryTimes--) {

@@ -190,8 +187,7 @@ try {

Server.fetchStatus = fetchStatus;
})(Server = exports.Server || (exports.Server = {}));
__export(require("./net/coders"));
__export(require("./net/packet"));
__export(require("./net/status-client"));
__export(require("./net/client"));
__export(require("@xmcl/common/server"));
})(Server || (Server = {}));
export * from "./net/coders";
export * from "./net/packet";
export * from "./net/status-client";
export * from "./net/client";
//# sourceMappingURL=index.js.map

@@ -1,7 +0,53 @@

import { GameProfile, ResourceMode, ServerInfoFrame, ServerStatusFrame } from "@xmcl/common";
import NBT from "@xmcl/nbt";
import { TextComponent } from "@xmcl/text-component";
import { TextComponent, TextComponentFrame } from "@xmcl/text-component";
import { StatusClient } from "./net/status-client";
interface ModIndentity {
export enum ResourceMode {
ENABLED,
DISABLED,
PROMPT,
}
/**
* The servers.dat format server information, contains known host displayed in "Multipler" page.
*/
export interface ServerInfoFrame {
name?: string;
host: string;
port?: number;
icon?: string;
isLanServer?: boolean;
resourceMode?: ResourceMode;
}
export interface ServerStatusFrame {
version: {
name: string,
protocol: number,
};
players: {
max: number,
online: number,
sample?: Array<{ id: string, name: string }>,
};
/**
* The motd of server, which might be the raw TextComponent string or structurelized TextComponent JSON
*/
description: TextComponentFrame | string;
favicon: string | "";
modinfo?: {
type: string | "FML",
modList: Array<{
readonly modid: string;
readonly version: string;
}>,
};
ping: number;
}
interface GameProfile {
name: string;
id: string;
}
interface ForgeModIdentity {
readonly modid: string;

@@ -12,4 +58,4 @@ readonly version: string;

export class Status {
static pinging() { return new Status(TextComponent.str("unknown"), TextComponent.str("Pinging..."), -1, -1, -1); }
static error() { return new Status(TextComponent.str("Error"), TextComponent.str("Error"), -1, -1, -1); }
static pinging() { return new Status(TextComponent.from("unknown"), TextComponent.from("Pinging..."), -1, -1, -1); }
static error() { return new Status(TextComponent.from("Error"), TextComponent.from("Error"), -1, -1, -1); }
static from(obj: ServerStatusFrame | Status): Status {

@@ -19,3 +65,3 @@ if (obj instanceof Status) {

}
let motd: TextComponent = TextComponent.str("");
let motd: TextComponent = TextComponent.from("");
if (obj.description) {

@@ -26,3 +72,3 @@ motd = TextComponent.from(obj.description);

const version = obj.version;
let versionText: TextComponent = TextComponent.str("");
let versionText: TextComponent = TextComponent.from("");
let protocol = -1;

@@ -57,3 +103,3 @@ let online = -1;

if (modInfoJson) {
let list: ModIndentity[] = [];
let list: ForgeModIdentity[] = [];
const mList = modInfoJson.modList;

@@ -81,3 +127,3 @@ if (mList && mList instanceof Array) { list = mList; }

type: string,
modList: ModIndentity[],
modList: ForgeModIdentity[],
}) { }

@@ -98,4 +144,4 @@

*/
export async function readInfo(buff: Buffer): Promise<ServerInfoFrame[]> {
const value = await NBT.Persistence.deserialize(buff);
export async function readInfo(buff: Uint8Array): Promise<ServerInfoFrame[]> {
const value = await NBT.deserialize<any>(buff);
if (!value.servers) {

@@ -118,3 +164,3 @@ throw {

*/
export function writeInfo(infos: ServerInfoFrame[]): Promise<Buffer> {
export function writeInfo(infos: ServerInfoFrame[]): Promise<Uint8Array> {
const object = {

@@ -140,3 +186,3 @@ servers: infos.map((i) => ({

};
return NBT.Persistence.serialize(object);
return NBT.serialize(object);
}

@@ -201,2 +247,1 @@

export * from "./net/client";
export * from "@xmcl/common/server";

@@ -1,15 +0,10 @@

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bytebuffer_1 = __importDefault(require("bytebuffer"));
const events_1 = require("events");
const net_1 = require("net");
const stream_1 = require("stream");
const zlib_1 = require("zlib");
class PacketInBound extends stream_1.Transform {
import ByteBuffer from "bytebuffer";
import { EventEmitter } from "events";
import { Socket } from "net";
import { Transform, Writable } from "stream";
import { unzip } from "zlib";
class PacketInBound extends Transform {
constructor() {
super(...arguments);
this.buffer = bytebuffer_1.default.allocate(1024);
this.buffer = ByteBuffer.allocate(1024);
}

@@ -44,3 +39,3 @@ _transform(chunk, encoding, callback) {

}
class PacketDecompress extends stream_1.Transform {
class PacketDecompress extends Transform {
constructor(option) {

@@ -56,3 +51,3 @@ super();

}
const message = bytebuffer_1.default.wrap(chunk);
const message = ByteBuffer.wrap(chunk);
const dataLength = message.readVarint32();

@@ -65,3 +60,3 @@ if (dataLength === 0 || dataLength < this.option.compressionThreshold) {

const compressedContent = message.buffer.slice(message.offset);
zlib_1.unzip(compressedContent, (err, result) => {
unzip(compressedContent, (err, result) => {
if (err) {

@@ -78,3 +73,3 @@ callback(err);

}
class PacketDecode extends stream_1.Transform {
class PacketDecode extends Transform {
constructor(client) {

@@ -85,3 +80,3 @@ super({ writableObjectMode: true, readableObjectMode: true });

_transform(chunk, encoding, callback) {
const message = bytebuffer_1.default.wrap(chunk);
const message = ByteBuffer.wrap(chunk);
const packetId = message.readVarint32();

@@ -99,3 +94,3 @@ const packetContent = message.slice();

}
class PacketEmitter extends stream_1.Writable {
class PacketEmitter extends Writable {
constructor(eventBus) {

@@ -110,3 +105,3 @@ super({ objectMode: true });

}
class PacketEncoder extends stream_1.Transform {
class PacketEncoder extends Transform {
constructor(client) {

@@ -120,3 +115,3 @@ super({ writableObjectMode: true, readableObjectMode: true });

if (coder && coder.encode) {
const buf = new bytebuffer_1.default();
const buf = new ByteBuffer();
buf.writeByte(id);

@@ -133,5 +128,5 @@ coder.encode(buf, message);

}
class PacketOutbound extends stream_1.Transform {
class PacketOutbound extends Transform {
_transform(packet, encoding, callback) {
const buffer = new bytebuffer_1.default();
const buffer = new ByteBuffer();
buffer.writeVarint32(packet.length);

@@ -152,3 +147,3 @@ buffer.append(packet);

}
class Channel extends events_1.EventEmitter {
export class Channel extends EventEmitter {
constructor() {

@@ -171,3 +166,3 @@ super();

};
this.connection = new net_1.Socket({ allowHalfOpen: false });
this.connection = new Socket({ allowHalfOpen: false });
this.enableCompression = false;

@@ -262,3 +257,2 @@ this.compressionThreshold = -1;

}
exports.Channel = Channel;
//# sourceMappingURL=client.js.map

@@ -1,10 +0,5 @@

"use strict";
// tslint:disable: variable-name
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const nbt_1 = __importDefault(require("@xmcl/nbt"));
const long_1 = __importDefault(require("long"));
require("uuid");
import NBT from "@xmcl/nbt";
import Long from "long";
import "uuid";
const VarInt = {

@@ -79,10 +74,10 @@ decode: (buffer, inst) => buffer.readVarint32(),

}
let hi = long_1.default.fromString(components[0], false, 16);
let hi = Long.fromString(components[0], false, 16);
hi = hi.shiftLeft(16);
hi = hi.or(long_1.default.fromString(components[1], false, 16));
hi = hi.or(Long.fromString(components[1], false, 16));
hi = hi.shiftLeft(16);
hi = hi.or(long_1.default.fromString(components[2], false, 16));
let lo = long_1.default.fromString(components[3], false, 16);
hi = hi.or(Long.fromString(components[2], false, 16));
let lo = Long.fromString(components[3], false, 16);
lo = lo.shiftLeft(48);
lo = lo.or(long_1.default.fromString(components[4], false, 16));
lo = lo.or(Long.fromString(components[4], false, 16));
buffer.writeUint64(hi);

@@ -146,3 +141,3 @@ buffer.writeUint64(lo);

itemDamage,
nbt: nbt_1.default.Persistence.deserializeSync(Buffer.from(buffer.buffer)),
nbt: NBT.deserializeSync(Buffer.from(buffer.buffer)),
};

@@ -173,3 +168,3 @@ },

};
exports.default = Coders;
export default Coders;
//# sourceMappingURL=coders.js.map

@@ -170,3 +170,3 @@ // tslint:disable: variable-name

itemDamage,
nbt: NBT.Persistence.deserializeSync(Buffer.from(buffer.buffer)),
nbt: NBT.deserializeSync(Buffer.from(buffer.buffer)),
};

@@ -173,0 +173,0 @@ },

@@ -1,5 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const registry = [];
function Field(type) {
export function Field(type) {
return (target, key) => {

@@ -13,3 +11,2 @@ const prototype = target.constructor;

}
exports.Field = Field;
// https://stackoverflow.com/questions/1606797/use-of-apply-with-new-operator-is-this-possible

@@ -20,3 +17,3 @@ function newCall(Cls) {

}
function Packet(side, id, state) {
export function Packet(side, id, state) {
// tslint:disable-next-line: ban-types

@@ -53,3 +50,2 @@ return (constructor) => {

}
exports.Packet = Packet;
(function (Packet) {

@@ -64,4 +60,4 @@ function clear() {

Packet.flush = flush;
})(Packet = exports.Packet || (exports.Packet = {}));
class ProtocolManager {
})(Packet || (Packet = {}));
export class ProtocolManager {
constructor() {

@@ -74,3 +70,2 @@ this.mapping = {};

}
exports.ProtocolManager = ProtocolManager;
//# sourceMappingURL=packet.js.map

@@ -1,2 +0,1 @@

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

@@ -8,63 +7,59 @@ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;

};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const long_1 = __importDefault(require("long"));
const coders_1 = __importDefault(require("../coders"));
const packet_1 = require("../packet");
import Long from "long";
import Coders from "../coders";
import { Field, Packet } from "../packet";
let Handshake = class Handshake {
};
__decorate([
packet_1.Field(coders_1.default.VarInt)
Field(Coders.VarInt)
], Handshake.prototype, "protocolVersion", void 0);
__decorate([
packet_1.Field(coders_1.default.String)
Field(Coders.String)
], Handshake.prototype, "serverAddress", void 0);
__decorate([
packet_1.Field(coders_1.default.Short)
Field(Coders.Short)
], Handshake.prototype, "serverPort", void 0);
__decorate([
packet_1.Field(coders_1.default.VarInt)
Field(Coders.VarInt)
], Handshake.prototype, "nextState", void 0);
Handshake = __decorate([
packet_1.Packet("client", 0x00, "handshake")
Packet("client", 0x00, "handshake")
], Handshake);
exports.Handshake = Handshake;
export { Handshake };
let ServerQuery = class ServerQuery {
};
ServerQuery = __decorate([
packet_1.Packet("client", 0x00, "status")
Packet("client", 0x00, "status")
], ServerQuery);
exports.ServerQuery = ServerQuery;
export { ServerQuery };
let ServerStatus = class ServerStatus {
};
__decorate([
packet_1.Field(coders_1.default.Json)
Field(Coders.Json)
], ServerStatus.prototype, "status", void 0);
ServerStatus = __decorate([
packet_1.Packet("server", 0x00, "status")
Packet("server", 0x00, "status")
], ServerStatus);
exports.ServerStatus = ServerStatus;
export { ServerStatus };
let Ping = class Ping {
constructor() {
this.time = long_1.default.fromNumber(Date.now());
this.time = Long.fromNumber(Date.now());
}
};
__decorate([
packet_1.Field(coders_1.default.Long)
Field(Coders.Long)
], Ping.prototype, "time", void 0);
Ping = __decorate([
packet_1.Packet("client", 0x01, "status")
Packet("client", 0x01, "status")
], Ping);
exports.Ping = Ping;
export { Ping };
let Pong = class Pong {
};
__decorate([
packet_1.Field(coders_1.default.Long)
Field(Coders.Long)
], Pong.prototype, "ping", void 0);
Pong = __decorate([
packet_1.Packet("server", 0x01, "status")
Packet("server", 0x01, "status")
], Pong);
exports.Pong = Pong;
export { Pong };
//# sourceMappingURL=default.js.map

@@ -8,4 +8,4 @@ import { Channel } from "./client";

constructor(protocol: number, timeout?: number | undefined);
query(host: string, port?: number): Promise<import("@xmcl/common").ServerStatusFrame>;
query(host: string, port?: number): Promise<import("..").ServerStatusFrame>;
}
export default StatusClient;

@@ -1,12 +0,10 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const client_1 = require("./client");
const packet_1 = require("./packet");
const default_1 = require("./protocols/default");
class StatusClient {
import { Channel } from "./client";
import { Packet } from "./packet";
import { Handshake, Ping, ServerQuery, ServerStatus } from "./protocols/default";
export class StatusClient {
constructor(protocol, timeout) {
this.protocol = protocol;
this.timeout = timeout;
this.channel = new client_1.Channel();
packet_1.Packet.flush().forEach((r) => this.channel.registerPacket(r));
this.channel = new Channel();
Packet.flush().forEach((r) => this.channel.registerPacket(r));
}

@@ -24,6 +22,6 @@ static create(protocol, timeout) {

const { status } = await new Promise((resolve, reject) => {
this.channel.oncePacket(default_1.ServerStatus, (e) => {
this.channel.oncePacket(ServerStatus, (e) => {
resolve(e);
});
this.channel.send(new default_1.Handshake(), {
this.channel.send(new Handshake(), {
protocolVersion: this.protocol,

@@ -35,3 +33,3 @@ serverAddress: host,

this.channel.state = "status";
this.channel.send(new default_1.ServerQuery());
this.channel.send(new ServerQuery());
});

@@ -42,3 +40,3 @@ const { ping } = await new Promise((resolve, reject) => {

});
this.channel.send(new default_1.Ping());
this.channel.send(new Ping());
});

@@ -50,4 +48,3 @@ status.ping = Date.now() - ping.toNumber();

}
exports.StatusClient = StatusClient;
exports.default = StatusClient;
export default StatusClient;
//# sourceMappingURL=status-client.js.map
{
"name": "@xmcl/client",
"version": "0.0.8",
"version": "1.0.0",
"main": "./index.js",

@@ -13,5 +13,4 @@ "description": "Minecraft client ping server",

"dependencies": {
"@xmcl/common": "^0.2.0",
"@xmcl/nbt": "^0.1.1",
"@xmcl/text-component": "^0.0.5",
"@xmcl/nbt": "^1.0.0",
"@xmcl/text-component": "^1.0.0",
"bytebuffer": "^5.0.1",

@@ -42,3 +41,3 @@ "long": "^3.2.0",

"homepage": "https://github.com/Voxelum/minecraft-launcher-core-node#readme",
"gitHead": "b1b29753ab0261fb9e6ca9058df3c9a6868b27b5"
"gitHead": "7babb4628dd072c266a30697d9104aef38215403"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc