@platforma-sdk/workflow-tengo 6.17.0 → 6.17.2

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 (48) hide show
  1. package/dist/tengo/lib/pframes.util.lib.tengo +27 -1
  2. package/dist/tengo/lib/slices.lib.tengo +49 -26
  3. package/dist/tengo/tpl/annotations.compute.plj.gz +0 -0
  4. package/dist/tengo/tpl/anonymize.deanonymize.plj.gz +0 -0
  5. package/dist/tengo/tpl/anonymize.impl.plj.gz +0 -0
  6. package/dist/tengo/tpl/check_network.create_workdir_from_storage.plj.gz +0 -0
  7. package/dist/tengo/tpl/check_network.download_blob.plj.gz +0 -0
  8. package/dist/tengo/tpl/check_network.run_hello_world.plj.gz +0 -0
  9. package/dist/tengo/tpl/check_network.run_hello_world_py.plj.gz +0 -0
  10. package/dist/tengo/tpl/check_network.upload_blob.plj.gz +0 -0
  11. package/dist/tengo/tpl/check_network.upload_template.plj.gz +0 -0
  12. package/dist/tengo/tpl/check_network.workdir_type_name_extractor.plj.gz +0 -0
  13. package/dist/tengo/tpl/exec.conda.create-env.plj.gz +0 -0
  14. package/dist/tengo/tpl/exec.delayed-compute-allocation.impl.plj.gz +0 -0
  15. package/dist/tengo/tpl/exec.exec-impl.plj.gz +0 -0
  16. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  17. package/dist/tengo/tpl/exec.load-software.impl.plj.gz +0 -0
  18. package/dist/tengo/tpl/exec.monetization_info.plj.gz +0 -0
  19. package/dist/tengo/tpl/exec.monetization_to_json.plj.gz +0 -0
  20. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  21. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  22. package/dist/tengo/tpl/exec.python.venv-bin-path.plj.gz +0 -0
  23. package/dist/tengo/tpl/ll.get-field.plj.gz +0 -0
  24. package/dist/tengo/tpl/pframes.build-table.plj.gz +0 -0
  25. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  26. package/dist/tengo/tpl/pframes.export-parquet-pcolumn-chunk.plj.gz +0 -0
  27. package/dist/tengo/tpl/pframes.export-pframe-for-ui.plj.gz +0 -0
  28. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  29. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  30. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  31. package/dist/tengo/tpl/pframes.merge-resource-maps.plj.gz +0 -0
  32. package/dist/tengo/tpl/pframes.parse-to-json.plj.gz +0 -0
  33. package/dist/tengo/tpl/pframes.process-pcolumn-batch-split.plj.gz +0 -0
  34. package/dist/tengo/tpl/pframes.process-pcolumn-batch.plj.gz +0 -0
  35. package/dist/tengo/tpl/pframes.process-pcolumn-data.plj.gz +0 -0
  36. package/dist/tengo/tpl/pframes.remove-nulls.plj.gz +0 -0
  37. package/dist/tengo/tpl/pframes.slice-data.plj.gz +0 -0
  38. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  39. package/dist/tengo/tpl/pframes.xsv-import-if-not-null.plj.gz +0 -0
  40. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  41. package/dist/tengo/tpl/pt.import-dir.plj.gz +0 -0
  42. package/dist/tengo/tpl/pt.workflow-run.plj.gz +0 -0
  43. package/dist/tengo/tpl/waiter.waiter.plj.gz +0 -0
  44. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  45. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  46. package/dist/tengo/tpl/workflow.query-anchored.plj.gz +0 -0
  47. package/dist/tengo/tpl/workflow.query-context-filter.plj.gz +0 -0
  48. package/package.json +4 -4
@@ -10,6 +10,7 @@ path := import("@platforma-sdk/workflow-tengo:path")
10
10
  json := import("json")
11
11
  sets := import("@platforma-sdk/workflow-tengo:sets")
12
12
  maps := import("@platforma-sdk/workflow-tengo:maps")
13
+ canonical := import("@platforma-sdk/workflow-tengo:canonical")
13
14
 
