@platforma-sdk/workflow-tengo 2.8.3 → 2.8.5

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.
Files changed (59) hide show
  1. package/dist/tengo/lib/assets.lib.tengo +6 -0
  2. package/dist/tengo/lib/constants.lib.tengo +3 -0
  3. package/dist/tengo/lib/exec.R.internal.lib.tengo +1 -0
  4. package/dist/tengo/lib/exec.R.lib.tengo +8 -0
  5. package/dist/tengo/lib/exec.internal.lib.tengo +13 -0
  6. package/dist/tengo/lib/exec.lib.tengo +67 -0
  7. package/dist/tengo/lib/exec.package.lib.tengo +9 -0
  8. package/dist/tengo/lib/exec.python.internal.lib.tengo +1 -0
  9. package/dist/tengo/lib/exec.python.lib.tengo +8 -0
  10. package/dist/tengo/lib/exec.runcmd.lib.tengo +19 -0
  11. package/dist/tengo/lib/exec.runenv.lib.tengo +4 -0
  12. package/dist/tengo/lib/exec.stream.lib.tengo +4 -0
  13. package/dist/tengo/lib/file.internal.lib.tengo +7 -0
  14. package/dist/tengo/lib/file.lib.tengo +3 -0
  15. package/dist/tengo/lib/ll.lib.tengo +24 -0
  16. package/dist/tengo/lib/maps.lib.tengo +8 -0
  17. package/dist/tengo/lib/objects.lib.tengo +2 -0
  18. package/dist/tengo/lib/oop.lib.tengo +3 -0
  19. package/dist/tengo/lib/path.lib.tengo +9 -0
  20. package/dist/tengo/lib/pframes.constants.lib.tengo +3 -0
  21. package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +5 -0
  22. package/dist/tengo/lib/pframes.lib.tengo +5 -0
  23. package/dist/tengo/lib/pframes.ll.lib.tengo +2 -0
  24. package/dist/tengo/lib/pframes.pcolumn.lib.tengo +4 -0
  25. package/dist/tengo/lib/pframes.spec.lib.tengo +26 -0
  26. package/dist/tengo/lib/pframes.util.lib.tengo +134 -0
  27. package/dist/tengo/lib/pframes.xsv.lib.tengo +12 -0
  28. package/dist/tengo/lib/render.lib.tengo +10 -0
  29. package/dist/tengo/lib/sets.lib.tengo +7 -0
  30. package/dist/tengo/lib/slices.lib.tengo +11 -0
  31. package/dist/tengo/lib/smart.lib.tengo +113 -0
  32. package/dist/tengo/lib/test.lib.tengo +32 -0
  33. package/dist/tengo/lib/tpl.lib.tengo +68 -0
  34. package/dist/tengo/lib/tpl.state-await.lib.tengo +14 -0
  35. package/dist/tengo/lib/tpl.util.lib.tengo +5 -0
  36. package/dist/tengo/lib/validation.lib.tengo +44 -0
  37. package/dist/tengo/lib/workdir.lib.tengo +22 -0
  38. package/dist/tengo/lib/workdir.proc.lib.tengo +18 -0
  39. package/dist/tengo/lib/workdir.save.lib.tengo +17 -0
  40. package/dist/tengo/lib/workflow.bobject.lib.tengo +5 -0
  41. package/dist/tengo/lib/workflow.bquery.lib.tengo +25 -0
  42. package/dist/tengo/lib/workflow.constants.lib.tengo +1 -0
  43. package/dist/tengo/lib/workflow.context.lib.tengo +5 -0
  44. package/dist/tengo/lib/workflow.lib.tengo +39 -0
  45. package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
  46. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  47. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  48. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  49. package/dist/tengo/tpl/pframes.aggregate.plj.gz +0 -0
  50. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  51. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  52. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  53. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  54. package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
  55. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  56. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  57. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  58. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  59. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
 
2
+
2
3
  ll := import("@platforma-sdk/workflow-tengo:ll")
3
4
  smart := import("@platforma-sdk/workflow-tengo:smart")
4
5
  constants := import("@platforma-sdk/workflow-tengo:constants")
@@ -13,12 +14,15 @@ _EXPORTS_OUTPUT_PREFIX := "values/"
13
14
 
