Skip to content

Commit 9a42ceb

Browse files
authored
fix: sample size handling, build and release (#117)
* fix: sample size handling, build and release * Development snapshot
1 parent dd9b1cd commit 9a42ceb

4 files changed

Lines changed: 20 additions & 16 deletions

File tree

src/encoding/ascii.test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,3 @@ describe('ASCII', () => {
77
).toBe('ASCII');
88
});
99
});
10-
11-
describe('ASCII', () => {
12-
it('should return ASCII', () => {
13-
expect(
14-
chardet.detectFileSync(__dirname + '/../test/data/encodings/shortascii', { sampleSize: 32 }),
15-
).toBe('ASCII');
16-
});
17-
});

src/index.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ describe('chardet', () => {
5353
const res = await chardet.detectFile(path, { sampleSize: 32, offset: 64 });
5454
expect(res).toBe('UTF-8');
5555
});
56+
57+
it('should work as expected with sampleSize larger than actual file size (1)', async () => {
58+
const res = await chardet.detectFile(path, { sampleSize: 1024 * 1024 });
59+
expect(res).toBe('UTF-8');
60+
});
61+
62+
it('should work as expected with sampleSize larger than actual file size (2)', async () => {
63+
const res = await chardet.detectFile(__dirname + '/test/data/encodings/koi8r', { sampleSize: 1024 * 1024 });
64+
expect(res).toBe('KOI8-R');
65+
});
5666
});
5767

5868
describe('#detectFileSync', () => {

src/index.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,27 +103,30 @@ export const detectFile = (
103103
let fd: any;
104104
const fs = loadFs();
105105

106-
const handler = (err: Error | null | undefined, buffer: Buffer) => {
106+
const handler = (err: Error | null, buffer: Buffer | null) => {
107107
if (fd) {
108108
fs.closeSync(fd);
109109
}
110110

111111
if (err) {
112112
reject(err);
113-
} else {
113+
} else if (buffer) {
114114
resolve(detect(buffer));
115+
} else {
116+
reject(new Error('No error and no buffer received'));
115117
}
116118
};
117119

118-
if (opts && opts.sampleSize) {
120+
const sampleSize = opts?.sampleSize || 0;
121+
if (sampleSize > 0) {
119122
fd = fs.openSync(filepath, 'r');
120-
let sample = Buffer.allocUnsafe(opts.sampleSize);
123+
let sample = Buffer.allocUnsafe(sampleSize);
121124

122-
fs.read(fd, sample, 0, opts.sampleSize, opts.offset, (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: Buffer) => {
125+
fs.read(fd, sample, 0, sampleSize, opts.offset, (err: NodeJS.ErrnoException | null, bytesRead: number) => {
123126
if (err) {
124-
handler(err);
127+
handler(err, null);
125128
} else {
126-
if (bytesRead < opts.sampleSize!) {
129+
if (bytesRead < sampleSize) {
127130
sample = sample.subarray(0, bytesRead);
128131
}
129132
handler(null, sample);

src/test/data/encodings/shortascii

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)