@naturalcycles/nodejs-lib 15.103.0 → 15.104.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.
@@ -11,6 +11,7 @@ export function transformChunk(chunkSize, opt) {
11
11
  let buf = [];
12
12
  return new Transform({
13
13
  objectMode: true,
14
+ highWaterMark: 1,
14
15
  ...opt,
15
16
  transform(chunk, _, cb) {
16
17
  buf.push(chunk);
@@ -16,6 +16,7 @@ export function transformFilterSync(predicate, opt = {}) {
16
16
  let index = 0;
17
17
  return new Transform({
18
18
  objectMode: true,
19
+ highWaterMark: 1,
19
20
  ...opt,
20
21
  transform(chunk, _, cb) {
21
22
  try {
@@ -2,6 +2,7 @@ import { Transform } from 'node:stream';
2
2
  export function transformFlatten() {
3
3
  return new Transform({
4
4
  objectMode: true,
5
+ highWaterMark: 1,
5
6
  transform(chunk, _, cb) {
6
7
  for (const item of chunk) {
7
8
  this.push(item);
@@ -13,6 +14,7 @@ export function transformFlatten() {
13
14
  export function transformFlattenIfNeeded() {
14
15
  return new Transform({
15
16
  objectMode: true,
17
+ highWaterMark: 1,
16
18
  transform(chunk, _, cb) {
17
19
  if (Array.isArray(chunk)) {
18
20
  for (const item of chunk) {
@@ -12,7 +12,7 @@ import { createReadable } from '../readable/createReadable.js';
12
12
  * @experimental
13
13
  */
14
14
  export function transformFork(fn, opt = {}) {
15
- const { objectMode = true, highWaterMark } = opt;
15
+ const { objectMode = true, highWaterMark = 1 } = opt;
16
16
  const logger = createCommonLoggerAtLevel(opt.logger, opt.logLevel);
17
17
  let lock;
18
18
  const fork = createReadable([], {}, () => {
@@ -2,7 +2,7 @@ import { Transform } from 'node:stream';
2
2
  import { PIPELINE_GRACEFUL_ABORT } from '../stream.util.js';
3
3
  import { transformNoOp } from './transformNoOp.js';
4
4
  export function transformLimit(opt) {
5
- const { limit, signal, objectMode = true, highWaterMark } = opt;
5
+ const { limit, signal, objectMode = true, highWaterMark = 1 } = opt;
6
6
  if (!limit) {
7
7
  return transformNoOp();
8
8
  }
@@ -11,7 +11,7 @@ import { ErrorMode } from '@naturalcycles/js-lib/error/errorMode.js';
11
11
  */
12
12
  export function transformMapSimple(mapper, opt = {}) {
13
13
  let index = -1;
14
- const { errorMode = ErrorMode.THROW_IMMEDIATELY, logger = console, objectMode = true, highWaterMark, } = opt;
14
+ const { errorMode = ErrorMode.THROW_IMMEDIATELY, logger = console, objectMode = true, highWaterMark = 1, } = opt;
15
15
  return new Transform({
16
16
  objectMode,
17
17
  highWaterMark,
@@ -20,6 +20,7 @@ export function transformMapSync(mapper, opt = {}) {
20
20
  const logger = createCommonLoggerAtLevel(opt.logger, opt.logLevel);
21
21
  return new Transform({
22
22
  objectMode,
23
+ highWaterMark: 1,
23
24
  ...opt,
24
25
  transform(chunk, _, cb) {
25
26
  // Stop processing if isSettled
@@ -7,6 +7,7 @@ import { Transform } from 'node:stream';
7
7
  export function transformNoOp() {
8
8
  return new Transform({
9
9
  objectMode: true,
10
+ highWaterMark: 1,
10
11
  transform(chunk, _, cb) {
11
12
  cb(null, chunk);
12
13
  },
@@ -9,6 +9,7 @@ export function transformOffset(opt) {
9
9
  let i = 0; // so we start first chunk with 1
10
10
  return new Transform({
11
11
  objectMode: true,
12
+ highWaterMark: 1,
12
13
  ...opt,
13
14
  transform(chunk, _, cb) {
14
15
  if (++i <= offset) {
@@ -20,7 +20,7 @@ import { pDefer } from '@naturalcycles/js-lib/promise/pDefer.js';
20
20
  * @experimental
21
21
  */
22
22
  export function transformThrottle(opt) {
23
- const { throughput, interval, objectMode = true, highWaterMark } = opt;
23
+ const { throughput, interval, objectMode = true, highWaterMark = 1 } = opt;
24
24
  let count = 0;
25
25
  let start;
26
26
  let lock;
@@ -15,7 +15,7 @@ import { pDefer } from '@naturalcycles/js-lib/promise/pDefer.js';
15
15
  */
16
16
  export function transformThrottleByRSS(opt) {
17
17
  const { maxRSS, pollInterval = 5000, pollTimeout = 30 * 60_000, // 30 min
18
- onPollTimeout = 'open-the-floodgates', objectMode = true, highWaterMark, } = opt;
18
+ onPollTimeout = 'open-the-floodgates', objectMode = true, highWaterMark = 1, } = opt;
19
19
  const maxRSSBytes = maxRSS * 1024 * 1024;
20
20
  let lock;
21
21
  let pollTimer;
@@ -12,7 +12,7 @@ import { pDefer } from '@naturalcycles/js-lib/promise/pDefer.js';
12
12
  * @experimental
13
13
  */
14
14
  export function transformWarmup(opt) {
15
- const { concurrency, warmupSeconds, objectMode = true, highWaterMark } = opt;
15
+ const { concurrency, warmupSeconds, objectMode = true, highWaterMark = 1 } = opt;
16
16
  const warmupMs = warmupSeconds * 1000;
17
17
  const logger = createCommonLoggerAtLevel(opt.logger, opt.logLevel);
18
18
  let startTime = 0;
@@ -1,11 +1,13 @@
1
1
  import type { ZlibOptions, ZstdOptions } from 'node:zlib';
2
2
  import type { Integer } from '@naturalcycles/js-lib/types';
3
3
  export declare function decompressZstdOrInflateToString(buf: Buffer): Promise<string>;
4
+ export declare function decompressZstdOrInflateToStringSync(buf: Buffer): string;
4
5
  /**
5
6
  * Detects if Buffer is zstd-compressed.
6
7
  * Otherwise attempts to Inflate.
7
8
  */
8
9
  export declare function decompressZstdOrInflate(buf: Buffer): Promise<Buffer<ArrayBuffer>>;
10
+ export declare function decompressZstdOrInflateSync(buf: Buffer): Buffer<ArrayBuffer>;
9
11
  /**
10
12
  * deflateBuffer uses `deflate`.
11
13
  * It's 9 bytes shorter than `gzip`.
@@ -9,6 +9,9 @@ const zstdDecompressAsync = promisify(zlib.zstdDecompress.bind(zlib));
9
9
  export async function decompressZstdOrInflateToString(buf) {
10
10
  return (await decompressZstdOrInflate(buf)).toString();
11
11
  }
12
+ export function decompressZstdOrInflateToStringSync(buf) {
13
+ return decompressZstdOrInflateSync(buf).toString();
14
+ }
12
15
  /**
13
16
  * Detects if Buffer is zstd-compressed.
14
17
  * Otherwise attempts to Inflate.
@@ -19,6 +22,12 @@ export async function decompressZstdOrInflate(buf) {
19
22
  }
20
23
  return await inflate(buf);
21
24
  }
25
+ export function decompressZstdOrInflateSync(buf) {
26
+ if (isZstdBuffer(buf)) {
27
+ return zlib.zstdDecompressSync(buf);
28
+ }
29
+ return zlib.inflateSync(buf);
30
+ }
22
31
  /**
23
32
  * deflateBuffer uses `deflate`.
24
33
  * It's 9 bytes shorter than `gzip`.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@naturalcycles/nodejs-lib",
3
3
  "type": "module",
4
- "version": "15.103.0",
4
+ "version": "15.104.0",
5
5
  "dependencies": {
6
6
  "@naturalcycles/js-lib": "^15",
7
7
  "@standard-schema/spec": "^1",
@@ -18,6 +18,7 @@ export function transformChunk<IN = any>(
18
18
 
19
19
  return new Transform({
20
20
  objectMode: true,
21
+ highWaterMark: 1,
21
22
  ...opt,
22
23
  transform(chunk, _, cb) {
23
24
  buf.push(chunk)
@@ -28,6 +28,7 @@ export function transformFilterSync<IN = any>(
28
28
 
29
29
  return new Transform({
30
30
  objectMode: true,
31
+ highWaterMark: 1,
31
32
  ...opt,
32
33
  transform(chunk: IN, _, cb) {
33
34
  try {
@@ -4,6 +4,7 @@ import type { TransformTyped } from '../stream.model.js'
4
4
  export function transformFlatten<T>(): TransformTyped<T[], T> {
5
5
  return new Transform({
6
6
  objectMode: true,
7
+ highWaterMark: 1,
7
8
  transform(chunk: T[], _, cb) {
8
9
  for (const item of chunk) {
9
10
  this.push(item)
@@ -16,6 +17,7 @@ export function transformFlatten<T>(): TransformTyped<T[], T> {
16
17
  export function transformFlattenIfNeeded<T>(): TransformTyped<T[], T> {
17
18
  return new Transform({
18
19
  objectMode: true,
20
+ highWaterMark: 1,
19
21
  transform(chunk: T[], _, cb) {
20
22
  if (Array.isArray(chunk)) {
21
23
  for (const item of chunk) {
@@ -18,7 +18,7 @@ export function transformFork<T>(
18
18
  fn: (pipeline: Pipeline<T>) => Promise<void>,
19
19
  opt: TransformOptions = {},
20
20
  ): TransformTyped<T, T> {
21
- const { objectMode = true, highWaterMark } = opt
21
+ const { objectMode = true, highWaterMark = 1 } = opt
22
22
  const logger = createCommonLoggerAtLevel(opt.logger, opt.logLevel)
23
23
 
24
24
  let lock: DeferredPromise | undefined
@@ -18,7 +18,7 @@ export interface TransformLimitOptions extends TransformOptions {
18
18
  }
19
19
 
20
20
  export function transformLimit<IN>(opt: TransformLimitOptions): TransformTyped<IN, IN> {
21
- const { limit, signal, objectMode = true, highWaterMark } = opt
21
+ const { limit, signal, objectMode = true, highWaterMark = 1 } = opt
22
22
 
23
23
  if (!limit) {
24
24
  return transformNoOp()
@@ -30,7 +30,7 @@ export function transformMapSimple<IN = any, OUT = IN>(
30
30
  errorMode = ErrorMode.THROW_IMMEDIATELY,
31
31
  logger = console,
32
32
  objectMode = true,
33
- highWaterMark,
33
+ highWaterMark = 1,
34
34
  } = opt
35
35
 
36
36
  return new Transform({
@@ -88,6 +88,7 @@ export function transformMapSync<IN = any, OUT = IN>(
88
88
 
89
89
  return new Transform({
90
90
  objectMode,
91
+ highWaterMark: 1,
91
92
  ...opt,
92
93
  transform(chunk: IN, _, cb) {
93
94
  // Stop processing if isSettled
@@ -9,6 +9,7 @@ import type { TransformTyped } from '../stream.model.js'
9
9
  export function transformNoOp<T = any>(): TransformTyped<T, T> {
10
10
  return new Transform({
11
11
  objectMode: true,
12
+ highWaterMark: 1,
12
13
  transform(chunk: T, _, cb) {
13
14
  cb(null, chunk)
14
15
  },
@@ -22,6 +22,7 @@ export function transformOffset<IN>(opt: TransformOffsetOptions): TransformTyped
22
22
  let i = 0 // so we start first chunk with 1
23
23
  return new Transform({
24
24
  objectMode: true,
25
+ highWaterMark: 1,
25
26
  ...opt,
26
27
  transform(chunk: IN, _, cb) {
27
28
  if (++i <= offset) {
@@ -40,7 +40,7 @@ export interface TransformThrottleOptions extends TransformOptions {
40
40
  * @experimental
41
41
  */
42
42
  export function transformThrottle<T>(opt: TransformThrottleOptions): TransformTyped<T, T> {
43
- const { throughput, interval, objectMode = true, highWaterMark } = opt
43
+ const { throughput, interval, objectMode = true, highWaterMark = 1 } = opt
44
44
 
45
45
  let count = 0
46
46
  let start: UnixTimestampMillis
@@ -60,7 +60,7 @@ export function transformThrottleByRSS<T>(
60
60
  pollTimeout = 30 * 60_000, // 30 min
61
61
  onPollTimeout = 'open-the-floodgates',
62
62
  objectMode = true,
63
- highWaterMark,
63
+ highWaterMark = 1,
64
64
  } = opt
65
65
 
66
66
  const maxRSSBytes = maxRSS * 1024 * 1024
@@ -29,7 +29,7 @@ export interface TransformWarmupOptions extends TransformOptions {
29
29
  * @experimental
30
30
  */
31
31
  export function transformWarmup<T>(opt: TransformWarmupOptions): TransformTyped<T, T> {
32
- const { concurrency, warmupSeconds, objectMode = true, highWaterMark } = opt
32
+ const { concurrency, warmupSeconds, objectMode = true, highWaterMark = 1 } = opt
33
33
  const warmupMs = warmupSeconds * 1000
34
34
  const logger = createCommonLoggerAtLevel(opt.logger, opt.logLevel)
35
35
 
@@ -14,6 +14,10 @@ export async function decompressZstdOrInflateToString(buf: Buffer): Promise<stri
14
14
  return (await decompressZstdOrInflate(buf)).toString()
15
15
  }
16
16
 
17
+ export function decompressZstdOrInflateToStringSync(buf: Buffer): string {
18
+ return decompressZstdOrInflateSync(buf).toString()
19
+ }
20
+
17
21
  /**
18
22
  * Detects if Buffer is zstd-compressed.
19
23
  * Otherwise attempts to Inflate.
@@ -25,6 +29,13 @@ export async function decompressZstdOrInflate(buf: Buffer): Promise<Buffer<Array
25
29
  return await inflate(buf)
26
30
  }
27
31
 
32
+ export function decompressZstdOrInflateSync(buf: Buffer): Buffer<ArrayBuffer> {
33
+ if (isZstdBuffer(buf)) {
34
+ return zlib.zstdDecompressSync(buf)
35
+ }
36
+ return zlib.inflateSync(buf)
37
+ }
38
+
28
39
  /**
29
40
  * deflateBuffer uses `deflate`.
30
41
  * It's 9 bytes shorter than `gzip`.