strtok3 6.0.8 → 6.1.3

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.
@@ -1,62 +1,62 @@
1
- /// <reference types="node" />
2
- import { ITokenizer, IFileInfo, IReadChunkOptions } from './types';
3
- import { IGetToken, IToken } from '@tokenizer/token';
4
- /**
5
- * Core tokenizer
6
- */
7
- export declare abstract class AbstractTokenizer implements ITokenizer {
8
- fileInfo: IFileInfo;
9
- protected constructor(fileInfo?: IFileInfo);
10
- /**
11
- * Tokenizer-stream position
12
- */
13
- position: number;
14
- private numBuffer;
15
- /**
16
- * Read buffer from tokenizer
17
- * @param buffer - Target buffer to fill with data read from the tokenizer-stream
18
- * @param options - Additional read options
19
- * @returns Promise with number of bytes read
20
- */
21
- abstract readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
22
- /**
23
- * Peek (read ahead) buffer from tokenizer
24
- * @param buffer - Target buffer to fill with data peek from the tokenizer-stream
25
- * @param options - Peek behaviour options
26
- * @returns Promise with number of bytes read
27
- */
28
- abstract peekBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
29
- /**
30
- * Read a token from the tokenizer-stream
31
- * @param token - The token to read
32
- * @param position - If provided, the desired position in the tokenizer-stream
33
- * @returns Promise with token data
34
- */
35
- readToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
36
- /**
37
- * Peek a token from the tokenizer-stream.
38
- * @param token - Token to peek from the tokenizer-stream.
39
- * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
40
- * @returns Promise with token data
41
- */
42
- peekToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
43
- /**
44
- * Read a numeric token from the stream
45
- * @param token - Numeric token
46
- * @returns Promise with number
47
- */
48
- readNumber(token: IToken<number>): Promise<number>;
49
- /**
50
- * Read a numeric token from the stream
51
- * @param token - Numeric token
52
- * @returns Promise with number
53
- */
54
- peekNumber(token: IToken<number>): Promise<number>;
55
- /**
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
59
- */
60
- abstract ignore(length: number): Promise<number>;
61
- close(): Promise<void>;
62
- }
1
+ /// <reference types="node" />
2
+ import { ITokenizer, IFileInfo, IReadChunkOptions } from './types';
3
+ import { IGetToken, IToken } from '@tokenizer/token';
4
+ /**
5
+ * Core tokenizer
6
+ */
7
+ export declare abstract class AbstractTokenizer implements ITokenizer {
8
+ fileInfo: IFileInfo;
9
+ protected constructor(fileInfo?: IFileInfo);
10
+ /**
11
+ * Tokenizer-stream position
12
+ */
13
+ position: number;
14
+ private numBuffer;
15
+ /**
16
+ * Read buffer from tokenizer
17
+ * @param buffer - Target buffer to fill with data read from the tokenizer-stream
18
+ * @param options - Additional read options
19
+ * @returns Promise with number of bytes read
20
+ */
21
+ abstract readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
22
+ /**
23
+ * Peek (read ahead) buffer from tokenizer
24
+ * @param buffer - Target buffer to fill with data peek from the tokenizer-stream
25
+ * @param options - Peek behaviour options
26
+ * @returns Promise with number of bytes read
27
+ */
28
+ abstract peekBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
29
+ /**
30
+ * Read a token from the tokenizer-stream
31
+ * @param token - The token to read
32
+ * @param position - If provided, the desired position in the tokenizer-stream
33
+ * @returns Promise with token data
34
+ */
35
+ readToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
36
+ /**
37
+ * Peek a token from the tokenizer-stream.
38
+ * @param token - Token to peek from the tokenizer-stream.
39
+ * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
40
+ * @returns Promise with token data
41
+ */
42
+ peekToken<T>(token: IGetToken<T>, position?: number): Promise<T>;
43
+ /**
44
+ * Read a numeric token from the stream
45
+ * @param token - Numeric token
46
+ * @returns Promise with number
47
+ */
48
+ readNumber(token: IToken<number>): Promise<number>;
49
+ /**
50
+ * Read a numeric token from the stream
51
+ * @param token - Numeric token
52
+ * @returns Promise with number
53
+ */
54
+ peekNumber(token: IToken<number>): Promise<number>;
55
+ /**
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
59
+ */
60
+ abstract ignore(length: number): Promise<number>;
61
+ close(): Promise<void>;
62
+ }
@@ -1,69 +1,69 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractTokenizer = void 0;
4
- const peek_readable_1 = require("peek-readable");
5
- /**
6
- * Core tokenizer
7
- */
8
- class AbstractTokenizer {
9
- constructor(fileInfo) {
10
- /**
11
- * Tokenizer-stream position
12
- */
13
- this.position = 0;
14
- this.numBuffer = Buffer.alloc(10);
15
- this.fileInfo = fileInfo ? fileInfo : {};
16
- }
17
- /**
18
- * Read a token from the tokenizer-stream
19
- * @param token - The token to read
20
- * @param position - If provided, the desired position in the tokenizer-stream
21
- * @returns Promise with token data
22
- */
23
- async readToken(token, position) {
24
- const buffer = Buffer.alloc(token.len);
25
- const len = await this.readBuffer(buffer, { position });
26
- if (len < token.len)
27
- throw new peek_readable_1.EndOfStreamError();
28
- return token.get(buffer, 0);
29
- }
30
- /**
31
- * Peek a token from the tokenizer-stream.
32
- * @param token - Token to peek from the tokenizer-stream.
33
- * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
34
- * @returns Promise with token data
35
- */
36
- async peekToken(token, position = this.position) {
37
- const buffer = Buffer.alloc(token.len);
38
- const len = await this.peekBuffer(buffer, { position });
39
- if (len < token.len)
40
- throw new peek_readable_1.EndOfStreamError();
41
- return token.get(buffer, 0);
42
- }
43
- /**
44
- * Read a numeric token from the stream
45
- * @param token - Numeric token
46
- * @returns Promise with number
47
- */
48
- async readNumber(token) {
49
- const len = await this.readBuffer(this.numBuffer, { length: token.len });
50
- if (len < token.len)
51
- throw new peek_readable_1.EndOfStreamError();
52
- return token.get(this.numBuffer, 0);
53
- }
54
- /**
55
- * Read a numeric token from the stream
56
- * @param token - Numeric token
57
- * @returns Promise with number
58
- */
59
- async peekNumber(token) {
60
- const len = await this.peekBuffer(this.numBuffer, { length: token.len });
61
- if (len < token.len)
62
- throw new peek_readable_1.EndOfStreamError();
63
- return token.get(this.numBuffer, 0);
64
- }
65
- async close() {
66
- // empty
67
- }
68
- }
69
- exports.AbstractTokenizer = AbstractTokenizer;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractTokenizer = void 0;
4
+ const peek_readable_1 = require("peek-readable");
5
+ /**
6
+ * Core tokenizer
7
+ */
8
+ class AbstractTokenizer {
9
+ constructor(fileInfo) {
10
+ /**
11
+ * Tokenizer-stream position
12
+ */
13
+ this.position = 0;
14
+ this.numBuffer = Buffer.alloc(10);
15
+ this.fileInfo = fileInfo ? fileInfo : {};
16
+ }
17
+ /**
18
+ * Read a token from the tokenizer-stream
19
+ * @param token - The token to read
20
+ * @param position - If provided, the desired position in the tokenizer-stream
21
+ * @returns Promise with token data
22
+ */
23
+ async readToken(token, position) {
24
+ const buffer = Buffer.alloc(token.len);
25
+ const len = await this.readBuffer(buffer, { position });
26
+ if (len < token.len)
27
+ throw new peek_readable_1.EndOfStreamError();
28
+ return token.get(buffer, 0);
29
+ }
30
+ /**
31
+ * Peek a token from the tokenizer-stream.
32
+ * @param token - Token to peek from the tokenizer-stream.
33
+ * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.
34
+ * @returns Promise with token data
35
+ */
36
+ async peekToken(token, position = this.position) {
37
+ const buffer = Buffer.alloc(token.len);
38
+ const len = await this.peekBuffer(buffer, { position });
39
+ if (len < token.len)
40
+ throw new peek_readable_1.EndOfStreamError();
41
+ return token.get(buffer, 0);
42
+ }
43
+ /**
44
+ * Read a numeric token from the stream
45
+ * @param token - Numeric token
46
+ * @returns Promise with number
47
+ */
48
+ async readNumber(token) {
49
+ const len = await this.readBuffer(this.numBuffer, { length: token.len });
50
+ if (len < token.len)
51
+ throw new peek_readable_1.EndOfStreamError();
52
+ return token.get(this.numBuffer, 0);
53
+ }
54
+ /**
55
+ * Read a numeric token from the stream
56
+ * @param token - Numeric token
57
+ * @returns Promise with number
58
+ */
59
+ async peekNumber(token) {
60
+ const len = await this.peekBuffer(this.numBuffer, { length: token.len });
61
+ if (len < token.len)
62
+ throw new peek_readable_1.EndOfStreamError();
63
+ return token.get(this.numBuffer, 0);
64
+ }
65
+ async close() {
66
+ // empty
67
+ }
68
+ }
69
+ exports.AbstractTokenizer = AbstractTokenizer;
@@ -1,37 +1,37 @@
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;
8
- /**
9
- * Construct BufferTokenizer
10
- * @param buffer - Buffer to tokenize
11
- * @param fileInfo - Pass additional file information to the tokenizer
12
- */
13
- constructor(buffer: Buffer, fileInfo?: IFileInfo);
14
- /**
15
- * Read buffer from tokenizer
16
- * @param buffer
17
- * @param options - Read behaviour options
18
- * @returns {Promise<number>}
19
- */
20
- readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
21
- /**
22
- * Peek (read ahead) buffer from tokenizer
23
- * @param buffer
24
- * @param options - Read behaviour options
25
- * @returns {Promise<number>}
26
- */
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>;
36
- close(): Promise<void>;
37
- }
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;
8
+ /**
9
+ * Construct BufferTokenizer
10
+ * @param buffer - Buffer to tokenize
11
+ * @param fileInfo - Pass additional file information to the tokenizer
12
+ */
13
+ constructor(buffer: Buffer, fileInfo?: IFileInfo);
14
+ /**
15
+ * Read buffer from tokenizer
16
+ * @param buffer
17
+ * @param options - Read behaviour options
18
+ * @returns {Promise<number>}
19
+ */
20
+ readBuffer(buffer: Buffer | Uint8Array, options?: IReadChunkOptions): Promise<number>;
21
+ /**
22
+ * Peek (read ahead) buffer from tokenizer
23
+ * @param buffer
24
+ * @param options - Read behaviour options
25
+ * @returns {Promise<number>}
26
+ */
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>;
36
+ close(): Promise<void>;
37
+ }
@@ -1,114 +1,114 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BufferTokenizer = void 0;
4
- const peek_readable_1 = require("peek-readable");
5
- class BufferTokenizer {
6
- /**
7
- * Construct BufferTokenizer
8
- * @param buffer - Buffer to tokenize
9
- * @param fileInfo - Pass additional file information to the tokenizer
10
- */
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;
16
- }
17
- /**
18
- * Read buffer from tokenizer
19
- * @param buffer
20
- * @param options - Read behaviour options
21
- * @returns {Promise<number>}
22
- */
23
- async readBuffer(buffer, options) {
24
- if (options && options.position) {
25
- if (options.position < this.position) {
26
- throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
27
- }
28
- this.position = options.position;
29
- }
30
- return this.peekBuffer(buffer, options).then(bytesRead => {
31
- this.position += bytesRead;
32
- return bytesRead;
33
- });
34
- }
35
- /**
36
- * Peek (read ahead) buffer from tokenizer
37
- * @param buffer
38
- * @param options - Read behaviour options
39
- * @returns {Promise<number>}
40
- */
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) {
71
- throw new peek_readable_1.EndOfStreamError();
72
- }
73
- else {
74
- this.buffer.copy(buffer, offset, position, position + bytes2read);
75
- return bytes2read;
76
- }
77
- }
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
- async close() {
111
- // empty
112
- }
113
- }
114
- exports.BufferTokenizer = BufferTokenizer;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BufferTokenizer = void 0;
4
+ const peek_readable_1 = require("peek-readable");
5
+ class BufferTokenizer {
6
+ /**
7
+ * Construct BufferTokenizer
8
+ * @param buffer - Buffer to tokenize
9
+ * @param fileInfo - Pass additional file information to the tokenizer
10
+ */
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;
16
+ }
17
+ /**
18
+ * Read buffer from tokenizer
19
+ * @param buffer
20
+ * @param options - Read behaviour options
21
+ * @returns {Promise<number>}
22
+ */
23
+ async readBuffer(buffer, options) {
24
+ if (options && options.position) {
25
+ if (options.position < this.position) {
26
+ throw new Error('`options.position` must be equal or greater than `tokenizer.position`');
27
+ }
28
+ this.position = options.position;
29
+ }
30
+ return this.peekBuffer(buffer, options).then(bytesRead => {
31
+ this.position += bytesRead;
32
+ return bytesRead;
33
+ });
34
+ }
35
+ /**
36
+ * Peek (read ahead) buffer from tokenizer
37
+ * @param buffer
38
+ * @param options - Read behaviour options
39
+ * @returns {Promise<number>}
40
+ */
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) {
71
+ throw new peek_readable_1.EndOfStreamError();
72
+ }
73
+ else {
74
+ this.buffer.copy(buffer, offset, position, position + bytes2read);
75
+ return bytes2read;
76
+ }
77
+ }
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
+ async close() {
111
+ // empty
112
+ }
113
+ }
114
+ exports.BufferTokenizer = BufferTokenizer;
@@ -1,28 +1,28 @@
1
- /// <reference types="node" />
2
- import { AbstractTokenizer } from './AbstractTokenizer';
3
- import { IFileInfo, IReadChunkOptions } from './types';
4
- export declare class FileTokenizer extends AbstractTokenizer {
5
- private fd;
6
- constructor(fd: number, fileInfo: IFileInfo);
7
- /**
8
- * Read buffer from file
9
- * @param buffer
10
- * @param options - Read behaviour options
11
- * @returns Promise number of bytes read
12
- */
13
- readBuffer(buffer: Buffer, options?: IReadChunkOptions): Promise<number>;
14
- /**
15
- * Peek buffer from file
16
- * @param buffer
17
- * @param options - Read behaviour options
18
- * @returns Promise number of bytes read
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>;
26
- close(): Promise<void>;
27
- }
28
- export declare function fromFile(sourceFilePath: string): Promise<FileTokenizer>;
1
+ /// <reference types="node" />
2
+ import { AbstractTokenizer } from './AbstractTokenizer';
3
+ import { IFileInfo, IReadChunkOptions } from './types';
4
+ export declare class FileTokenizer extends AbstractTokenizer {
5
+ private fd;
6
+ constructor(fd: number, fileInfo: IFileInfo);
7
+ /**
8
+ * Read buffer from file
9
+ * @param buffer
10
+ * @param options - Read behaviour options
11
+ * @returns Promise number of bytes read
12
+ */
13
+ readBuffer(buffer: Buffer, options?: IReadChunkOptions): Promise<number>;
14
+ /**
15
+ * Peek buffer from file
16
+ * @param buffer
17
+ * @param options - Read behaviour options
18
+ * @returns Promise number of bytes read
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>;
26
+ close(): Promise<void>;
27
+ }
28
+ export declare function fromFile(sourceFilePath: string): Promise<FileTokenizer>;