Merge pull request #28080 from dbrockman/varint

add types for package varint
This commit is contained in:
Benjamin Lichtman
2018-08-14 16:24:37 -07:00
committed by GitHub
4 changed files with 80 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
// Type definitions for varint 5.0
// Project: https://github.com/chrisdickinson/varint#readme
// Definitions by: David Brockman Smoliansky <https://github.com/dbrockman>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node"/>
export const encode: {
/**
* Encodes `num` into `buffer` starting at `offset`. returns `buffer`, with the encoded varint written into it.
* `varint.encode.bytes` will now be set to the number of bytes modified.
*/
(num: number, buffer: Buffer, offset?: number): Buffer;
/**
* Encodes `num` into `array` starting at `offset`. returns `array`, with the encoded varint written into it.
* If `array` is not provided, it will default to a new array.
* `varint.encode.bytes` will now be set to the number of bytes modified.
*/
(num: number, array?: number[], offset?: number): number[];
/**
* Similar to `decode.bytes` when encoding a number it can be useful to know how many bytes where written (especially if you pass an output array).
* You can access this via `varint.encode.bytes` which holds the number of bytes written in the last encode.
*/
bytes: number;
};
export const decode: {
/**
* Decodes `data`, which can be either a buffer or array of integers, from position `offset` or default 0 and returns the decoded original integer.
* Throws a `RangeError` when `data` does not represent a valid encoding.
*/
(buf: Buffer | number[], offset?: number): number;
/**
* If you also require the length (number of bytes) that were required to decode the integer you can access it via `varint.decode.bytes`.
* This is an integer property that will tell you the number of bytes that the last .decode() call had to use to decode.
*/
bytes: number;
};
/**
* returns the number of bytes this number will be encoded as, up to a maximum of 8.
*/
export function encodingLength(num: number): number;
+16
View File
@@ -0,0 +1,16 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": ["../"],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": ["index.d.ts", "varint-tests.ts"]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }
+17
View File
@@ -0,0 +1,17 @@
import { decode, encode, encodingLength } from 'varint';
encode(0); // $ExpectType number[]
encode(0, []); // $ExpectType number[]
encode(0, [], 0); // $ExpectType number[]
encode(0, Buffer.alloc(1)); // $ExpectType Buffer
encode(0, Buffer.alloc(1), 0); // $ExpectType Buffer
encode.bytes; // $ExpectType number
decode(Buffer.alloc(1)); // $ExpectType number
decode(Buffer.alloc(1), 0); // $ExpectType number
decode.bytes; // $ExpectType number
encodingLength(0); // $ExpectType number