@platforma-sdk/workflow-tengo 2.9.6 → 2.9.8

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 (64) hide show
  1. package/dist/tengo/lib/assets.lib.tengo +52 -52
  2. package/dist/tengo/lib/assets.swinfo.lib.tengo +45 -45
  3. package/dist/tengo/lib/constants.lib.tengo +32 -32
  4. package/dist/tengo/lib/exec.R.internal.lib.tengo +29 -29
  5. package/dist/tengo/lib/exec.R.lib.tengo +166 -166
  6. package/dist/tengo/lib/exec.constants.lib.tengo +4 -4
  7. package/dist/tengo/lib/exec.descriptor.lib.tengo +31 -31
  8. package/dist/tengo/lib/exec.internal.lib.tengo +297 -297
  9. package/dist/tengo/lib/exec.lib.tengo +815 -815
  10. package/dist/tengo/lib/exec.monetization.lib.tengo +130 -130
  11. package/dist/tengo/lib/exec.package.lib.tengo +212 -212
  12. package/dist/tengo/lib/exec.python.internal.lib.tengo +6 -6
  13. package/dist/tengo/lib/exec.python.lib.tengo +146 -146
  14. package/dist/tengo/lib/exec.runcmd.lib.tengo +371 -371
  15. package/dist/tengo/lib/exec.runenv.lib.tengo +92 -92
  16. package/dist/tengo/lib/exec.stream.lib.tengo +40 -40
  17. package/dist/tengo/lib/file.internal.lib.tengo +77 -77
  18. package/dist/tengo/lib/file.lib.tengo +57 -57
  19. package/dist/tengo/lib/ll.lib.tengo +244 -244
  20. package/dist/tengo/lib/maps.lib.tengo +152 -152
  21. package/dist/tengo/lib/objects.lib.tengo +13 -13
  22. package/dist/tengo/lib/oop.lib.tengo +19 -19
  23. package/dist/tengo/lib/path.lib.tengo +125 -125
  24. package/dist/tengo/lib/pframes.constants.lib.tengo +28 -28
  25. package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +33 -33
  26. package/dist/tengo/lib/pframes.lib.tengo +43 -43
  27. package/dist/tengo/lib/pframes.ll.lib.tengo +72 -72
  28. package/dist/tengo/lib/pframes.pcolumn.lib.tengo +49 -49
  29. package/dist/tengo/lib/pframes.spec.lib.tengo +96 -96
  30. package/dist/tengo/lib/pframes.util.lib.tengo +288 -288
  31. package/dist/tengo/lib/pframes.xsv.lib.tengo +272 -272
  32. package/dist/tengo/lib/render.lib.tengo +75 -75
  33. package/dist/tengo/lib/sets.lib.tengo +68 -68
  34. package/dist/tengo/lib/slices.lib.tengo +258 -155
  35. package/dist/tengo/lib/smart.lib.tengo +1069 -1069
  36. package/dist/tengo/lib/test.lib.tengo +161 -161
  37. package/dist/tengo/lib/tpl.lib.tengo +515 -515
  38. package/dist/tengo/lib/tpl.state-await.lib.tengo +240 -240
  39. package/dist/tengo/lib/tpl.util.lib.tengo +9 -9
  40. package/dist/tengo/lib/validation.lib.tengo +378 -378
  41. package/dist/tengo/lib/workdir.lib.tengo +331 -331
  42. package/dist/tengo/lib/workdir.proc.lib.tengo +144 -144
  43. package/dist/tengo/lib/workdir.save.lib.tengo +130 -130
  44. package/dist/tengo/lib/workflow.bobject.lib.tengo +26 -26
  45. package/dist/tengo/lib/workflow.bquery.lib.tengo +165 -165
  46. package/dist/tengo/lib/workflow.constants.lib.tengo +2 -2
  47. package/dist/tengo/lib/workflow.context.lib.tengo +32 -32
  48. package/dist/tengo/lib/workflow.lib.tengo +206 -206
  49. package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
  50. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  51. package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
  52. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  53. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  54. package/dist/tengo/tpl/pframes.aggregate.plj.gz +0 -0
  55. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  56. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  57. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  58. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  59. package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
  60. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  61. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  62. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  63. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  64. package/package.json +2 -2
