@platforma-sdk/workflow-tengo 2.9.5 → 2.9.7

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,4 +1,4 @@
1
-
1
+ /** API to retrieve assets packed with template code (like other templates). */
2
2
 
3
3
  plapi := import("plapi")
4
4
  json := import("json")
@@ -7,67 +7,67 @@ smart := import("@platforma-sdk/workflow-tengo:smart")
7
7
  swinfo := import("@platforma-sdk/workflow-tengo:assets.swinfo")
8
8
  maps := import("@platforma-sdk/workflow-tengo:maps")
9
9
 
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
10
+ /**
11
+ * Returns resource of template available in current execution context.
12
+ *
13
+ * @param tplName: string - full name of a template, including namespace (package name).
14
+ * Local templates (within the same package) can omit namespace part and start the name with colon:
15
+ * - "@company/package:someTemplateName"
16
+ * - ":myLocalTemplate"
17
+ *
18
+ * @return template: smart.resource - resource of tengo template with given name.
19
+ */
20
20
  importTemplate := func(tplName) {
21
- return smart.resource(plapi.getTemplateId(tplName))
21
+ return smart.resource(plapi.getTemplateId(tplName))
22
22
  }
23
23
 
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
24
+ /**
25
+ * Returns asset description suitable for 'exec' operations.
26
+ * Asset is the way to put static files into working directory before execution of the command.
27
+ *
28
+ * @param assetName: string - full name of asset entrypoint, including namespace (NPM package name).
29
+ * Local software entrypoints (within the same package) can omit namespace
30
+ * part and start the name with colon:
31
+ * - "@company/package:some-software"
32
+ * - ":my-local-software"
33
+ */
34
34
  importAsset := func(assetName) {
35
- asset := plapi.getSoftwareInfo(assetName)
36
- return ll.toStrict({
37
- _type: "assetDescriptor",
38
- _id: asset.id,
39
-
40
- resource: smart.resource(asset.id),
41
- name: asset.name,
42
- version: asset.version,
43
- blobRef: asset.blobRef,
44
- descriptor: ll.toStrict(json.decode(asset.descriptor)) // raw sw.json data with asset entrypoint descriptor
45
- })
35
+ asset := plapi.getSoftwareInfo(assetName)
36
+ return ll.toStrict({
37
+ _type: "assetDescriptor",
38
+ _id: asset.id,
39
+
40
+ resource: smart.resource(asset.id),
41
+ name: asset.name,
42
+ version: asset.version,
43
+ blobRef: asset.blobRef,
44
+ descriptor: ll.toStrict(json.decode(asset.descriptor)) // raw sw.json data with asset entrypoint descriptor
45
+ })
46
46
  }
47
47
 
48
-
49
-
50
-
51
-
52
-
53
-
54
-
48
+ /**
49
+ * Checks if given item is an asset info
50
+ *
51
+ * @param toCheck: any - item to check
52
+ *
53
+ * @return isAsset: boolean - true for asset info, loaded with importAsset()
54
+ */
55
55
  isAssetInfo := func(toCheck) {
56
- if !ll.isMap(toCheck) {
57
- return false
58
- }
56
+ if !ll.isMap(toCheck) {
57
+ return false
58
+ }
59
59
 
60
- if !maps.containsKey(toCheck, "_type") {
61
- return false
62
- }
60
+ if !maps.containsKey(toCheck, "_type") {
61
+ return false
62
+ }
63
63
 
64
- return toCheck._type == "assetDescriptor"
64
+ return toCheck._type == "assetDescriptor"
65
65
  }
66
66
 
67
67
  export ll.toStrict({
68
- importTemplate : importTemplate,
69
- importSoftware : swinfo.importSoftware,
70
- isSoftwareInfo : swinfo.isSoftwareInfo,
71
- importAsset : importAsset,
72
- isAssetInfo : isAssetInfo
68
+ importTemplate : importTemplate,
69
+ importSoftware : swinfo.importSoftware,
70
+ isSoftwareInfo : swinfo.isSoftwareInfo,
71
+ importAsset : importAsset,
72
+ isAssetInfo : isAssetInfo
73
73
  })
@@ -1,6 +1,6 @@
1
-
2
-
3
-
1
+ /**
2
+ * A file that contains software info constructors and related functions.
3
+ */
4
4
 
5
5
  plapi := import("plapi")
6
6
  ll := import("@platforma-sdk/workflow-tengo:ll")
@@ -8,58 +8,58 @@ maps := import("@platforma-sdk/workflow-tengo:maps")
8
8
  smart := import("@platforma-sdk/workflow-tengo:smart")
