@lad-tech/nsc-toolkit 1.16.0 → 1.17.0
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/CHANGELOG.md +2 -7
- package/README.md +1 -0
- package/dist/StreamOptions/BufferToJsonTransform.js +32 -0
- package/dist/StreamOptions/JsonToBufferTransform.js +11 -0
- package/dist/StreamOptions/index.js +19 -0
- package/dist/index.js +1 -0
- package/dist/types/StreamOptions/BufferToJsonTransform.d.ts +13 -0
- package/dist/types/StreamOptions/JsonToBufferTransform.d.ts +6 -0
- package/dist/types/StreamOptions/index.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
# [1.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Bug Fixes
|
|
5
|
-
|
|
6
|
-
* fix test ([b54dd51](https://github.com/lad-tech/nsc-toolkit/commit/b54dd5139d34d5ae9d3138e8664434e8793d0804))
|
|
1
|
+
# [1.17.0](https://github.com/lad-tech/nsc-toolkit/compare/v1.16.0...v1.17.0) (2023-11-09)
|
|
7
2
|
|
|
8
3
|
|
|
9
4
|
### Features
|
|
10
5
|
|
|
11
|
-
*
|
|
6
|
+
* Передача и парсинг json в потоках ([8c40d92](https://github.com/lad-tech/nsc-toolkit/commit/8c40d9211055ea40668f33711f9cec5e4e0064d3)), closes [#85](https://github.com/lad-tech/nsc-toolkit/issues/85)
|
package/README.md
CHANGED
|
@@ -316,6 +316,7 @@ npm i
|
|
|
316
316
|
- Инъекция через декоратор `@service` позволяет использовать функциональность сборки приложения в монолит.
|
|
317
317
|
* `@instance`:
|
|
318
318
|
- Используется для инъекции других зависимостей, например, объектов репозиториев. В него можно передать готовый объект с набором асинхронных методов. При вызове этих методов из его логики они будут видны в трассировках. Для получения таких зависимостей рекомендуется использовать DI-контейнеры.
|
|
319
|
+
5. Для передачи объектов в поток можно использовать встроенные классы `JsonToBufferTransform` и `BufferToJsonTransform`, с помощью которых склейка буфера при передаче и парсинг произойдет в автоматическом режиме
|
|
319
320
|
|
|
320
321
|
## Рекомендации
|
|
321
322
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BufferToJsonTransform = void 0;
|
|
4
|
+
const stream_1 = require("stream");
|
|
5
|
+
class BufferToJsonTransform extends stream_1.Transform {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
super({ objectMode: true, highWaterMark: 10, ...options });
|
|
8
|
+
this.head = Buffer.from('');
|
|
9
|
+
this.logger = options.logger;
|
|
10
|
+
}
|
|
11
|
+
async _transform(tail, _, cb) {
|
|
12
|
+
try {
|
|
13
|
+
tail = Buffer.concat([this.head, Buffer.from(tail)]);
|
|
14
|
+
const jsonData = JSON.parse(tail.toString());
|
|
15
|
+
cb(null, jsonData);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error instanceof SyntaxError) {
|
|
19
|
+
this.head = Buffer.from(tail);
|
|
20
|
+
this.logger.error(BufferToJsonTransform.errors.CONVERSION_ERROR, tail.toString());
|
|
21
|
+
cb();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
cb(error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.BufferToJsonTransform = BufferToJsonTransform;
|
|
29
|
+
BufferToJsonTransform.errors = {
|
|
30
|
+
CONVERSION_ERROR: 'Не удалось преобразовать данные',
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=BufferToJsonTransform.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonToBufferTransform = void 0;
|
|
4
|
+
const stream_1 = require("stream");
|
|
5
|
+
class JsonToBufferTransform extends stream_1.Transform {
|
|
6
|
+
transform(chunk, encoding, cb) {
|
|
7
|
+
cb(null, Buffer.from(JSON.stringify(chunk)));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.JsonToBufferTransform = JsonToBufferTransform;
|
|
11
|
+
//# sourceMappingURL=JsonToBufferTransform.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./JsonToBufferTransform"), exports);
|
|
18
|
+
__exportStar(require("./BufferToJsonTransform"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./Method"), exports);
|
|
|
20
20
|
__exportStar(require("./injector"), exports);
|
|
21
21
|
__exportStar(require("./Container"), exports);
|
|
22
22
|
__exportStar(require("./interfaces"), exports);
|
|
23
|
+
__exportStar(require("./StreamOptions"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Logs } from '@lad-tech/toolbelt';
|
|
4
|
+
import { Transform, TransformCallback, TransformOptions } from 'stream';
|
|
5
|
+
export declare class BufferToJsonTransform<T = any> extends Transform {
|
|
6
|
+
private head;
|
|
7
|
+
private static errors;
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(options: TransformOptions & {
|
|
10
|
+
logger: Logs.Logger;
|
|
11
|
+
});
|
|
12
|
+
_transform(tail: Buffer, _: BufferEncoding, cb: TransformCallback): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Transform, TransformCallback } from 'stream';
|
|
4
|
+
export declare class JsonToBufferTransform<T> extends Transform {
|
|
5
|
+
transform(chunk: T, encoding: BufferEncoding, cb: TransformCallback): void;
|
|
6
|
+
}
|
package/dist/types/index.d.ts
CHANGED