14
15
  _PRE_PROCESS_STEP_SCHEMA := [`or`,
15
16
  {
@@ -467,6 +468,30 @@ pFrameToColumnsMap := func(pf) {
467
468
 
468
469
 
469
470
 
471
+ encodeJsonColumnData := func(data) {
472
+ rows := []
473
+ for key, value in data {
474
+ rows = append(rows, { key: key, axes: json.decode(key), value: value })
475
+ }
476
+ slices.quickSortInPlaceFn(rows, func(a, b) {
477
+ for i, x in a.axes {
478
+ if x != b.axes[i] {
479
+ return x < b.axes[i]
480
+ }
481
+ }
482
+ return a.key < b.key
483
+ })
484
+ return "{" + text.join(slices.map(rows, func(row) {
485
+ return string(json.encode(row.key)) + ":" + string(canonical.encode(row.value))
486
+ }), ",") + "}"
487
+ }
488
+
489
+
490
+
491
+
492
+
493
+
494
+
470
495
 
471
496
 
472
497
 
@@ -522,7 +547,7 @@ addColumnToWd := func(name, spec, data, execBuilder, ops) {
522
547
  jdataFile := "res" + data.id + ".jdata"
523
548
 
524
549
 
525
- execBuilder.writeFile(makePath(jdataFile), data.getDataAsJson().data)
550
+ execBuilder.writeFile(makePath(jdataFile), encodeJsonColumnData(data.getDataAsJson().data))
526
551
 
527
552
 
528
553
  execBuilder.writeFile(makePath(name + ".datainfo"), {
@@ -838,6 +863,7 @@ export ll.toStrict({
838
863
  decomposePfconvImportCfg: decomposePfconvImportCfg,
839
864
  calculateGroupAxesIndices: calculateGroupAxesIndices,
840
865
  pFrameToColumnsMap: pFrameToColumnsMap,
866
+ encodeJsonColumnData: encodeJsonColumnData,
841
867
  addColumnToWd: addColumnToWd,
842
868
  isFlatPfMap: isFlatPfMap,
843
869
  isStructuredPfMap: isStructuredPfMap,
@@ -213,45 +213,68 @@ every := func(slice, fn) {
213
213
 
214
214
 
215
215
 
216
+
217
+
218
+
219
+
220
+
216
221
  _quickSortFn := func(arr, left, right, less) {
217
- if is_undefined(arr) || len(arr) <= 1 || left < 0 || left >= len(arr) || right < 0 || right >= len(arr) || left >= right {
222
+ if is_undefined(arr) || len(arr) <= 1 || left < 0 || left >= len(arr) || right < 0 || right >= len(arr) {
218
223
  return arr
219
224
  }
220
- idx := left
221
- for i := left; i < right; i++ {
222
- if less(arr[i], arr[right]) {
223
- temp := arr[i]
224
- arr[i] = arr[idx]
225
- arr[idx] = temp
226
- idx++
225
+ for left < right {
226
+ pivot := arr[left + (right - left) / 2]
227
+ i := left
228
+ j := right
229
+ for i <= j {
230
+ for less(arr[i], pivot) { i++ }
231
+ for less(pivot, arr[j]) { j-- }
232
+ if i <= j {
233
+ temp := arr[i]
234
+ arr[i] = arr[j]
235
+ arr[j] = temp
236
+ i++
237
+ j--
238
+ }
239
+ }
240
+ if j - left < right - i {
241
+ _quickSortFn(arr, left, j, less)
242
+ left = i
243
+ } else {
244
+ _quickSortFn(arr, i, right, less)
245
+ right = j
227
246
  }
228
247
  }
229
- temp := arr[right]
230
- arr[right] = arr[idx]
231
- arr[idx] = temp
232
- _quickSortFn(arr, left, idx-1, less)
233
- _quickSortFn(arr, idx+1, right, less)
234
248
  return arr
235
249
  }
236
250
 
237
251
  _quickSort := func(arr, left, right) {
238
- if is_undefined(arr) || len(arr) <= 1 || left < 0 || left >= len(arr) || right < 0 || right >= len(arr) || left >= right {
252
+ if is_undefined(arr) || len(arr) <= 1 || left < 0 || left >= len(arr) || right < 0 || right >= len(arr) {
239
253
  return arr
240
254
  }
241
- idx := left
242
- for i := left; i < right; i++ {
243
- if arr[i] < arr[right] {
244
- temp := arr[i]
245
- arr[i] = arr[idx]
246
- arr[idx] = temp
247
- idx++
255
+ for left < right {
256
+ pivot := arr[left + (right - left) / 2]
257
+ i := left
258
+ j := right
259
+ for i <= j {
260
+ for arr[i] < pivot { i++ }
261
+ for pivot < arr[j] { j-- }
262
+ if i <= j {
263
+ temp := arr[i]
264
+ arr[i] = arr[j]
265
+ arr[j] = temp
266
+ i++
267
+ j--
268
+ }
269
+ }
270
+ if j - left < right - i {
271
+ _quickSort(arr, left, j)
272
+ left = i
273
+ } else {
274
+ _quickSort(arr, i, right)
275
+ right = j
248
276
  }
249
277
  }
250
- temp := arr[right]
251
- arr[right] = arr[idx]
252
- arr[idx] = temp
253
- _quickSort(arr, left, idx-1)
254
- _quickSort(arr, idx+1, right)
255
278
  return arr
256
279
  }
257
280
 
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/workflow-tengo",
3
- "version": "6.17.0",
3
+ "version": "6.17.2",
4
4
  "description": "Tengo SDK library",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -16,14 +16,14 @@
16
16
  "./dist/**/*"
17
17
  ],
18
18
  "dependencies": {
19
- "@milaboratories/pframes-rs-wasip2": "1.1.61",
19
+ "@milaboratories/pframes-rs-wasip2": "1.2.0",
20
20
  "@milaboratories/software-pframes-conv": "2.2.9",
21
21
  "@platforma-open/milaboratories.software-small-binaries": "^2.1.1",
22
- "@platforma-open/milaboratories.software-ptabler": "2.2.0",
22
+ "@platforma-open/milaboratories.software-ptabler": "2.2.1",
23
23
  "@platforma-open/milaboratories.software-ptexter": "1.2.6"
24
24
  },
25
25
  "devDependencies": {
26
- "@platforma-sdk/tengo-builder": "4.1.12"
26
+ "@platforma-sdk/tengo-builder": "4.1.14"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",