@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
@@ -3,163 +3,163 @@ text := import("text")
3
3
  slices := import("@platforma-sdk/workflow-tengo:slices")
4
4
  validation := import("@platforma-sdk/workflow-tengo:validation")
5
5
 
6
-
7
-
8
-
9
-
10
-
6
+ /**
7
+ * Joins path elements into a single path.
8
+ *
9
+ * @param elems: ...string - any number of elements.
10
+ */
11
11
  join := func(...elems) {
12
- validation.assertJsonSchema(elems, ["string"])
13
- return ll.filepathJoin(elems...)
12
+ validation.assertJsonSchema(elems, ["string"])
13
+ return ll.filepathJoin(elems...)
14
14
  }
15
15
 
16
-
17
-
18
-
19
-
20
-
21
-
16
+ /**
17
+ * Like join, joins elements to a single path,
18
+ * but can be used safely in regexps.
19
+ *
20
+ * @param elems: ...string - any number of elements.
21
+ */
22
22
  regexpJoin := func(...elems) {
23
- validation.assertJsonSchema(elems, ["string"])
24
- return ll.filepathRegexpJoin(elems...)
23
+ validation.assertJsonSchema(elems, ["string"])
24
+ return ll.filepathRegexpJoin(elems...)
25
25
  }
26
26
 
27
-
28
-
29
-
30
-
31
-
32
-
33
-
27
+ /**
28
+ * Joins elements of the filepath and canonizes it, i.e.
29
+ * semantically resolves ../ and ./ and changes slash
30
+ * to a pathSeparator.
31
+ *
32
+ * @param elems: ...string - any number of elements.
33
+ */
34
34
  canonize := func(...elems) {
35
- validation.assertJsonSchema(elems, ["string"])
36
- return ll.filepathCanonize(elems...)
35
+ validation.assertJsonSchema(elems, ["string"])
36
+ return ll.filepathCanonize(elems...)
37
37
  }
38
38
 
39
-
40
-
41
-
42
-
43
-
39
+ /**
40
+ * Returns a path separator. "/" on Unix-like systems, "\\" on Windows.
41
+ *
42
+ * @return separator: string
43
+ */
44
44
  separator := ll.pathSeparator
45
45
 
46
-
47
-
48
-
49
-
50
-
51
-
52
-
46
+ /**
47
+ * Trims a beginning of the file path following by a path separator.
48
+ *
49
+ * @param path: string - a file path
50
+ * @param prefix: string - the beginning of the file path
51
+ * @return trimmed path: string - a path without the beginning and a path separator.
52
+ */
53
53
  trimPrefix := func(path, prefix) {
54
- validation.assertJsonSchema([path, prefix], ["string"])
55
- return text.trim_prefix(path, prefix+separator)
54
+ validation.assertJsonSchema([path, prefix], ["string"])
55
+ return text.trim_prefix(path, prefix+separator)
56
56
  }
57
57
 
58
58
  _sepOrDefault := func(...sep) {
59
- validation.assertJsonSchema(sep, [["or", "string", "char", "null"]])
59
+ validation.assertJsonSchema(sep, [["or", "string", "char", "null"]])
60
60
 
61
- if slices.length(sep) == 0 {
62
- return separator
63
- }
61
+ if slices.length(sep) == 0 {
62
+ return separator
63
+ }
64
64
 
65
- return sep[0]
65
+ return sep[0]
66
66
  }
67
67
 
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
68
+ /**
69
+ * Splits a path to path components.
70
+ * If it was a file name, the last component will be this name.
71
+ *
72
+ * @param path: string - the path
73
+ * @param sep: string - an optional path separator.
74
+ * @return components: []string - all directories and a file name at the end.
75
+ */
76
76
  split := func(path, ...sep) {
77
- sep = _sepOrDefault(sep...)
77
+ sep = _sepOrDefault(sep...)
78
78
 
79
- return text.split(path, sep)
79
+ return text.split(path, sep)
80
80
  }
81
81
 
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
82
+ /**
83
+ * Gets all directories with their ancestors from the root.
84
+ * For example, for dir1/dir2/dir3/abc.txt it gives:
85
+ * ["dir1", "dir1/dir2", "dir1/dir2/dir3", "dir1/dir2/dir3/abc.txt"]
86
+ *
87
+ * @param path: string - the path
88
+ * @param separator: string - an optional separator.
89
+ * @return components: []string - all directories and a file name at the end from their root.
90
+ */
91
91
  getBasenameDirs := func(path, ...sep) {
92
- validation.assertJsonSchema(path, "string")
93
- sep = _sepOrDefault(sep...)
92
+ validation.assertJsonSchema(path, "string")
93
+ sep = _sepOrDefault(sep...)
94
94
 
95
- dirs := split(path, sep)
95
+ dirs := split(path, sep)
96
96
 
97
- dirTails := []
98
- for i := 1; i <= len(dirs); i++ {
99
- dirTails = append(dirTails, text.join(dirs[:i], sep))
100
- }
97
+ dirTails := []
98
+ for i := 1; i <= len(dirs); i++ {
99
+ dirTails = append(dirTails, text.join(dirs[:i], sep))
100
+ }
101
101
 
102
- return dirTails
102
+ return dirTails
103
103
  }
