Skip to content

Commit 8b3499b

Browse files
authored
Add @types/vpk package (DefinitelyTyped#73459)
1 parent 5e19ee9 commit 8b3499b

File tree

5 files changed

+131
-0
lines changed

5 files changed

+131
-0
lines changed

types/vpk/.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

types/vpk/index.d.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/// <reference types="node" />
2+
3+
declare namespace VPK {
4+
interface VPKHeader {
5+
version: number;
6+
treeLength: number;
7+
unknown1?: number;
8+
footerLength?: number;
9+
unknown3?: number;
10+
unknown4?: number;
11+
}
12+
13+
interface VPKDirectoryEntry {
14+
crc: number;
15+
preloadBytes: number;
16+
archiveIndex: number;
17+
entryOffset: number;
18+
entryLength: number;
19+
preloadOffset?: number;
20+
}
21+
}
22+
23+
declare class VPK {
24+
constructor(path: string);
25+
26+
directoryPath: string;
27+
header: VPK.VPKHeader;
28+
tree: Record<string, VPK.VPKDirectoryEntry>;
29+
30+
isValid(): boolean;
31+
load(): void;
32+
readonly files: string[];
33+
getFile(path: string): Buffer | null;
34+
}
35+
36+
export = VPK;

types/vpk/package.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"private": true,
3+
"name": "@types/vpk",
4+
"version": "0.2.9999",
5+
"projects": [
6+
"https://github.com/fwdcp/node-vpk"
7+
],
8+
"dependencies": {
9+
"@types/node": "*"
10+
},
11+
"devDependencies": {
12+
"@types/vpk": "workspace:."
13+
},
14+
"owners": [
15+
{
16+
"name": "Veak",
17+
"githubUsername": "v0eak"
18+
}
19+
]
20+
}

types/vpk/tsconfig.json

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

types/vpk/vpk-tests.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import VPK = require("vpk");
2+
3+
// $ExpectType VPK
4+
const archive = new VPK("path/to/archive.vpk");
5+
6+
// $ExpectType string
7+
archive.directoryPath;
8+
9+
// $ExpectType VPKHeader
10+
archive.header;
11+
12+
// $ExpectType Record<string, VPKDirectoryEntry>
13+
archive.tree;
14+
15+
// $ExpectType boolean
16+
archive.isValid();
17+
18+
// $ExpectType void
19+
archive.load();
20+
21+
// $ExpectType string[]
22+
archive.files;
23+
24+
// $ExpectType Buffer | null || Buffer<ArrayBufferLike> | null
25+
archive.getFile("some/file.txt");
26+
27+
// Manual construction of types for testing
28+
29+
const header: VPK.VPKHeader = {
30+
version: 2,
31+
treeLength: 1024,
32+
unknown1: 0,
33+
footerLength: 512,
34+
unknown3: 1,
35+
unknown4: 2,
36+
};
37+
38+
// $ExpectType VPKHeader
39+
header;
40+
41+
const entry: VPK.VPKDirectoryEntry = {
42+
crc: 123456,
43+
preloadBytes: 128,
44+
archiveIndex: 1,
45+
entryOffset: 2048,
46+
entryLength: 4096,
47+
preloadOffset: 64,
48+
};
49+
50+
// $ExpectType VPKDirectoryEntry
51+
entry;

0 commit comments

Comments
 (0)