@galaxy-tool-util/schema 0.1.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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +87 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +62 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/schema/type-guards.d.ts +14 -0
  7. package/dist/schema/type-guards.d.ts.map +1 -0
  8. package/dist/schema/type-guards.js +25 -0
  9. package/dist/schema/type-guards.js.map +1 -0
  10. package/dist/test-format/cross-check/check.d.ts +18 -0
  11. package/dist/test-format/cross-check/check.d.ts.map +1 -0
  12. package/dist/test-format/cross-check/check.js +89 -0
  13. package/dist/test-format/cross-check/check.js.map +1 -0
  14. package/dist/test-format/cross-check/extract-format2.d.ts +13 -0
  15. package/dist/test-format/cross-check/extract-format2.d.ts.map +1 -0
  16. package/dist/test-format/cross-check/extract-format2.js +98 -0
  17. package/dist/test-format/cross-check/extract-format2.js.map +1 -0
  18. package/dist/test-format/cross-check/extract-native.d.ts +4 -0
  19. package/dist/test-format/cross-check/extract-native.d.ts.map +1 -0
  20. package/dist/test-format/cross-check/extract-native.js +89 -0
  21. package/dist/test-format/cross-check/extract-native.js.map +1 -0
  22. package/dist/test-format/cross-check/extract.d.ts +9 -0
  23. package/dist/test-format/cross-check/extract.d.ts.map +1 -0
  24. package/dist/test-format/cross-check/extract.js +16 -0
  25. package/dist/test-format/cross-check/extract.js.map +1 -0
  26. package/dist/test-format/cross-check/index.d.ts +7 -0
  27. package/dist/test-format/cross-check/index.d.ts.map +1 -0
  28. package/dist/test-format/cross-check/index.js +6 -0
  29. package/dist/test-format/cross-check/index.js.map +1 -0
  30. package/dist/test-format/cross-check/type-compat.d.ts +23 -0
  31. package/dist/test-format/cross-check/type-compat.d.ts.map +1 -0
  32. package/dist/test-format/cross-check/type-compat.js +48 -0
  33. package/dist/test-format/cross-check/type-compat.js.map +1 -0
  34. package/dist/test-format/cross-check/types.d.ts +23 -0
  35. package/dist/test-format/cross-check/types.d.ts.map +1 -0
  36. package/dist/test-format/cross-check/types.js +10 -0
  37. package/dist/test-format/cross-check/types.js.map +1 -0
  38. package/dist/test-format/index.d.ts +3 -0
  39. package/dist/test-format/index.d.ts.map +1 -0
  40. package/dist/test-format/index.js +3 -0
  41. package/dist/test-format/index.js.map +1 -0
  42. package/dist/test-format/tests.schema.generated.d.ts +5610 -0
  43. package/dist/test-format/tests.schema.generated.d.ts.map +1 -0
  44. package/dist/test-format/tests.schema.generated.js +6899 -0
  45. package/dist/test-format/tests.schema.generated.js.map +1 -0
  46. package/dist/test-format/validate.d.ts +20 -0
  47. package/dist/test-format/validate.d.ts.map +1 -0
  48. package/dist/test-format/validate.js +41 -0
  49. package/dist/test-format/validate.js.map +1 -0
  50. package/dist/tool-state-validator.d.ts +23 -0
  51. package/dist/tool-state-validator.d.ts.map +1 -0
  52. package/dist/tool-state-validator.js +59 -0
  53. package/dist/tool-state-validator.js.map +1 -0
  54. package/dist/workflow/clean.d.ts +56 -3
  55. package/dist/workflow/clean.d.ts.map +1 -1
  56. package/dist/workflow/clean.js +227 -27
  57. package/dist/workflow/clean.js.map +1 -1
  58. package/dist/workflow/coercions.d.ts +22 -0
  59. package/dist/workflow/coercions.d.ts.map +1 -0
  60. package/dist/workflow/coercions.js +67 -0
  61. package/dist/workflow/coercions.js.map +1 -0
  62. package/dist/workflow/index.d.ts +17 -4
  63. package/dist/workflow/index.d.ts.map +1 -1
  64. package/dist/workflow/index.js +18 -3
  65. package/dist/workflow/index.js.map +1 -1
  66. package/dist/workflow/lint-profiles.d.ts +27 -0
  67. package/dist/workflow/lint-profiles.d.ts.map +1 -0
  68. package/dist/workflow/lint-profiles.js +49 -0
  69. package/dist/workflow/lint-profiles.js.map +1 -0
  70. package/dist/workflow/lint-rules.d.ts +15 -0
  71. package/dist/workflow/lint-rules.d.ts.map +1 -0
  72. package/dist/workflow/lint-rules.js +15 -0
  73. package/dist/workflow/lint-rules.js.map +1 -0
  74. package/dist/workflow/lint.d.ts +4 -18
  75. package/dist/workflow/lint.d.ts.map +1 -1
  76. package/dist/workflow/lint.js +9 -30
  77. package/dist/workflow/lint.js.map +1 -1
  78. package/dist/workflow/lint_profiles.yml +41 -0
  79. package/dist/workflow/linting.d.ts +54 -0
  80. package/dist/workflow/linting.d.ts.map +1 -0
  81. package/dist/workflow/linting.js +71 -0
  82. package/dist/workflow/linting.js.map +1 -0
  83. package/dist/workflow/normalized/index.d.ts +5 -2
  84. package/dist/workflow/normalized/index.d.ts.map +1 -1
  85. package/dist/workflow/normalized/index.js +2 -0
  86. package/dist/workflow/normalized/index.js.map +1 -1
  87. package/dist/workflow/normalized/stateful-runner.d.ts +82 -0
  88. package/dist/workflow/normalized/stateful-runner.d.ts.map +1 -0
  89. package/dist/workflow/normalized/stateful-runner.js +122 -0
  90. package/dist/workflow/normalized/stateful-runner.js.map +1 -0
  91. package/dist/workflow/normalized/toFormat2.d.ts +19 -1
  92. package/dist/workflow/normalized/toFormat2.d.ts.map +1 -1
  93. package/dist/workflow/normalized/toFormat2.js +47 -16
  94. package/dist/workflow/normalized/toFormat2.js.map +1 -1
  95. package/dist/workflow/normalized/toFormat2Stateful.d.ts +30 -0
  96. package/dist/workflow/normalized/toFormat2Stateful.d.ts.map +1 -0
  97. package/dist/workflow/normalized/toFormat2Stateful.js +58 -0
  98. package/dist/workflow/normalized/toFormat2Stateful.js.map +1 -0
  99. package/dist/workflow/normalized/toNative.d.ts +10 -1
  100. package/dist/workflow/normalized/toNative.d.ts.map +1 -1
  101. package/dist/workflow/normalized/toNative.js +24 -8
  102. package/dist/workflow/normalized/toNative.js.map +1 -1
  103. package/dist/workflow/normalized/toNativeStateful.d.ts +31 -0
  104. package/dist/workflow/normalized/toNativeStateful.d.ts.map +1 -0
  105. package/dist/workflow/normalized/toNativeStateful.js +55 -0
  106. package/dist/workflow/normalized/toNativeStateful.js.map +1 -0
  107. package/dist/workflow/param-navigation.d.ts +26 -0
  108. package/dist/workflow/param-navigation.d.ts.map +1 -0
  109. package/dist/workflow/param-navigation.js +60 -0
  110. package/dist/workflow/param-navigation.js.map +1 -0
  111. package/dist/workflow/precheck.d.ts +54 -0
  112. package/dist/workflow/precheck.d.ts.map +1 -0
  113. package/dist/workflow/precheck.js +91 -0
  114. package/dist/workflow/precheck.js.map +1 -0
  115. package/dist/workflow/raw/gxformat2.effect.d.ts +97 -97
  116. package/dist/workflow/raw/gxformat2.effect.d.ts.map +1 -1
  117. package/dist/workflow/raw/gxformat2.effect.js +98 -88
  118. package/dist/workflow/raw/gxformat2.effect.js.map +1 -1
  119. package/dist/workflow/raw/native.d.ts +2 -2
  120. package/dist/workflow/raw/native.d.ts.map +1 -1
  121. package/dist/workflow/raw/native.effect.d.ts +33 -33
  122. package/dist/workflow/raw/native.effect.d.ts.map +1 -1
  123. package/dist/workflow/raw/native.effect.js +42 -32
  124. package/dist/workflow/raw/native.effect.js.map +1 -1
  125. package/dist/workflow/report-models.d.ts +412 -0
  126. package/dist/workflow/report-models.d.ts.map +1 -0
  127. package/dist/workflow/report-models.js +342 -0
  128. package/dist/workflow/report-models.js.map +1 -0
  129. package/dist/workflow/roundtrip.d.ts +77 -0
  130. package/dist/workflow/roundtrip.d.ts.map +1 -0
  131. package/dist/workflow/roundtrip.js +597 -0
  132. package/dist/workflow/roundtrip.js.map +1 -0
  133. package/dist/workflow/runtime-markers.d.ts +20 -0
  134. package/dist/workflow/runtime-markers.d.ts.map +1 -0
  135. package/dist/workflow/runtime-markers.js +26 -0
  136. package/dist/workflow/runtime-markers.js.map +1 -0
  137. package/dist/workflow/schema-rules.d.ts +38 -0
  138. package/dist/workflow/schema-rules.d.ts.map +1 -0
  139. package/dist/workflow/schema-rules.js +28 -0
  140. package/dist/workflow/schema-rules.js.map +1 -0
  141. package/dist/workflow/schema_rules.yml +69 -0
  142. package/dist/workflow/serialize.d.ts +30 -0
  143. package/dist/workflow/serialize.d.ts.map +1 -0
  144. package/dist/workflow/serialize.js +37 -0
  145. package/dist/workflow/serialize.js.map +1 -0
  146. package/dist/workflow/stale-keys.d.ts +16 -0
  147. package/dist/workflow/stale-keys.d.ts.map +1 -0
  148. package/dist/workflow/stale-keys.js +43 -0
  149. package/dist/workflow/stale-keys.js.map +1 -0
  150. package/dist/workflow/state-merge.d.ts +15 -32
  151. package/dist/workflow/state-merge.d.ts.map +1 -1
  152. package/dist/workflow/state-merge.js +31 -225
  153. package/dist/workflow/state-merge.js.map +1 -1
  154. package/dist/workflow/stateful-convert.d.ts +47 -0
  155. package/dist/workflow/stateful-convert.d.ts.map +1 -0
  156. package/dist/workflow/stateful-convert.js +151 -0
  157. package/dist/workflow/stateful-convert.js.map +1 -0
  158. package/dist/workflow/stateful-validate.d.ts +67 -0
  159. package/dist/workflow/stateful-validate.d.ts.map +1 -0
  160. package/dist/workflow/stateful-validate.js +123 -0
  161. package/dist/workflow/stateful-validate.js.map +1 -0
  162. package/dist/workflow/strict-checks.d.ts +22 -0
  163. package/dist/workflow/strict-checks.d.ts.map +1 -0
  164. package/dist/workflow/strict-checks.js +95 -0
  165. package/dist/workflow/strict-checks.js.map +1 -0
  166. package/dist/workflow/tool-state-io.d.ts +14 -0
  167. package/dist/workflow/tool-state-io.d.ts.map +1 -0
  168. package/dist/workflow/tool-state-io.js +33 -0
  169. package/dist/workflow/tool-state-io.js.map +1 -0
  170. package/dist/workflow/validators.d.ts +34 -0
  171. package/dist/workflow/validators.d.ts.map +1 -0
  172. package/dist/workflow/validators.js +83 -0
  173. package/dist/workflow/validators.js.map +1 -0
  174. package/dist/workflow/walk-helpers.d.ts +29 -0
  175. package/dist/workflow/walk-helpers.d.ts.map +1 -0
  176. package/dist/workflow/walk-helpers.js +89 -0
  177. package/dist/workflow/walk-helpers.js.map +1 -0
  178. package/dist/workflow/walker.d.ts +55 -0
  179. package/dist/workflow/walker.d.ts.map +1 -0
  180. package/dist/workflow/walker.js +199 -0
  181. package/dist/workflow/walker.js.map +1 -0
  182. package/package.json +21 -16