@@ -1,196 +1,196 @@
1
1
  ll := import("@platforma-sdk/workflow-tengo:ll")
2
2
  slices := import("@platforma-sdk/workflow-tengo:slices")
3
3
 
4
-
5
-
6
-
7
-
8
-
9
-
4
+ /**
5
+ * Returns a slice of keys of the map.
6
+ *
7
+ * @param map map[string]any - map to extract keys from
8
+ * @return result: string[] - a slice of keys.
9
+ */
10
10
  getKeys := func(map) {
11
- res := []
12
- for k, _ in map {
13
- res = append(res, k)
14
- }
11
+ res := []
12
+ for k, _ in map {
13
+ res = append(res, k)
14
+ }
15
15
 
16
- return slices.sortByFn(res, func(elem) { return elem })
16
+ return slices.quickSort(res)
17
17
  }
18
18
 
19
-
20
-
21
-
22
-
19
+ /**
20
+ * Returns true if map contains specified key.
21
+ * Note: fallback implementation is O(N). You can remove it after 05.2025
22
+ */
23
23
  containsKey := func(map, key) {
24
- for k, _ in map {
25
- if key == k {
26
- return true
27
- }
28
- }
24
+ for k, _ in map {
25
+ if key == k {
26
+ return true
27
+ }
28
+ }
29
29
 
30
- return false
30
+ return false
31
31
  }
32
32
 
33
-
33
+ // Load effective version of map key checker if it exists in controller's API
34
34
  plapi := import("plapi")