104
104
 
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
105
+ /**
106
+ * Gets an extension to the last "." symbol,
107
+ * or, if the name contains ".gz" or any other archive suffix,
108
+ * then till the next from the last "." symbol.
109
+ *
110
+ * @param path: string - a path
111
+ * @return extension: string - the extension without the leading "."
112
+ */
113
113
  getExtension := func(path, ...sep) {
114
- validation.assertJsonSchema(path, "string")
115
- ext := ""
116
- sep = _sepOrDefault(sep...)
117
-
118
- nPoints := 1
119
- if text.re_match(`\.(gz|xz|bzip|zstd)$`, path) {
120
- nPoints = 2
121
- }
122
-
123
- for i := len(path) - 1; i >= 0 && path[i] != sep; i-- {
124
- if path[i] == '.' {
125
- ext = path[i:]
126
- nPoints--
127
- if nPoints == 0 {
128
- break
129
- }
130
- }
131
- }
132
-
133
- if len(ext) > 0 {
134
- ext = ext[1:] // remove leading "."
135
- }
136
-
137
- return ext
138
- }
139
-
140
-
141
-
142
-
143
-
144
-
114
+ validation.assertJsonSchema(path, "string")
115
+ ext := ""
116
+ sep = _sepOrDefault(sep...)
117
+
118
+ nPoints := 1
119
+ if text.re_match(`\.(gz|xz|bzip|zstd)$`, path) {
120
+ nPoints = 2
121
+ }
122
+
123
+ for i := len(path) - 1; i >= 0 && path[i] != sep; i-- {
124
+ if path[i] == '.' {
125
+ ext = path[i:]
126
+ nPoints--
127
+ if nPoints == 0 {
128
+ break
129
+ }
130
+ }
131
+ }
132
+
133
+ if len(ext) > 0 {
134
+ ext = ext[1:] // remove leading "."
135
+ }
136
+
137
+ return ext
138
+ }
139
+
140
+ /**
141
+ * Checks if the path is correct.
142
+ *
143
+ * @param path: string - a path
144
+ */
145
145
  assertIsValid := func(path) {
146
- validation.assertJsonSchema(path, "string")
147
- if text.contains(path, "/") {
148
- ll.assert(
149
- text.contains(path, separator),
150
- "path to a file must be separated by OS's specific path separator. " +
151
- "Did you forget to use 'path.join' or 'path.regexpJoin'?")
152
- }
146
+ validation.assertJsonSchema(path, "string")
147
+ if text.contains(path, "/") {
148
+ ll.assert(
149
+ text.contains(path, separator),
150
+ "path to a file must be separated by OS's specific path separator. " +
151
+ "Did you forget to use 'path.join' or 'path.regexpJoin'?")
152
+ }
153
153
  }
154
154
 
155
155
  export ll.toStrict({
156
- join: join,
157
- regexpJoin: regexpJoin,
158
- canonize: canonize,
159
- separator: separator,
160
- trimPrefix: trimPrefix,
161
- split: split,
162
- getBasenameDirs: getBasenameDirs,
163
- getExtension: getExtension,
164
- assertIsValid: assertIsValid
156
+ join: join,
157
+ regexpJoin: regexpJoin,
158
+ canonize: canonize,
159
+ separator: separator,
160
+ trimPrefix: trimPrefix,
161
+ split: split,
162
+ getBasenameDirs: getBasenameDirs,
163
+ getExtension: getExtension,
164
+ assertIsValid: assertIsValid
165
165
  })
@@ -1,20 +1,20 @@
1
-
2
-
3
-
4
-
1
+ /**
2
+ * Contain field names and other constant used in PFrames
3
+ * libraries and templates.
4
+ */
5
5
 
6
6
  ll := import("@platforma-sdk/workflow-tengo:ll")
7
7
 
8
-
9
-
10
-
11
-
8
+ /**
9
+ * Name of the field under which the iteration value like in "map" and "aggregate" is passed
10
+ * to the iteration body template.
11
+ */
12
12
  VALUE_FIELD_NAME := "__value__"
13
13
 
