Skip to content

Commit 07cc592

Browse files
authored
🤖 Merge PR DefinitelyTyped#73991 Add @types/js-untar type definitions by @aidinabedi
1 parent 1bd8116 commit 07cc592

File tree

5 files changed

+155
-0
lines changed

5 files changed

+155
-0
lines changed

types/js-untar/.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/js-untar/index.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
declare namespace untar {
2+
interface ProgressivePromise<T, P> extends Promise<T> {
3+
progress(cb: (arg: P) => void): this;
4+
}
5+
6+
interface TarFile {
7+
name: string;
8+
mode: string;
9+
uid: number;
10+
gid: number;
11+
size: number;
12+
mtime: number;
13+
checksum: number;
14+
type: string;
15+
linkname: string;
16+
ustarFormat: string;
17+
version?: string;
18+
uname?: string;
19+
gname?: string;
20+
devmajor?: number;
21+
devminor?: number;
22+
namePrefix?: string;
23+
buffer: ArrayBuffer;
24+
blob(): Blob;
25+
getBlobUrl(): URL;
26+
readAsString(): string;
27+
readAsJSON(): any;
28+
}
29+
}
30+
31+
declare function untar(arrayBuffer: ArrayBuffer): untar.ProgressivePromise<untar.TarFile[], untar.TarFile>;
32+
33+
export = untar;

types/js-untar/js-untar-tests.ts

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import untar = require("js-untar");
2+
3+
// Create a minimal tar ArrayBuffer for type testing
4+
function createMinimalTarArrayBuffer(): ArrayBuffer {
5+
const encoder = new TextEncoder();
6+
const header = new Uint8Array(512);
7+
encoder.encode("hello.txt").forEach((b, i) => header[i] = b);
8+
encoder.encode("0000777").forEach((b, i) => header[100 + i] = b);
9+
encoder.encode("0000000").forEach((b, i) => header[108 + i] = b);
10+
encoder.encode("0000000").forEach((b, i) => header[116 + i] = b);
11+
encoder.encode("0000004").forEach((b, i) => header[124 + i] = b);
12+
encoder.encode("00000000000").forEach((b, i) => header[136 + i] = b);
13+
encoder.encode(" ").forEach((b, i) => header[148 + i] = b);
14+
header[156] = "0".charCodeAt(0);
15+
encoder.encode("ustar ").forEach((b, i) => header[257 + i] = b);
16+
encoder.encode("00").forEach((b, i) => header[263 + i] = b);
17+
const content = encoder.encode("hi\n");
18+
const tar = new Uint8Array(512 + 4 + 512);
19+
tar.set(header, 0);
20+
tar.set(content, 512);
21+
return tar.buffer;
22+
}
23+
24+
const arrayBuffer = createMinimalTarArrayBuffer();
25+
const promise = untar(arrayBuffer); // $ExpectType ProgressivePromise<TarFile[], TarFile>
26+
27+
promise.progress((file) => {
28+
file; // $ExpectType TarFile
29+
file.name; // $ExpectType string
30+
file.mode; // $ExpectType string
31+
file.uid; // $ExpectType number
32+
file.gid; // $ExpectType number
33+
file.size; // $ExpectType number
34+
file.mtime; // $ExpectType number
35+
file.checksum; // $ExpectType number
36+
file.type; // $ExpectType string
37+
file.linkname; // $ExpectType string
38+
file.ustarFormat; // $ExpectType string
39+
file.buffer; // $ExpectType ArrayBuffer
40+
file.blob(); // $ExpectType Blob
41+
file.getBlobUrl(); // $ExpectType URL
42+
file.readAsString(); // $ExpectType string
43+
file.readAsJSON(); // $ExpectType any
44+
45+
file.version; // $ExpectType string | undefined
46+
file.uname; // $ExpectType string | undefined
47+
file.gname; // $ExpectType string | undefined
48+
file.devmajor; // $ExpectType number | undefined
49+
file.devminor; // $ExpectType number | undefined
50+
file.namePrefix; // $ExpectType string | undefined
51+
});
52+
53+
promise.then((files) => {
54+
files; // $ExpectType TarFile[]
55+
files.forEach((file) => {
56+
file; // $ExpectType TarFile
57+
file.name; // $ExpectType string
58+
file.mode; // $ExpectType string
59+
file.uid; // $ExpectType number
60+
file.gid; // $ExpectType number
61+
file.size; // $ExpectType number
62+
file.mtime; // $ExpectType number
63+
file.checksum; // $ExpectType number
64+
file.type; // $ExpectType string
65+
file.linkname; // $ExpectType string
66+
file.ustarFormat; // $ExpectType string
67+
file.buffer; // $ExpectType ArrayBuffer
68+
file.blob(); // $ExpectType Blob
69+
file.getBlobUrl(); // $ExpectType URL
70+
file.readAsString(); // $ExpectType string
71+
file.readAsJSON(); // $ExpectType any
72+
73+
file.version; // $ExpectType string | undefined
74+
file.uname; // $ExpectType string | undefined
75+
file.gname; // $ExpectType string | undefined
76+
file.devmajor; // $ExpectType number | undefined
77+
file.devminor; // $ExpectType number | undefined
78+
file.namePrefix; // $ExpectType string | undefined
79+
});
80+
});

types/js-untar/package.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"private": true,
3+
"name": "@types/js-untar",
4+
"version": "2.0.9999",
5+
"projects": [
6+
"https://github.com/InvokIT/js-untar"
7+
],
8+
"devDependencies": {
9+
"@types/js-untar": "workspace:."
10+
},
11+
"owners": [
12+
{
13+
"name": "aidin",
14+
"githubUsername": "aidinabedi"
15+
}
16+
]
17+
}

types/js-untar/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": "commonjs",
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+
"js-untar-tests.ts"
19+
]
20+
}

0 commit comments

Comments
 (0)