35
35
  if ll.methodExists(plapi, "mapHasKey") {
36
- containsKey = func(map, key) {
37
- return plapi.mapHasKey(map, key)
38
- }
39
- }
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
36
+ containsKey = func(map, key) {
37
+ return plapi.mapHasKey(map, key)
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Transforms all keys of the map with a function and returns a new map with these keys.
43
+ *
44
+ * @param map: map[key]any
45
+ * @param fnK: func(key): newKey - a function that gets a key and returns a new key.
46
+ * @return new map: map[newKey]any - a transformed map
47
+ */
48
48
  mapKeys := func(map, fnK) {
49
- newM := {}
50
- for k, v in map {
51
- newM[fnK(k)] = v
52
- }
49
+ newM := {}
50
+ for k, v in map {
51
+ newM[fnK(k)] = v
52
+ }
53
53
 
54
- return newM
54
+ return newM
55
55
  }
56
56
 
57
-
57
+ // Map values
58
58
  mapValues := func(map, fnV) {
59
- newM := {}
60
- for k, v in map {
61
- newM[k] = fnV(v)
62
- }
59
+ newM := {}
60
+ for k, v in map {
61
+ newM[k] = fnV(v)
62
+ }
63
63
 
64
- return newM
64
+ return newM
65
65
  }
66
66
 
67
-
67
+ // Map keys and values
68
68
  map := func(map, fn) {
69
- newM := {}
70
- for k, v in map {
71
- r := fn(k, v)
72
- newM[r.key] = r.value
73
- }
69
+ newM := {}
70
+ for k, v in map {
71
+ r := fn(k, v)
72
+ newM[r.key] = r.value
73
+ }
74
74
 
75
- return newM
75
+ return newM
76
76
  }
77
77
 
78
78
  filter := func(map, predicateFn) {
79
- newM := {}
80
- for k, v in map {
81
- if predicateFn(k, v) {
82
- newM[k] = v
83
- }
84
- }
79
+ newM := {}
80
+ for k, v in map {
81
+ if predicateFn(k, v) {
82
+ newM[k] = v
83
+ }
84
+ }
85
85
 
86
- return newM
86
+ return newM
87
87
  }
88
88
 
89
89
  filterValues := func(map, predicateFnV) {
90
- return filter(map, func(k, v) { return predicateFnV(v) })
90
+ return filter(map, func(k, v) { return predicateFnV(v) })
91
91
  }
92
92
 
93
93
  filterKeys := func(map, predicateFnK) {
94
- return filter(map, func(k, v) { return predicateFnK(k) })
94
+ return filter(map, func(k, v) { return predicateFnK(k) })
95
95
  }
96
96
 
97
97
  filterKeysValues := func(map, predicateFnK, predicateFnV) {
98
- return filter(map, func(k, v) { return predicateFnK(k) && predicateFnV(v) })
99
- }
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
98
+ return filter(map, func(k, v) { return predicateFnK(k) && predicateFnV(v) })
99
+ }
100
+
101
+ /**
102
+ * Returns a deep copy of a map or an array.
103
+ * Optionally removes keys having undefined value.
104
+ *
105
+ * @param obj - object to be cloned
106
+ * @param ops - additional options
107
+ * {
108
+ * removeUndefs: boolean
109
+ * }
110
+ */
111
111
  clone := func(obj, ...ops) {
112
- removeUndefs := false
113
- if len(ops) == 1 {
114
- removeUndefs = ops[0].removeUndefs
115
- }
116
-
117
- if is_map(obj) || ll.isStrict(obj) {
118
- res := {}
119
- strict := ll.isStrict(obj)
120
- if strict {
121
- obj = ll.fromStrict(obj)
122
- }
123
- for k, v in obj {
124
- if !removeUndefs || !is_undefined(v) {
125
- res[k] = clone(v, ops...)
126
- }
127
- }
128
- if strict {
129
- return ll.toStrict(res)
130
- } else {
131
- return res
132
- }
133
- } else if is_array(obj) {
134
- res := []
135
- for v in obj {
136
- res = append(res, clone(v, ops...))
137
- }
138
- return res
139
- }
140
-
141
- return obj
142
- }
143
-
144
-
145
-
146
-
147
-
112
+ removeUndefs := false
113
+ if len(ops) == 1 {
114
+ removeUndefs = ops[0].removeUndefs
115
+ }
116
+
117
+ if is_map(obj) || ll.isStrict(obj) {
118
+ res := {}
119
+ strict := ll.isStrict(obj)
120
+ if strict {
121
+ obj = ll.fromStrict(obj)
122
+ }
123
+ for k, v in obj {
124
+ if !removeUndefs || !is_undefined(v) {
125
+ res[k] = clone(v, ops...)
126
+ }
127
+ }
128
+ if strict {
129
+ return ll.toStrict(res)
130
+ } else {
131
+ return res
132
+ }
133
+ } else if is_array(obj) {
134
+ res := []
135
+ for v in obj {
136
+ res = append(res, clone(v, ops...))
137
+ }
138
+ return res
139
+ }
140
+
141
+ return obj
142
+ }
143
+
144
+ /**
145
+ * Do shallow merge of arbitrary number of maps.
146
+ * Add {... key: undefined ...} to remove the "key" from the map collected from maps before.
147
+ */
148
148
  merge := func(...maps) {
149
- res := {}
150
- for map in maps {
151
- for k, v in map {
152
- if is_undefined(v) {
153
- delete(res, k)
154
- } else {
155
- res[k] = v
156
- }
157
- }
158
- }
159
- return res
160
- }
161
-
162
-
163
-
164
-
165
-
149
+ res := {}
150
+ for map in maps {
151
+ for k, v in map {
152
+ if is_undefined(v) {
153
+ delete(res, k)
154
+ } else {
155
+ res[k] = v
156
+ }
157
+ }
158
+ }
159
+ return res
160
+ }
161
+
162
+ /**
163
+ * Do deep merge of arbitrary number of maps.
164
+ * Add {... key: undefined ...} to remove the "key" from the map collected from maps before.
165
+ */
166
166
  deepMerge := undefined
