@platforma-sdk/workflow-tengo 2.8.4 → 2.8.6
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/tengo/lib/assets.lib.tengo +6 -0
- package/dist/tengo/lib/constants.lib.tengo +3 -0
- package/dist/tengo/lib/exec.R.lib.tengo +8 -0
- package/dist/tengo/lib/exec.internal.lib.tengo +12 -0
- package/dist/tengo/lib/exec.lib.tengo +67 -0
- package/dist/tengo/lib/exec.package.lib.tengo +9 -0
- package/dist/tengo/lib/exec.python.internal.lib.tengo +1 -0
- package/dist/tengo/lib/exec.python.lib.tengo +8 -0
- package/dist/tengo/lib/exec.runcmd.lib.tengo +19 -0
- package/dist/tengo/lib/exec.runenv.lib.tengo +4 -0
- package/dist/tengo/lib/exec.stream.lib.tengo +4 -0
- package/dist/tengo/lib/file.internal.lib.tengo +7 -0
- package/dist/tengo/lib/file.lib.tengo +3 -0
- package/dist/tengo/lib/ll.lib.tengo +24 -0
- package/dist/tengo/lib/maps.lib.tengo +8 -0
- package/dist/tengo/lib/objects.lib.tengo +2 -0
- package/dist/tengo/lib/oop.lib.tengo +3 -0
- package/dist/tengo/lib/path.lib.tengo +9 -0
- package/dist/tengo/lib/pframes.constants.lib.tengo +3 -0
- package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +5 -0
- package/dist/tengo/lib/pframes.lib.tengo +5 -0
- package/dist/tengo/lib/pframes.ll.lib.tengo +2 -0
- package/dist/tengo/lib/pframes.pcolumn.lib.tengo +4 -0
- package/dist/tengo/lib/pframes.spec.lib.tengo +26 -0
- package/dist/tengo/lib/pframes.util.lib.tengo +134 -0
- package/dist/tengo/lib/pframes.xsv.lib.tengo +12 -0
- package/dist/tengo/lib/render.lib.tengo +10 -0
- package/dist/tengo/lib/sets.lib.tengo +7 -0
- package/dist/tengo/lib/slices.lib.tengo +11 -0
- package/dist/tengo/lib/smart.lib.tengo +114 -1
- package/dist/tengo/lib/test.lib.tengo +32 -0
- package/dist/tengo/lib/tpl.lib.tengo +68 -0
- package/dist/tengo/lib/tpl.state-await.lib.tengo +14 -0
- package/dist/tengo/lib/tpl.util.lib.tengo +5 -0
- package/dist/tengo/lib/validation.lib.tengo +44 -0
- package/dist/tengo/lib/workdir.lib.tengo +22 -0
- package/dist/tengo/lib/workdir.proc.lib.tengo +18 -0
- package/dist/tengo/lib/workdir.save.lib.tengo +17 -0
- package/dist/tengo/lib/workflow.bobject.lib.tengo +5 -0
- package/dist/tengo/lib/workflow.bquery.lib.tengo +25 -0
- package/dist/tengo/lib/workflow.constants.lib.tengo +1 -0
- package/dist/tengo/lib/workflow.context.lib.tengo +5 -0
- package/dist/tengo/lib/workflow.lib.tengo +39 -0
- 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.python.create-venv.plj.gz +0 -0
- package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.aggregate.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.map-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-import-map.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 +3 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
5
6
|
oop := import("@platforma-sdk/workflow-tengo:oop")
|
|
6
7
|
smart := import("@platforma-sdk/workflow-tengo:smart")
|
|
@@ -11,18 +12,21 @@ constants := import("@platforma-sdk/workflow-tengo:pframes.constants")
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
15
|
+
|
|
14
16
|
exportFrame := func(pf) {
|
|
15
17
|
return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-pframe"), { pf: pf }).output("result")
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
|
|
22
|
+
|
|
20
23
|
exportColumnData := func(data) {
|
|
21
24
|
return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-single-pcolumn"), { data: data }).output("result")
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
|
|
29
|
+
|
|
26
30
|
pFrameBuilder := func() {
|
|
27
31
|
r := smart.structBuilder(constants.RTYPE_P_FRAME)
|
|
28
32
|
|
|
@@ -48,6 +52,7 @@ return self
|
|
|
48
52
|
|
|
49
53
|
|
|
50
54
|
|
|
55
|
+
|
|
51
56
|
pColumnResourceMapDataBuilder := func(keyLength) {
|
|
52
57
|
ll.panic("pframes.pColumnResourceMapDataBuilder is not supported any more; use pcolumn.resourceMapBuilder")
|
|
53
58
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
5
6
|
assets := import("@platforma-sdk/workflow-tengo:assets")
|
|
6
7
|
smart := import("@platforma-sdk/workflow-tengo:smart")
|
|
@@ -53,6 +54,7 @@ llAggTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.aggrega
|
|
|
53
54
|
|
|
54
55
|
|
|
55
56
|
|
|
57
|
+
|
|
56
58
|
|
|
57
59
|
|
|
58
60
|
aggregate := func(data, indices, bodyTpl, outputs, isEph, ...extra) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
5
6
|
oop := import("@platforma-sdk/workflow-tengo:oop")
|
|
6
7
|
json := import("json")
|
|
@@ -9,6 +10,7 @@ constants := import("@platforma-sdk/workflow-tengo:pframes.constants")
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
13
|
+
|
|
12
14
|
isResourceMap := func(r) {
|
|
13
15
|
return smart.isResource(r) && r.info().Type.Name == constants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP.Name
|
|
14
16
|
}
|
|
@@ -17,6 +19,7 @@ return smart.isResource(r) && r.info().Type.Name == constants.RTYPE_P_COLUMN_DAT
|
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
|
|
22
|
+
|
|
20
23
|
resourceMapBuilder := func(keyLength) {
|
|
21
24
|
r := smart.structBuilder(
|
|
22
25
|
constants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP,
|
|
@@ -46,6 +49,7 @@ return self
|
|
|
46
49
|
|
|
47
50
|
|
|
48
51
|
|
|
52
|
+
|
|
49
53
|
fromMap := func(map, keyLength, keyParser) {
|
|
50
54
|
b := resourceMapBuilder(keyLength)
|
|
51
55
|
|
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
7
8
|
maps := import("@platforma-sdk/workflow-tengo:maps")
|
|
8
9
|
validation := import("@platforma-sdk/workflow-tengo:validation")
|
|
9
10
|
json := import("json")
|
|
10
11
|
|
|
11
12
|
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
12
16
|
P_AXIS_SPEC_SCHEMA := {
|
|
17
|
+
|
|
13
18
|
`type`: `string,regex=Int|Long|Float|Double|String`,
|
|
14
19
|
`name`: `string`,
|
|
15
20
|
`domain,?`: { any: `string` },
|
|
@@ -18,6 +23,7 @@ P_AXIS_SPEC_SCHEMA := {
|
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
P_COLUMN_SPEC_SCHEMA := {
|
|
26
|
+
|
|
21
27
|
`kind`: `string,regex=PColumn`,
|
|
22
28
|
`valueType`: `string`,
|
|
23
29
|
`name`: `string`,
|
|
@@ -30,12 +36,24 @@ P_COLUMN_SPEC_SCHEMA := {
|
|
|
30
36
|
KIND_P_COLUMN := "PColumn"
|
|
31
37
|
|
|
32
38
|
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
33
43
|
N_LABEL := "pl7.app/label"
|
|
34
44
|
|
|
35
45
|
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
36
50
|
D_BLOCK := "pl7.app/block"
|
|
37
51
|
|
|
38
52
|
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
39
57
|
A_LABEL := "pl7.app/label"
|
|
40
58
|
|
|
41
59
|
|
|
@@ -47,9 +65,13 @@ A_LABEL := "pl7.app/label"
|
|
|
47
65
|
|
|
48
66
|
|
|
49
67
|
|
|
68
|
+
|
|
50
69
|
A_TRACE := "pl7.app/trace"
|
|
51
70
|
|
|
52
71
|
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
53
75
|
_TRACE_STEP_SCHEMA := {
|
|
54
76
|
`type`: `string`,
|
|
55
77
|
`label`: `string`,
|
|
@@ -65,7 +87,9 @@ _TRACE_SCHEMA := [_TRACE_STEP_SCHEMA]
|
|
|
65
87
|
|
|
66
88
|
|
|
67
89
|
|
|
90
|
+
|
|
68
91
|
makeTrace := func(input, ...steps) {
|
|
92
|
+
|
|
69
93
|
validation.assertJsonSchema(steps, _TRACE_SCHEMA)
|
|
70
94
|
|
|
71
95
|
currentTraceContent := undefined
|
|
@@ -80,6 +104,7 @@ currentTraceContent = input["annotations"][A_TRACE]
|
|
|
80
104
|
currentTrace := []
|
|
81
105
|
if !is_undefined(currentTraceContent) {
|
|
82
106
|
currentTrace = json.decode(currentTraceContent)
|
|
107
|
+
|
|
83
108
|
validation.assertJsonSchema(currentTrace, _TRACE_SCHEMA)
|
|
84
109
|
}
|
|
85
110
|
|
|
@@ -89,6 +114,7 @@ currentTraceStr := string(json.encode(currentTrace))
|
|
|
89
114
|
return ll.toStrict({
|
|
90
115
|
value: currentTrace,
|
|
91
116
|
valueStr: currentTraceStr,
|
|
117
|
+
|
|
92
118
|
inject: func(spec) {
|
|
93
119
|
validation.assertJsonSchema(spec, P_COLUMN_SPEC_SCHEMA)
|
|
94
120
|
return maps.deepMerge(spec, {annotations: {"pl7.app/trace": currentTraceStr}})
|
|
@@ -4,86 +4,217 @@ objects := import("@platforma-sdk/workflow-tengo:objects")
|
|
|
4
4
|
|
|
5
5
|
_PRE_PROCESS_STEP_SCHEMA := [`or`,
|
|
6
6
|
{
|
|
7
|
+
|
|
8
|
+
|
|
7
9
|
`type`: `string,regex=regexpReplace`,
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
8
14
|
`pattern`: `string`,
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
9
18
|
`replacement`: `string`
|
|
10
19
|
},
|
|
11
20
|
{
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
12
35
|
`type`: `string,regex=regexpExtract`,
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
13
47
|
`pattern`: `string`
|
|
14
48
|
}]
|
|
15
49
|
|
|
16
50
|
_SPEC_AXES_SCHEMA := {
|
|
51
|
+
|
|
17
52
|
`column`: `string`,
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
18
56
|
`filterOutRegex,?`: `string`,
|
|
57
|
+
|
|
19
58
|
`preProcess,?`: [_PRE_PROCESS_STEP_SCHEMA],
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
20
63
|
`naRegex,?`: `string`,
|
|
64
|
+
|
|
65
|
+
|
|
21
66
|
`allowNA,?`: `bool`,
|
|
67
|
+
|
|
22
68
|
`spec`: {
|
|
69
|
+
|
|
23
70
|
`type`: `string,regex=Int|Long|Float|Double|String`,
|
|
71
|
+
|
|
72
|
+
|
|
24
73
|
`name,?`: `string`,
|
|
74
|
+
|
|
75
|
+
|
|
25
76
|
`domain,?`: { any: `string` },
|
|
77
|
+
|
|
78
|
+
|
|
26
79
|
`annotations,?`: { any: `string` },
|
|
80
|
+
|
|
81
|
+
|
|
27
82
|
`parentAxes,?`: [`number`]
|
|
28
83
|
}
|
|
29
84
|
}
|
|
30
85
|
|
|
31
86
|
_SPEC_COLUMN_SCHEMA := {
|
|
87
|
+
|
|
32
88
|
`column`: `string`,
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
33
92
|
`filterOutRegex,?`: `string`,
|
|
93
|
+
|
|
34
94
|
`preProcess,?`: [_PRE_PROCESS_STEP_SCHEMA],
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
35
99
|
`naRegex,?`: `string`,
|
|
100
|
+
|
|
101
|
+
|
|
36
102
|
`allowNA,?`: `bool`,
|
|
103
|
+
|
|
104
|
+
|
|
37
105
|
`id,?`: `string`,
|
|
106
|
+
|
|
38
107
|
`spec`: {
|
|
108
|
+
|
|
39
109
|
`valueType`: `string,regex=Int|Long|Float|Double|String`,
|
|
110
|
+
|
|
111
|
+
|
|
40
112
|
`name,?`: `string`,
|
|
113
|
+
|
|
114
|
+
|
|
41
115
|
`domain,?`: { any: `string` },
|
|
116
|
+
|
|
117
|
+
|
|
42
118
|
`annotations,?`: { any: `string` },
|
|
119
|
+
|
|
120
|
+
|
|
43
121
|
`parentAxes,?`: [ `number` ]
|
|
44
122
|
}
|
|
45
123
|
}
|
|
46
124
|
|
|
47
125
|
_SPEC_INDEX_SCHEMA := {
|
|
126
|
+
|
|
48
127
|
`name`: `string`,
|
|
128
|
+
|
|
129
|
+
|
|
49
130
|
`domain,?`: { any: `string` },
|
|
131
|
+
|
|
132
|
+
|
|
50
133
|
`annotations,?`: { any: `string` },
|
|
134
|
+
|
|
135
|
+
|
|
51
136
|
`parentAxes,?`: [`number`]
|
|
52
137
|
}
|
|
53
138
|
|
|
54
139
|
PFCONV_IMPORT_CFG_SCHEMA := {
|
|
140
|
+
|
|
141
|
+
|
|
55
142
|
`separator,?`: `string`,
|
|
143
|
+
|
|
144
|
+
|
|
56
145
|
`commentLinePrefix,?`: `string`,
|
|
146
|
+
|
|
147
|
+
|
|
57
148
|
`skipEmptyLines,?`: `bool`,
|
|
149
|
+
|
|
150
|
+
|
|
58
151
|
`allowColumnLabelDuplicates,?`: `bool`,
|
|
152
|
+
|
|
153
|
+
|
|
59
154
|
`axes`: [_SPEC_AXES_SCHEMA],
|
|
155
|
+
|
|
156
|
+
|
|
60
157
|
`index,?`: _SPEC_INDEX_SCHEMA,
|
|
158
|
+
|
|
61
159
|
`columns`: [_SPEC_COLUMN_SCHEMA],
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
62
163
|
`allowArtificialColumns,?`: `bool`,
|
|
164
|
+
|
|
165
|
+
|
|
63
166
|
`columnNamePrefix,?`: `string`,
|
|
167
|
+
|
|
168
|
+
|
|
64
169
|
`storageFormat,?` : `string,regex=Binary|Json`,
|
|
170
|
+
|
|
171
|
+
|
|
65
172
|
`partitionKeyLength,?` : `number`
|
|
66
173
|
}
|
|
67
174
|
|
|
68
175
|
_COLUMN_FILTER_SCHEMA := {
|
|
176
|
+
|
|
177
|
+
|
|
69
178
|
`type,?`: `string,regex=Int|Long|Float|Double|String|Bytes`,
|
|
179
|
+
|
|
180
|
+
|
|
70
181
|
`name,?`: `string`,
|
|
182
|
+
|
|
183
|
+
|
|
71
184
|
`domainValue,?`: { any: `string` },
|
|
185
|
+
|
|
186
|
+
|
|
72
187
|
`annotationValue,?`: { any: `string` },
|
|
188
|
+
|
|
189
|
+
|
|
73
190
|
`annotationPattern,?`: { any: `string` }
|
|
74
191
|
}
|
|
75
192
|
|
|
76
193
|
PFCONV_EXPORT_CFG_SCHEMA := {
|
|
194
|
+
|
|
195
|
+
|
|
77
196
|
`naStr,?`: `string`,
|
|
197
|
+
|
|
198
|
+
|
|
78
199
|
`nullStr,?`: `string`,
|
|
200
|
+
|
|
201
|
+
|
|
79
202
|
`exportBytes,?`: `bool`,
|
|
203
|
+
|
|
204
|
+
|
|
80
205
|
`separator,?`: `string`,
|
|
206
|
+
|
|
207
|
+
|
|
81
208
|
`columnSelector,?`: [_COLUMN_FILTER_SCHEMA],
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
82
212
|
`joinType,?`: `string,regex=Full|Inner`
|
|
83
213
|
}
|
|
84
214
|
|
|
85
215
|
|
|
86
216
|
|
|
217
|
+
|
|
87
218
|
xsvColumnId := func(c) {
|
|
88
219
|
id := c.id
|
|
89
220
|
if is_undefined(id) {
|
|
@@ -94,6 +225,7 @@ return id
|
|
|
94
225
|
|
|
95
226
|
|
|
96
227
|
|
|
228
|
+
|
|
97
229
|
purifySpec := func(spec) {
|
|
98
230
|
newSpec := copy(spec)
|
|
99
231
|
|
|
@@ -150,6 +282,7 @@ return newSpec
|
|
|
150
282
|
|
|
151
283
|
|
|
152
284
|
|
|
285
|
+
|
|
153
286
|
|
|
154
287
|
|
|
155
288
|
decomposePfconvImportCfg := func(cfg, ...ops) {
|
|
@@ -171,6 +304,7 @@ id := xsvColumnId(column)
|
|
|
171
304
|
ll.assert(is_undefined(columnsSpec[id]), "repeated column spec id in pfconv cfg: %v", id)
|
|
172
305
|
columnsSpec[id] = column.spec
|
|
173
306
|
columnsSpec[id].axesSpec = axesSpec
|
|
307
|
+
|
|
174
308
|
columnsSpec[id].kind = "PColumn"
|
|
175
309
|
}
|
|
176
310
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
validation := import("@platforma-sdk/workflow-tengo:validation")
|
|
5
6
|
constants := import("@platforma-sdk/workflow-tengo:pframes.constants")
|
|
6
7
|
objects := import("@platforma-sdk/workflow-tengo:objects")
|
|
@@ -17,6 +18,7 @@ pfconvSw := assets.importSoftware("@milaboratories/software-pframes-conv:main")
|
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
|
|
21
|
+
|
|
20
22
|
getAxesSpec := func(spec) {
|
|
21
23
|
axes := []
|
|
22
24
|
for ax in spec.axes {
|
|
@@ -77,6 +79,7 @@ return objects.deleteUndefined(spec)
|
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
|
|
82
|
+
|
|
80
83
|
|
|
81
84
|
|
|
82
85
|
importFile := func(xsvFile, xsvType, spec, ...ops) {
|
|
@@ -94,6 +97,7 @@ tops := ops.transpose
|
|
|
94
97
|
|
|
95
98
|
transposedFileName := "fileTransposed." + xsvType
|
|
96
99
|
|
|
100
|
+
|
|
97
101
|
transposeXsv := exec.builder().
|
|
98
102
|
software(transposeXsvSw).
|
|
99
103
|
printErrStreamToStdout().
|
|
@@ -137,10 +141,13 @@ run()
|
|
|
137
141
|
xsvFile = transposeXsv.getFile(transposedFileName)
|
|
138
142
|
}
|
|
139
143
|
|
|
144
|
+
|
|
140
145
|
importDirTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.import-dir")
|
|
141
146
|
|
|
147
|
+
|
|
142
148
|
pureSpec := util.purifySpec(spec)
|
|
143
149
|
|
|
150
|
+
|
|
144
151
|
pfconv := exec.builder().
|
|
145
152
|
software(pfconvSw).
|
|
146
153
|
printErrStreamToStdout().
|
|
@@ -154,6 +161,7 @@ writeFile("spec.json", json.encode(pureSpec)).
|
|
|
154
161
|
processWorkdir("pf", importDirTpl, pureSpec).
|
|
155
162
|
run()
|
|
156
163
|
|
|
164
|
+
|
|
157
165
|
pf := pfconv.getProcessorResult("pf")
|
|
158
166
|
if ops.dataOnly {
|
|
159
167
|
return pf
|
|
@@ -205,6 +213,7 @@ return result
|
|
|
205
213
|
|
|
206
214
|
|
|
207
215
|
|
|
216
|
+
|
|
208
217
|
|
|
209
218
|
|
|
210
219
|
importFileMap := func(xsvMap, xsvType, spec, ...ops) {
|
|
@@ -218,6 +227,7 @@ additionalAxesSpec: [],
|
|
|
218
227
|
transpose: undefined
|
|
219
228
|
}, ops...)
|
|
220
229
|
|
|
230
|
+
|
|
221
231
|
decomposedSpec := util.decomposePfconvImportCfg(spec, { additionalAxesSpec: ops.additionalAxesSpec })
|
|
222
232
|
pureSpec := decomposedSpec.purifiedCfg
|
|
223
233
|
columnsSpec := decomposedSpec.columnsSpec
|
|
@@ -259,11 +269,13 @@ return result
|
|
|
259
269
|
|
|
260
270
|
|
|
261
271
|
|
|
272
|
+
|
|
262
273
|
exportFrame := func(pf, xsvType, params) {
|
|
263
274
|
exportPfTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.xsv-export-pframe")
|
|
264
275
|
|
|
265
276
|
if is_array(pf) {
|
|
266
277
|
|
|
278
|
+
|
|
267
279
|
pfm := {}
|
|
268
280
|
i := 0
|
|
269
281
|
for col in pf {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
5
6
|
assets := import("@platforma-sdk/workflow-tengo:assets")
|
|
6
7
|
smart := import("@platforma-sdk/workflow-tengo:smart")
|
|
@@ -20,8 +21,10 @@ _SUBSCRIPTION_FIELD := "subscription"
|
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
|
|
23
25
|
createUniversal := func(tpl, isEph, inputs) {
|
|
24
26
|
|
|
27
|
+
|
|
25
28
|
rbuilder := undefined
|
|
26
29
|
if isEph {
|
|
27
30
|
rbuilder = smart.ephemeralBuilder(constants.RTYPE_RENDER_EPH_TEMPLATE)
|
|
@@ -30,17 +33,21 @@ rbuilder = smart.structBuilder(constants.RTYPE_RENDER_TEMPLATE)
|
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
if isEph {
|
|
36
|
+
|
|
33
37
|
rbuilder.createField(_SUBSCRIPTION_FIELD, "OTW")
|
|
34
38
|
}
|
|
35
39
|
|
|
40
|
+
|
|
36
41
|
rbuilder.createInputField(tplutil.TEMPLATE_FIELD).set(tpl)
|
|
37
42
|
|
|
43
|
+
|
|
38
44
|
inputsMap := isEph ? smart.ephemeralMapBuilder() : smart.mapBuilder()
|
|
39
45
|
for name, value in inputs {
|
|
40
46
|
inputsMap.add(name, value)
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
rbuilder.createInputField(tplutil.INPUTS_MAP_FIELD).set(inputsMap.build())
|
|
50
|
+
|
|
44
51
|
renderer := rbuilder.lockInputsAndBuild()
|
|
45
52
|
|
|
46
53
|
self := undefined
|
|
@@ -48,6 +55,7 @@ self = ll.toStrict(oop.inherit(renderer, {
|
|
|
48
55
|
|
|
49
56
|
|
|
50
57
|
|
|
58
|
+
|
|
51
59
|
output: func(name, ...cache) {
|
|
52
60
|
ll.assert(len(cache) == 0 || is_int(cache[0]), "cache should be a number (use 'times' tengo library), got: %v", cache)
|
|
53
61
|
out := renderer.getFutureOutputField(tplutil.TEMPLATE_OUTPUT_PREFIX + name, isEph)
|
|
@@ -69,6 +77,7 @@ return self
|
|
|
69
77
|
|
|
70
78
|
|
|
71
79
|
|
|
80
|
+
|
|
72
81
|
create := func(tpl, inputs) {
|
|
73
82
|
return createUniversal(tpl, false, inputs)
|
|
74
83
|
}
|
|
@@ -79,6 +88,7 @@ return createUniversal(tpl, false, inputs)
|
|
|
79
88
|
|
|
80
89
|
|
|
81
90
|
|
|
91
|
+
|
|
82
92
|
createEphemeral := func(tpl, inputs) {
|
|
83
93
|
return createUniversal(tpl, true, inputs)
|
|
84
94
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
7
8
|
maps := import("@platforma-sdk/workflow-tengo:maps")
|
|
8
9
|
|
|
@@ -11,6 +12,7 @@ maps := import("@platforma-sdk/workflow-tengo:maps")
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
15
|
+
|
|
14
16
|
fromSlice := func(slice) {
|
|
15
17
|
set := {}
|
|
16
18
|
for _, elem in slice {
|
|
@@ -24,6 +26,7 @@ return set
|
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
|
|
29
|
+
|
|
27
30
|
toSlice := func(set) {
|
|
28
31
|
sl := []
|
|
29
32
|
for v, _ in set {
|
|
@@ -38,6 +41,7 @@ return sl
|
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
|
|
44
|
+
|
|
41
45
|
hasElement := func(set, element) {
|
|
42
46
|
return !is_undefined(set[element])
|
|
43
47
|
}
|
|
@@ -48,6 +52,7 @@ return !is_undefined(set[element])
|
|
|
48
52
|
|
|
49
53
|
|
|
50
54
|
|
|
55
|
+
|
|
51
56
|
add := func(set, ...elements) {
|
|
52
57
|
for _, elem in elements {
|
|
53
58
|
set[elem] = true
|
|
@@ -61,6 +66,7 @@ return set
|
|
|
61
66
|
|
|
62
67
|
|
|
63
68
|
|
|
69
|
+
|
|
64
70
|
fromMapKeys := func(map) {
|
|
65
71
|
keys := maps.getKeys(map)
|
|
66
72
|
return fromSlice(keys)
|
|
@@ -72,6 +78,7 @@ return fromSlice(keys)
|
|
|
72
78
|
|
|
73
79
|
|
|
74
80
|
|
|
81
|
+
|
|
75
82
|
map := func(set, fn) {
|
|
76
83
|
return maps.mapKeys(set, fn)
|
|
77
84
|
}
|
|
@@ -7,6 +7,7 @@ enum := import("enum")
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
|
|
10
11
|
length := func(slice) {
|
|
11
12
|
if is_undefined(slice) {
|
|
12
13
|
return 0
|
|
@@ -23,6 +24,7 @@ return len(slice)
|
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
|
|
26
28
|
slice := func(array, from, to) {
|
|
27
29
|
len := length(array)
|
|
28
30
|
if from < 0 {
|
|
@@ -42,6 +44,7 @@ return array[from:to]
|
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
|
|
47
|
+
|
|
45
48
|
safeAppend := func(slice, ...toAppend) {
|
|
46
49
|
if is_undefined(slice) {
|
|
47
50
|
slice = []
|
|
@@ -59,6 +62,7 @@ return append(slice, toAppend...)
|
|
|
59
62
|
|
|
60
63
|
|
|
61
64
|
|
|
65
|
+
|
|
62
66
|
findElement := func(slice, element) {
|
|
63
67
|
for i, elem in slice {
|
|
64
68
|
if elem == element {
|
|
@@ -75,6 +79,7 @@ return -1
|
|
|
75
79
|
|
|
76
80
|
|
|
77
81
|
|
|
82
|
+
|
|
78
83
|
hasElement := func(slice, element) {
|
|
79
84
|
return findElement(slice, element) != -1
|
|
80
85
|
}
|
|
@@ -85,6 +90,7 @@ return findElement(slice, element) != -1
|
|
|
85
90
|
|
|
86
91
|
|
|
87
92
|
|
|
93
|
+
|
|
88
94
|
removeElement := func(slice, i) {
|
|
89
95
|
return safeAppend(slice[:i], slice[i+1:]...)
|
|
90
96
|
}
|
|
@@ -95,6 +101,7 @@ return safeAppend(slice[:i], slice[i+1:]...)
|
|
|
95
101
|
|
|
96
102
|
|
|
97
103
|
|
|
104
|
+
|
|
98
105
|
filter := func(slice, predicateFn) {
|
|
99
106
|
newS := []
|
|
100
107
|
for _, elem in slice {
|
|
@@ -112,6 +119,7 @@ return newS
|
|
|
112
119
|
|
|
113
120
|
|
|
114
121
|
|
|
122
|
+
|
|
115
123
|
map := func(slice, fn) {
|
|
116
124
|
newS := []
|
|
117
125
|
for _, elem in slice {
|
|
@@ -130,6 +138,7 @@ return newS
|
|
|
130
138
|
|
|
131
139
|
|
|
132
140
|
|
|
141
|
+
|
|
133
142
|
reduce := func(slice, fn) {
|
|
134
143
|
result := undefined
|
|
135
144
|
for i, elem in slice {
|
|
@@ -150,6 +159,7 @@ return result
|
|
|
150
159
|
|
|
151
160
|
|
|
152
161
|
|
|
162
|
+
|
|
153
163
|
sortByFn := func(notSortedSlice, fn) {
|
|
154
164
|
s := copy(notSortedSlice)
|
|
155
165
|
|
|
@@ -171,6 +181,7 @@ return s
|
|
|
171
181
|
|
|
172
182
|
|
|
173
183
|
|
|
184
|
+
|
|
174
185
|
fromSet := func(set) {
|
|
175
186
|
slice := enum.map(set, func(k, _) { return k })
|
|
176
187
|
return sortByFn(slice, func(elem) { return elem })
|