@galaxy-tool-util/schema 0.1.0

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 (226) hide show
  1. package/README.md +13 -0
  2. package/dist/index.d.ts +69 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +69 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/schema/bundle-types.d.ts +249 -0
  7. package/dist/schema/bundle-types.d.ts.map +1 -0
  8. package/dist/schema/bundle-types.js +74 -0
  9. package/dist/schema/bundle-types.js.map +1 -0
  10. package/dist/schema/index.d.ts +6 -0
  11. package/dist/schema/index.d.ts.map +1 -0
  12. package/dist/schema/index.js +6 -0
  13. package/dist/schema/index.js.map +1 -0
  14. package/dist/schema/model-factory.d.ts +14 -0
  15. package/dist/schema/model-factory.d.ts.map +1 -0
  16. package/dist/schema/model-factory.js +96 -0
  17. package/dist/schema/model-factory.js.map +1 -0
  18. package/dist/schema/parameters/base.d.ts +62 -0
  19. package/dist/schema/parameters/base.d.ts.map +1 -0
  20. package/dist/schema/parameters/base.js +51 -0
  21. package/dist/schema/parameters/base.js.map +1 -0
  22. package/dist/schema/parameters/gx-baseurl.d.ts +2 -0
  23. package/dist/schema/parameters/gx-baseurl.d.ts.map +1 -0
  24. package/dist/schema/parameters/gx-baseurl.js +16 -0
  25. package/dist/schema/parameters/gx-baseurl.js.map +1 -0
  26. package/dist/schema/parameters/gx-boolean.d.ts +2 -0
  27. package/dist/schema/parameters/gx-boolean.d.ts.map +1 -0
  28. package/dist/schema/parameters/gx-boolean.js +29 -0
  29. package/dist/schema/parameters/gx-boolean.js.map +1 -0
  30. package/dist/schema/parameters/gx-color.d.ts +2 -0
  31. package/dist/schema/parameters/gx-color.d.ts.map +1 -0
  32. package/dist/schema/parameters/gx-color.js +26 -0
  33. package/dist/schema/parameters/gx-color.js.map +1 -0
  34. package/dist/schema/parameters/gx-conditional.d.ts +2 -0
  35. package/dist/schema/parameters/gx-conditional.d.ts.map +1 -0
  36. package/dist/schema/parameters/gx-conditional.js +56 -0
  37. package/dist/schema/parameters/gx-conditional.js.map +1 -0
  38. package/dist/schema/parameters/gx-data-collection.d.ts +2 -0
  39. package/dist/schema/parameters/gx-data-collection.d.ts.map +1 -0
  40. package/dist/schema/parameters/gx-data-collection.js +146 -0
  41. package/dist/schema/parameters/gx-data-collection.js.map +1 -0
  42. package/dist/schema/parameters/gx-data-column.d.ts +2 -0
  43. package/dist/schema/parameters/gx-data-column.d.ts.map +1 -0
  44. package/dist/schema/parameters/gx-data-column.js +49 -0
  45. package/dist/schema/parameters/gx-data-column.js.map +1 -0
  46. package/dist/schema/parameters/gx-data.d.ts +2 -0
  47. package/dist/schema/parameters/gx-data.d.ts.map +1 -0
  48. package/dist/schema/parameters/gx-data.js +107 -0
  49. package/dist/schema/parameters/gx-data.js.map +1 -0
  50. package/dist/schema/parameters/gx-directory-uri.d.ts +2 -0
  51. package/dist/schema/parameters/gx-directory-uri.d.ts.map +1 -0
  52. package/dist/schema/parameters/gx-directory-uri.js +19 -0
  53. package/dist/schema/parameters/gx-directory-uri.js.map +1 -0
  54. package/dist/schema/parameters/gx-drill-down.d.ts +2 -0
  55. package/dist/schema/parameters/gx-drill-down.d.ts.map +1 -0
  56. package/dist/schema/parameters/gx-drill-down.js +40 -0
  57. package/dist/schema/parameters/gx-drill-down.js.map +1 -0
  58. package/dist/schema/parameters/gx-float.d.ts +2 -0
  59. package/dist/schema/parameters/gx-float.d.ts.map +1 -0
  60. package/dist/schema/parameters/gx-float.js +46 -0
  61. package/dist/schema/parameters/gx-float.js.map +1 -0
  62. package/dist/schema/parameters/gx-genomebuild.d.ts +2 -0
  63. package/dist/schema/parameters/gx-genomebuild.d.ts.map +1 -0
  64. package/dist/schema/parameters/gx-genomebuild.js +23 -0
  65. package/dist/schema/parameters/gx-genomebuild.js.map +1 -0
  66. package/dist/schema/parameters/gx-group-tag.d.ts +2 -0
  67. package/dist/schema/parameters/gx-group-tag.d.ts.map +1 -0
  68. package/dist/schema/parameters/gx-group-tag.js +23 -0
  69. package/dist/schema/parameters/gx-group-tag.js.map +1 -0
  70. package/dist/schema/parameters/gx-hidden.d.ts +2 -0
  71. package/dist/schema/parameters/gx-hidden.d.ts.map +1 -0
  72. package/dist/schema/parameters/gx-hidden.js +33 -0
  73. package/dist/schema/parameters/gx-hidden.js.map +1 -0
  74. package/dist/schema/parameters/gx-integer.d.ts +2 -0
  75. package/dist/schema/parameters/gx-integer.d.ts.map +1 -0
  76. package/dist/schema/parameters/gx-integer.js +47 -0
  77. package/dist/schema/parameters/gx-integer.js.map +1 -0
  78. package/dist/schema/parameters/gx-repeat.d.ts +2 -0
  79. package/dist/schema/parameters/gx-repeat.d.ts.map +1 -0
  80. package/dist/schema/parameters/gx-repeat.js +30 -0
  81. package/dist/schema/parameters/gx-repeat.js.map +1 -0
  82. package/dist/schema/parameters/gx-rules.d.ts +2 -0
  83. package/dist/schema/parameters/gx-rules.d.ts.map +1 -0
  84. package/dist/schema/parameters/gx-rules.js +91 -0
  85. package/dist/schema/parameters/gx-rules.js.map +1 -0
  86. package/dist/schema/parameters/gx-section.d.ts +2 -0
  87. package/dist/schema/parameters/gx-section.d.ts.map +1 -0
  88. package/dist/schema/parameters/gx-section.js +17 -0
  89. package/dist/schema/parameters/gx-section.js.map +1 -0
  90. package/dist/schema/parameters/gx-select.d.ts +2 -0
  91. package/dist/schema/parameters/gx-select.d.ts.map +1 -0
  92. package/dist/schema/parameters/gx-select.js +63 -0
  93. package/dist/schema/parameters/gx-select.js.map +1 -0
  94. package/dist/schema/parameters/gx-text.d.ts +2 -0
  95. package/dist/schema/parameters/gx-text.d.ts.map +1 -0
  96. package/dist/schema/parameters/gx-text.js +22 -0
  97. package/dist/schema/parameters/gx-text.js.map +1 -0
  98. package/dist/schema/parameters/index.d.ts +21 -0
  99. package/dist/schema/parameters/index.d.ts.map +1 -0
  100. package/dist/schema/parameters/index.js +24 -0
  101. package/dist/schema/parameters/index.js.map +1 -0
  102. package/dist/schema/parameters/registry.d.ts +6 -0
  103. package/dist/schema/parameters/registry.d.ts.map +1 -0
  104. package/dist/schema/parameters/registry.js +18 -0
  105. package/dist/schema/parameters/registry.js.map +1 -0
  106. package/dist/schema/state-representations.d.ts +14 -0
  107. package/dist/schema/state-representations.d.ts.map +1 -0
  108. package/dist/schema/state-representations.js +61 -0
  109. package/dist/schema/state-representations.js.map +1 -0
  110. package/dist/schema/validators/empty-field.d.ts +2 -0
  111. package/dist/schema/validators/empty-field.d.ts.map +1 -0
  112. package/dist/schema/validators/empty-field.js +12 -0
  113. package/dist/schema/validators/empty-field.js.map +1 -0
  114. package/dist/schema/validators/expression.d.ts +2 -0
  115. package/dist/schema/validators/expression.d.ts.map +1 -0
  116. package/dist/schema/validators/expression.js +42 -0
  117. package/dist/schema/validators/expression.js.map +1 -0
  118. package/dist/schema/validators/in-range.d.ts +2 -0
  119. package/dist/schema/validators/in-range.d.ts.map +1 -0
  120. package/dist/schema/validators/in-range.js +36 -0
  121. package/dist/schema/validators/in-range.js.map +1 -0
  122. package/dist/schema/validators/index.d.ts +8 -0
  123. package/dist/schema/validators/index.d.ts.map +1 -0
  124. package/dist/schema/validators/index.js +10 -0
  125. package/dist/schema/validators/index.js.map +1 -0
  126. package/dist/schema/validators/length.d.ts +2 -0
  127. package/dist/schema/validators/length.d.ts.map +1 -0
  128. package/dist/schema/validators/length.js +29 -0
  129. package/dist/schema/validators/length.js.map +1 -0
  130. package/dist/schema/validators/no-options.d.ts +2 -0
  131. package/dist/schema/validators/no-options.d.ts.map +1 -0
  132. package/dist/schema/validators/no-options.js +10 -0
  133. package/dist/schema/validators/no-options.js.map +1 -0
  134. package/dist/schema/validators/regex.d.ts +27 -0
  135. package/dist/schema/validators/regex.d.ts.map +1 -0
  136. package/dist/schema/validators/regex.js +100 -0
  137. package/dist/schema/validators/regex.js.map +1 -0
  138. package/dist/schema/validators/registry.d.ts +19 -0
  139. package/dist/schema/validators/registry.d.ts.map +1 -0
  140. package/dist/schema/validators/registry.js +29 -0
  141. package/dist/schema/validators/registry.js.map +1 -0
  142. package/dist/workflow/clean.d.ts +13 -0
  143. package/dist/workflow/clean.d.ts.map +1 -0
  144. package/dist/workflow/clean.js +131 -0
  145. package/dist/workflow/clean.js.map +1 -0
  146. package/dist/workflow/detect-format.d.ts +5 -0
  147. package/dist/workflow/detect-format.d.ts.map +1 -0
  148. package/dist/workflow/detect-format.js +11 -0
  149. package/dist/workflow/detect-format.js.map +1 -0
  150. package/dist/workflow/index.d.ts +9 -0
  151. package/dist/workflow/index.d.ts.map +1 -0
  152. package/dist/workflow/index.js +11 -0
  153. package/dist/workflow/index.js.map +1 -0
  154. package/dist/workflow/legacy-encoding.d.ts +40 -0
  155. package/dist/workflow/legacy-encoding.d.ts.map +1 -0
  156. package/dist/workflow/legacy-encoding.js +81 -0
  157. package/dist/workflow/legacy-encoding.js.map +1 -0
  158. package/dist/workflow/lint.d.ts +49 -0
  159. package/dist/workflow/lint.d.ts.map +1 -0
  160. package/dist/workflow/lint.js +402 -0
  161. package/dist/workflow/lint.js.map +1 -0
  162. package/dist/workflow/normalized/comments.d.ts +21 -0
  163. package/dist/workflow/normalized/comments.d.ts.map +1 -0
  164. package/dist/workflow/normalized/comments.js +80 -0
  165. package/dist/workflow/normalized/comments.js.map +1 -0
  166. package/dist/workflow/normalized/ensure.d.ts +21 -0
  167. package/dist/workflow/normalized/ensure.d.ts.map +1 -0
  168. package/dist/workflow/normalized/ensure.js +43 -0
  169. package/dist/workflow/normalized/ensure.js.map +1 -0
  170. package/dist/workflow/normalized/expanded.d.ts +62 -0
  171. package/dist/workflow/normalized/expanded.d.ts.map +1 -0
  172. package/dist/workflow/normalized/expanded.js +173 -0
  173. package/dist/workflow/normalized/expanded.js.map +1 -0
  174. package/dist/workflow/normalized/format2.d.ts +149 -0
  175. package/dist/workflow/normalized/format2.d.ts.map +1 -0
  176. package/dist/workflow/normalized/format2.js +416 -0
  177. package/dist/workflow/normalized/format2.js.map +1 -0
  178. package/dist/workflow/normalized/index.d.ts +9 -0
  179. package/dist/workflow/normalized/index.d.ts.map +1 -0
  180. package/dist/workflow/normalized/index.js +9 -0
  181. package/dist/workflow/normalized/index.js.map +1 -0
  182. package/dist/workflow/normalized/labels.d.ts +27 -0
  183. package/dist/workflow/normalized/labels.d.ts.map +1 -0
  184. package/dist/workflow/normalized/labels.js +59 -0
  185. package/dist/workflow/normalized/labels.js.map +1 -0
  186. package/dist/workflow/normalized/native.d.ts +97 -0
  187. package/dist/workflow/normalized/native.d.ts.map +1 -0
  188. package/dist/workflow/normalized/native.js +189 -0
  189. package/dist/workflow/normalized/native.js.map +1 -0
  190. package/dist/workflow/normalized/toFormat2.d.ts +11 -0
  191. package/dist/workflow/normalized/toFormat2.d.ts.map +1 -0
  192. package/dist/workflow/normalized/toFormat2.js +416 -0
  193. package/dist/workflow/normalized/toFormat2.js.map +1 -0
  194. package/dist/workflow/normalized/toNative.d.ts +11 -0
  195. package/dist/workflow/normalized/toNative.d.ts.map +1 -0
  196. package/dist/workflow/normalized/toNative.js +576 -0
  197. package/dist/workflow/normalized/toNative.js.map +1 -0
  198. package/dist/workflow/raw/gxformat2.d.ts +402 -0
  199. package/dist/workflow/raw/gxformat2.d.ts.map +1 -0
  200. package/dist/workflow/raw/gxformat2.effect.d.ts +1140 -0
  201. package/dist/workflow/raw/gxformat2.effect.d.ts.map +1 -0
  202. package/dist/workflow/raw/gxformat2.effect.js +453 -0
  203. package/dist/workflow/raw/gxformat2.effect.js.map +1 -0
  204. package/dist/workflow/raw/gxformat2.js +3 -0
  205. package/dist/workflow/raw/gxformat2.js.map +1 -0
  206. package/dist/workflow/raw/index.d.ts +5 -0
  207. package/dist/workflow/raw/index.d.ts.map +1 -0
  208. package/dist/workflow/raw/index.js +4 -0
  209. package/dist/workflow/raw/index.js.map +1 -0
  210. package/dist/workflow/raw/native.d.ts +439 -0
  211. package/dist/workflow/raw/native.d.ts.map +1 -0
  212. package/dist/workflow/raw/native.effect.d.ts +947 -0
  213. package/dist/workflow/raw/native.effect.d.ts.map +1 -0
  214. package/dist/workflow/raw/native.effect.js +474 -0
  215. package/dist/workflow/raw/native.effect.js.map +1 -0
  216. package/dist/workflow/raw/native.js +20 -0
  217. package/dist/workflow/raw/native.js.map +1 -0
  218. package/dist/workflow/replacement-scan.d.ts +21 -0
  219. package/dist/workflow/replacement-scan.d.ts.map +1 -0
  220. package/dist/workflow/replacement-scan.js +92 -0
  221. package/dist/workflow/replacement-scan.js.map +1 -0
  222. package/dist/workflow/state-merge.d.ts +49 -0
  223. package/dist/workflow/state-merge.d.ts.map +1 -0
  224. package/dist/workflow/state-merge.js +248 -0
  225. package/dist/workflow/state-merge.js.map +1 -0
  226. package/package.json +45 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * Format2 → Native conversion.
