@galaxy-tool-util/schema 0.2.0 → 0.4.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.
- package/dist/index.d.ts +75 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -1
- package/dist/index.js.map +1 -1
- package/dist/schema/type-guards.d.ts +14 -0
- package/dist/schema/type-guards.d.ts.map +1 -0
- package/dist/schema/type-guards.js +25 -0
- package/dist/schema/type-guards.js.map +1 -0
- package/dist/test-format/cross-check/check.d.ts +18 -0
- package/dist/test-format/cross-check/check.d.ts.map +1 -0
- package/dist/test-format/cross-check/check.js +89 -0
- package/dist/test-format/cross-check/check.js.map +1 -0
- package/dist/test-format/cross-check/extract-format2.d.ts +13 -0
- package/dist/test-format/cross-check/extract-format2.d.ts.map +1 -0
- package/dist/test-format/cross-check/extract-format2.js +98 -0
- package/dist/test-format/cross-check/extract-format2.js.map +1 -0
- package/dist/test-format/cross-check/extract-native.d.ts +4 -0
- package/dist/test-format/cross-check/extract-native.d.ts.map +1 -0
- package/dist/test-format/cross-check/extract-native.js +89 -0
- package/dist/test-format/cross-check/extract-native.js.map +1 -0
- package/dist/test-format/cross-check/extract.d.ts +9 -0
- package/dist/test-format/cross-check/extract.d.ts.map +1 -0
- package/dist/test-format/cross-check/extract.js +16 -0
- package/dist/test-format/cross-check/extract.js.map +1 -0
- package/dist/test-format/cross-check/index.d.ts +7 -0
- package/dist/test-format/cross-check/index.d.ts.map +1 -0
- package/dist/test-format/cross-check/index.js +6 -0
- package/dist/test-format/cross-check/index.js.map +1 -0
- package/dist/test-format/cross-check/type-compat.d.ts +23 -0
- package/dist/test-format/cross-check/type-compat.d.ts.map +1 -0
- package/dist/test-format/cross-check/type-compat.js +48 -0
- package/dist/test-format/cross-check/type-compat.js.map +1 -0
- package/dist/test-format/cross-check/types.d.ts +23 -0
- package/dist/test-format/cross-check/types.d.ts.map +1 -0
- package/dist/test-format/cross-check/types.js +10 -0
- package/dist/test-format/cross-check/types.js.map +1 -0
- package/dist/test-format/index.d.ts +3 -0
- package/dist/test-format/index.d.ts.map +1 -0
- package/dist/test-format/index.js +3 -0
- package/dist/test-format/index.js.map +1 -0
- package/dist/test-format/tests.schema.generated.d.ts +5610 -0
- package/dist/test-format/tests.schema.generated.d.ts.map +1 -0
- package/dist/test-format/tests.schema.generated.js +6899 -0
- package/dist/test-format/tests.schema.generated.js.map +1 -0
- package/dist/test-format/validate.d.ts +20 -0
- package/dist/test-format/validate.d.ts.map +1 -0
- package/dist/test-format/validate.js +41 -0
- package/dist/test-format/validate.js.map +1 -0
- package/dist/tool-state-validator.d.ts +23 -0
- package/dist/tool-state-validator.d.ts.map +1 -0
- package/dist/tool-state-validator.js +59 -0
- package/dist/tool-state-validator.js.map +1 -0
- package/dist/workflow/clean.d.ts +29 -3
- package/dist/workflow/clean.d.ts.map +1 -1
- package/dist/workflow/clean.js +199 -28
- package/dist/workflow/clean.js.map +1 -1
- package/dist/workflow/index.d.ts +13 -5
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +13 -3
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/lint-profiles.d.ts +27 -0
- package/dist/workflow/lint-profiles.d.ts.map +1 -0
- package/dist/workflow/lint-profiles.js +49 -0
- package/dist/workflow/lint-profiles.js.map +1 -0
- package/dist/workflow/lint-rules.d.ts +15 -0
- package/dist/workflow/lint-rules.d.ts.map +1 -0
- package/dist/workflow/lint-rules.js +15 -0
- package/dist/workflow/lint-rules.js.map +1 -0
- package/dist/workflow/lint.d.ts +4 -18
- package/dist/workflow/lint.d.ts.map +1 -1
- package/dist/workflow/lint.js +9 -30
- package/dist/workflow/lint.js.map +1 -1
- package/dist/workflow/lint_profiles.yml +41 -0
- package/dist/workflow/linting.d.ts +54 -0
- package/dist/workflow/linting.d.ts.map +1 -0
- package/dist/workflow/linting.js +71 -0
- package/dist/workflow/linting.js.map +1 -0
- package/dist/workflow/param-navigation.d.ts +26 -0
- package/dist/workflow/param-navigation.d.ts.map +1 -0
- package/dist/workflow/param-navigation.js +60 -0
- package/dist/workflow/param-navigation.js.map +1 -0
- package/dist/workflow/raw/gxformat2.effect.d.ts +341 -117
- package/dist/workflow/raw/gxformat2.effect.d.ts.map +1 -1
- package/dist/workflow/raw/gxformat2.effect.js +107 -109
- package/dist/workflow/raw/gxformat2.effect.js.map +1 -1
- package/dist/workflow/raw/native.d.ts +2 -2
- package/dist/workflow/raw/native.d.ts.map +1 -1
- package/dist/workflow/raw/native.effect.d.ts +150 -3
- package/dist/workflow/raw/native.effect.d.ts.map +1 -1
- package/dist/workflow/raw/native.effect.js +3 -5
- package/dist/workflow/raw/native.effect.js.map +1 -1
- package/dist/workflow/report-models.d.ts +412 -0
- package/dist/workflow/report-models.d.ts.map +1 -0
- package/dist/workflow/report-models.js +342 -0
- package/dist/workflow/report-models.js.map +1 -0
- package/dist/workflow/roundtrip.d.ts +31 -8
- package/dist/workflow/roundtrip.d.ts.map +1 -1
- package/dist/workflow/roundtrip.js +107 -26
- package/dist/workflow/roundtrip.js.map +1 -1
- package/dist/workflow/schema-rules.d.ts +38 -0
- package/dist/workflow/schema-rules.d.ts.map +1 -0
- package/dist/workflow/schema-rules.js +28 -0
- package/dist/workflow/schema-rules.js.map +1 -0
- package/dist/workflow/schema_rules.yml +69 -0
- package/dist/workflow/serialize.d.ts +30 -0
- package/dist/workflow/serialize.d.ts.map +1 -0
- package/dist/workflow/serialize.js +37 -0
- package/dist/workflow/serialize.js.map +1 -0
- package/dist/workflow/state-merge.d.ts +15 -32
- package/dist/workflow/state-merge.d.ts.map +1 -1
- package/dist/workflow/state-merge.js +30 -207
- package/dist/workflow/state-merge.js.map +1 -1
- package/dist/workflow/stateful-validate.d.ts +21 -0
- package/dist/workflow/stateful-validate.d.ts.map +1 -1
- package/dist/workflow/stateful-validate.js +27 -0
- package/dist/workflow/stateful-validate.js.map +1 -1
- package/dist/workflow/strict-checks.d.ts +22 -0
- package/dist/workflow/strict-checks.d.ts.map +1 -0
- package/dist/workflow/strict-checks.js +95 -0
- package/dist/workflow/strict-checks.js.map +1 -0
- package/dist/workflow/tool-state-io.d.ts +14 -0
- package/dist/workflow/tool-state-io.d.ts.map +1 -0
- package/dist/workflow/tool-state-io.js +33 -0
- package/dist/workflow/tool-state-io.js.map +1 -0
- package/dist/workflow/validators.d.ts +34 -0
- package/dist/workflow/validators.d.ts.map +1 -0
- package/dist/workflow/validators.js +83 -0
- package/dist/workflow/validators.js.map +1 -0
- package/dist/workflow/walk-helpers.d.ts +29 -0
- package/dist/workflow/walk-helpers.d.ts.map +1 -0
- package/dist/workflow/walk-helpers.js +89 -0
- package/dist/workflow/walk-helpers.js.map +1 -0
- package/dist/workflow/walker.d.ts +2 -0
- package/dist/workflow/walker.d.ts.map +1 -1
- package/dist/workflow/walker.js +16 -6
- package/dist/workflow/walker.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Effect-schema validator dispatch for workflow dict inputs.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors gxformat2/validators.py. Callers pass a parsed workflow dict and get
|
|
5
|
+
* back the decoded value or throw on validation failure. Used by the schema-rule
|
|
6
|
+
* catalog runner and declarative-operation tests.
|
|
7
|
+
*
|
|
8
|
+
* The generated Effect schemas make `class` a required literal; Python's
|
|
9
|
+
* pydantic models default it. `withClass` injects the discriminator when
|
|
10
|
+
* missing so pass/fail semantics match Python byte-for-byte — see the plan
|
|
11
|
+
* note about `Format2MissingClass` being unenforceable today.
|
|
12
|
+
*/
|
|
13
|
+
import { Schema } from "effect";
|
|
14
|
+
import { GalaxyWorkflowSchema } from "./raw/gxformat2.effect.js";
|
|
15
|
+
import { NativeGalaxyWorkflowSchema } from "./raw/native.effect.js";
|
|
16
|
+
/**
|
|
17
|
+
* Return `raw` with `class: cls` injected if missing, and the same injection
|
|
18
|
+
* applied recursively to step subworkflows. Native steps embed subworkflows
|
|
19
|
+
* under `.subworkflow`; format2 steps embed them under `.run` (when `run` is
|
|
20
|
+
* an inline dict, not a URL).
|
|
21
|
+
*
|
|
22
|
+
* The cls string must match the parent document's class: nested format2
|
|
23
|
+
* subworkflows inherit `"GalaxyWorkflow"`, native inherit `"NativeGalaxyWorkflow"`.
|
|
24
|
+
*/
|
|
25
|
+
export function withClass(raw, cls) {
|
|
26
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
27
|
+
return raw;
|
|
28
|
+
const obj = raw;
|
|
29
|
+
const result = "class" in obj ? { ...obj } : { ...obj, class: cls };
|
|
30
|
+
const steps = result.steps;
|
|
31
|
+
if (!steps || typeof steps !== "object")
|
|
32
|
+
return result;
|
|
33
|
+
if (Array.isArray(steps)) {
|
|
34
|
+
result.steps = steps.map((step) => injectStepSubworkflow(step, cls));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const next = {};
|
|
38
|
+
for (const [key, step] of Object.entries(steps)) {
|
|
39
|
+
next[key] = injectStepSubworkflow(step, cls);
|
|
40
|
+
}
|
|
41
|
+
result.steps = next;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
function injectStepSubworkflow(step, cls) {
|
|
46
|
+
if (!step || typeof step !== "object")
|
|
47
|
+
return step;
|
|
48
|
+
const s = step;
|
|
49
|
+
if (s.subworkflow && typeof s.subworkflow === "object") {
|
|
50
|
+
return { ...s, subworkflow: withClass(s.subworkflow, cls) };
|
|
51
|
+
}
|
|
52
|
+
// format2 steps embed subworkflows under `run` when it's an inline dict.
|
|
53
|
+
// Skip string runs (URLs) and missing runs.
|
|
54
|
+
if (s.run && typeof s.run === "object" && !Array.isArray(s.run)) {
|
|
55
|
+
return { ...s, run: withClass(s.run, cls) };
|
|
56
|
+
}
|
|
57
|
+
return s;
|
|
58
|
+
}
|
|
59
|
+
export function validateFormat2(wf) {
|
|
60
|
+
return Schema.decodeUnknownSync(GalaxyWorkflowSchema, { onExcessProperty: "ignore" })(withClass(wf, "GalaxyWorkflow"));
|
|
61
|
+
}
|
|
62
|
+
export function validateFormat2Strict(wf) {
|
|
63
|
+
return Schema.decodeUnknownSync(GalaxyWorkflowSchema, { onExcessProperty: "error" })(withClass(wf, "GalaxyWorkflow"));
|
|
64
|
+
}
|
|
65
|
+
export function validateNative(wf) {
|
|
66
|
+
return Schema.decodeUnknownSync(NativeGalaxyWorkflowSchema, { onExcessProperty: "ignore" })(withClass(wf, "NativeGalaxyWorkflow"));
|
|
67
|
+
}
|
|
68
|
+
export function validateNativeStrict(wf) {
|
|
69
|
+
return Schema.decodeUnknownSync(NativeGalaxyWorkflowSchema, { onExcessProperty: "error" })(withClass(wf, "NativeGalaxyWorkflow"));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Pick the validator matching a fixture filename's format.
|
|
73
|
+
*
|
|
74
|
+
* `.ga` → native; anything else → format2. `strict` picks the closed-schema
|
|
75
|
+
* flavor that rejects unknown fields.
|
|
76
|
+
*/
|
|
77
|
+
export function validatorForFixture(fixtureName, strict) {
|
|
78
|
+
if (fixtureName.endsWith(".ga")) {
|
|
79
|
+
return strict ? validateNativeStrict : validateNative;
|
|
80
|
+
}
|
|
81
|
+
return strict ? validateFormat2Strict : validateFormat2;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/workflow/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helper functions for walking Galaxy parameter trees.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from state-merge.ts to break a circular dependency:
|
|
5
|
+
* walker.ts needs these helpers, and state-merge.ts needs walkNativeState.
|
|
6
|
+
*
|
|
7
|
+
* Ported from Python galaxy.tool_util.parameters.visitor.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConditionalParameterModel, ConditionalWhen } from "../schema/bundle-types.js";
|
|
10
|
+
/** Build flat pipe-separated state path: `name` or `prefix|name`. */
|
|
11
|
+
export declare function flatStatePath(name: string, prefix?: string): string;
|
|
12
|
+
/** Filter a flat key-value map to keys starting with a given prefix. */
|
|
13
|
+
export declare function keysStartingWith<T>(map: Record<string, T>, prefix: string): Record<string, T>;
|
|
14
|
+
/**
|
|
15
|
+
* Split flat connection keys for a repeat into per-instance arrays.
|
|
16
|
+
*
|
|
17
|
+
* Connection keys use the pattern `repeatName_N|paramName`.
|
|
18
|
+
* Returns an array of per-instance connection dicts.
|
|
19
|
+
*/
|
|
20
|
+
export declare function repeatInputsToArray<T>(statePath: string, inputs: Record<string, T>): Record<string, T>[];
|
|
21
|
+
/**
|
|
22
|
+
* Select the matching ConditionalWhen for a conditional state dict.
|
|
23
|
+
*
|
|
24
|
+
* Matches the test parameter's value in state against each when's
|
|
25
|
+
* discriminator. Falls back to the default when if no match found.
|
|
26
|
+
* Returns null if no match at all (graceful degradation).
|
|
27
|
+
*/
|
|
28
|
+
export declare function selectWhichWhen(conditional: ConditionalParameterModel, state: Record<string, unknown>): ConditionalWhen | null;
|
|
29
|
+
//# sourceMappingURL=walk-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk-helpers.d.ts","sourceRoot":"","sources":["../../src/workflow/walk-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AAKnC,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAQ7F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACxB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAuBrB;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,eAAe,GAAG,IAAI,CAmBxB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helper functions for walking Galaxy parameter trees.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from state-merge.ts to break a circular dependency:
|
|
5
|
+
* walker.ts needs these helpers, and state-merge.ts needs walkNativeState.
|
|
6
|
+
*
|
|
7
|
+
* Ported from Python galaxy.tool_util.parameters.visitor.
|
|
8
|
+
*/
|
|
9
|
+
import { parseBool } from "./coercions.js";
|
|
10
|
+
// --- Path helpers ---
|
|
11
|
+
/** Build flat pipe-separated state path: `name` or `prefix|name`. */
|
|
12
|
+
export function flatStatePath(name, prefix) {
|
|
13
|
+
return prefix != null ? `${prefix}|${name}` : name;
|
|
14
|
+
}
|
|
15
|
+
/** Filter a flat key-value map to keys starting with a given prefix. */
|
|
16
|
+
export function keysStartingWith(map, prefix) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const [key, value] of Object.entries(map)) {
|
|
19
|
+
if (key.startsWith(prefix)) {
|
|
20
|
+
result[key] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Split flat connection keys for a repeat into per-instance arrays.
|
|
27
|
+
*
|
|
28
|
+
* Connection keys use the pattern `repeatName_N|paramName`.
|
|
29
|
+
* Returns an array of per-instance connection dicts.
|
|
30
|
+
*/
|
|
31
|
+
export function repeatInputsToArray(statePath, inputs) {
|
|
32
|
+
const repeatInputs = keysStartingWith(inputs, statePath + "_");
|
|
33
|
+
let highestCount = -1;
|
|
34
|
+
for (const key of Object.keys(repeatInputs)) {
|
|
35
|
+
const numStr = key.slice(statePath.length + 1).split("|")[0];
|
|
36
|
+
const num = parseInt(numStr, 10);
|
|
37
|
+
if (!isNaN(num) && num > highestCount) {
|
|
38
|
+
highestCount = num;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const params = [];
|
|
42
|
+
for (let i = 0; i <= highestCount; i++) {
|
|
43
|
+
params.push({});
|
|
44
|
+
}
|
|
45
|
+
for (const [key, value] of Object.entries(repeatInputs)) {
|
|
46
|
+
const numStr = key.slice(statePath.length + 1).split("|")[0];
|
|
47
|
+
const num = parseInt(numStr, 10);
|
|
48
|
+
if (!isNaN(num)) {
|
|
49
|
+
params[num][key] = value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return params;
|
|
53
|
+
}
|
|
54
|
+
// --- Conditional branch selection ---
|
|
55
|
+
/**
|
|
56
|
+
* Select the matching ConditionalWhen for a conditional state dict.
|
|
57
|
+
*
|
|
58
|
+
* Matches the test parameter's value in state against each when's
|
|
59
|
+
* discriminator. Falls back to the default when if no match found.
|
|
60
|
+
* Returns null if no match at all (graceful degradation).
|
|
61
|
+
*/
|
|
62
|
+
export function selectWhichWhen(conditional, state) {
|
|
63
|
+
const testParam = conditional.test_parameter;
|
|
64
|
+
const testValue = state[testParam.name];
|
|
65
|
+
// Try exact match first
|
|
66
|
+
for (const when of conditional.whens) {
|
|
67
|
+
if (_testValueMatchesDiscriminator(testParam, testValue, when.discriminator)) {
|
|
68
|
+
return when;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Fall back to default when
|
|
72
|
+
for (const when of conditional.whens) {
|
|
73
|
+
if (when.is_default_when) {
|
|
74
|
+
return when;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
function _testValueMatchesDiscriminator(testParam, testValue, discriminator) {
|
|
80
|
+
if (testParam.parameter_type === "gx_boolean") {
|
|
81
|
+
// Boolean coercion: handle string "true"/"false"/"True"/"False" and actual booleans
|
|
82
|
+
const boolValue = parseBool(testValue);
|
|
83
|
+
const discBool = typeof discriminator === "boolean" ? discriminator : parseBool(discriminator);
|
|
84
|
+
return boolValue === discBool;
|
|
85
|
+
}
|
|
86
|
+
// Select: string comparison
|
|
87
|
+
return String(testValue) === String(discriminator);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=walk-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk-helpers.js","sourceRoot":"","sources":["../../src/workflow/walk-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export type LeafCallback = (toolInput: ToolParameterModel, value: unknown, state
|
|
|
20
20
|
export interface WalkNativeOptions {
|
|
21
21
|
prefix?: string;
|
|
22
22
|
checkUnknownKeys?: boolean;
|
|
23
|
+
/** Copy undeclared keys from input state to output (default: false). */
|
|
24
|
+
preserveUnknownKeys?: boolean;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Walk native workflow tool_state using the parameter tree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/workflow/walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,2BAA2B,CAAC;AAKnC,uEAAuE;AACvE,eAAO,MAAM,UAAU,EAAE,OAAO,MAA6B,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,CACzB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,KACd,OAAO,GAAG,OAAO,UAAU,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/workflow/walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,2BAA2B,CAAC;AAKnC,uEAAuE;AACvE,eAAO,MAAM,UAAU,EAAE,OAAO,MAA6B,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,CACzB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,KACd,OAAO,GAAG,OAAO,UAAU,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,kBAAkB,EAAE,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6GzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,kBAAkB,EAAE,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,YAAY,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4EzB;AAED,mEAAmE;AACnE,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,GAAG,EAAE,MAAM;aACX,MAAM,CAAC,EAAE,MAAM;gBADf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,YAAA;CAMlC"}
|
package/dist/workflow/walker.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - No legacy decode: string containers are errors, not silently accommodated
|
|
14
14
|
* - SKIP_VALUE sentinel omits a value from the output
|
|
15
15
|
*/
|
|
16
|
-
import { flatStatePath, repeatInputsToArray, selectWhichWhen } from "./
|
|
16
|
+
import { flatStatePath, repeatInputsToArray, selectWhichWhen } from "./walk-helpers.js";
|
|
17
17
|
import { STALE_KEYS } from "./stale-keys.js";
|
|
18
18
|
/** Sentinel: return from leaf callback to omit a value from output. */
|
|
19
19
|
export const SKIP_VALUE = Symbol("SKIP_VALUE");
|
|
@@ -32,6 +32,7 @@ export const SKIP_VALUE = Symbol("SKIP_VALUE");
|
|
|
32
32
|
export function walkNativeState(inputConnections, toolInputs, state, leafCallback, options) {
|
|
33
33
|
const prefix = options?.prefix;
|
|
34
34
|
const checkUnknownKeys = options?.checkUnknownKeys ?? false;
|
|
35
|
+
const preserveUnknownKeys = options?.preserveUnknownKeys ?? false;
|
|
35
36
|
const result = {};
|
|
36
37
|
const visitedKeys = new Set();
|
|
37
38
|
for (const toolInput of toolInputs) {
|
|
@@ -47,7 +48,7 @@ export function walkNativeState(inputConnections, toolInputs, state, leafCallbac
|
|
|
47
48
|
const when = selectWhichWhen(conditional, stateDict);
|
|
48
49
|
const branchParams = when != null ? when.parameters : [];
|
|
49
50
|
// Walk the test parameter + branch parameters
|
|
50
|
-
const innerResult = walkNativeState(inputConnections, [conditional.test_parameter, ...branchParams], stateDict, leafCallback, { prefix: statePath, checkUnknownKeys });
|
|
51
|
+
const innerResult = walkNativeState(inputConnections, [conditional.test_parameter, ...branchParams], stateDict, leafCallback, { prefix: statePath, checkUnknownKeys, preserveUnknownKeys });
|
|
51
52
|
if (Object.keys(innerResult).length > 0) {
|
|
52
53
|
result[name] = innerResult;
|
|
53
54
|
}
|
|
@@ -66,10 +67,11 @@ export function walkNativeState(inputConnections, toolInputs, state, leafCallbac
|
|
|
66
67
|
for (let i = 0; i < instanceCount; i++) {
|
|
67
68
|
const instanceState = stateArray[i] ?? {};
|
|
68
69
|
const instancePrefix = `${statePath}_${i}`;
|
|
69
|
-
const instanceResult = walkNativeState(inputConnections, repeat.parameters, instanceState, leafCallback, { prefix: instancePrefix, checkUnknownKeys });
|
|
70
|
+
const instanceResult = walkNativeState(inputConnections, repeat.parameters, instanceState, leafCallback, { prefix: instancePrefix, checkUnknownKeys, preserveUnknownKeys });
|
|
70
71
|
instances.push(instanceResult);
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
+
// Preserve explicit empty arrays (valid state); omit only when key is absent
|
|
74
|
+
if (name in state || instances.length > 0) {
|
|
73
75
|
result[name] = instances;
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -78,7 +80,7 @@ export function walkNativeState(inputConnections, toolInputs, state, leafCallbac
|
|
|
78
80
|
const sectionState = state[name];
|
|
79
81
|
_assertNotStringContainer(name, parameterType, sectionState);
|
|
80
82
|
const stateDict = sectionState ?? {};
|
|
81
|
-
const innerResult = walkNativeState(inputConnections, section.parameters, stateDict, leafCallback, { prefix: statePath, checkUnknownKeys });
|
|
83
|
+
const innerResult = walkNativeState(inputConnections, section.parameters, stateDict, leafCallback, { prefix: statePath, checkUnknownKeys, preserveUnknownKeys });
|
|
82
84
|
if (Object.keys(innerResult).length > 0) {
|
|
83
85
|
result[name] = innerResult;
|
|
84
86
|
}
|
|
@@ -99,6 +101,13 @@ export function walkNativeState(inputConnections, toolInputs, state, leafCallbac
|
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
}
|
|
104
|
+
else if (preserveUnknownKeys) {
|
|
105
|
+
for (const key of Object.keys(state)) {
|
|
106
|
+
if (!visitedKeys.has(key)) {
|
|
107
|
+
result[key] = state[key];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
102
111
|
return result;
|
|
103
112
|
}
|
|
104
113
|
/**
|
|
@@ -141,7 +150,8 @@ export function walkFormat2State(toolInputs, state, leafCallback, prefix) {
|
|
|
141
150
|
const instanceResult = walkFormat2State(repeat.parameters, stateArray[i], leafCallback, instancePrefix);
|
|
142
151
|
instances.push(instanceResult);
|
|
143
152
|
}
|
|
144
|
-
|
|
153
|
+
// Preserve explicit empty arrays (valid state); omit only when key is absent
|
|
154
|
+
if (name in state || instances.length > 0) {
|
|
145
155
|
result[name] = instances;
|
|
146
156
|
}
|
|
147
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/workflow/walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/workflow/walker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galaxy-tool-util/schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Effect Schema parameter types and validators for Galaxy tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -30,15 +30,16 @@
|
|
|
30
30
|
],
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"
|
|
33
|
+
"ajv": "^8.18.0",
|
|
34
|
+
"ajv-formats": "^3.0.1",
|
|
35
|
+
"effect": "^3.21.0",
|
|
36
|
+
"yaml": "^2.8.3"
|
|
34
37
|
},
|
|
35
38
|
"devDependencies": {
|
|
36
|
-
"
|
|
37
|
-
"yaml": "^2.8.3",
|
|
38
|
-
"@galaxy-tool-util/core": "0.2.0"
|
|
39
|
+
"@galaxy-tool-util/core": "0.3.0"
|
|
39
40
|
},
|
|
40
41
|
"scripts": {
|
|
41
|
-
"build": "tsc",
|
|
42
|
+
"build": "tsc && node ../../scripts/copy-schema-assets.mjs",
|
|
42
43
|
"typecheck": "tsc --noEmit",
|
|
43
44
|
"test": "tsc --noEmit && vitest run",
|
|
44
45
|
"test:watch": "vitest",
|