9
9
  json := import("json")
10
10
 
11
-
12
-
13
-
11
+ /**
12
+ * Creates a software info by sw that is got from backend.
13
+ */
14
14
  newSoftwareInfo := func(sw) {
15
- return ll.toStrict({
16
- _type: "softwareDescriptor",
17
- _id: sw.id,
18
-
19
- resource: smart.resource(sw.id),
20
- name: sw.name,
21
- version: sw.version,
22
- blobRef: sw.blobRef,
23
- descriptor: ll.toStrict(json.decode(sw.descriptor)) // raw sw.json data with software entrypoint descriptor
24
- })
15
+ return ll.toStrict({
16
+ _type: "softwareDescriptor",
17
+ _id: sw.id,
18
+
19
+ resource: smart.resource(sw.id),
20
+ name: sw.name,
21
+ version: sw.version,
22
+ blobRef: sw.blobRef,
23
+ descriptor: ll.toStrict(json.decode(sw.descriptor)) // raw sw.json data with software entrypoint descriptor
24
+ })
25
25
  }
26
26
 
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
27
+ /**
28
+ * Returns software description suitable for 'exec' operations.
29
+ *
30
+ * @param swName: string - full name of the software entrypoint, including namespace (NPM package name).
31
+ * Local software entrypoints (within the same package) can omit namespace part
32
+ * and start the name with colon:
33
+ * - "@company/package:some-oftware"
34
+ * - ":my-local-software"
35
+ *
36
+ * @return softwareInfo: softwareInfo - structure with software info.
37
+ */
38
38
  importSoftware := func(swName) {
39
- return newSoftwareInfo(plapi.getSoftwareInfo(swName))
39
+ return newSoftwareInfo(plapi.getSoftwareInfo(swName))
40
40
  }
41
41
 
42
-
43
-
44
-
45
-
46
-
47
-
48
-
42
+ /**
43
+ * Checks if given item is a software info
44
+ *
45
+ * @param toCheck: any - item to check
46
+ *
47
+ * @return isSoftware: boolean - true for software info, loaded with importSoftware()
48
+ */
49
49
  isSoftwareInfo := func(toCheck) {
50
- if !ll.isMap(toCheck) {
51
- return false
52
- }
50
+ if !ll.isMap(toCheck) {
51
+ return false
52
+ }
53
53
 
54
- if !maps.containsKey(toCheck, "_type") {
55
- return false
56
- }
54
+ if !maps.containsKey(toCheck, "_type") {
55
+ return false
56
+ }
57
57
 
58
- return toCheck._type == "softwareDescriptor"
58
+ return toCheck._type == "softwareDescriptor"
59
59
  }
60
60
 
61
61
  export ll.toStrict({
62
- newSoftwareInfo: newSoftwareInfo,
63
- importSoftware: importSoftware,
64
- isSoftwareInfo: isSoftwareInfo
62
+ newSoftwareInfo: newSoftwareInfo,
63
+ importSoftware: importSoftware,
64
+ isSoftwareInfo: isSoftwareInfo
65
65
  })
@@ -1,11 +1,11 @@
1
-
1
+ // constants
2
2
 
3
3
  ll := import("@platforma-sdk/workflow-tengo:ll")
4
4
 
5
5
  RTYPE_JSON := { Name: "json/object", Version: "1" }
6
6
 
7
7
  RTYPE_MAP := { Name: "std/map", Version: "1" }
8
-
8
+ // @TODO this should be deleted once we align on map type name
9
9
  RTYPE_MAP_ALT := { Name: "StdMap", Version: "1" }
10
10
  RTYPE_MAP_EPH := { Name: "EphStdMap", Version: "1" }
11
11
 
@@ -33,7 +33,7 @@ RTYPE_WORKDIR_FILL_RULES := { Name: "WorkdirFill/rules", Version: "1" }
33
33
  RTYPE_WORKDIR_SAVE := { Name: "WorkdirSave", Version: "1" }
34
34
  RTYPE_WORKDIR_SAVE_RULES := { Name: "WorkdirSave/rules", Version: "1" }
35
35
 
36
-
36
+ /** Main resource type of representing a PL error */
37
37
  RTYPE_JSON_ERROR := { Name: "json/resourceError", Version: "1"}
38
38
 
39
39
  FTYPE_OTW := "OTW" // Generic one-time writable field. The value of this field can be set only once.
@@ -43,33 +43,33 @@ FTYPE_OUTPUT := "output"
43
43
  FTYPE_DYNAMIC := "dynamic"
