@push.rocks/smartrust 1.9.0 → 1.9.1
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.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartrust',
|
|
6
|
-
version: '1.9.
|
|
6
|
+
version: '1.9.1',
|
|
7
7
|
description: 'A type-safe bridge between JavaScript engines and Rust binaries.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGtFQUFrRTtDQUNoRixDQUFBIn0=
|
|
@@ -16,23 +16,36 @@ export class LineScanner {
|
|
|
16
16
|
*/
|
|
17
17
|
push(chunk, onLine) {
|
|
18
18
|
this.buffer = Buffer.concat([this.buffer, chunk]);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
try {
|
|
20
|
+
let newlineIndex;
|
|
21
|
+
while ((newlineIndex = this.buffer.indexOf(0x0A)) !== -1) {
|
|
22
|
+
const lineBuffer = this.buffer.subarray(0, newlineIndex);
|
|
23
|
+
this.buffer = this.buffer.subarray(newlineIndex + 1);
|
|
24
|
+
if (lineBuffer.length > this.maxPayloadSize) {
|
|
25
|
+
this.logger.log('error', `Inbound message exceeds maxPayloadSize (${lineBuffer.length} bytes), dropping`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const line = lineBuffer.toString('utf8').trim();
|
|
29
|
+
if (line) {
|
|
30
|
+
onLine(line);
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
|
|
33
|
+
// Prevent OOM if sender never sends newline
|
|
34
|
+
if (this.buffer.length > this.maxPayloadSize) {
|
|
35
|
+
this.logger.log('error', `Buffer exceeded maxPayloadSize (${this.buffer.length} bytes) without newline, clearing`);
|
|
36
|
+
this.buffer = Buffer.alloc(0);
|
|
30
37
|
}
|
|
31
38
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
finally {
|
|
40
|
+
// A subarray retains its entire backing allocation, even when empty.
|
|
41
|
+
// Compact once per chunk, including when a callback throws, without
|
|
42
|
+
// repeatedly copying the unread suffix for each parsed line.
|
|
43
|
+
if (this.buffer.length === 0) {
|
|
44
|
+
this.buffer = Buffer.alloc(0);
|
|
45
|
+
}
|
|
46
|
+
else if (this.buffer.buffer.byteLength > Math.max(Buffer.poolSize, this.buffer.length * 2)) {
|
|
47
|
+
this.buffer = Buffer.from(this.buffer);
|
|
48
|
+
}
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
51
|
/** Reset the internal buffer. */
|
|
@@ -40,4 +53,4 @@ export class LineScanner {
|
|
|
40
53
|
this.buffer = Buffer.alloc(0);
|
|
41
54
|
}
|
|
42
55
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5saW5lc2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMubGluZXNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ2QsTUFBTSxHQUFXLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsY0FBYyxDQUFTO0lBQ3ZCLE1BQU0sQ0FBb0I7SUFFbEMsWUFBWSxjQUFzQixFQUFFLE1BQXlCO1FBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxLQUFhLEVBQUUsTUFBOEI7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQztZQUNILElBQUksWUFBb0IsQ0FBQztZQUN6QixPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFckQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDJDQUEyQyxVQUFVLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDO29CQUMxRyxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7WUFFRCw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQ0FBbUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ25ILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QscUVBQXFFO1lBQ3JFLG9FQUFvRTtZQUNwRSw2REFBNkQ7WUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdGLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsaUNBQWlDO0lBQzFCLEtBQUs7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartrust",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A type-safe bridge between JavaScript engines and Rust binaries.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@git.zone/tsbuild": "^4.4.2",
|
|
13
13
|
"@git.zone/tsrun": "^2.0.6",
|
|
14
14
|
"@git.zone/tstest": "^4.0.0",
|
|
15
|
-
"@types/node": "^26.
|
|
15
|
+
"@types/node": "^26.4.1"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@push.rocks/smartpath": "^6.0.0"
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -21,26 +21,37 @@ export class LineScanner {
|
|
|
21
21
|
public push(chunk: Buffer, onLine: (line: string) => void): void {
|
|
22
22
|
this.buffer = Buffer.concat([this.buffer, chunk]);
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
try {
|
|
25
|
+
let newlineIndex: number;
|
|
26
|
+
while ((newlineIndex = this.buffer.indexOf(0x0A)) !== -1) {
|
|
27
|
+
const lineBuffer = this.buffer.subarray(0, newlineIndex);
|
|
28
|
+
this.buffer = this.buffer.subarray(newlineIndex + 1);
|
|
29
|
+
|
|
30
|
+
if (lineBuffer.length > this.maxPayloadSize) {
|
|
31
|
+
this.logger.log('error', `Inbound message exceeds maxPayloadSize (${lineBuffer.length} bytes), dropping`);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const line = lineBuffer.toString('utf8').trim();
|
|
36
|
+
if (line) {
|
|
37
|
+
onLine(line);
|
|
38
|
+
}
|
|
32
39
|
}
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
|
|
41
|
+
// Prevent OOM if sender never sends newline
|
|
42
|
+
if (this.buffer.length > this.maxPayloadSize) {
|
|
43
|
+
this.logger.log('error', `Buffer exceeded maxPayloadSize (${this.buffer.length} bytes) without newline, clearing`);
|
|
44
|
+
this.buffer = Buffer.alloc(0);
|
|
45
|
+
}
|
|
46
|
+
} finally {
|
|
47
|
+
// A subarray retains its entire backing allocation, even when empty.
|
|
48
|
+
// Compact once per chunk, including when a callback throws, without
|
|
49
|
+
// repeatedly copying the unread suffix for each parsed line.
|
|
50
|
+
if (this.buffer.length === 0) {
|
|
51
|
+
this.buffer = Buffer.alloc(0);
|
|
52
|
+
} else if (this.buffer.buffer.byteLength > Math.max(Buffer.poolSize, this.buffer.length * 2)) {
|
|
53
|
+
this.buffer = Buffer.from(this.buffer);
|
|
37
54
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Prevent OOM if sender never sends newline
|
|
41
|
-
if (this.buffer.length > this.maxPayloadSize) {
|
|
42
|
-
this.logger.log('error', `Buffer exceeded maxPayloadSize (${this.buffer.length} bytes) without newline, clearing`);
|
|
43
|
-
this.buffer = Buffer.alloc(0);
|
|
44
55
|
}
|
|
45
56
|
}
|
|
46
57
|
|