167
167
  deepMerge = func(...maps) {
168
- res := {}
169
- for map in maps {
170
- for k, v in map {
171
- if is_undefined(v) {
172
- delete(res, k)
173
- } else if is_map(res[k]) && is_map(v) {
174
- res[k] = deepMerge(res[k], v)
175
- } else {
176
- res[k] = v
177
- }
178
- }
179
- }
180
- return res
168
+ res := {}
169
+ for map in maps {
170
+ for k, v in map {
171
+ if is_undefined(v) {
172
+ delete(res, k)
173
+ } else if is_map(res[k]) && is_map(v) {
174
+ res[k] = deepMerge(res[k], v)
175
+ } else {
176
+ res[k] = v
177
+ }
178
+ }
179
+ }
180
+ return res
181
181
  }
182
182
 
183
183
  export ll.toStrict({
184
- map : map,
185
- merge: merge,
186
- deepMerge: deepMerge,
187
- clone: clone,
188
- mapKeys : mapKeys,
189
- mapValues : mapValues,
190
- filter : filter,
191
- filterValues : filterValues,
192
- filterKeys : filterKeys,
193
- filterKeysValues : filterKeysValues,
194
- getKeys: getKeys,
195
- containsKey: containsKey
184
+ map : map,
185
+ merge: merge,
186
+ deepMerge: deepMerge,
187
+ clone: clone,
188
+ mapKeys : mapKeys,
189
+ mapValues : mapValues,
190
+ filter : filter,
191
+ filterValues : filterValues,
192
+ filterKeys : filterKeys,
193
+ filterKeysValues : filterKeysValues,
194
+ getKeys: getKeys,
195
+ containsKey: containsKey
196
196
  })
@@ -1,22 +1,22 @@
1
-
2
-
3
-
1
+ /**
2
+ * Utilities for working with objects
3
+ */
4
4
 
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
 
7
-
8
-
9
-
7
+ /**
8
+ * Deletes entries with undefined values from object
9
+ */
10
10
  deleteUndefined := func(obj) {
11
- for k, v in obj {
12
- if is_undefined(v) {
13
- delete(obj, k)
14
- }
15
- }
11
+ for k, v in obj {
12
+ if is_undefined(v) {
13
+ delete(obj, k)
14
+ }
15
+ }
16
16
 
17
- return obj
17
+ return obj
18
18
  }
19
19
 
20
20
  export ll.toStrict({
21
- deleteUndefined: deleteUndefined
21
+ deleteUndefined: deleteUndefined
22
22
  })
@@ -1,29 +1,29 @@
1
-
2
-
3
-
1
+ /**
2
+ * Utility functions for working with objects.
3
+ */
4
4
 
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
 
7
-
8
-
9
-
10
-
11
-
12
-
13
-
7
+ /**
8
+ * Inherit all methods and properties of a super object
9
+ *
10
+ * @param super a parent from which we get all methods
11
+ * @param self an object in which we set all super methods
12
+ * @return self
13
+ */
14
14
  inherit := func(super, self) {
15
- self["super"] = super
15
+ self["super"] = super
16
16
 
17
+ // inherit super methods
18
+ for k, v in super {
19
+ if self[k] == undefined {
20
+ self[k] = v
21
+ }
22
+ }
17
23
 
18
- for k, v in super {
19
- if self[k] == undefined {
20
- self[k] = v
21
- }
22
- }
23
-
24
- return ll.toStrict(self)
24
+ return ll.toStrict(self)
25
25
  }
26
26
 
27
27
  export ll.toStrict({
28
- inherit: inherit
28
+ inherit: inherit
29
29
  })