3
+ *
4
+ * Port of gxformat2/normalized/_conversion.py to_native + helpers.
5
+ */
6
+ import { normalizedFormat2 } from "./format2.js";
7
+ import { unflattenCommentData } from "./comments.js";
8
+ import { isUnlabeled, resolveSourceReference } from "./labels.js";
9
+ function _uuid() {
10
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === "x" ? r : (r & 0x3) | 0x8;
13
+ return v.toString(16);
14
+ });
15
+ }
16
+ // Step type aliases: Format2 shorthand → native type
17
+ const STEP_TYPE_ALIASES = {
18
+ input: "data_input",
19
+ input_collection: "data_collection_input",
20
+ parameter: "parameter_input",
21
+ };
22
+ // --- Conversion context ---
23
+ class ConversionContext {
24
+ labels = new Map();
25
+ stepId(labelOrId) {
26
+ const key = String(labelOrId);
27
+ if (this.labels.has(key))
28
+ return this.labels.get(key);
29
+ return parseInt(key, 10);
30
+ }
31
+ stepOutput(value) {
32
+ const [labelOrId, outputName] = resolveSourceReference(value, this.labels);
33
+ return [this.stepId(labelOrId), outputName];
34
+ }
35
+ childContext() {
36
+ return new ConversionContext();
37
+ }
38
+ }
39
+ const POST_JOB_ACTIONS = {
40
+ hide: {
41
+ actionClass: "HideDatasetAction",
42
+ defaultVal: false,
43
+ arguments: () => ({}),
44
+ },
45
+ rename: {
46
+ actionClass: "RenameDatasetAction",
47
+ defaultVal: {},
48
+ arguments: (x) => ({ newname: x }),
49
+ },
50
+ delete_intermediate_datasets: {
51
+ actionClass: "DeleteIntermediatesAction",
52
+ defaultVal: false,
53
+ arguments: () => ({}),
54
+ },
55
+ change_datatype: {
56
+ actionClass: "ChangeDatatypeAction",
57
+ defaultVal: {},
58
+ arguments: (x) => ({ newtype: x }),
59
+ },
60
+ set_columns: {
61
+ actionClass: "ColumnSetAction",
62
+ defaultVal: {},
63
+ arguments: (x) => x,
64
+ },
65
+ add_tags: {
66
+ actionClass: "TagDatasetAction",
67
+ defaultVal: [],
68
+ arguments: (x) => ({ tags: x.join(",") }),
69
+ },
70
+ remove_tags: {
71
+ actionClass: "RemoveTagDatasetAction",
72
+ defaultVal: [],
73
+ arguments: (x) => ({ tags: x.join(",") }),
74
+ },
75
+ };
76
+ // --- Entry point ---
77
+ /**
78
+ * Convert a Format2 workflow to normalized native Galaxy format.
79
+ */
80
+ export function toNative(raw) {
81
+ let wf;
82
+ if (_isNormalizedFormat2(raw)) {
83
+ wf = raw;
84
+ }
85
+ else {
86
+ wf = normalizedFormat2(raw);
87
+ }
88
+ const ctx = new ConversionContext();
89
+ _registerLabels(wf, ctx);
90
+ return _buildNativeWorkflow(wf, ctx);
91
+ }
92
+ function _isNormalizedFormat2(raw) {
93
+ if (raw == null || typeof raw !== "object")
94
+ return false;
95
+ const obj = raw;
96
+ return obj.class === "GalaxyWorkflow" && Array.isArray(obj.inputs) && Array.isArray(obj.steps);
97
+ }
98
+ function _registerLabels(wf, ctx) {
99
+ for (let i = 0; i < wf.inputs.length; i++) {
100
+ const inp = wf.inputs[i];
101
+ if (inp.id)
102
+ ctx.labels.set(inp.id, i);
103
+ }
104
+ for (let j = 0; j < wf.steps.length; j++) {
105
+ const idx = wf.inputs.length + j;
106
+ const label = wf.steps[j].label ?? wf.steps[j].id;
107
+ if (label)
108
+ ctx.labels.set(label, idx);
109
+ }
110
+ }
111
+ // --- Workflow building ---
112
+ function _buildNativeWorkflow(wf, ctx) {
113
+ const nativeSteps = {};
114
+ // Input steps
115
+ for (let i = 0; i < wf.inputs.length; i++) {
116
+ nativeSteps[String(i)] = _buildInputStep(wf.inputs[i], i);
117
+ }
118
+ // Non-input steps
119
+ const inputsOffset = wf.inputs.length;
120
+ for (let j = 0; j < wf.steps.length; j++) {
121
+ const orderIndex = inputsOffset + j;
122
+ nativeSteps[String(orderIndex)] = _buildStep(wf.steps[j], orderIndex, ctx);
123
+ }
124
+ // Wire workflow outputs
125
+ _wireWorkflowOutputs(wf.outputs, nativeSteps, ctx);
126
+ // Comments
127
+ const comments = _buildNativeComments(wf, ctx);
128
+ const wfAny = wf;
129
+ const result = {
130
+ a_galaxy_workflow: "true",
131
+ "format-version": "0.1",
132
+ name: wf.label ?? "Workflow",
133
+ annotation: wf.doc ?? "",
134
+ tags: wf.tags ?? [],
135
+ uuid: wf.uuid || _uuid(),
136
+ license: wf.license ?? undefined,
137
+ release: wf.release ?? undefined,
138
+ steps: nativeSteps,
139
+ unique_tools: wf.unique_tools,
140
+ };
141
+ if (comments && comments.length > 0) {
142
+ result.comments = comments;
143
+ }
144
+ if (wfAny.report) {
145
+ result.report = {
146
+ markdown: wfAny.report.markdown,
147
+ };
148
+ }
149
+ if (wfAny.creator) {
150
+ result.creator = wfAny.creator;
151
+ }
152
+ return result;
153
+ }
154
+ // --- Input step building ---
155
+ function _buildInputStep(inp, orderIndex) {
156
+ const rawLabel = inp.id || `Input ${orderIndex}`;
157
+ const label = isUnlabeled(rawLabel) ? undefined : rawLabel;
158
+ let inputType = inp.type;
159
+ let multiple = false;
160
+ if (Array.isArray(inputType)) {
161
+ if (inputType.length !== 1) {
162
+ throw new Error("Only simple arrays of workflow inputs are currently supported");
163
+ }
164
+ inputType = inputType[0];
165
+ multiple = true;
166
+ }
167
+ const typeStr = inputType ?? "data";
168
+ let stepType;
169
+ if (["File", "data", "data_input"].includes(typeStr)) {
170
+ stepType = "data_input";
171
+ }
172
+ else if (["collection", "data_collection", "data_collection_input"].includes(typeStr)) {
173
+ stepType = "data_collection_input";
174
+ }
175
+ else if (["text", "string", "integer", "int", "float", "color", "boolean"].includes(typeStr)) {
176
+ stepType = "parameter_input";
177
+ }
178
+ else {
179
+ throw new Error(`Unknown input type [${typeStr}] encountered.`);
180
+ }
181
+ const toolState = { name: rawLabel };
182
+ if (stepType === "parameter_input") {
183
+ let nativeType = typeStr;
184
+ if (nativeType === "int")
185
+ nativeType = "integer";
186
+ else if (nativeType === "string")
187
+ nativeType = "text";
188
+ toolState.parameter_type = nativeType;
189
+ }
190
+ if (multiple)
191
+ toolState.multiple = true;
192
+ if (inp.optional != null)
193
+ toolState.optional = inp.optional;
194
+ if (inp.format) {
195
+ toolState.format = inp.format;
196
+ }
197
+ if (inp.collection_type)
198
+ toolState.collection_type = inp.collection_type;
199
+ if (inp.default != null)
200
+ toolState.default = inp.default;
201
+ // Copy extra fields
202
+ for (const key of [
203
+ "restrictions",
204
+ "suggestions",
205
+ "restrictOnConnections",
206
+ "fields",
207
+ "column_definitions",
208
+ ]) {
209
+ if (key in inp) {
210
+ toolState[key] = inp[key];
211
+ }
212
+ }
213
+ // Handle File class defaults: move to in_ nested default
214
+ let inField;
215
+ const defaultVal = inp.default;
216
+ if (defaultVal &&
217
+ typeof defaultVal === "object" &&
218
+ defaultVal.class === "File") {
219
+ inField = { default: { default: defaultVal } };
220
+ delete toolState.default;
221
+ }
222
+ return {
223
+ id: orderIndex,
224
+ type: stepType,
225
+ label: label ?? null,
226
+ name: rawLabel,
227
+ annotation: _joinDoc(inp.doc) ?? "",
228
+ tool_state: toolState,
229
+ position: _defaultPosition(inp.position, orderIndex),
230
+ input_connections: {},
231
+ inputs: [{ name: rawLabel, description: "" }],
232
+ outputs: [],
233
+ workflow_outputs: [],
234
+ post_job_actions: {},
235
+ in: inField,
236
+ connected_paths: new Set(),
237
+ };
238
+ }
239
+ // --- Step building ---
240
+ function _buildStep(step, orderIndex, ctx) {
241
+ const stepType = _resolveStepType(step);
242
+ if (stepType === "tool")
243
+ return _buildToolStep(step, orderIndex, ctx);
244
+ if (stepType === "subworkflow")
245
+ return _buildSubworkflowStep(step, orderIndex, ctx);
246
+ if (stepType === "pause")
247
+ return _buildPauseStep(step, orderIndex, ctx);
248
+ if (stepType === "pick_value")
249
+ return _buildPickValueStep(step, orderIndex, ctx);
250
+ throw new Error(`Unhandled step type: ${stepType}`);
251
+ }
252
+ function _resolveStepType(step) {
253
+ if (step.run != null) {
254
+ if (typeof step.run === "object") {
255
+ const runObj = step.run;
256
+ if (runObj.class === "GalaxyUserTool")
257
+ return "tool";
258
+ return "subworkflow";
259
+ }
260
+ if (typeof step.run === "string")
261
+ return "subworkflow";
262
+ }
263
+ const rawType = step.type ?? "tool";
264
+ return STEP_TYPE_ALIASES[rawType] ?? rawType;
265
+ }
266
+ function _buildToolStep(step, orderIndex, ctx) {
267
+ // Detect GalaxyUserTool in run field
268
+ let toolRepresentation;
269
+ if (step.run && typeof step.run === "object") {
270
+ const runObj = step.run;
271
+ if (runObj.class === "GalaxyUserTool") {
272
+ toolRepresentation = runObj;
273
+ }
274
+ }
275
+ const toolState = { __page__: 0 };
276
+ const connect = _extractConnections(step);
277
+ const runtimeInputs = step.runtime_inputs ?? [];
278
+ if (step.state != null || runtimeInputs.length > 0) {
279
+ const stepState = step.state ? { ...step.state } : {};
280
+ Object.assign(toolState, stepState);
281
+ for (const ri of runtimeInputs) {
282
+ toolState[ri] = { __class__: "RuntimeValue" };
283
+ }
284
+ }
285
+ else if (step.tool_state != null) {
286
+ Object.assign(toolState, step.tool_state);
287
+ }
288
+ const inputConnections = _buildInputConnections(connect, ctx);
289
+ const postJobActions = _buildPostJobActions(step.out);
290
+ const connectedPaths = new Set(Object.keys(inputConnections));
291
+ const isUserDefinedTool = toolRepresentation != null;
292
+ const toolId = isUserDefinedTool ? null : (step.tool_id ?? undefined);
293
+ return {
294
+ id: orderIndex,
295
+ type: "tool",
296
+ label: _stepLabel(step),
297
+ name: toolId ?? toolRepresentation?.name ?? "User Defined Tool",
298
+ annotation: step.doc ?? "",
299
+ tool_id: toolId,
300
+ tool_version: step.tool_version ?? undefined,
301
+ tool_shed_repository: step.tool_shed_repository,
302
+ tool_state: toolState,
303
+ tool_representation: toolRepresentation,
304
+ tool_uuid: isUserDefinedTool ? null : (step.uuid ?? undefined),
305
+ input_connections: inputConnections,
306
+ post_job_actions: postJobActions,
307
+ position: _defaultPosition(step.position, orderIndex),
308
+ when: step.when ?? undefined,
309
+ uuid: step.uuid ?? undefined,
310
+ errors: step.errors ?? undefined,
311
+ inputs: [],
312
+ outputs: [],
313
+ workflow_outputs: [],
314
+ connected_paths: connectedPaths,
315
+ };
316
+ }
317
+ function _buildSubworkflowStep(step, orderIndex, ctx) {
318
+ let subworkflow = null;
319
+ let contentId = null;
320
+ let childCtx;
321
+ if (typeof step.run === "object" && step.run != null) {
322
+ // Inline subworkflow
323
+ childCtx = ctx.childContext();
324
+ const subFmt2 = step.run;
325
+ _registerLabels(subFmt2, childCtx);
326
+ subworkflow = _buildNativeWorkflow(subFmt2, childCtx);
327
+ }
328
+ else if (typeof step.run === "string") {
329
+ contentId = step.run;
330
+ }
331
+ const connect = _extractConnections(step);
332
+ const isSubworkflow = subworkflow != null;
333
+ const inputConnections = _buildInputConnections(connect, ctx, isSubworkflow, childCtx);
334
+ const postJobActions = _buildPostJobActions(step.out);
335
+ const connectedPaths = new Set(Object.keys(inputConnections));
336
+ return {
337
+ id: orderIndex,
338
+ type: "subworkflow",
339
+ label: _stepLabel(step),
340
+ annotation: step.doc ?? "",
341
+ tool_state: {},
342
+ subworkflow,
343
+ content_id: contentId,
344
+ input_connections: inputConnections,
345
+ post_job_actions: postJobActions,
346
+ position: _defaultPosition(step.position, orderIndex),
347
+ when: step.when ?? undefined,
348
+ uuid: step.uuid ?? undefined,
349
+ inputs: [],
350
+ outputs: [],
351
+ workflow_outputs: [],
352
+ connected_paths: connectedPaths,
353
+ };
354
+ }
355
+ function _buildPauseStep(step, orderIndex, ctx) {
356
+ const name = step.label ?? step.id ?? "Pause for dataset review";
357
+ const connect = _extractConnections(step);
358
+ const inputConnections = _buildInputConnections(connect, ctx);
359
+ const connectedPaths = new Set(Object.keys(inputConnections));
360
+ return {
361
+ id: orderIndex,
362
+ type: "pause",
363
+ label: _stepLabel(step),
364
+ name,
365
+ annotation: step.doc ?? "",
366
+ tool_state: { name },
367
+ input_connections: inputConnections,
368
+ inputs: [{ name, description: "" }],
369
+ outputs: [],
370
+ workflow_outputs: [],
371
+ post_job_actions: {},
372
+ position: _defaultPosition(step.position, orderIndex),
373
+ uuid: step.uuid ?? undefined,
374
+ connected_paths: connectedPaths,
375
+ };
376
+ }
377
+ function _buildPickValueStep(step, orderIndex, ctx) {
378
+ const name = step.label ?? step.id ?? "Pick Value";
379
+ const toolState = step.state ? { ...step.state } : {};
380
+ toolState.name = name;
381
+ const connect = _extractConnections(step);
382
+ const inputConnections = _buildInputConnections(connect, ctx);
383
+ const connectedPaths = new Set(Object.keys(inputConnections));
384
+ const numInputs = Object.keys(inputConnections).length;
385
+ if (numInputs > 0) {
386
+ toolState.num_inputs = Math.max(2, numInputs);
387
+ }
388
+ const postJobActions = _buildPostJobActions([...step.out]);
389
+ return {
390
+ id: orderIndex,
391
+ type: "pick_value",
392
+ label: _stepLabel(step),
393
+ name,
394
+ annotation: step.doc ?? "",
395
+ tool_state: toolState,
396
+ input_connections: inputConnections,
397
+ post_job_actions: postJobActions,
398
+ inputs: [{ name, description: "" }],
399
+ outputs: [],
400
+ workflow_outputs: [],
401
+ position: _defaultPosition(step.position, orderIndex),
402
+ uuid: step.uuid ?? undefined,
403
+ connected_paths: connectedPaths,
404
+ };
405
+ }
406
+ // --- Connection building ---
407
+ function _extractConnections(step) {
408
+ const connect = {};
409
+ for (const stepInput of step.in) {
410
+ const inputId = stepInput.id;
411
+ if (!inputId)
412
+ continue;
413
+ const source = stepInput.source;
414
+ if (source != null) {
415
+ if (Array.isArray(source)) {
416
+ connect[inputId] = [...source];
417
+ }
418
+ else {
419
+ connect[inputId] = [source];
420
+ }
421
+ }
422
+ }
423
+ return connect;
424
+ }
425
+ function _buildInputConnections(connect, ctx, isSubworkflow = false, subworkflowCtx) {
426
+ const inputConnections = {};
427
+ for (const [key, values] of Object.entries(connect)) {
428
+ const connectionList = [];
429
+ for (const value of values) {
430
+ let src = value;
431
+ if (key === "$step") {
432
+ src = value + "/__NO_INPUT_OUTPUT_NAME__";
433
+ }
434
+ const [stepId, outputName] = ctx.stepOutput(src);
435
+ const conn = { id: stepId, output_name: outputName };
436
+ if (isSubworkflow && subworkflowCtx && subworkflowCtx.labels.has(key)) {
437
+ conn.input_subworkflow_step_id = subworkflowCtx.stepId(key);
438
+ }
439
+ connectionList.push(conn);
440
+ }
441
+ const actualKey = key === "$step" ? "__NO_INPUT_OUTPUT_NAME__" : key;
442
+ if (connectionList.length > 0) {
443
+ inputConnections[actualKey] = connectionList;
444
+ }
445
+ }
446
+ return inputConnections;
447
+ }
448
+ // --- Post job actions ---
449
+ function _buildPostJobActions(outputs) {
450
+ const postJobActions = {};
451
+ for (const output of outputs) {
452
+ const outputName = output.id;
453
+ if (!outputName)
454
+ continue;
455
+ for (const [actionKey, actionDef] of Object.entries(POST_JOB_ACTIONS)) {
456
+ let actionValue = output[actionKey] ?? undefined;
457
+ if (actionValue === undefined || actionValue === null) {
458
+ actionValue = actionDef.defaultVal;
459
+ }
460
+ // Truthy check (matches Python behavior: empty dict/array/false → skip)
461
+ if (_isTruthy(actionValue)) {
462
+ const actionName = actionDef.actionClass + outputName;
463
+ postJobActions[actionName] = {
464
+ action_type: actionDef.actionClass,
465
+ output_name: outputName,
466
+ action_arguments: actionDef.arguments(actionValue),
467
+ };
468
+ }
469
+ }
470
+ }
471
+ return postJobActions;
472
+ }
473
+ function _isTruthy(val) {
474
+ if (val === false || val === null || val === undefined)
475
+ return false;
476
+ if (Array.isArray(val))
477
+ return val.length > 0;
478
+ if (typeof val === "object")
479
+ return Object.keys(val).length > 0;
480
+ return !!val;
481
+ }
482
+ // --- Workflow output wiring ---
483
+ function _wireWorkflowOutputs(outputs, nativeSteps, ctx) {
484
+ for (const output of outputs) {
485
+ const source = output.outputSource;
486
+ if (!source)
487
+ continue;
488
+ const [stepIdInt, outputName] = ctx.stepOutput(source);
489
+ const stepKey = String(stepIdInt);
490
+ if (!(stepKey in nativeSteps))
491
+ continue;
492
+ const rawLabel = output.label ?? output.id;
493
+ const label = rawLabel && rawLabel.startsWith("_anonymous_output_") ? null : rawLabel;
494
+ const workflowOutput = {
495
+ output_name: outputName,
496
+ label: label ?? undefined,
497
+ };
498
+ nativeSteps[stepKey].workflow_outputs.push(workflowOutput);
499
+ }
500
+ }
501
+ // --- Comment conversion (format2 → native) ---
502
+ function _buildNativeComments(wf, ctx) {
503
+ const rawCommentsValue = wf.comments;
504
+ if (!rawCommentsValue)
505
+ return undefined;
506
+ // Normalize dict-style comments to array
507
+ let rawComments;
508
+ if (Array.isArray(rawCommentsValue)) {
509
+ if (rawCommentsValue.length === 0)
510
+ return undefined;
511
+ rawComments = rawCommentsValue;
512
+ }
513
+ else if (typeof rawCommentsValue === "object") {
514
+ rawComments = Object.entries(rawCommentsValue).map(([label, comment]) => ({ ...comment, label }));
515
+ if (rawComments.length === 0)
516
+ return undefined;
517
+ }
518
+ else {
519
+ return undefined;
520
+ }
521
+ const commentLabelMap = new Map();
522
+ for (let i = 0; i < rawComments.length; i++) {
523
+ const c = rawComments[i];
524
+ if (c.label) {
525
+ commentLabelMap.set(c.label, i);
526
+ }
527
+ }
528
+ const result = [];
529
+ for (let i = 0; i < rawComments.length; i++) {
530
+ const nativeComment = unflattenCommentData(rawComments[i]);
531
+ nativeComment.id = i;
532
+ if (nativeComment.child_steps && Array.isArray(nativeComment.child_steps)) {
533
+ nativeComment.child_steps = nativeComment.child_steps.map((ref) => typeof ref === "string" ? ctx.stepId(ref) : ref);
534
+ }
535
+ if (nativeComment.child_comments && Array.isArray(nativeComment.child_comments)) {
536
+ nativeComment.child_comments = nativeComment.child_comments.map((ref) => {
537
+ if (typeof ref === "string") {
538
+ if (!commentLabelMap.has(ref)) {
539
+ throw new Error(`contains_comments references unknown comment label '${ref}'`);
540
+ }
541
+ return commentLabelMap.get(ref);
542
+ }
543
+ return ref;
544
+ });
545
+ }
546
+ result.push(nativeComment);
547
+ }
548
+ return result;
549
+ }
550
+ // --- Helpers ---
551
+ function _stepLabel(step) {
552
+ if (step.label != null) {
553
+ if (isUnlabeled(step.label))
554
+ return null;
555
+ return step.label;
556
+ }
557
+ if (step.id && !/^\d+$/.test(step.id)) {
558
+ if (isUnlabeled(step.id))
559
+ return null;
560
+ return step.id;
561
+ }
562
+ return null;
563
+ }
564
+ function _defaultPosition(position, orderIndex) {
565
+ if (position != null)
566
+ return position;
567
+ return { left: 10 * orderIndex, top: 10 * orderIndex };
568
+ }
569
+ function _joinDoc(doc) {
570
+ if (doc == null)
571
+ return doc;
572
+ if (Array.isArray(doc))
573
+ return doc.length > 0 ? doc.join("\n") : null;
574
+ return doc;
575
+ }
576
+ //# sourceMappingURL=toNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toNative.js","sourceRoot":"","sources":["../../../src/workflow/normalized/toNative.ts"],"names":[],"mappings":"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"}