Skip to content

Commit dbfa3ab

Browse files
committed
chore: add Object.Truncate
1 parent e830d0b commit dbfa3ab

File tree

3 files changed

+99
-23
lines changed

3 files changed

+99
-23
lines changed

package-lock.json

Lines changed: 36 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"dependencies": {
2727
"@nodescript/base64": "^1.1.1",
2828
"@nodescript/buffer-utils": "^1.5.0",
29-
"@nodescript/core": "^7.22.0"
29+
"@nodescript/core": "^7.22.0",
30+
"@nodescript/object-trim": "^1.1.0"
3031
},
3132
"devDependencies": {
3233
"@nodescript/cli": "^1.8.0",

src/nodes/Object.Truncate.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { ModuleCompute, ModuleDefinition } from '@nodescript/core/types';
2+
import { objectTrim } from '@nodescript/object-trim';
3+
4+
type P = {
5+
object: unknown;
6+
maxArrayLength: number;
7+
maxStringLength: number;
8+
maxObjectFields: number;
9+
maxTotalFields: number;
10+
addPlaceholders: boolean;
11+
stringAbbrSymbol: string;
12+
};
13+
14+
type R = unknown;
15+
16+
export const module: ModuleDefinition<P, R> = {
17+
version: '1.0.1',
18+
moduleName: 'Object / Truncate',
19+
description: `
20+
Recursively truncates the object to meet specified constraints.
21+
`,
22+
params: {
23+
object: {
24+
schema: { type: 'any' },
25+
},
26+
maxArrayLength: {
27+
schema: { type: 'number', default: 10 },
28+
},
29+
maxStringLength: {
30+
schema: { type: 'number', default: 100 },
31+
},
32+
maxObjectFields: {
33+
schema: { type: 'number', default: 10 },
34+
},
35+
maxTotalFields: {
36+
schema: { type: 'number', default: 100 },
37+
},
38+
addPlaceholders: {
39+
schema: { type: 'boolean', default: true },
40+
advanced: true,
41+
},
42+
stringAbbrSymbol: {
43+
schema: { type: 'string', default: '...' },
44+
advanced: true,
45+
},
46+
},
47+
result: {
48+
schema: { type: 'any' },
49+
},
50+
};
51+
52+
export const compute: ModuleCompute<P, R> = params => {
53+
return objectTrim(params.object, {
54+
addPlaceholders: params.addPlaceholders,
55+
stringAbbrSymbol: params.stringAbbrSymbol,
56+
maxArrayLength: params.maxArrayLength,
57+
maxStringLength: params.maxStringLength,
58+
maxObjectFields: params.maxObjectFields,
59+
maxTotalFields: params.maxTotalFields,
60+
});
61+
};

0 commit comments

Comments
 (0)