14
-
15
-
16
-
17
-
14
+ /**
15
+ * Name of the field under which the iteration key like in "map" and "aggregate" is passed
16
+ * to the iteration body template.
17
+ */
18
18
  KEY_FIELD_NAME := "__key__"
19
19
 
20
20
  RTYPE_P_FRAME := { Name: "PFrame", Version: "1" }
@@ -34,20 +34,20 @@ RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED := { Name: P_COLUMN_SUPER_PARTITION
34
34
  KIND_P_COLUMN := "PColumn"
35
35
 
36
36
  export ll.toStrict({
37
- KIND_P_COLUMN : KIND_P_COLUMN,
38
- KEY_FIELD_NAME : KEY_FIELD_NAME,
39
- VALUE_FIELD_NAME : VALUE_FIELD_NAME,
40
- P_COLUMN_DATA_TYPE_PREFIX : P_COLUMN_DATA_TYPE_PREFIX,
41
- P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX : P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX,
42
-
43
- RTYPE_P_FRAME : RTYPE_P_FRAME,
44
-
45
- RTYPE_P_COLUMN_DATA_JSON : RTYPE_P_COLUMN_DATA_JSON,
46
- RTYPE_P_COLUMN_DATA_BINARY : RTYPE_P_COLUMN_DATA_BINARY,
47
- RTYPE_P_COLUMN_DATA_RESOURCE_MAP : RTYPE_P_COLUMN_DATA_RESOURCE_MAP,
48
- RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED : RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED,
49
- RTYPE_P_COLUMN_DATA_JSON_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_PARTITIONED,
50
- RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED,
51
- RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED,
52
- RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED
37
+ KIND_P_COLUMN : KIND_P_COLUMN,
38
+ KEY_FIELD_NAME : KEY_FIELD_NAME,
39
+ VALUE_FIELD_NAME : VALUE_FIELD_NAME,
40
+ P_COLUMN_DATA_TYPE_PREFIX : P_COLUMN_DATA_TYPE_PREFIX,
41
+ P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX : P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX,
42
+
43
+ RTYPE_P_FRAME : RTYPE_P_FRAME,
44
+
45
+ RTYPE_P_COLUMN_DATA_JSON : RTYPE_P_COLUMN_DATA_JSON,
46
+ RTYPE_P_COLUMN_DATA_BINARY : RTYPE_P_COLUMN_DATA_BINARY,
47
+ RTYPE_P_COLUMN_DATA_RESOURCE_MAP : RTYPE_P_COLUMN_DATA_RESOURCE_MAP,
48
+ RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED : RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED,
49
+ RTYPE_P_COLUMN_DATA_JSON_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_PARTITIONED,
50
+ RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED,
51
+ RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED,
52
+ RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED
53
53
  })
@@ -5,43 +5,43 @@ file := import("@platforma-sdk/workflow-tengo:file")
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
  assets := import("@platforma-sdk/workflow-tengo:assets")
7
7
 
8
-
8
+ // reference to the template doing nested super-partitioned export
9
9
  nestedTpl := assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-single-pcolumn")
10
10
 
11
-
11
+ /** Implements core export logic for export-single-pcolumn and export-multiple-pcolumns templates */
12
12
  exportPColumnData := func(data) {
13
- if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED) ||
14
- data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED) ||
15
- data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED) {
16
-
17
-
18
- newData := smart.structBuilder(data.info().Type, data.info().Data)
19
- for key, partData in data.inputs() {
20
- newData.createInputField(key).set(render.createEphemeral(nestedTpl, { data: partData }).output("result"))
21
- }
22
- return newData.lockAndBuild()
23
-
24
- } else if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP) ||
25
- data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON_PARTITIONED) ||
26
- data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED) {
27
-
28
-
29
- newData := smart.structBuilder(data.info().Type, data.info().Data)
30
- for key, partData in data.inputs() {
31
- newData.createInputField(key).set(file.exportFile(partData))
32
- }
33
- return newData.lockAndBuild()
34
-
35
- } else if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON) {
36
-
37
-
38
- return data
39
-
40
- } else {
41
- ll.panic("unknonw resource type: %v", data.info().Type)
42
- }
13
+ if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED) ||
14
+ data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED) ||
15
+ data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED) {
16
+ // super-partitioned data
17
+
18
+ newData := smart.structBuilder(data.info().Type, data.info().Data)
19
+ for key, partData in data.inputs() {
20
+ newData.createInputField(key).set(render.createEphemeral(nestedTpl, { data: partData }).output("result"))
21
+ }
22
+ return newData.lockAndBuild()
23
+
24
+ } else if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_RESOURCE_MAP) ||
25
+ data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON_PARTITIONED) ||
26
+ data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED) {
27
+ // data directly referencing blob objects
28
+
29
+ newData := smart.structBuilder(data.info().Type, data.info().Data)
30
+ for key, partData in data.inputs() {
31
+ newData.createInputField(key).set(file.exportFile(partData))
32
+ }
33
+ return newData.lockAndBuild()
34
+
35
+ } else if data.checkResourceType(pConstants.RTYPE_P_COLUMN_DATA_JSON) {
36
+ // data embeds all information and needs no special exporting procedure
37
+
38
+ return data
39
+
40
+ } else {
41
+ ll.panic("unknonw resource type: %v", data.info().Type)
42
+ }
43
43
  }
