strtok3 6.1.2 → 6.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,7 +20,7 @@ The `strtok3` contains a few methods to turn different input into a [*tokenizer*
20
20
  It can read from:
21
21
  * A file (taking a file path as an input)
22
22
  * A Node.js [stream](https://nodejs.org/api/stream.html).
23
- * A [Buffer](https://nodejs.org/api/buffer.html)
23
+ * A [Buffer](https://nodejs.org/api/buffer.html) or [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
24
24
  * HTTP chunked transfer provided by [@tokenizer/http](https://github.com/Borewit/tokenizer-http).
25
25
  * Chunked [Amazon S3](https://aws.amazon.com/s3) access provided by [@tokenizer/s3](https://github.com/Borewit/tokenizer-s3).
26
26
 
@@ -35,7 +35,8 @@ npm install strtok3
35
35
  Use one of the methods to instantiate an [*abstract tokenizer*](#tokenizer):
36
36
  * [strtok3.fromFile](#method-strtok3fromfile)
37
37
  * [strtok3.fromStream](#method-strtok3fromstream)
38
- * [strtok3.fromBuffer](#method-strtok3frombuffer)
38
+ * [strtok3.fromBuffer](#method-strtok3fromBuffer)
39
+ * [strtok3.fromUint8Array](#method-strtok3fromUint8Array)
39
40
 
40
41
  ### strtok3 methods
41
42
 
@@ -92,10 +93,10 @@ strtok3.fromStream(stream).then(tokenizer => {
92
93
 
93
94
  #### Method `strtok3.fromBuffer()`
94
95
 
95
- | Parameter | Optional | Type | Description |
96
- |-----------|----------|----------------------------------------------|--------------------------|
97
- | buffer | no | [Buffer](https://nodejs.org/api/buffer.html) | Buffer to read from |
98
- | fileInfo | yes | [IFileInfo](#IFileInfo) | Provide file information |
96
+ | Parameter | Optional | Type | Description |
97
+ |------------|----------|--------------------------------------------------|----------------------------------------|
98
+ | uint8Array | no | [Uint8Array](https://nodejs.org/api/buffer.html) | Uint8Array or Buffer to read from |
99
+ | fileInfo | yes | [IFileInfo](#IFileInfo) | Provide file information |
99
100
 
100
101
  Returns a [*tokenizer*](#tokenizer) which can be used to parse the provided buffer.
101
102
 
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { ITokenizer, IFileInfo, IReadChunkOptions } from './types';
3
2
  import { IGetToken, IToken } from '@tokenizer/token';
4
3
  /**
@@ -18,28 +17,28 @@ export declare abstract class AbstractTokenizer implements ITokenizer {
18
17
  * @param options - Additional read options
19
18
  * @returns Promise with number of bytes read
20
19
  */
21
- abstract readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
20
+ abstract readBuffer(buffer: Uint8Array, options?: IReadChunkOptions): Promise<number>;
22
21
  /**
23
22
  * Peek (read ahead) buffer from tokenizer
24
- * @param buffer - Target buffer to fill with data peek from the tokenizer-stream
23
+ * @param uint8Array- Target buffer to fill with data peek from the tokenizer-stream
25
24
  * @param options - Peek behaviour options
26
25
  * @returns Promise with number of bytes read
27
26
  */
28
- abstract peekBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
27
+ abstract peekBuffer(uint8Array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
29
28
  /**
30
29
  * Read a token from the tokenizer-stream
31
30
  * @param token - The token to read
32
31
  * @param position - If provided, the desired position in the tokenizer-stream
33
32
  * @returns Promise with token data
34
33
  */
35
- readToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
34
+ readToken<Value>(token: IGetToken<Value>, position?: number): Promise<Value>;
36
35
  /**
37
36
  * Peek a token from the tokenizer-stream.
38
37
  * @param token - Token to peek from the tokenizer-stream.
39
38
  * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
40
39
  * @returns Promise with token data
41
40
  */
42
- peekToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
41
+ peekToken<Value>(token: IGetToken<Value>, position?: number): Promise<Value>;
43
42
  /**
44
43
  * Read a numeric token from the stream
45
44
  * @param token - Numeric token
@@ -53,10 +52,11 @@ export declare abstract class AbstractTokenizer implements ITokenizer {
53
52
  */
54
53
  peekNumber(token: IToken<number>): Promise<number>;
55
54
  /**
56
- * Ignore number of bytes, advances the pointer in under tokenizer-stream.
57
- * @param length - Number of bytes to skip (ignore)
58
- * @return actual number of bytes ignored
55
+ * Ignore number of bytes, advances the pointer in under tokenizer-stream.
56
+ * @param length - Number of bytes to ignore
57
+ * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available
59
58
  */
60
- abstract ignore(length: number): Promise<number>;
59
+ ignore(length: number): Promise<number>;
61
60
  close(): Promise<void>;
61
+ protected normalizeOptions(uint8Array: Uint8Array, options?: IReadChunkOptions): IReadChunkOptions;
62
62
  }
@@ -11,7 +11,7 @@ class AbstractTokenizer {
11
11
  * Tokenizer-stream position
12
12
  */
13
13
  this.position = 0;
14
- this.numBuffer = Buffer.alloc(10);
14
+ this.numBuffer = new Uint8Array(8);
15
15
  this.fileInfo = fileInfo ? fileInfo : {};
16
16
  }
17
17
  /**
@@ -20,12 +20,12 @@ class AbstractTokenizer {
20
20
  * @param position - If provided, the desired position in the tokenizer-stream
21
21
  * @returns Promise with token data
22
22
  */
23
- async readToken(token, position) {
24
- const buffer = Buffer.alloc(token.len);
25
- const len = await this.readBuffer(buffer, { position });
23
+ async readToken(token, position = this.position) {
24
+ const uint8Array = Buffer.alloc(token.len);
25
+ const len = await this.readBuffer(uint8Array, { position });
26
26
  if (len < token.len)
27
27
  throw new peek_readable_1.EndOfStreamError();
28
- return token.get(buffer, 0);
28
+ return token.get(uint8Array, 0);
29
29
  }
30
30
  /**
31
31
  * Peek a token from the tokenizer-stream.
@@ -34,11 +34,11 @@ class AbstractTokenizer {
34
34
  * @returns Promise with token data
35
35
  */
36
36
  async peekToken(token, position = this.position) {
37
- const buffer = Buffer.alloc(token.len);
38
- const len = await this.peekBuffer(buffer, { position });
37
+ const uint8Array = Buffer.alloc(token.len);
38
+ const len = await this.peekBuffer(uint8Array, { position });
39
39
  if (len < token.len)
40
40
  throw new peek_readable_1.EndOfStreamError();
41
- return token.get(buffer, 0);
41
+ return token.get(uint8Array, 0);
42
42
  }
43
43
  /**
44
44
  * Read a numeric token from the stream
@@ -62,8 +62,28 @@ class AbstractTokenizer {
62
62
  throw new peek_readable_1.EndOfStreamError();
63
63
  return token.get(this.numBuffer, 0);
64
64
  }
65
+ /**
66
+ * Ignore number of bytes, advances the pointer in under tokenizer-stream.
67
+ * @param length - Number of bytes to ignore
68
+ * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available
69
+ */
70
+ async ignore(length) {
71
+ const bytesLeft = this.fileInfo.size - this.position;
72
+ if (length <= bytesLeft) {
73
+ this.position += length;
74
+ return length;
75
+ }
76
+ else {
77
+ this.position += bytesLeft;
78
+ return bytesLeft;
79
+ }
80
+ }
65
81
  async close() {
66
82
  // empty
67
83
  }
84
+ normalizeOptions(uint8Array, options) {
85
+ options = Object.assign({ offset: 0, length: uint8Array.length - ((options && options.offset) ? options.offset : 0), position: this.position }, options);
86
+ return options;
87
+ }
68
88
  }
69
89
  exports.AbstractTokenizer = AbstractTokenizer;
@@ -1,37 +1,26 @@
1
- /// <reference types="node" />
2
- import { IFileInfo, IReadChunkOptions, ITokenizer } from './types';
3
- import { IGetToken, IToken } from '@tokenizer/token';
4
- export declare class BufferTokenizer implements ITokenizer {
5
- private buffer;
6
- fileInfo: IFileInfo;
7
- position: number;
1
+ import { IFileInfo, IReadChunkOptions } from './types';
2
+ import { AbstractTokenizer } from './AbstractTokenizer';
3
+ export declare class BufferTokenizer extends AbstractTokenizer {
4
+ private uint8Array;
8
5
  /**
9
6
  * Construct BufferTokenizer
10
- * @param buffer - Buffer to tokenize
7
+ * @param uint8Array - Uint8Array to tokenize
11
8
  * @param fileInfo - Pass additional file information to the tokenizer
12
9
  */
13
- constructor(buffer: Buffer, fileInfo?: IFileInfo);
10
+ constructor(uint8Array: Uint8Array, fileInfo?: IFileInfo);
14
11
  /**
15
12
  * Read buffer from tokenizer
16
- * @param buffer
13
+ * @param uint8Array - Uint8Array to tokenize
17
14
  * @param options - Read behaviour options
18
15
  * @returns {Promise<number>}
19
16
  */
20
- readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
17
+ readBuffer(uint8Array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
21
18
  /**
22
19
  * Peek (read ahead) buffer from tokenizer
23
- * @param buffer
20
+ * @param uint8Array
24
21
  * @param options - Read behaviour options
25
22
  * @returns {Promise<number>}
26
23
  */
27
- peekBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
28
- readToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
29
- peekToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
30
- readNumber(token: IToken<number>): Promise<number>;
31
- peekNumber(token: IToken<number>): Promise<number>;
32
- /**
33
- * @return actual number of bytes ignored
34
- */
35
- ignore(length: number): Promise<number>;
24
+ peekBuffer(uint8Array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
36
25
  close(): Promise<void>;
37
26
  }
@@ -2,111 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BufferTokenizer = void 0;
4
4
  const peek_readable_1 = require("peek-readable");
5
- class BufferTokenizer {
5
+ const AbstractTokenizer_1 = require("./AbstractTokenizer");
6
+ class BufferTokenizer extends AbstractTokenizer_1.AbstractTokenizer {
6
7
  /**
7
8
  * Construct BufferTokenizer
8
- * @param buffer - Buffer to tokenize
9
+ * @param uint8Array - Uint8Array to tokenize
9
10
  * @param fileInfo - Pass additional file information to the tokenizer
10
11
  */
11
- constructor(buffer, fileInfo) {
12
- this.buffer = buffer;
13
- this.position = 0;
14
- this.fileInfo = fileInfo ? fileInfo : {};
15
- this.fileInfo.size = this.fileInfo.size ? this.fileInfo.size : buffer.length;
12
+ constructor(uint8Array, fileInfo) {
13
+ super(fileInfo);
14
+ this.uint8Array = uint8Array;
15
+ this.fileInfo.size = this.fileInfo.size ? this.fileInfo.size : uint8Array.length;
16
16
  }
17
17
  /**
18
18
  * Read buffer from tokenizer
19
- * @param buffer
19
+ * @param uint8Array - Uint8Array to tokenize
20
20
  * @param options - Read behaviour options
21
21
  * @returns {Promise<number>}
22
22
  */
23
- async readBuffer(buffer, options) {
23
+ async readBuffer(uint8Array, options) {
24
24
  if (options && options.position) {
25
25
  if (options.position < this.position) {
26
26
  throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
27
27
  }
28
28
  this.position = options.position;
29
29
  }
30
- return this.peekBuffer(buffer, options).then(bytesRead => {
31
- this.position += bytesRead;
32
- return bytesRead;
33
- });
30
+ const bytesRead = await this.peekBuffer(uint8Array, options);
31
+ this.position += bytesRead;
32
+ return bytesRead;
34
33
  }
35
34
  /**
36
35
  * Peek (read ahead) buffer from tokenizer
37
- * @param buffer
36
+ * @param uint8Array
38
37
  * @param options - Read behaviour options
39
38
  * @returns {Promise<number>}
40
39
  */
41
- async peekBuffer(buffer, options) {
42
- let offset = 0;
43
- let length = buffer.length;
44
- let position = this.position;
45
- if (options) {
46
- if (options.position) {
47
- if (options.position < this.position) {
48
- throw new Error('`options.position` can be less than `tokenizer.position`');
49
- }
50
- position = options.position;
51
- }
52
- if (Number.isInteger(options.length)) {
53
- length = options.length;
54
- }
55
- else {
56
- length -= options.offset || 0;
57
- }
58
- if (options.offset) {
59
- offset = options.offset;
60
- }
61
- }
62
- if (length === 0) {
63
- return Promise.resolve(0);
64
- }
65
- position = position || this.position;
66
- if (!length) {
67
- length = buffer.length;
68
- }
69
- const bytes2read = Math.min(this.buffer.length - position, length);
70
- if ((!options || !options.mayBeLess) && bytes2read < length) {
40
+ async peekBuffer(uint8Array, options) {
41
+ options = this.normalizeOptions(uint8Array, options);
42
+ const bytes2read = Math.min(this.uint8Array.length - options.position, options.length);
43
+ if ((!options.mayBeLess) && bytes2read < options.length) {
71
44
  throw new peek_readable_1.EndOfStreamError();
72
45
  }
73
46
  else {
74
- this.buffer.copy(buffer, offset, position, position + bytes2read);
47
+ uint8Array.set(this.uint8Array.subarray(options.position, options.position + bytes2read), options.offset);
75
48
  return bytes2read;
76
49
  }
77
50
  }
78
- async readToken(token, position) {
79
- this.position = position || this.position;
80
- try {
81
- const tv = this.peekToken(token, this.position);
82
- this.position += token.len;
83
- return tv;
84
- }
85
- catch (err) {
86
- this.position += this.buffer.length - position;
87
- throw err;
88
- }
89
- }
90
- async peekToken(token, position = this.position) {
91
- if (this.buffer.length - position < token.len) {
92
- throw new peek_readable_1.EndOfStreamError();
93
- }
94
- return token.get(this.buffer, position);
95
- }
96
- async readNumber(token) {
97
- return this.readToken(token);
98
- }
99
- async peekNumber(token) {
100
- return this.peekToken(token);
101
- }
102
- /**
103
- * @return actual number of bytes ignored
104
- */
105
- async ignore(length) {
106
- const bytesIgnored = Math.min(this.buffer.length - this.position, length);
107
- this.position += bytesIgnored;
108
- return bytesIgnored;
109
- }
110
51
  async close() {
111
52
  // empty
112
53
  }
@@ -13,16 +13,11 @@ export declare class FileTokenizer extends AbstractTokenizer {
13
13
  readBuffer(buffer: Buffer, options?: IReadChunkOptions): Promise<number>;
14
14
  /**
15
15
  * Peek buffer from file
16
- * @param buffer
16
+ * @param uint8Array - Uint8Array (or Buffer) to write data to
17
17
  * @param options - Read behaviour options
18
18
  * @returns Promise number of bytes read
19
19
  */
20
- peekBuffer(buffer: Buffer, options?: IReadChunkOptions): Promise<number>;
21
- /**
22
- * @param length - Number of bytes to ignore
23
- * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available
24
- */
25
- ignore(length: number): Promise<number>;
20
+ peekBuffer(uint8Array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
26
21
  close(): Promise<void>;
27
22
  }
28
23
  export declare function fromFile(sourceFilePath: string): Promise<FileTokenizer>;
@@ -47,55 +47,18 @@ class FileTokenizer extends AbstractTokenizer_1.AbstractTokenizer {
47
47
  }
48
48
  /**
49
49
  * Peek buffer from file
50
- * @param buffer
50
+ * @param uint8Array - Uint8Array (or Buffer) to write data to
51
51
  * @param options - Read behaviour options
52
52
  * @returns Promise number of bytes read
53
53
  */
54
- async peekBuffer(buffer, options) {
55
- let offset = 0;
56
- let length = buffer.length;
57
- let position = this.position;
58
- if (options) {
59
- if (options.position) {
60
- if (options.position < this.position) {
61
- throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
62
- }
63
- position = options.position;
64
- }
65
- if (Number.isInteger(options.length)) {
66
- length = options.length;
67
- }
68
- else {
69
- length -= options.offset || 0;
70
- }
71
- if (options.offset) {
72
- offset = options.offset;
73
- }
74
- }
75
- if (length === 0) {
76
- return Promise.resolve(0);
77
- }
78
- const res = await fs.read(this.fd, buffer, offset, length, position);
79
- if ((!options || !options.mayBeLess) && res.bytesRead < length) {
54
+ async peekBuffer(uint8Array, options) {
55
+ options = this.normalizeOptions(uint8Array, options);
56
+ const res = await fs.read(this.fd, uint8Array, options.offset, options.length, options.position);
57
+ if ((!options.mayBeLess) && res.bytesRead < options.length) {
80
58
  throw new peek_readable_1.EndOfStreamError();
81
59
  }
82
60
  return res.bytesRead;
83
61
  }
84
- /**
85
- * @param length - Number of bytes to ignore
86
- * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available
87
- */
88
- async ignore(length) {
89
- const bytesLeft = this.fileInfo.size - this.position;
90
- if (length <= bytesLeft) {
91
- this.position += length;
92
- return length;
93
- }
94
- else {
95
- this.position += bytesLeft;
96
- return bytesLeft;
97
- }
98
- }
99
62
  async close() {
100
63
  return fs.close(this.fd);
101
64
  }
@@ -5,14 +5,14 @@
5
5
  import * as fs from 'fs';
6
6
  export interface IReadResult {
7
7
  bytesRead: number;
8
- buffer: Buffer;
8
+ buffer: Uint8Array;
9
9
  }
10
10
  export declare const pathExists: typeof fs.existsSync;
11
11
  export declare const createReadStream: typeof fs.createReadStream;
12
12
  export declare function stat(path: fs.PathLike): Promise<fs.Stats>;
13
13
  export declare function close(fd: number): Promise<void>;
14
14
  export declare function open(path: fs.PathLike, mode?: string): Promise<number>;
15
- export declare function read(fd: number, buffer: Buffer, offset: number, length: number, position: number): Promise<IReadResult>;
15
+ export declare function read(fd: number, buffer: Uint8Array, offset: number, length: number, position: number): Promise<IReadResult>;
16
16
  export declare function writeFile(path: fs.PathLike, data: Buffer | string): Promise<void>;
17
17
  export declare function writeFileSync(path: fs.PathLike, data: Buffer | string): void;
18
18
  export declare function readFile(path: fs.PathLike): Promise<Buffer>;
@@ -16,13 +16,13 @@ export declare class ReadStreamTokenizer extends AbstractTokenizer {
16
16
  * @param options - Read behaviour options
17
17
  * @returns Promise with number of bytes read
18
18
  */
19
- readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
19
+ readBuffer(buffer: Uint8Array, options?: IReadChunkOptions): Promise<number>;
20
20
  /**
21
21
  * Peek (read ahead) buffer from tokenizer
22
- * @param buffer - Target buffer to write the data read to
22
+ * @param uint8Array - Uint8Array (or Buffer) to write data to
23
23
  * @param options - Read behaviour options
24
24
  * @returns Promise with number of bytes peeked
25
25
  */
26
- peekBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
26
+ peekBuffer(uint8Array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
27
27
  ignore(length: number): Promise<number>;
28
28
  }
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReadStreamTokenizer = void 0;
4
4
  const AbstractTokenizer_1 = require("./AbstractTokenizer");
5
5
  const peek_readable_1 = require("peek-readable");
6
- // import * as _debug from 'debug';
7
- // const debug = _debug('strtok3:ReadStreamTokenizer');
8
6
  const maxBufferSize = 256000;
9
7
  class ReadStreamTokenizer extends AbstractTokenizer_1.AbstractTokenizer {
10
8
  constructor(stream, fileInfo) {
@@ -62,57 +60,45 @@ class ReadStreamTokenizer extends AbstractTokenizer_1.AbstractTokenizer {
62
60
  }
63
61
  /**
64
62
  * Peek (read ahead) buffer from tokenizer
65
- * @param buffer - Target buffer to write the data read to
63
+ * @param uint8Array - Uint8Array (or Buffer) to write data to
66
64
  * @param options - Read behaviour options
67
65
  * @returns Promise with number of bytes peeked
68
66
  */
69
- async peekBuffer(buffer, options) {
70
- // const _offset = position ? position : this.position;
71
- // debug(`peek ${_offset}...${_offset + length - 1}`);
72
- let offset = 0;
73
- let bytesRead;
74
- let length = buffer.length;
75
- if (options) {
76
- if (options.offset) {
77
- offset = options.offset;
67
+ async peekBuffer(uint8Array, options) {
68
+ options = this.normalizeOptions(uint8Array, options);
69
+ let bytesRead = 0;
70
+ if (options.position) {
71
+ const skipBytes = options.position - this.position;
72
+ if (skipBytes > 0) {
73
+ const skipBuffer = new Uint8Array(options.length + skipBytes);
74
+ bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: options.mayBeLess });
75
+ uint8Array.set(skipBuffer.subarray(skipBytes), options.offset);
76
+ return bytesRead - skipBytes;
78
77
  }
79
- if (Number.isInteger(options.length)) {
80
- length = options.length;
78
+ else if (skipBytes < 0) {
79
+ throw new Error('Cannot peek from a negative offset in a stream');
81
80
  }
82
- else {
83
- length -= options.offset || 0;
81
+ }
82
+ if (options.length > 0) {
83
+ try {
84
+ bytesRead = await this.streamReader.peek(uint8Array, options.offset, options.length);
84
85
  }
85
- if (options.position) {
86
- const skipBytes = options.position - this.position;
87
- if (skipBytes > 0) {
88
- const skipBuffer = Buffer.alloc(length + skipBytes);
89
- bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: options.mayBeLess });
90
- skipBuffer.copy(buffer, offset, skipBytes);
91
- return bytesRead - skipBytes;
92
- }
93
- else if (skipBytes < 0) {
94
- throw new Error('Cannot peek from a negative offset in a stream');
86
+ catch (err) {
87
+ if (options && options.mayBeLess && err instanceof peek_readable_1.EndOfStreamError) {
88
+ return 0;
95
89
  }
90
+ throw err;
96
91
  }
97
- }
98
- try {
99
- bytesRead = await this.streamReader.peek(buffer, offset, length);
100
- }
101
- catch (err) {
102
- if (options && options.mayBeLess && err instanceof peek_readable_1.EndOfStreamError) {
103
- return 0;
92
+ if ((!options.mayBeLess) && bytesRead < options.length) {
93
+ throw new peek_readable_1.EndOfStreamError();
104
94
  }
105
- throw err;
106
- }
107
- if ((!options || !options.mayBeLess) && bytesRead < length) {
108
- throw new peek_readable_1.EndOfStreamError();
109
95
  }
110
96
  return bytesRead;
111
97
  }
112
98
  async ignore(length) {
113
99
  // debug(`ignore ${this.position}...${this.position + length - 1}`);
114
100
  const bufSize = Math.min(maxBufferSize, length);
115
- const buf = Buffer.alloc(bufSize);
101
+ const buf = new Uint8Array(bufSize);
116
102
  let totBytesRead = 0;
117
103
  while (totBytesRead < length) {
118
104
  const remaining = length - totBytesRead;
package/lib/core.d.ts CHANGED
@@ -16,8 +16,8 @@ export { IToken, IGetToken } from '@tokenizer/token';
16
16
  export declare function fromStream(stream: Stream.Readable, fileInfo?: IFileInfo): ReadStreamTokenizer;
17
17
  /**
18
18
  * Construct ReadStreamTokenizer from given Buffer.
19
- * @param buffer - Buffer to tokenize
19
+ * @param uint8Array - Uint8Array to tokenize
20
20
  * @param fileInfo - Pass additional file information to the tokenizer
21
21
  * @returns BufferTokenizer
22
22
  */
23
- export declare function fromBuffer(buffer: Buffer, fileInfo?: IFileInfo): BufferTokenizer;
23
+ export declare function fromBuffer(uint8Array: Uint8Array, fileInfo?: IFileInfo): BufferTokenizer;
package/lib/core.js CHANGED
@@ -19,11 +19,11 @@ function fromStream(stream, fileInfo) {
19
19
  exports.fromStream = fromStream;
20
20
  /**
21
21
  * Construct ReadStreamTokenizer from given Buffer.
22
- * @param buffer - Buffer to tokenize
22
+ * @param uint8Array - Uint8Array to tokenize
23
23
  * @param fileInfo - Pass additional file information to the tokenizer
24
24
  * @returns BufferTokenizer
25
25
  */
26
- function fromBuffer(buffer, fileInfo) {
27
- return new BufferTokenizer_1.BufferTokenizer(buffer, fileInfo);
26
+ function fromBuffer(uint8Array, fileInfo) {
27
+ return new BufferTokenizer_1.BufferTokenizer(uint8Array, fileInfo);
28
28
  }
29
29
  exports.fromBuffer = fromBuffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strtok3",
3
- "version": "6.1.2",
3
+ "version": "6.2.2",
4
4
  "description": "A promise based streaming tokenizer",
5
5
  "author": {
6
6
  "name": "Borewit",
@@ -43,15 +43,17 @@
43
43
  "url": "https://github.com/Borewit/strtok3/issues"
44
44
  },
45
45
  "devDependencies": {
46
+ "@tokenizer/token": "^0.3.0",
46
47
  "@types/chai": "^4.2.21",
48
+ "@types/debug": "^4.1.6",
47
49
  "@types/mocha": "^8.2.3",
48
- "@types/node": "^16.3.1",
50
+ "@types/node": "^16.3.3",
49
51
  "@typescript-eslint/eslint-plugin": "^2.34.0",
50
- "@typescript-eslint/eslint-plugin-tslint": "^4.28.2",
52
+ "@typescript-eslint/eslint-plugin-tslint": "^4.28.3",
51
53
  "@typescript-eslint/parser": "^2.34.0",
52
54
  "chai": "^4.3.4",
53
55
  "coveralls": "^3.1.1",
54
- "del-cli": "^4.0.0",
56
+ "del-cli": "^4.0.1",
55
57
  "eslint": "^6.8.0",
56
58
  "eslint-plugin-import": "^2.23.4",
57
59
  "eslint-plugin-prefer-arrow": "^1.2.3",
@@ -60,15 +62,13 @@
60
62
  "remark-cli": "^9.0.0",
61
63
  "remark-preset-lint-recommended": "^5.0.0",
62
64
  "source-map-support": "^0.5.16",
63
- "token-types": "^3.0.0",
65
+ "token-types": "^4.1.0",
64
66
  "ts-node": "^10.1.0",
65
67
  "tslint": "^6.1.3",
66
68
  "typescript": "^4.3.5"
67
69
  },
68
70
  "dependencies": {
69
- "@tokenizer/token": "^0.1.1",
70
- "@types/debug": "^4.1.6",
71
- "peek-readable": "^3.1.4"
71
+ "peek-readable": "^4.0.0"
72
72
  },
73
73
  "keywords": [
74
74
  "tokenizer",