0.5.0-alpha.6 • Published 5 years ago

@telegramv/tl v0.5.0-alpha.6

Weekly downloads
1
License
GPL-3.0
Repository
github
Last release
5 years ago

Type Language

npm version

Type Language serialization and deserialization for JavaScript.

Installation

NPM:

npm install @telegramv/tl

Yarn:

yarn add @telegramv/tl

You also should install some library for GZIP manipulations. I recommend pako.

yarn add pako

Usage

Constructors:

Serializer(schema: Schema, options?: SerializationOptions);
Deserializer(schema: Schema, data: Uint8Array, options?: DeserializationOptions);

Example:

You can install @telegramv/schema or use your own schema.

import {Serializer, Deserializer, JsonSchema} from "@telegramv/tl";
import schema from "@telegramv/schema";
import pako from "pako";

const jsonSchema = new JsonSchema(schema);

/**

  • Note: data is Uint8Array and method should return Uint8Array.

  • @property {(data: Uint8Array) => Uint8Array} gzip

  • @property {(data: Uint8Array) => Uint8Array} ungzip */ const gzip = { gzip: (data) => pako.gzip(data), ungzip: (data) => pako.ungzip(data), };

const serializer = new Serializer(jsonSchema, {gzip}) .int(69) .string("victory") .bytes(new Uint8Array(1, 2, 3, 4), 4) .long(new Uint8Array(8)) .object({ _: "inputFile", id: new Uint8Array(210, 4, 0, 0, 0, 0, 0, 0), parts: 2, name: "xxx.png", md5_checksum: "ha.sh", });

console.log(serializer.getBytes());

const deserializer = new Deserializer(jsonSchema, serializer.getBytes(), {gzip});

const int = deserializer.int(); const string = deserializer.string(); const bytes = deserializer.bytes(); const long = deserializer.long(); const inputFile = deserializer.object();

console.log({ int, string, bytes, long, inputFile, })

It is very convenient to use factory pattern here.

File `TLFactory.js`:
```javascript
import {Serializer, Deserializer, JsonSchema} from "@telegramv/tl";
import schema from "@telegramv/schema";
import pako from "pako";

const jsonSchema = new JsonSchema(schema);
const gzip = {
    gzip: (data) => pako.gzip(data),
    ungzip: (data) => pako.ungzip(data),
};

const createSerializer = (options = {}) => new Serializer(jsonSchema, {gzip, ...options})
const createDeserializer = (data, options = {}) => new Deserializer(jsonSchema, data, {gzip, ...options})

const TLFactory = {
    serializer: createSerializer,
    deserializer: createDeserializer,
};

export default TLFactory;

File example.js:

import TLFactory from "./TLFactory";

const serializer = TLFactory.serializer();
const deserializer = TLFactory.deserializer(serializer.getBytes());
0.5.0-alpha.6

5 years ago

0.5.0-alpha.5

5 years ago

0.5.0-alpha.3

5 years ago

0.5.0-alpha.2

5 years ago

0.5.0-alpha.1

5 years ago

0.5.0-alpha.4

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago