Skip to content

Commit dd9309f

Browse files
authored
🤖 Merge PR DefinitelyTyped#70447 feat: add types for buffercursor by @gierschv
1 parent 377fb56 commit dd9309f

File tree

5 files changed

+162
-0
lines changed

5 files changed

+162
-0
lines changed

types/buffercursor/.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import BufferCursor from 'buffercursor';
2+
import { Buffer } from 'node:buffer';
3+
4+
const buffer = Buffer.from([0x00, 0x01, 0x02, 0x03]);
5+
const cursor = new BufferCursor(buffer);
6+
7+
const firstByte = cursor.readUInt8();
8+
console.log(firstByte);
9+
10+
const secondByte = cursor.readUInt8();
11+
console.log(secondByte);
12+
13+
cursor.seek(2);
14+
const thirdByte = cursor.readUInt8();
15+
console.log(thirdByte);
16+
17+
cursor.seek(0);
18+
cursor.writeUInt8(0xFF);
19+
cursor.seek(0);
20+
const overwrittenByte = cursor.readUInt8();
21+
console.log(overwrittenByte);
22+
23+
try {
24+
cursor.seek(100);
25+
} catch (error) {
26+
if (error instanceof BufferCursor.BufferCursorOverflow) {
27+
console.log('Caught overflow error as expected');
28+
}
29+
}
30+
31+
cursor.seek(0);
32+
cursor.writeInt16BE(0x1234);
33+
cursor.seek(0);
34+
const readInt16 = cursor.readInt16BE();
35+
console.log(readInt16);
36+
37+
cursor.fill(0xAB, 4);
38+
cursor.seek(0);
39+
const filledValue = cursor.readUInt32BE();
40+
console.log(filledValue.toString(16));
41+
42+
cursor.seek(buffer.length - 1);
43+
try {
44+
cursor.readUInt16BE();
45+
} catch (error) {
46+
console.log('Caught boundary overflow error as expected');
47+
}

types/buffercursor/index.d.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/// <reference types="node" />
2+
3+
import VError = require('verror');
4+
5+
/**
6+
* A cursor for reading from and writing to a buffer.
7+
*/
8+
declare class BufferCursor {
9+
constructor(buff: Buffer, noAssert?: boolean);
10+
11+
buffer: Buffer;
12+
length: number;
13+
14+
seek(pos: number): BufferCursor;
15+
eof(): boolean;
16+
tell(): number;
17+
slice(length?: number): BufferCursor;
18+
toString(encoding?: BufferEncoding, length?: number): string;
19+
20+
readUInt8(): number;
21+
readInt8(): number;
22+
readInt16BE(): number;
23+
readInt16LE(): number;
24+
readUInt16BE(): number;
25+
readUInt16LE(): number;
26+
readUInt32LE(): number;
27+
readUInt32BE(): number;
28+
readInt32LE(): number;
29+
readInt32BE(): number;
30+
readFloatBE(): number;
31+
readFloatLE(): number;
32+
readDoubleBE(): number;
33+
readDoubleLE(): number;
34+
35+
write(value: string, length?: number, encoding?: BufferEncoding): BufferCursor;
36+
fill(value: any, length?: number): BufferCursor;
37+
copy(source: Buffer | BufferCursor, sourceStart?: number, sourceEnd?: number): BufferCursor;
38+
39+
writeUInt8(value: number): BufferCursor;
40+
writeInt8(value: number): BufferCursor;
41+
writeUInt16BE(value: number): BufferCursor;
42+
writeUInt16LE(value: number): BufferCursor;
43+
writeInt16BE(value: number): BufferCursor;
44+
writeInt16LE(value: number): BufferCursor;
45+
writeUInt32BE(value: number): BufferCursor;
46+
writeUInt32LE(value: number): BufferCursor;
47+
writeInt32BE(value: number): BufferCursor;
48+
writeInt32LE(value: number): BufferCursor;
49+
writeFloatBE(value: number): BufferCursor;
50+
writeFloatLE(value: number): BufferCursor;
51+
writeDoubleBE(value: number): BufferCursor;
52+
writeDoubleLE(value: number): BufferCursor;
53+
54+
static BufferCursorOverflow: typeof BufferCursorOverflow;
55+
}
56+
57+
/**
58+
* Custom error type for buffer cursor overflows.
59+
*/
60+
declare class BufferCursorOverflow extends VError {
61+
kind: string;
62+
length: number;
63+
position: number;
64+
size: number;
65+
66+
constructor(length: number, position: number, size: number);
67+
}
68+
69+
export = BufferCursor;

types/buffercursor/package.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"private": true,
3+
"name": "@types/buffercursor",
4+
"version": "0.0.9999",
5+
"projects": [
6+
"http://github.com/tjfontaine/node-buffercursor"
7+
],
8+
"dependencies": {
9+
"@types/node": "*",
10+
"@types/verror": "^1.10.10"
11+
},
12+
"devDependencies": {
13+
"@types/buffercursor": "workspace:."
14+
},
15+
"owners": [
16+
{
17+
"name": "Vincent Giersch",
18+
"githubUsername": "gierschv"
19+
}
20+
]
21+
}

types/buffercursor/tsconfig.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"compilerOptions": {
3+
"module": "node16",
4+
"lib": [
5+
"es6",
6+
"dom"
7+
],
8+
"noImplicitAny": true,
9+
"noImplicitThis": true,
10+
"strictFunctionTypes": true,
11+
"strictNullChecks": true,
12+
"types": [],
13+
"noEmit": true,
14+
"forceConsistentCasingInFileNames": true
15+
},
16+
"files": [
17+
"index.d.ts",
18+
"buffercursor-tests.ts"
19+
]
20+
}

0 commit comments

Comments
 (0)