@n8n/expression-runtime 0.21.0 → 0.23.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/dist/cjs/bridge/bridge-messages.d.ts +8 -8
- package/dist/cjs/bridge/bridge-messages.js +234 -244
- package/dist/cjs/bridge/bridge-messages.js.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.js +633 -643
- package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/evaluator/error-classification.js +15 -25
- package/dist/cjs/evaluator/error-classification.js.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts +7 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +152 -155
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/evaluator/lru-cache.d.ts.map +1 -1
- package/dist/cjs/evaluator/lru-cache.js +35 -45
- package/dist/cjs/evaluator/lru-cache.js.map +1 -1
- package/dist/cjs/extensions/array-extensions.js +589 -599
- package/dist/cjs/extensions/array-extensions.js.map +1 -1
- package/dist/cjs/extensions/boolean-extensions.js +38 -48
- package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
- package/dist/cjs/extensions/date-extensions.js +500 -510
- package/dist/cjs/extensions/date-extensions.js.map +1 -1
- package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -1
- package/dist/cjs/extensions/expression-extension-error.js +12 -22
- package/dist/cjs/extensions/expression-extension-error.js.map +1 -1
- package/dist/cjs/extensions/extend.js +162 -172
- package/dist/cjs/extensions/extend.js.map +1 -1
- package/dist/cjs/extensions/extensions.js +2 -12
- package/dist/cjs/extensions/function-extensions.d.ts +10 -18
- package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/function-extensions.js +78 -88
- package/dist/cjs/extensions/function-extensions.js.map +1 -1
- package/dist/cjs/extensions/number-extensions.js +225 -235
- package/dist/cjs/extensions/number-extensions.js.map +1 -1
- package/dist/cjs/extensions/object-extensions.js +286 -296
- package/dist/cjs/extensions/object-extensions.js.map +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/string-extensions.js +758 -768
- package/dist/cjs/extensions/string-extensions.js.map +1 -1
- package/dist/cjs/extensions/utils.d.ts.map +1 -1
- package/dist/cjs/extensions/utils.js +28 -38
- package/dist/cjs/extensions/utils.js.map +1 -1
- package/dist/cjs/index.js +32 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/observability/metrics.d.ts +27 -27
- package/dist/cjs/observability/metrics.d.ts.map +1 -1
- package/dist/cjs/observability/metrics.js +59 -69
- package/dist/cjs/observability/metrics.js.map +1 -1
- package/dist/cjs/observability/noop-provider.js +28 -38
- package/dist/cjs/observability/noop-provider.js.map +1 -1
- package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -1
- package/dist/cjs/pool/idle-scaling-pool.js +134 -144
- package/dist/cjs/pool/idle-scaling-pool.js.map +1 -1
- package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
- package/dist/cjs/pool/isolate-pool.js +101 -111
- package/dist/cjs/pool/isolate-pool.js.map +1 -1
- package/dist/cjs/runtime/context.js +418 -428
- package/dist/cjs/runtime/context.js.map +1 -1
- package/dist/cjs/runtime/index.js +26 -36
- package/dist/cjs/runtime/index.js.map +1 -1
- package/dist/cjs/runtime/jmespath.js +72 -82
- package/dist/cjs/runtime/jmespath.js.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.js +238 -248
- package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
- package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
- package/dist/cjs/runtime/safe-globals.js +134 -144
- package/dist/cjs/runtime/safe-globals.js.map +1 -1
- package/dist/cjs/runtime/serialize.js +54 -64
- package/dist/cjs/runtime/serialize.js.map +1 -1
- package/dist/cjs/runtime/utils.js +20 -30
- package/dist/cjs/runtime/utils.js.map +1 -1
- package/dist/cjs/types/bridge.js +15 -25
- package/dist/cjs/types/bridge.js.map +1 -1
- package/dist/cjs/types/evaluator.d.ts +5 -1
- package/dist/cjs/types/evaluator.d.ts.map +1 -1
- package/dist/cjs/types/evaluator.js +35 -45
- package/dist/cjs/types/evaluator.js.map +1 -1
- package/dist/cjs/types/index.js +14 -24
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/runtime.d.ts.map +1 -1
- package/dist/cjs/types/runtime.js +27 -37
- package/dist/cjs/types/runtime.js.map +1 -1
- package/dist/esm/bridge/bridge-messages.d.ts +8 -8
- package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/esm/build.tsbuildinfo +1 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts +7 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +8 -1
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/evaluator/lru-cache.d.ts.map +1 -1
- package/dist/esm/evaluator/lru-cache.js.map +1 -1
- package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -1
- package/dist/esm/extensions/function-extensions.d.ts +10 -18
- package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/number-extensions.js.map +1 -1
- package/dist/esm/extensions/string-extensions.d.ts +1 -1
- package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/string-extensions.js.map +1 -1
- package/dist/esm/extensions/utils.d.ts.map +1 -1
- package/dist/esm/observability/metrics.d.ts +27 -27
- package/dist/esm/observability/metrics.d.ts.map +1 -1
- package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -1
- package/dist/esm/pool/idle-scaling-pool.js.map +1 -1
- package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
- package/dist/esm/pool/isolate-pool.js.map +1 -1
- package/dist/esm/runtime/lazy-proxy.js.map +1 -1
- package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
- package/dist/esm/types/evaluator.d.ts +5 -1
- package/dist/esm/types/evaluator.d.ts.map +1 -1
- package/dist/esm/types/evaluator.js.map +1 -1
- package/dist/esm/types/runtime.d.ts.map +1 -1
- package/dist/esm/types/runtime.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,309 +1,299 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.objectExtensions = void 0;
|
|
4
|
+
exports.compact = compact;
|
|
5
|
+
exports.urlEncode = urlEncode;
|
|
6
|
+
exports.toJsonString = toJsonString;
|
|
7
|
+
exports.toInt = toInt;
|
|
8
|
+
exports.toFloat = toFloat;
|
|
9
|
+
exports.toBoolean = toBoolean;
|
|
10
|
+
exports.toDateTime = toDateTime;
|
|
11
|
+
const expression_extension_error_1 = require("./expression-extension-error");
|
|
12
|
+
function isEmpty(value) {
|
|
13
|
+
return Object.keys(value).length === 0;
|
|
14
|
+
}
|
|
15
|
+
function isNotEmpty(value) {
|
|
16
|
+
return !isEmpty(value);
|
|
17
|
+
}
|
|
18
|
+
function keys(value) {
|
|
19
|
+
return Object.keys(value);
|
|
20
|
+
}
|
|
21
|
+
function values(value) {
|
|
22
|
+
return Object.values(value);
|
|
23
|
+
}
|
|
24
|
+
function hasField(value, extraArgs) {
|
|
25
|
+
const [name] = extraArgs;
|
|
26
|
+
return name in value;
|
|
27
|
+
}
|
|
28
|
+
function removeField(value, extraArgs) {
|
|
29
|
+
const [name] = extraArgs;
|
|
30
|
+
if (name in value) {
|
|
31
|
+
const newObject = { ...value };
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
33
|
+
delete newObject[name];
|
|
34
|
+
return newObject;
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
function removeFieldsContaining(value, extraArgs) {
|
|
39
|
+
const [match] = extraArgs;
|
|
40
|
+
if (typeof match !== 'string' || match === '') {
|
|
41
|
+
throw new expression_extension_error_1.ExpressionExtensionError('removeFieldsContaining(): expected non-empty string arg');
|
|
36
42
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
const newObject = { ...value };
|
|
43
|
+
const newObject = { ...value };
|
|
44
|
+
for (const [key, val] of Object.entries(value)) {
|
|
45
|
+
if (typeof val === 'string' && val.includes(match)) {
|
|
41
46
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
42
|
-
delete newObject[
|
|
43
|
-
return newObject;
|
|
47
|
+
delete newObject[key];
|
|
44
48
|
}
|
|
45
|
-
return value;
|
|
46
49
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
for (const [key, val] of Object.entries(value)) {
|
|
54
|
-
if (typeof val === 'string' && val.includes(match)) {
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
56
|
-
delete newObject[key];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return newObject;
|
|
50
|
+
return newObject;
|
|
51
|
+
}
|
|
52
|
+
function keepFieldsContaining(value, extraArgs) {
|
|
53
|
+
const [match] = extraArgs;
|
|
54
|
+
if (typeof match !== 'string' || match === '') {
|
|
55
|
+
throw new expression_extension_error_1.ExpressionExtensionError('argument of keepFieldsContaining must be a non-empty string');
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (typeof
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const newObject = { ...value };
|
|
67
|
-
for (const [key, val] of Object.entries(value)) {
|
|
68
|
-
if (typeof val !== 'string' || (typeof val === 'string' && !val.includes(match))) {
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
70
|
-
delete newObject[key];
|
|
71
|
-
}
|
|
57
|
+
const newObject = { ...value };
|
|
58
|
+
for (const [key, val] of Object.entries(value)) {
|
|
59
|
+
if (typeof val !== 'string' || (typeof val === 'string' && !val.includes(match))) {
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
61
|
+
delete newObject[key];
|
|
72
62
|
}
|
|
73
|
-
return newObject;
|
|
74
63
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
64
|
+
return newObject;
|
|
65
|
+
}
|
|
66
|
+
function compact(value) {
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
const newObj = {};
|
|
69
|
+
for (const [key, val] of Object.entries(value)) {
|
|
70
|
+
if (val !== null && val !== undefined && val !== 'nil' && val !== '') {
|
|
71
|
+
if (typeof val === 'object') {
|
|
72
|
+
if (Object.keys(val).length === 0)
|
|
73
|
+
continue;
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument
|
|
75
|
+
newObj[key] = compact(val);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
79
|
+
newObj[key] = val;
|
|
90
80
|
}
|
|
91
81
|
}
|
|
92
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
93
|
-
return newObj;
|
|
94
|
-
}
|
|
95
|
-
// DIVERGENCE from packages/workflow/src/extensions/object-extensions.ts:
|
|
96
|
-
// The original uses URLSearchParams which is a Web API unavailable inside the
|
|
97
|
-
// V8 isolate. encodeURIComponent is an ECMAScript built-in available in all
|
|
98
|
-
// V8 contexts, but it doesn't encode !'()~ which WHATWG requires. The extra
|
|
99
|
-
// replace step covers those characters to match URLSearchParams output.
|
|
100
|
-
function whatwgEncode(str) {
|
|
101
|
-
return encodeURIComponent(str)
|
|
102
|
-
.replace(/%20/g, '+')
|
|
103
|
-
.replace(/[!'()~]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
|
|
104
82
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
{
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
{
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
],
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
keepFieldsContaining,
|
|
297
|
-
compact,
|
|
298
|
-
urlEncode,
|
|
299
|
-
keys,
|
|
300
|
-
values,
|
|
301
|
-
toJsonString,
|
|
302
|
-
toInt,
|
|
303
|
-
toFloat,
|
|
304
|
-
toBoolean,
|
|
305
|
-
toDateTime,
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
84
|
+
return newObj;
|
|
85
|
+
}
|
|
86
|
+
// DIVERGENCE from packages/workflow/src/extensions/object-extensions.ts:
|
|
87
|
+
// The original uses URLSearchParams which is a Web API unavailable inside the
|
|
88
|
+
// V8 isolate. encodeURIComponent is an ECMAScript built-in available in all
|
|
89
|
+
// V8 contexts, but it doesn't encode !'()~ which WHATWG requires. The extra
|
|
90
|
+
// replace step covers those characters to match URLSearchParams output.
|
|
91
|
+
function whatwgEncode(str) {
|
|
92
|
+
return encodeURIComponent(str)
|
|
93
|
+
.replace(/%20/g, '+')
|
|
94
|
+
.replace(/[!'()~]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
|
|
95
|
+
}
|
|
96
|
+
function urlEncode(value) {
|
|
97
|
+
return Object.entries(value)
|
|
98
|
+
.map(([k, v]) => whatwgEncode(k) + '=' + whatwgEncode(String(v)))
|
|
99
|
+
.join('&');
|
|
100
|
+
}
|
|
101
|
+
function toJsonString(value) {
|
|
102
|
+
return JSON.stringify(value);
|
|
103
|
+
}
|
|
104
|
+
function toInt() {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
function toFloat() {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
function toBoolean() {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
function toDateTime() {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
isEmpty.doc = {
|
|
117
|
+
name: 'isEmpty',
|
|
118
|
+
description: 'Returns <code>true</code> if the Object has no keys (fields) set or is <code>null</code>',
|
|
119
|
+
examples: [
|
|
120
|
+
{ example: "({'name': 'Nathan'}).isEmpty()", evaluated: 'false' },
|
|
121
|
+
{ example: '({}).isEmpty()', evaluated: 'true' },
|
|
122
|
+
],
|
|
123
|
+
returnType: 'boolean',
|
|
124
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-isEmpty',
|
|
125
|
+
};
|
|
126
|
+
isNotEmpty.doc = {
|
|
127
|
+
name: 'isNotEmpty',
|
|
128
|
+
description: 'Returns <code>true</code> if the Object has at least one key (field) set',
|
|
129
|
+
examples: [
|
|
130
|
+
{ example: "({'name': 'Nathan'}).isNotEmpty()", evaluated: 'true' },
|
|
131
|
+
{ example: '({}).isNotEmpty()', evaluated: 'false' },
|
|
132
|
+
],
|
|
133
|
+
returnType: 'boolean',
|
|
134
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-isNotEmpty',
|
|
135
|
+
};
|
|
136
|
+
compact.doc = {
|
|
137
|
+
name: 'compact',
|
|
138
|
+
description: 'Removes all fields that have empty values, i.e. are <code>null</code>, <code>undefined</code>, <code>"nil"</code> or <code>""</code>',
|
|
139
|
+
examples: [{ example: "({ x: null, y: 2, z: '' }).compact()", evaluated: '{ y: 2 }' }],
|
|
140
|
+
returnType: 'Object',
|
|
141
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-compact',
|
|
142
|
+
};
|
|
143
|
+
urlEncode.doc = {
|
|
144
|
+
name: 'urlEncode',
|
|
145
|
+
description: "Generates a URL parameter string from the Object's keys and values. Only top-level keys are supported.",
|
|
146
|
+
examples: [
|
|
147
|
+
{
|
|
148
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi' }).urlEncode()",
|
|
149
|
+
evaluated: "'name=Mr+Nathan&city=hanoi'",
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
returnType: 'string',
|
|
153
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-urlEncode',
|
|
154
|
+
};
|
|
155
|
+
hasField.doc = {
|
|
156
|
+
name: 'hasField',
|
|
157
|
+
description: 'Returns <code>true</code> if there is a field called <code>name</code>. Only checks top-level keys. Comparison is case-sensitive.',
|
|
158
|
+
examples: [
|
|
159
|
+
{ example: "({ name: 'Nathan', age: 42 }).hasField('name')", evaluated: 'true' },
|
|
160
|
+
{ example: "({ name: 'Nathan', age: 42 }).hasField('Name')", evaluated: 'false' },
|
|
161
|
+
{ example: "({ name: 'Nathan', age: 42 }).hasField('inventedField')", evaluated: 'false' },
|
|
162
|
+
],
|
|
163
|
+
returnType: 'boolean',
|
|
164
|
+
args: [
|
|
165
|
+
{
|
|
166
|
+
name: 'name',
|
|
167
|
+
optional: false,
|
|
168
|
+
description: 'The name of the key to search for',
|
|
169
|
+
type: 'string',
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-hasField',
|
|
173
|
+
};
|
|
174
|
+
removeField.doc = {
|
|
175
|
+
name: 'removeField',
|
|
176
|
+
aliases: ['delete'],
|
|
177
|
+
description: "Removes a field from the Object. The same as JavaScript's <code>delete</code>.",
|
|
178
|
+
examples: [
|
|
179
|
+
{
|
|
180
|
+
example: "({ name: 'Nathan', city: 'hanoi' }).removeField('name')",
|
|
181
|
+
evaluated: "{ city: 'hanoi' }",
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
returnType: 'Object',
|
|
185
|
+
args: [
|
|
186
|
+
{
|
|
187
|
+
name: 'key',
|
|
188
|
+
optional: false,
|
|
189
|
+
description: 'The name of the field to remove',
|
|
190
|
+
type: 'string',
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-removeField',
|
|
194
|
+
};
|
|
195
|
+
removeFieldsContaining.doc = {
|
|
196
|
+
name: 'removeFieldsContaining',
|
|
197
|
+
description: "Removes keys (fields) whose values at least partly match the given <code>value</code>. Comparison is case-sensitive. Fields that aren't strings are always kept.",
|
|
198
|
+
examples: [
|
|
199
|
+
{
|
|
200
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).removeFieldsContaining('Nathan')",
|
|
201
|
+
evaluated: "{ city: 'hanoi', age: 42 }",
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).removeFieldsContaining('Han')",
|
|
205
|
+
evaluated: '{ age: 42 }',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).removeFieldsContaining('nathan')",
|
|
209
|
+
evaluated: "{ name: 'Mr Nathan', city: 'hanoi', age: 42 }",
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
returnType: 'Object',
|
|
213
|
+
args: [
|
|
214
|
+
{
|
|
215
|
+
name: 'value',
|
|
216
|
+
optional: false,
|
|
217
|
+
description: 'The text that a value must contain in order to be removed',
|
|
218
|
+
type: 'string',
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-removeFieldsContaining',
|
|
222
|
+
};
|
|
223
|
+
keepFieldsContaining.doc = {
|
|
224
|
+
name: 'keepFieldsContaining',
|
|
225
|
+
description: "Removes any fields whose values don't at least partly match the given <code>value</code>. Comparison is case-sensitive. Fields that aren't strings will always be removed.",
|
|
226
|
+
examples: [
|
|
227
|
+
{
|
|
228
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).keepFieldsContaining('Nathan')",
|
|
229
|
+
evaluated: "{ name: 'Mr Nathan' }",
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).keepFieldsContaining('nathan')",
|
|
233
|
+
evaluated: '{}',
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
example: "({ name: 'Mr Nathan', city: 'hanoi', age: 42 }).keepFieldsContaining('han')",
|
|
237
|
+
evaluated: "{ name: 'Mr Nathan', city: 'hanoi' }",
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
returnType: 'Object',
|
|
241
|
+
args: [
|
|
242
|
+
{
|
|
243
|
+
name: 'value',
|
|
244
|
+
optional: false,
|
|
245
|
+
description: 'The text that a value must contain in order to be kept',
|
|
246
|
+
type: 'string',
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-keepFieldsContaining',
|
|
250
|
+
};
|
|
251
|
+
keys.doc = {
|
|
252
|
+
name: 'keys',
|
|
253
|
+
description: "Returns an array with all the field names (keys) the Object contains. The same as JavaScript's <code>Object.keys(obj)</code>.",
|
|
254
|
+
examples: [{ example: "({ name: 'Mr Nathan', age: 42 }).keys()", evaluated: "['name', 'age']" }],
|
|
255
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-keys',
|
|
256
|
+
returnType: 'Array',
|
|
257
|
+
};
|
|
258
|
+
values.doc = {
|
|
259
|
+
name: 'values',
|
|
260
|
+
description: "Returns an array with all the values of the fields the Object contains. The same as JavaScript's <code>Object.values(obj)</code>.",
|
|
261
|
+
examples: [
|
|
262
|
+
{ example: "({ name: 'Mr Nathan', age: 42 }).values()", evaluated: "['Mr Nathan', 42]" },
|
|
263
|
+
],
|
|
264
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-values',
|
|
265
|
+
returnType: 'Array',
|
|
266
|
+
};
|
|
267
|
+
toJsonString.doc = {
|
|
268
|
+
name: 'toJsonString',
|
|
269
|
+
description: "Converts the Object to a JSON string. Similar to JavaScript's <code>JSON.stringify()</code>.",
|
|
270
|
+
examples: [
|
|
271
|
+
{
|
|
272
|
+
example: "({ name: 'Mr Nathan', age: 42 }).toJsonString()",
|
|
273
|
+
evaluated: '\'{"name":"Nathan","age":42}\'',
|
|
306
274
|
},
|
|
307
|
-
|
|
308
|
-
|
|
275
|
+
],
|
|
276
|
+
docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/objects/#object-toJsonString',
|
|
277
|
+
returnType: 'string',
|
|
278
|
+
};
|
|
279
|
+
exports.objectExtensions = {
|
|
280
|
+
typeName: 'Object',
|
|
281
|
+
functions: {
|
|
282
|
+
isEmpty,
|
|
283
|
+
isNotEmpty,
|
|
284
|
+
hasField,
|
|
285
|
+
removeField,
|
|
286
|
+
removeFieldsContaining,
|
|
287
|
+
keepFieldsContaining,
|
|
288
|
+
compact,
|
|
289
|
+
urlEncode,
|
|
290
|
+
keys,
|
|
291
|
+
values,
|
|
292
|
+
toJsonString,
|
|
293
|
+
toInt,
|
|
294
|
+
toFloat,
|
|
295
|
+
toBoolean,
|
|
296
|
+
toDateTime,
|
|
297
|
+
},
|
|
298
|
+
};
|
|
309
299
|
//# sourceMappingURL=object-extensions.js.map
|