@platforma-sdk/workflow-tengo 2.14.0 → 2.15.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/README.md +17 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/index.mjs +3 -1
- package/dist/tengo/lib/assets.lib.tengo +28 -28
- package/dist/tengo/lib/assets.swinfo.lib.tengo +24 -24
- package/dist/tengo/lib/constants.lib.tengo +6 -3
- package/dist/tengo/lib/exec.R.internal.lib.tengo +2 -2
- package/dist/tengo/lib/exec.R.lib.tengo +41 -41
- package/dist/tengo/lib/exec.descriptor.lib.tengo +3 -3
- package/dist/tengo/lib/exec.internal.lib.tengo +41 -41
- package/dist/tengo/lib/exec.lib.tengo +289 -289
- package/dist/tengo/lib/exec.limits.lib.tengo +49 -49
- package/dist/tengo/lib/exec.monetization.lib.tengo +1 -1
- package/dist/tengo/lib/exec.monetization_internal.lib.tengo +38 -38
- package/dist/tengo/lib/exec.package.lib.tengo +53 -53
- package/dist/tengo/lib/exec.python.internal.lib.tengo +1 -1
- package/dist/tengo/lib/exec.python.lib.tengo +37 -37
- package/dist/tengo/lib/exec.runcmd.lib.tengo +138 -138
- package/dist/tengo/lib/exec.runenv.lib.tengo +18 -18
- package/dist/tengo/lib/exec.stream.lib.tengo +25 -25
- package/dist/tengo/lib/feats.lib.tengo +3 -3
- package/dist/tengo/lib/file.internal.lib.tengo +31 -31
- package/dist/tengo/lib/file.lib.tengo +29 -29
- package/dist/tengo/lib/ll.get-future-field-default.lib.tengo +137 -0
- package/dist/tengo/lib/ll.lib.tengo +129 -129
- package/dist/tengo/lib/maps.lib.tengo +38 -38
- package/dist/tengo/lib/objects.lib.tengo +6 -6
- package/dist/tengo/lib/oop.lib.tengo +11 -11
- package/dist/tengo/lib/path.lib.tengo +60 -60
- package/dist/tengo/lib/pframes.builder.lib.tengo +3 -3
- package/dist/tengo/lib/pframes.constants.lib.tengo +20 -20
- package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +5 -5
- package/dist/tengo/lib/pframes.lib.tengo +206 -198
- package/dist/tengo/lib/pframes.ll.lib.tengo +59 -59
- package/dist/tengo/lib/pframes.pcolumn.lib.tengo +18 -18
- package/dist/tengo/lib/pframes.remove-nulls.lib.tengo +36 -0
- package/dist/tengo/lib/pframes.spec.lib.tengo +83 -83
- package/dist/tengo/lib/pframes.util.lib.tengo +176 -176
- package/dist/tengo/lib/pframes.xsv-import-file.lib.tengo +160 -0
- package/dist/tengo/lib/pframes.xsv.lib.tengo +84 -167
- package/dist/tengo/lib/render.lib.tengo +100 -45
- package/dist/tengo/lib/sets.lib.tengo +44 -44
- package/dist/tengo/lib/slices.lib.tengo +126 -126
- package/dist/tengo/lib/smart.lib.tengo +654 -507
- package/dist/tengo/lib/test.lib.tengo +120 -120
- package/dist/tengo/lib/tpl.lib.tengo +206 -170
- package/dist/tengo/lib/tpl.state-await.lib.tengo +17 -17
- package/dist/tengo/lib/tpl.util.lib.tengo +5 -5
- package/dist/tengo/lib/units.lib.tengo +2 -2
- package/dist/tengo/lib/validation.lib.tengo +130 -130
- package/dist/tengo/lib/waiter.lib.tengo +13 -13
- package/dist/tengo/lib/workdir.lib.tengo +126 -126
- package/dist/tengo/lib/workdir.proc.lib.tengo +47 -47
- package/dist/tengo/lib/workdir.save.lib.tengo +53 -53
- package/dist/tengo/lib/workflow.bobject.lib.tengo +11 -11
- package/dist/tengo/lib/workflow.bquery.lib.tengo +40 -40
- package/dist/tengo/lib/workflow.constants.lib.tengo +1 -1
- package/dist/tengo/lib/workflow.context.lib.tengo +16 -16
- package/dist/tengo/lib/workflow.lib.tengo +76 -76
- package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
- package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
- package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
- package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
- package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
- package/dist/tengo/tpl/ll.get-field.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.process-pcolumn-data.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.remove-nulls.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-import-if-not-null.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
- package/dist/tengo/tpl/waiter.waiter.plj.gz +0 -0
- package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
- package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
- package/package.json +2 -2
- package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
|
|
3
3
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
TEMPLATE_FIELD := "template"
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
INPUTS_MAP_FIELD := "inputs"
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
TEMPLATE_OUTPUT_PREFIX := "outputs/"
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
PREPARE_MAP_FIELD_NAME := "__prepare__"
|
|
13
13
|
|
|
14
14
|
export ll.toStrict({
|
|
@@ -7,9 +7,9 @@ smart := import("@platforma-sdk/workflow-tengo:smart")
|
|
|
7
7
|
|
|
8
8
|
json := import("json")
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
13
|
|
|
14
14
|
_formatKeyPath := func(current, format, key) {
|
|
15
15
|
if current == "" {
|
|
@@ -23,18 +23,18 @@ _formatKeyPath := func(current, format, key) {
|
|
|
23
23
|
return fmt.sprintf(format, current, key)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
29
|
success := { result: true }
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
38
|
fail := func(keyPath, msg, ...args) {
|
|
39
39
|
return {
|
|
40
40
|
result: false,
|
|
@@ -46,23 +46,23 @@ isSuccess := func(r) {
|
|
|
46
46
|
return r.result == true
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
54
|
isFail := func(r) {
|
|
55
55
|
return r.result == false
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
66
|
check := func(condition, keyPath, msg, ...args) {
|
|
67
67
|
if condition {
|
|
68
68
|
return success
|
|
@@ -71,17 +71,17 @@ check := func(condition, keyPath, msg, ...args) {
|
|
|
71
71
|
return fail(keyPath, msg, args...)
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
85
|
_validateTypes := func(js, tags, keyPath, ...stack) {
|
|
86
86
|
k := tags.key
|
|
87
87
|
|
|
@@ -125,12 +125,12 @@ _validateTypes := func(js, tags, keyPath, ...stack) {
|
|
|
125
125
|
return fail(keyPath, "js %q is not one of a type: %s", js, tags.key)
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
134
|
_parseTags := func(rule) {
|
|
135
135
|
tagsKV := text.split(rule, ",")
|
|
136
136
|
key := tagsKV[0]
|
|
@@ -153,14 +153,14 @@ _parseTags := func(rule) {
|
|
|
153
153
|
})
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
164
|
_validateJson := func(js, schema, keyPath, ...stack) {
|
|
165
165
|
if is_undefined(schema) {
|
|
166
166
|
if len(stack) == 0 {
|
|
@@ -170,8 +170,8 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
170
170
|
return fail(keyPath, "key is not defined by schema, but exists in the JSON. Validated item: %#v", stack[0])
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
|
|
174
|
+
|
|
175
175
|
if is_string(schema) {
|
|
176
176
|
if schema == "any" {
|
|
177
177
|
return success
|
|
@@ -181,16 +181,16 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
181
181
|
return _validateTypes(js, tags, keyPath, stack...)
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
187
|
if is_callable(schema) {
|
|
188
188
|
return schema(js, keyPath, stack)
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
194
|
if is_array(schema) && len(schema) > 0 && schema[0] == "or" {
|
|
195
195
|
for i, elem in schema[1:] {
|
|
196
196
|
r := _validateJson(js, elem, keyPath, stack...)
|
|
@@ -202,9 +202,9 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
202
202
|
return fail(keyPath, "js %q does not fit any of the following rules: %q", js, schema)
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
208
|
if is_array(schema) {
|
|
209
209
|
if !is_array(js) {
|
|
210
210
|
return fail(keyPath, "js %q must be array", js)
|
|
@@ -221,19 +221,19 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
221
221
|
return success
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
228
|
if !ll.isMap(js) {
|
|
229
229
|
return fail(keyPath, "js %#v must be map", js)
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
schemaTags := {}
|
|
234
|
-
|
|
234
|
+
|
|
235
235
|
schemaRules := {}
|
|
236
|
-
|
|
236
|
+
|
|
237
237
|
jsFull := {}
|
|
238
238
|
|
|
239
239
|
for k, v in schema {
|
|
@@ -243,7 +243,7 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
243
243
|
jsFull[p.key] = undefined
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
|
|
247
247
|
any := schemaTags["any"]
|
|
248
248
|
if !is_undefined(any) {
|
|
249
249
|
if is_undefined(jsFull["any"]) { // in case actual object has field named "any"
|
|
@@ -262,7 +262,7 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
|
|
266
266
|
for k, v in js {
|
|
267
267
|
jsFull[k] = v
|
|
268
268
|
}
|
|
@@ -284,7 +284,7 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
284
284
|
continue
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
|
|
287
|
+
|
|
288
288
|
key := schemaTags[_key]
|
|
289
289
|
|
|
290
290
|
if is_undefined(key) {
|
|
@@ -318,51 +318,51 @@ _validateJson := func(js, schema, keyPath, ...stack) {
|
|
|
318
318
|
return success
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
328
|
checkJson := func(js, schema) {
|
|
329
329
|
return _validateJson(js, schema, "")
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
339
|
isValid := func(js, schema) {
|
|
340
340
|
return _validateJson(js, schema, "").result
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
346
|
assert := func(condition, msg, ...args) {
|
|
347
347
|
ll.assert(condition, msg, args...)
|
|
348
348
|
}
|
|
349
349
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
366
|
assertType := func(value, schema, ...failMsg) {
|
|
367
367
|
r := _validateJson(value, schema, "")
|
|
368
368
|
|
|
@@ -376,22 +376,22 @@ assertType := func(value, schema, ...failMsg) {
|
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
382
|
assertJsonSchema := func(js, schema, ...failMsg) {
|
|
383
383
|
assertType(js, schema, failMsg...)
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
//
|
|
387
|
-
// Domain-specific schemas and checks:
|
|
388
|
-
//
|
|
389
386
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
395
|
resource := func(...args) {
|
|
396
396
|
|
|
397
397
|
ops := {}
|
|
@@ -428,30 +428,30 @@ resource := func(...args) {
|
|
|
428
428
|
return checker
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
436
|
resourceType := func(rt) {
|
|
437
437
|
return func(elem, keyPath, stack) {
|
|
438
438
|
return check(smart.isResource(elem) && elem.info().Type.Name == rt.Name, keyPath, "the element " + elem + " must be a resource")
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
448
|
reference := func(elem, keyPath, stack) {
|
|
449
449
|
return check(smart.isReference(elem), keyPath, "the element " + elem + " must be a resource or a field")
|
|
450
450
|
}
|
|
451
451
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
455
|
refSchema := {
|
|
456
456
|
blockId: `string`,
|
|
457
457
|
name: `string`
|
|
@@ -6,25 +6,25 @@ assets := import("@platforma-sdk/workflow-tengo:assets")
|
|
|
6
6
|
|
|
7
7
|
waiterTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:waiter.waiter")
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
15
|
builder := func(pass) {
|
|
16
16
|
self := undefined
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
whatToWait := []
|
|
20
20
|
|
|
21
21
|
self = ll.toStrict({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
28
|
wait: func(ref) {
|
|
29
29
|
validation.assertJsonSchema(ref, validation.reference, "waiter.builder.wait(ref): ref should be a reference to resource or field")
|
|
30
30
|
whatToWait = append(whatToWait, ref)
|