44
44
 
45
45
  export ll.toStrict({
46
- FTYPE_OTW : FTYPE_OTW,
47
- FTYPE_SERVICE : FTYPE_SERVICE,
48
- FTYPE_INPUT : FTYPE_INPUT,
49
- FTYPE_OUTPUT : FTYPE_OUTPUT,
50
- FTYPE_DYNAMIC : FTYPE_DYNAMIC,
51
-
52
- RTYPE_BINARY_MAP : RTYPE_BINARY_MAP,
53
- RTYPE_BINARY_VALUE : RTYPE_BINARY_VALUE,
54
- RTYPE_BLOB_MAP : RTYPE_BLOB_MAP,
55
- RTYPE_BOBJECT_SPEC : RTYPE_BOBJECT_SPEC,
56
- RTYPE_BRESOLVE_CHOICE : RTYPE_BRESOLVE_CHOICE,
57
- RTYPE_BRESOLVE_FIRST : RTYPE_BRESOLVE_FIRST,
58
- RTYPE_BRESOLVE_NO_RESULT : RTYPE_BRESOLVE_NO_RESULT,
59
- RTYPE_CONTEXT : RTYPE_CONTEXT,
60
- RTYPE_CONTEXT_END : RTYPE_CONTEXT_END,
61
- RTYPE_JSON : RTYPE_JSON,
62
- RTYPE_MAP : RTYPE_MAP,
63
- RTYPE_MAP_ALT : RTYPE_MAP_ALT,
64
- RTYPE_MAP_EPH : RTYPE_MAP_EPH,
65
- RTYPE_QUERY_RESULT : RTYPE_QUERY_RESULT,
66
- RTYPE_OBJECT_SPEC : RTYPE_OBJECT_SPEC,
67
- RTYPE_RENDER_EPH_TEMPLATE : RTYPE_RENDER_EPH_TEMPLATE,
68
- RTYPE_RENDER_TEMPLATE : RTYPE_RENDER_TEMPLATE,
69
- RTYPE_WORKDIR_CREATE : RTYPE_WORKDIR_CREATE,
70
- RTYPE_WORKDIR_FILL : RTYPE_WORKDIR_FILL,
71
- RTYPE_WORKDIR_FILL_RULES : RTYPE_WORKDIR_FILL_RULES,
72
- RTYPE_WORKDIR_SAVE : RTYPE_WORKDIR_SAVE,
73
- RTYPE_WORKDIR_SAVE_RULES : RTYPE_WORKDIR_SAVE_RULES,
74
- RTYPE_JSON_ERROR : RTYPE_JSON_ERROR
46
+ FTYPE_OTW : FTYPE_OTW,
47
+ FTYPE_SERVICE : FTYPE_SERVICE,
48
+ FTYPE_INPUT : FTYPE_INPUT,
49
+ FTYPE_OUTPUT : FTYPE_OUTPUT,
50
+ FTYPE_DYNAMIC : FTYPE_DYNAMIC,
51
+
52
+ RTYPE_BINARY_MAP : RTYPE_BINARY_MAP,
53
+ RTYPE_BINARY_VALUE : RTYPE_BINARY_VALUE,
54
+ RTYPE_BLOB_MAP : RTYPE_BLOB_MAP,
55
+ RTYPE_BOBJECT_SPEC : RTYPE_BOBJECT_SPEC,
56
+ RTYPE_BRESOLVE_CHOICE : RTYPE_BRESOLVE_CHOICE,
57
+ RTYPE_BRESOLVE_FIRST : RTYPE_BRESOLVE_FIRST,
58
+ RTYPE_BRESOLVE_NO_RESULT : RTYPE_BRESOLVE_NO_RESULT,
59
+ RTYPE_CONTEXT : RTYPE_CONTEXT,
60
+ RTYPE_CONTEXT_END : RTYPE_CONTEXT_END,
61
+ RTYPE_JSON : RTYPE_JSON,
62
+ RTYPE_MAP : RTYPE_MAP,
63
+ RTYPE_MAP_ALT : RTYPE_MAP_ALT,
64
+ RTYPE_MAP_EPH : RTYPE_MAP_EPH,
65
+ RTYPE_QUERY_RESULT : RTYPE_QUERY_RESULT,
66
+ RTYPE_OBJECT_SPEC : RTYPE_OBJECT_SPEC,
67
+ RTYPE_RENDER_EPH_TEMPLATE : RTYPE_RENDER_EPH_TEMPLATE,
68
+ RTYPE_RENDER_TEMPLATE : RTYPE_RENDER_TEMPLATE,
69
+ RTYPE_WORKDIR_CREATE : RTYPE_WORKDIR_CREATE,
70
+ RTYPE_WORKDIR_FILL : RTYPE_WORKDIR_FILL,
71
+ RTYPE_WORKDIR_FILL_RULES : RTYPE_WORKDIR_FILL_RULES,
72
+ RTYPE_WORKDIR_SAVE : RTYPE_WORKDIR_SAVE,
73
+ RTYPE_WORKDIR_SAVE_RULES : RTYPE_WORKDIR_SAVE_RULES,
74
+ RTYPE_JSON_ERROR : RTYPE_JSON_ERROR
75
75
  })
