@galaxy-tool-util/schema 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/workflow/json-schemas.d.ts +1 -1
- package/dist/workflow/json-schemas.d.ts.map +1 -1
- package/dist/workflow/json-schemas.js +118 -0
- package/dist/workflow/json-schemas.js.map +1 -1
- package/dist/workflow/serialize.d.ts +6 -0
- package/dist/workflow/serialize.d.ts.map +1 -1
- package/dist/workflow/serialize.js +7 -1
- package/dist/workflow/serialize.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* runtime bundle need a plain-object JSON Schema instead. Mirrors the
|
|
7
7
|
* `parsedToolSchema` pattern in `schema/parsed-tool.ts`.
|
|
8
8
|
*/
|
|
9
|
-
export declare const galaxyWorkflowDraftJsonSchema:
|
|
9
|
+
export declare const galaxyWorkflowDraftJsonSchema: Record<string, unknown>;
|
|
10
10
|
//# sourceMappingURL=json-schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schemas.d.ts","sourceRoot":"","sources":["../../src/workflow/json-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"json-schemas.d.ts","sourceRoot":"","sources":["../../src/workflow/json-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoKH,eAAO,MAAM,6BAA6B,yBAAkB,CAAC"}
|
|
@@ -31,9 +31,127 @@ function stripDuplicateUnknownIds(node) {
|
|
|
31
31
|
for (const k of Object.keys(obj))
|
|
32
32
|
stripDuplicateUnknownIds(obj[k]);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* `JSONSchema.make` inlines every subschema lacking an `identifier`
|
|
36
|
+
* annotation, so structurally-identical fragments (workflow step variants,
|
|
37
|
+
* tool_state value types, RuntimeValue/ConnectedValue, …) are duplicated many
|
|
38
|
+
* times over. The draft schema reaches ~95 KB compact and ~580 KB
|
|
39
|
+
* pretty-printed (deep nesting amplifies indentation), which is impractical
|
|
40
|
+
* for downstream packagers to vendor verbatim. Hoist each repeated subschema
|
|
41
|
+
* into `$defs` and replace its occurrences with `$ref`, shrinking the document
|
|
42
|
+
* with no change in meaning.
|
|
43
|
+
*
|
|
44
|
+
* Replacement happens **only at schema positions** — a `$ref` is legal where a
|
|
45
|
+
* subschema is expected (`properties` values, `items`, `anyOf` members, …) but
|
|
46
|
+
* not in array/value keywords like `required`, `enum`, or `type`. Output is
|
|
47
|
+
* deterministic (candidates chosen by largest byte saving, ties broken by
|
|
48
|
+
* canonical form; `$def` names assigned in hoist order) so the generated
|
|
49
|
+
* schema is byte-stable across runs.
|
|
50
|
+
*/
|
|
51
|
+
const SCHEMA_OBJ_KEYS = [
|
|
52
|
+
"additionalProperties",
|
|
53
|
+
"items",
|
|
54
|
+
"additionalItems",
|
|
55
|
+
"contains",
|
|
56
|
+
"propertyNames",
|
|
57
|
+
"not",
|
|
58
|
+
"if",
|
|
59
|
+
"then",
|
|
60
|
+
"else",
|
|
61
|
+
"unevaluatedProperties",
|
|
62
|
+
"unevaluatedItems",
|
|
63
|
+
];
|
|
64
|
+
const SCHEMA_MAP_KEYS = [
|
|
65
|
+
"properties",
|
|
66
|
+
"patternProperties",
|
|
67
|
+
"dependentSchemas",
|
|
68
|
+
"$defs",
|
|
69
|
+
"definitions",
|
|
70
|
+
];
|
|
71
|
+
const SCHEMA_ARR_KEYS = ["allOf", "anyOf", "oneOf", "prefixItems"];
|
|
72
|
+
const isPlainObject = (n) => n !== null && typeof n === "object" && !Array.isArray(n);
|
|
73
|
+
/** Stable serialization (sorted object keys) for structural equality. */
|
|
74
|
+
function canonicalize(node) {
|
|
75
|
+
if (!isPlainObject(node)) {
|
|
76
|
+
if (Array.isArray(node))
|
|
77
|
+
return `[${node.map(canonicalize).join(",")}]`;
|
|
78
|
+
return JSON.stringify(node) ?? "null";
|
|
79
|
+
}
|
|
80
|
+
return `{${Object.keys(node)
|
|
81
|
+
.sort()
|
|
82
|
+
.map((k) => `${JSON.stringify(k)}:${canonicalize(node[k])}`)
|
|
83
|
+
.join(",")}}`;
|
|
84
|
+
}
|
|
85
|
+
/** Walk every node that sits in a JSON-Schema position; `replace` swaps it in its parent. */
|
|
86
|
+
function eachSchemaNode(node, replace, visit, isRoot = true) {
|
|
87
|
+
visit(node, replace, isRoot);
|
|
88
|
+
if (!isPlainObject(node))
|
|
89
|
+
return;
|
|
90
|
+
for (const k of SCHEMA_OBJ_KEYS) {
|
|
91
|
+
if (isPlainObject(node[k]))
|
|
92
|
+
eachSchemaNode(node[k], (v) => (node[k] = v), visit, false);
|
|
93
|
+
}
|
|
94
|
+
for (const k of SCHEMA_MAP_KEYS) {
|
|
95
|
+
const map = node[k];
|
|
96
|
+
if (isPlainObject(map)) {
|
|
97
|
+
for (const sk of Object.keys(map))
|
|
98
|
+
eachSchemaNode(map[sk], (v) => (map[sk] = v), visit, false);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
for (const k of SCHEMA_ARR_KEYS) {
|
|
102
|
+
const arr = node[k];
|
|
103
|
+
if (Array.isArray(arr)) {
|
|
104
|
+
for (let i = 0; i < arr.length; i++)
|
|
105
|
+
eachSchemaNode(arr[i], (v) => (arr[i] = v), visit, false);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function dedupeSubschemas(root) {
|
|
110
|
+
const MIN_BYTES = 200;
|
|
111
|
+
const defs = (root.$defs && isPlainObject(root.$defs) ? root.$defs : (root.$defs = {}));
|
|
112
|
+
let counter = 0;
|
|
113
|
+
for (let guard = 0; guard < 5000; guard++) {
|
|
114
|
+
const tally = new Map();
|
|
115
|
+
eachSchemaNode(root, () => { }, (node, _replace, isRoot) => {
|
|
116
|
+
if (isRoot || !isPlainObject(node))
|
|
117
|
+
return;
|
|
118
|
+
const s = canonicalize(node);
|
|
119
|
+
if (s.length < MIN_BYTES)
|
|
120
|
+
return;
|
|
121
|
+
const cur = tally.get(s);
|
|
122
|
+
if (cur)
|
|
123
|
+
cur.count++;
|
|
124
|
+
else
|
|
125
|
+
tally.set(s, { count: 1, size: s.length });
|
|
126
|
+
});
|
|
127
|
+
let best = null;
|
|
128
|
+
let bestSaving = 0;
|
|
129
|
+
for (const [s, { count, size }] of tally) {
|
|
130
|
+
if (count < 2)
|
|
131
|
+
continue;
|
|
132
|
+
const saving = (count - 1) * size;
|
|
133
|
+
if (saving > bestSaving || (saving === bestSaving && (best === null || s < best))) {
|
|
134
|
+
bestSaving = saving;
|
|
135
|
+
best = s;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (best === null)
|
|
139
|
+
break;
|
|
140
|
+
const name = `Shared${counter++}`;
|
|
141
|
+
const ref = `#/$defs/${name}`;
|
|
142
|
+
eachSchemaNode(root, () => { }, (node, replace, isRoot) => {
|
|
143
|
+
if (isRoot || !isPlainObject(node))
|
|
144
|
+
return;
|
|
145
|
+
if (canonicalize(node) === best)
|
|
146
|
+
replace({ $ref: ref });
|
|
147
|
+
});
|
|
148
|
+
defs[name] = JSON.parse(best);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
34
151
|
const draftJsonSchema = JSONSchema.make(GalaxyWorkflowDraftSchema, {
|
|
35
152
|
target: "jsonSchema2020-12",
|
|
36
153
|
});
|
|
37
154
|
stripDuplicateUnknownIds(draftJsonSchema);
|
|
155
|
+
dedupeSubschemas(draftJsonSchema);
|
|
38
156
|
export const galaxyWorkflowDraftJsonSchema = draftJsonSchema;
|
|
39
157
|
//# sourceMappingURL=json-schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schemas.js","sourceRoot":"","sources":["../../src/workflow/json-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E;;;;;;;;GAQG;AACH,SAAS,wBAAwB,CAAC,IAAa;IAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,GAAG,CAAC,GAAG,KAAK,kBAAkB;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,yBAAyB,EAAE;IACjE,MAAM,EAAE,mBAAmB;CAC5B,
|
|
1
|
+
{"version":3,"file":"json-schemas.js","sourceRoot":"","sources":["../../src/workflow/json-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,12 @@ export interface SerializeWorkflowOptions {
|
|
|
20
20
|
* `json` / `yaml` overrides).
|
|
21
21
|
*
|
|
22
22
|
* YAML uses `lineWidth: 0` to disable line-wrapping so diffs stay stable.
|
|
23
|
+
*
|
|
24
|
+
* The `yaml-1.1` schema is used for emission so the writer quotes plain scalars
|
|
25
|
+
* that a YAML 1.1 reader (e.g. PyYAML, which Galaxy uses) would otherwise coerce
|
|
26
|
+
* — the word-form booleans `no`/`yes`/`on`/`off`/`y`/`n`. Tool_state stores these
|
|
27
|
+
* as strings (a select option value like `"no"`); emitting them bare lets a 1.1
|
|
28
|
+
* reader decode them as booleans. Real numbers/booleans are unaffected.
|
|
23
29
|
*/
|
|
24
30
|
export declare function serializeWorkflow(data: Record<string, unknown>, format: WorkflowFormat, opts?: SerializeWorkflowOptions): string;
|
|
25
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/workflow/serialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/workflow/serialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,wBAA6B,GAClC,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAG/F"}
|
|
@@ -11,12 +11,18 @@ import { detectFormat } from "./detect-format.js";
|
|
|
11
11
|
* `json` / `yaml` overrides).
|
|
12
12
|
*
|
|
13
13
|
* YAML uses `lineWidth: 0` to disable line-wrapping so diffs stay stable.
|
|
14
|
+
*
|
|
15
|
+
* The `yaml-1.1` schema is used for emission so the writer quotes plain scalars
|
|
16
|
+
* that a YAML 1.1 reader (e.g. PyYAML, which Galaxy uses) would otherwise coerce
|
|
17
|
+
* — the word-form booleans `no`/`yes`/`on`/`off`/`y`/`n`. Tool_state stores these
|
|
18
|
+
* as strings (a select option value like `"no"`); emitting them bare lets a 1.1
|
|
19
|
+
* reader decode them as booleans. Real numbers/booleans are unaffected.
|
|
14
20
|
*/
|
|
15
21
|
export function serializeWorkflow(data, format, opts = {}) {
|
|
16
22
|
const useYaml = opts.yaml || (!opts.json && format === "format2");
|
|
17
23
|
const newline = opts.trailingNewline ?? true;
|
|
18
24
|
if (useYaml) {
|
|
19
|
-
const out = stringifyYaml(data, { lineWidth: 0 });
|
|
25
|
+
const out = stringifyYaml(data, { lineWidth: 0, schema: "yaml-1.1" });
|
|
20
26
|
// `yaml` already ends with a newline; don't double-append.
|
|
21
27
|
if (newline)
|
|
22
28
|
return out.endsWith("\n") ? out : out + "\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/workflow/serialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AAavE
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/workflow/serialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AAavE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA6B,EAC7B,MAAsB,EACtB,OAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,2DAA2D;QAC3D,IAAI,OAAO;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QAC1D,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAA6B,EAAE,SAAkB;IAC7E,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|