14
15
 
15
16
 
17
+
16
18
  builder := func(block, parentContext) {
17
19
 
18
20
  super := smart.ephemeralBuilder(constants.RTYPE_CONTEXT)
19
21
 
22
+
20
23
  super.createInputField(_BLOCK_ID_FIELD).setRefOrJson(block)
21
24
 
25
+
22
26
  super.createInputField(_PARENT_CTX_FIELD).set(parentContext)
23
27
 
24
28
  self := undefined
@@ -30,6 +34,7 @@ self = ll.toStrict(oop.inherit(super, {
30
34
 
31
35
 
32
36
 
37
+
33
38
  add: func(name, value) {
34
39
  field := super.createInputField(_EXPORTS_OUTPUT_PREFIX + name)
35
40
 
@@ -1,6 +1,7 @@
1
1
 
2
2
 
3
3
 
4
+
4
5
  tx := import("tx")
5
6
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
7
  assets := import("@platforma-sdk/workflow-tengo:assets")
@@ -16,20 +17,30 @@ bobject := import("@platforma-sdk/workflow-tengo:workflow.bobject")
16
17
  bquery := import("@platforma-sdk/workflow-tengo:workflow.bquery")
17
18
 
18
19
 
20
+
19
21
  self := import("@platforma-sdk/workflow-tengo:tpl")
20
22
 
23
+
21
24
  _RESULTS_FIELD_NAME := "result"
22
25
 
26
+
23
27
  _INPUT_CONTEXT_FIELD_NAME := "context"
24
28
 
29
+
25
30
  _OUTPUT_CONTEXT_FIELD_NAME := "context"
26
31
 
32
+
33
+
27
34
  _PREPARED_INPUTS_PREFIX := "prepared/"
28
35
 
29
36
 
37
+
38
+
39
+
30
40
  self.defineOutputs([_RESULTS_FIELD_NAME, _OUTPUT_CONTEXT_FIELD_NAME])
31
41
 
32
42
  _isProduction := func() {
43
+
33
44
  return self.rawInputs().isProduction.getValueAsJson() == true
34
45
  }
35
46
 
@@ -38,20 +49,27 @@ return !_isProduction()
38
49
  }
39
50
 
40
51
 
52
+
53
+
41
54
  _args := undefined
42
55
 
43
56
 
44
57
 
58
+
45
59
  args := func() {
46
60
  if is_undefined(_args) {
61
+
47
62
  inputs := self.inputs()
48
63
 
64
+
49
65
  _args = inputs.args
50
66
  if is_undefined(_args) || smart.isReference(_args) {
51
67
  ll.panic("Unexpected args type: %v", _args)
52
68
  }
53
69
 
70
+
54
71
  for k, v in inputs {
72
+
55
73
  if text.has_prefix(k, _PREPARED_INPUTS_PREFIX) {
56
74
 
57
75
  name := text.trim_prefix(k, _PREPARED_INPUTS_PREFIX)
@@ -69,6 +87,7 @@ _blockId := undefined
69
87
 
70
88
 
71
89
 
90
+
72
91
  blockId := func() {
73
92
  if _blockId == undefined {
74
93
  _blockId = self.inputs().blockId
@@ -82,6 +101,7 @@ __parentContext := undefined
82
101
 
83
102
 
84
103
 
104
+
85
105
  _parentContext := func() {
86
106
  if __parentContext == undefined {
87
107
  __parentContext = self.inputs()[_INPUT_CONTEXT_FIELD_NAME]
@@ -94,6 +114,7 @@ return __parentContext
94
114
 
95
115
 
96
116
 
117
+
97
118
  _buildOutputs := func(results) {
98
119
  ll.assert(ll.isMap(results), "expected to see map result from body function")
99
120
  ll.assert(
@@ -107,24 +128,30 @@ ll.assert(!is_undefined(results.exports), "exports are not defined in the result
107
128
  ll.assert(ll.isMap(results.outputs), "expected a map in outputs returned from workflow.body")
108
129
  ll.assert(ll.isMap(results.exports), "expected a map in exports returned from workflow.body")
109
130
 
131
+
110
132
  o := results.outputs
133
+
111
134
  e := results.exports
112
135
 
136
+
113
137
  resBuilder := smart.mapBuilder()
114
138
  for name, value in o {
115
139
  ll.assert(!is_undefined(value), "value is undefined for output ", name)
116
140
  resBuilder.add(name, value)
117
141
  }
118
142
 
143
+
119
144
  eData := {}
120
145
  eData[constants.NO_PREFIX_EXPORT] = {}
121
146
 
122
147
  for name, value in e {
148
+
123
149
  if smart.isReference(value) {
124
150
  eData[name] = value
125
151
  continue
126
152
  }
127
153
 
154
+
128
155
  ll.assert(
129
156
  sets.fromSlice(["spec", "data"]) == sets.fromMapKeys(value),
130
157
  "expected spec and data export structure"
@@ -140,6 +167,7 @@ eData[constants.NO_PREFIX_EXPORT][name + ".spec"] = spec
140
167
  eData[constants.NO_PREFIX_EXPORT][name + ".data"] = value.data
141
168
  }
142
169
 
170
+
143
171
  ctxBuilder := render.createEphemeral(
144
172
  assets.importTemplate("@platforma-sdk/workflow-tengo:workflow.build-ctx"),
145
173
  {
@@ -149,6 +177,7 @@ data: eData
149
177
  }
150
178
  )
151
179
 
180
+
152
181
  tplOutputs := {}
153
182
  tplOutputs[_RESULTS_FIELD_NAME] = resBuilder.build()
154
183
  tplOutputs[_OUTPUT_CONTEXT_FIELD_NAME] = ctxBuilder.output("ctx")
@@ -161,6 +190,7 @@ return tplOutputs
161
190
 
162
191
 
163
192
 
193
+
164
194
  query := func(spec, ...options) {
165
195
  return bquery.create(spec, _parentContext(), options...)
166
196
  }
@@ -170,6 +200,7 @@ return bquery.create(spec, _parentContext(), options...)
170
200
 
171
201
 
172
202
 
203
+
173
204
  resolve := func(ref, ...options) {
174
205
  r := bquery.resolve(ref, _parentContext(), options...)
175
206
 
@@ -180,6 +211,7 @@ data: r.getFutureInputField("data")
180
211
  }
181
212
 
182
213
 
214
+
183
215
  _preRunTpl := undefined
184
216
 
185
217
 
@@ -187,10 +219,12 @@ _preRunTpl := undefined
187
219
 
188
220
 
189
221
 
222
+
190
223
  prepare := func(cb) {
191
224
  self.prepare(func(_){
192
225
  raw := cb(args())
193
226
  prefixed := {}
227
+
194
228
  for k, v in raw {
195
229
  prefixed[_PREPARED_INPUTS_PREFIX + k] = v
196
230
  }
@@ -200,6 +234,7 @@ return prefixed
200
234
 
201
235
 
202
236
 
237
+
203
238
  setPreRun := func(tplId) {
204
239
  ll.assert(is_undefined(_preRunTpl), "pre run template is already set")
205
240
 
@@ -209,6 +244,7 @@ _preRunTpl = tplId
209
244
 
210
245
 
211
246
 
247
+
212
248
  validateArgs := func(argsSchema) {
213
249
  self.validateInputs({
214
250
  args: argsSchema
@@ -217,6 +253,7 @@ args: argsSchema
217
253
 
218
254
 
219
255
 
256
+
220
257
  body := func(bodyFn) {
221
258
 
222
259
  if _isProduction() {
@@ -232,11 +269,13 @@ return _buildOutputs(result)
232
269
  } else if !is_undefined(_preRunTpl) {
233
270
 
234
271
 
272
+
235
273
  self.delegate(_preRunTpl, { isProduction: true }, [_RESULTS_FIELD_NAME, _OUTPUT_CONTEXT_FIELD_NAME])
236
274
 
237
275
  } else {
238
276
 
239
277
 
278
+
240
279
  self.body(func(_) {
241
280
  return _buildOutputs({
242
281
  outputs: {},
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/workflow-tengo",
3
- "version": "2.8.3",
3
+ "version": "2.8.5",
4
4
  "description": "Tengo SDK library",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",