@@ -6,40 +6,40 @@ desc := import("@platforma-sdk/workflow-tengo:exec.descriptor")
6
6
  constants := import("@platforma-sdk/workflow-tengo:exec.constants")
7
7
 
8
8
  rVenvInputSchema := {
9
- operationMode: "string",
10
- toolset: "string",
11
- dependencies: {"any": "string"},
12
- software: validation.reference,
9
+ operationMode: "string",
10
+ toolset: "string",
11
+ dependencies: {"any": "string"},
12
+ software: validation.reference,
13
13
 
14
- rDescriptor: desc.runEnvScheme,
15
- R: validation.reference
14
+ rDescriptor: desc.runEnvScheme,
15
+ R: validation.reference
16
16
  }
17
17
 
18
18
  runRBuilder := func(operationMode, wd, rPackage, rDescriptor) {
19
- t := desc.canBackendUseExpressions() ? constants.ARG_TYPE_EXPRESSION : constants.ARG_TYPE_VAR
20
- rule := desc.canBackendUseExpressions() ? "R" : "{R}"
21
-
22
- builder := runcmd.builder(wd).
23
- ref("r-run-environment", rPackage).
24
- substitutionRule(rule, "r-run-environment").
25
- addToPath(t, path.join("{R}", rDescriptor.binDir)).
26
- envTyped("RHOME", t, "{R}").
27
- envTyped("R_HOME_DIR", t, "{R}").
28
- envTyped("RENV_PATHS_ROOT", t, path.join("{R}", "renv-root")).
29
- envTyped("RENV_PATHS_BINARY", t, path.join("{R}", "renv-root", "binaries")).
30
- envTyped("RENV_PATHS_SOURCE", t, path.join("{R}", "renv-root", "sources")).
31
- envTyped("RENV_PATHS_CACHE", t, path.join("{R}", "renv-root", "cache"))
32
-
33
- if (operationMode != "dev-local") {
34
-
35
-
36
- builder.envTyped("RENV_CONFIG_REPOS_OVERRIDE", t, path.join("{R}", "packages"))
37
- }
38
-
39
- return builder
19
+ t := desc.canBackendUseExpressions() ? constants.ARG_TYPE_EXPRESSION : constants.ARG_TYPE_VAR
20
+ rule := desc.canBackendUseExpressions() ? "R" : "{R}"
21
+
22
+ builder := runcmd.builder(wd).
23
+ ref("r-run-environment", rPackage).
24
+ substitutionRule(rule, "r-run-environment").
25
+ addToPath(t, path.join("{R}", rDescriptor.binDir)).
26
+ envTyped("RHOME", t, "{R}").
27
+ envTyped("R_HOME_DIR", t, "{R}").
28
+ envTyped("RENV_PATHS_ROOT", t, path.join("{R}", "renv-root")).
29
+ envTyped("RENV_PATHS_BINARY", t, path.join("{R}", "renv-root", "binaries")).
30
+ envTyped("RENV_PATHS_SOURCE", t, path.join("{R}", "renv-root", "sources")).
31
+ envTyped("RENV_PATHS_CACHE", t, path.join("{R}", "renv-root", "cache"))
32
+
33
+ if (operationMode != "dev-local") {
34
+ // In production we can use only locally cached packages: most of commercials have
35
+ // Platforma Backend executed in a very restricted environment with limited access to the internet.
36
+ builder.envTyped("RENV_CONFIG_REPOS_OVERRIDE", t, path.join("{R}", "packages"))
37
+ }
38
+
39
+ return builder
40
40
  }
41
41
 
42
42
  export ll.toStrict({
43
- rVenvInputSchema : rVenvInputSchema,
44
- runRBuilder : runRBuilder
43
+ rVenvInputSchema : rVenvInputSchema,
44
+ runRBuilder : runRBuilder
45
45
  })