44
44
 
45
45
  export ll.toStrict({
46
- exportPColumnData: exportPColumnData
46
+ exportPColumnData: exportPColumnData
47
47
  })
@@ -1,6 +1,6 @@
1
-
2
-
3
-
1
+ /**
2
+ * Working with p-frames
3
+ */
4
4
 
5
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
6
  oop := import("@platforma-sdk/workflow-tengo:oop")
@@ -9,57 +9,57 @@ assets := import("@platforma-sdk/workflow-tengo:assets")
9
9
  render := import("@platforma-sdk/workflow-tengo:render")
10
10
  constants := import("@platforma-sdk/workflow-tengo:pframes.constants")
11
11
 
12
-
13
-
14
-
15
-
12
+ /**
13
+ * Given a reference to the p-frame, converts all inner resource files into resources that can be
14
+ * downloaded from the UI side.
15
+ */
16
16
  exportFrame := func(pf) {
17
- return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-pframe"), { pf: pf }).output("result")
17
+ return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-pframe"), { pf: pf }).output("result")
18
18
  }
19
19
 
20
-
21
-
22
-
20
+ /**
21
+ * Export single PColumn data
22
+ */
23
23
  exportColumnData := func(data) {
24
- return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-single-pcolumn"), { data: data }).output("result")
24
+ return render.createEphemeral(assets.importTemplate("@platforma-sdk/workflow-tengo:pframes.export-single-pcolumn"), { data: data }).output("result")
25
25
  }
26
26
 
27
-
28
-
29
-
27
+ /**
28
+ * Creates a builder for p-frame resource.
29
+ */
30
30
  pFrameBuilder := func() {
31
- r := smart.structBuilder(constants.RTYPE_P_FRAME)
32
-
33
- self := undefined
34
- self = ll.toStrict(oop.inherit(r, {
35
-
36
- add: func(column, spec, data) {
37
- if (!is_undefined(spec)) {
38
- r.createInputField(column + ".spec").setRefOrJson(spec)
39
- }
40
- if (!is_undefined(data)) {
41
- r.createInputField(column + ".data").setRefOrJson(data)
31
+ r := smart.structBuilder(constants.RTYPE_P_FRAME)
32
+
33
+ self := undefined
34
+ self = ll.toStrict(oop.inherit(r, {
35
+
36
+ add: func(column, spec, data) {
37
+ if (!is_undefined(spec)) {
38
+ r.createInputField(column + ".spec").setRefOrJson(spec)
39
+ }
40
+ if (!is_undefined(data)) {
41
+ r.createInputField(column + ".data").setRefOrJson(data)
42
+ }
43
+ return self
44
+ },
45
+
46
+ build: func() {
47
+ return r.lockAndBuild()
48
+ }
49
+ }))
50
+ return self
42
51
  }
43
- return self
44
- },
45
-
46
- build: func() {
47
- return r.lockAndBuild()
48
- }
49
- }))
50
- return self
51
- }
52
-
53
-
54
-
55
52
 
53
+ /**
54
+ * Creates a builder for a resource map p-column's data.
55
+ */
56
56
  pColumnResourceMapDataBuilder := func(keyLength) {
57
- ll.panic("pframes.pColumnResourceMapDataBuilder is not supported any more; use pcolumn.resourceMapBuilder")
57
+ ll.panic("pframes.pColumnResourceMapDataBuilder is not supported any more; use pcolumn.resourceMapBuilder")
58
58
  }
59
59
 
60
60
  export ll.toStrict({
61
- exportFrame: exportFrame,
62
- pFrameBuilder: pFrameBuilder,
63
- exportColumnData: exportColumnData,
64
- pColumnResourceMapDataBuilder: pColumnResourceMapDataBuilder
61
+ exportFrame: exportFrame,
62
+ pFrameBuilder: pFrameBuilder,
63
+ exportColumnData: exportColumnData,
64
+ pColumnResourceMapDataBuilder: pColumnResourceMapDataBuilder
65
65
  })