@@ -0,0 +1,89 @@
1
+ import { parseToolState } from "../../workflow/tool-state-io.js";
2
+ const INPUT_STEP_TYPES = new Set(["data_input", "data_collection_input", "parameter_input"]);
3
+ function asRecord(v) {
4
+ return v && typeof v === "object" && !Array.isArray(v)
5
+ ? v
6
+ : undefined;
7
+ }
8
+ function asString(v) {
9
+ return typeof v === "string" ? v : undefined;
10
+ }
11
+ function inputTypeFor(stepType, toolState) {
12
+ if (stepType === "data_input")
13
+ return "data";
14
+ if (stepType === "data_collection_input")
15
+ return "collection";
16
+ // parameter_input — tool_state carries `parameter_type` (e.g. "integer", "text", "boolean").
17
+ return asString(toolState.parameter_type) ?? "data";
18
+ }
19
+ /**
20
+ * Return parsed steps as an array ordered by numeric id. Native workflows
21
+ * store `steps` as a dict keyed by stringified id.
22
+ */
23
+ function orderedSteps(parsed) {
24
+ const steps = asRecord(parsed.steps);
25
+ if (!steps)
26
+ return [];
27
+ return Object.entries(steps)
28
+ .map(([key, value]) => {
29
+ const step = asRecord(value);
30
+ const id = step && typeof step.id === "number" ? step.id : Number.parseInt(key, 10);
31
+ return { id: Number.isFinite(id) ? id : 0, step };
32
+ })
33
+ .filter((e) => !!e.step)
34
+ .sort((a, b) => a.id - b.id)
35
+ .map((e) => e.step);
36
+ }
37
+ export function extractNativeInputs(parsed) {
38
+ const wf = asRecord(parsed);
39
+ if (!wf)
40
+ return [];
41
+ const out = [];
42
+ for (const step of orderedSteps(wf)) {
43
+ const stepType = asString(step.type);
44
+ if (!stepType || !INPUT_STEP_TYPES.has(stepType))
45
+ continue;
46
+ const name = asString(step.label);
47
+ if (!name)
48
+ continue;
49
+ const toolState = parseToolState(step.tool_state);
50
+ const type = inputTypeFor(stepType, toolState);
51
+ const input = { name, type };
52
+ const doc = asString(step.annotation);
53
+ if (doc)
54
+ input.doc = doc;
55
+ if (typeof toolState.optional === "boolean")
56
+ input.optional = toolState.optional;
57
+ if (Object.prototype.hasOwnProperty.call(toolState, "default")) {
58
+ input.default = toolState.default;
59
+ }
60
+ out.push(input);
61
+ }
62
+ return out;
63
+ }
64
+ export function extractNativeOutputs(parsed) {
65
+ const wf = asRecord(parsed);
66
+ if (!wf)
67
+ return [];
68
+ const out = [];
69
+ for (const step of orderedSteps(wf)) {
70
+ const workflowOutputs = step.workflow_outputs;
71
+ if (!Array.isArray(workflowOutputs))
72
+ continue;
73
+ for (const wo of workflowOutputs) {
74
+ const r = asRecord(wo);
75
+ if (!r)
76
+ continue;
77
+ const name = asString(r.label) ?? asString(r.output_name);
78
+ if (!name)
79
+ continue;
80
+ const entry = { name };
81
+ const uuid = asString(r.uuid);
82
+ if (uuid)
83
+ entry.uuid = uuid;
84
+ out.push(entry);
85
+ }
86
+ }
87
+ return out;
88
+ }
89
+ //# sourceMappingURL=extract-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-native.js","sourceRoot":"","sources":["../../../src/test-format/cross-check/extract-native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { WorkflowFormat } from "../../workflow/detect-format.js";
2
+ import type { WorkflowInput, WorkflowOutput } from "./types.js";
3
+ /**
4
+ * Format-aware extractor. Uses the schema package's `resolveFormat` so
5
+ * callers don't have to sniff native vs format2 themselves.
6
+ */
7
+ export declare function extractWorkflowInputs(parsed: Record<string, unknown>, format?: WorkflowFormat): WorkflowInput[];
8
+ export declare function extractWorkflowOutputs(parsed: Record<string, unknown>, format?: WorkflowFormat): WorkflowOutput[];
9
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/test-format/cross-check/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,cAAc,GACtB,aAAa,EAAE,CAGjB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,cAAc,GACtB,cAAc,EAAE,CAGlB"}
@@ -0,0 +1,16 @@
1
+ import { resolveFormat } from "../../workflow/serialize.js";
2
+ import { extractFormat2Inputs, extractFormat2Outputs } from "./extract-format2.js";
3
+ import { extractNativeInputs, extractNativeOutputs } from "./extract-native.js";
4
+ /**
5
+ * Format-aware extractor. Uses the schema package's `resolveFormat` so
6
+ * callers don't have to sniff native vs format2 themselves.
7
+ */
8
+ export function extractWorkflowInputs(parsed, format) {
9
+ const f = format ?? resolveFormat(parsed);
10
+ return f === "format2" ? extractFormat2Inputs(parsed) : extractNativeInputs(parsed);
11
+ }
12
+ export function extractWorkflowOutputs(parsed, format) {
13
+ const f = format ?? resolveFormat(parsed);
14
+ return f === "format2" ? extractFormat2Outputs(parsed) : extractNativeOutputs(parsed);
15
+ }
16
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/test-format/cross-check/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,MAAuB;IAEvB,MAAM,CAAC,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAA+B,EAC/B,MAAuB;IAEvB,MAAM,CAAC,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type { WorkflowInput, WorkflowOutput, WorkflowDataType } from "./types.js";
2
+ export { extractWorkflowInputs, extractWorkflowOutputs } from "./extract.js";
3
+ export { extractFormat2Inputs, extractFormat2Outputs } from "./extract-format2.js";
4
+ export { extractNativeInputs, extractNativeOutputs } from "./extract-native.js";
5
+ export { isCompatibleType, jsTypeOf } from "./type-compat.js";
6
+ export { checkTestsAgainstWorkflow, type WorkflowShape } from "./check.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test-format/cross-check/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { extractWorkflowInputs, extractWorkflowOutputs } from "./extract.js";
2
+ export { extractFormat2Inputs, extractFormat2Outputs } from "./extract-format2.js";
3
+ export { extractNativeInputs, extractNativeOutputs } from "./extract-native.js";
4
+ export { isCompatibleType, jsTypeOf } from "./type-compat.js";
5
+ export { checkTestsAgainstWorkflow } from "./check.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-format/cross-check/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAsB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { WorkflowDataType } from "./types.js";
2
+ /**
3
+ * Coarse compatibility check between a workflow-declared input type and the
4
+ * runtime type tag of a test-job value. Matches the VS Code plugin's
5
+ * `server-common/src/utils.ts::isCompatibleType` signature — callers pass a
6
+ * runtime type *string*, not the raw value. Plugin callers derive the string
7
+ * from an AST node's `.type` (YAML-language-server vocabulary:
8
+ * `"string" | "number" | "boolean" | "null" | "object" | "array"`); our CLI
9
+ * derives it from `typeof` via {@link jsTypeOf}.
10
+ *
11
+ * Unmapped declared types (`data`, `collection`, `color`, custom) fall
12
+ * through as compatible — the strict structural check lives in the JSON
13
+ * Schema layer.
14
+ */
15
+ export declare function isCompatibleType(expectedType: WorkflowDataType, actualType: string): boolean;
16
+ /**
17
+ * JS-side runtime type tag for a test-job value, in the same vocabulary
18
+ * YAML-language-server's AST emits — so `isCompatibleType` produces the same
19
+ * answer regardless of whether the caller walked an AST (plugin) or parsed
20
+ * YAML into plain values (CLI).
21
+ */
22
+ export declare function jsTypeOf(value: unknown): string;
23
+ //# sourceMappingURL=type-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-compat.d.ts","sourceRoot":"","sources":["../../../src/test-format/cross-check/type-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAoB5F;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/C"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Coarse compatibility check between a workflow-declared input type and the
3
+ * runtime type tag of a test-job value. Matches the VS Code plugin's
4
+ * `server-common/src/utils.ts::isCompatibleType` signature — callers pass a
5
+ * runtime type *string*, not the raw value. Plugin callers derive the string
6
+ * from an AST node's `.type` (YAML-language-server vocabulary:
7
+ * `"string" | "number" | "boolean" | "null" | "object" | "array"`); our CLI
8
+ * derives it from `typeof` via {@link jsTypeOf}.
9
+ *
10
+ * Unmapped declared types (`data`, `collection`, `color`, custom) fall
11
+ * through as compatible — the strict structural check lives in the JSON
12
+ * Schema layer.
13
+ */
14
+ export function isCompatibleType(expectedType, actualType) {
15
+ switch (expectedType) {
16
+ case "int":
17
+ case "integer":
18
+ case "long":
19
+ case "double":
20
+ case "float":
21
+ return actualType === "number";
22
+ case "boolean":
23
+ return actualType === "boolean";
24
+ case "text":
25
+ case "string":
26
+ return actualType === "string";
27
+ case "File":
28
+ return actualType === "string" || actualType === "object";
29
+ case "null":
30
+ return actualType === "null";
31
+ default:
32
+ return true;
33
+ }
34
+ }
35
+ /**
36
+ * JS-side runtime type tag for a test-job value, in the same vocabulary
37
+ * YAML-language-server's AST emits — so `isCompatibleType` produces the same
38
+ * answer regardless of whether the caller walked an AST (plugin) or parsed
39
+ * YAML into plain values (CLI).
40
+ */
41
+ export function jsTypeOf(value) {
42
+ if (value === null)
43
+ return "null";
44
+ if (Array.isArray(value))
45
+ return "array";
46
+ return typeof value;
47
+ }
48
+ //# sourceMappingURL=type-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-compat.js","sourceRoot":"","sources":["../../../src/test-format/cross-check/type-compat.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA8B,EAAE,UAAkB;IACjF,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,QAAQ,CAAC;QACjC,KAAK,SAAS;YACZ,OAAO,UAAU,KAAK,SAAS,CAAC;QAClC,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,UAAU,KAAK,QAAQ,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,CAAC;QAC5D,KAAK,MAAM;YACT,OAAO,UAAU,KAAK,MAAM,CAAC;QAC/B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Canonical DTOs for workflow cross-check. Shared with the VS Code plugin so
3
+ * extractors + the comparator can be reused; plugin keeps AST ranges.
4
+ *
5
+ * `type` is stringified whatever the workflow declares ("File", "data",
6
+ * "int", "integer", "string", ...). Callers should not canonicalize — the
7
+ * vocabulary is semi-open and differs subtly between native and format2.
8
+ */
9
+ export type WorkflowDataType = "boolean" | "collection" | "color" | "data" | "double" | "File" | "float" | "int" | "integer" | "long" | "null" | "string" | "text" | (string & {});
10
+ export interface WorkflowInput {
11
+ name: string;
12
+ doc?: string;
13
+ type: WorkflowDataType;
14
+ default?: unknown;
15
+ optional?: boolean;
16
+ }
17
+ export interface WorkflowOutput {
18
+ name: string;
19
+ doc?: string;
20
+ uuid?: string;
21
+ type?: WorkflowDataType;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/test-format/cross-check/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,YAAY,GACZ,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,GACP,KAAK,GACL,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,MAAM,GACN,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Canonical DTOs for workflow cross-check. Shared with the VS Code plugin so
3
+ * extractors + the comparator can be reused; plugin keeps AST ranges.
4
+ *
5
+ * `type` is stringified whatever the workflow declares ("File", "data",
6
+ * "int", "integer", "string", ...). Callers should not canonicalize — the
7
+ * vocabulary is semi-open and differs subtly between native and format2.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/test-format/cross-check/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,3 @@
1
+ export { validateTestsFile, testsSchema, type TestFormatDiagnostic } from "./validate.js";
2
+ export { type WorkflowInput, type WorkflowOutput, type WorkflowDataType, extractWorkflowInputs, extractWorkflowOutputs, extractFormat2Inputs, extractFormat2Outputs, extractNativeInputs, extractNativeOutputs, isCompatibleType, jsTypeOf, checkTestsAgainstWorkflow, type WorkflowShape, } from "./cross-check/index.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-format/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,yBAAyB,EACzB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { validateTestsFile, testsSchema } from "./validate.js";
2
+ export { extractWorkflowInputs, extractWorkflowOutputs, extractFormat2Inputs, extractFormat2Outputs, extractNativeInputs, extractNativeOutputs, isCompatibleType, jsTypeOf, checkTestsAgainstWorkflow, } from "./cross-check/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-format/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAA6B,MAAM,eAAe,CAAC;AAC1F,OAAO,EAIL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,yBAAyB,GAE1B,MAAM,wBAAwB,CAAC"}