@galaxy-tool-util/core 0.3.0 → 1.0.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.
@@ -1,4 +1,4 @@
1
- import { ParsedTool } from "../models/parsed-tool.js";
1
+ import { ParsedTool } from "@galaxy-tool-util/schema";
2
2
  import { CacheIndex } from "./cache-index.js";
3
3
  import type { CacheStorage } from "./storage/interface.js";
4
4
  import { DEFAULT_TOOLSHED_URL, TOOLSHED_URL_ENV_VAR } from "./tool-cache-defaults.js";
@@ -1,5 +1,5 @@
1
1
  import * as S from "effect/Schema";
2
- import { ParsedTool } from "../models/parsed-tool.js";
2
+ import { ParsedTool } from "@galaxy-tool-util/schema";
3
3
  import { CacheIndex } from "./cache-index.js";
4
4
  import { cacheKey } from "./cache-key.js";
5
5
  import { parseToolshedToolId, toolIdFromTrs } from "./tool-id.js";
@@ -1,2 +1,4 @@
1
1
  export { fetchFromToolShed, fetchFromGalaxy, ToolFetchError } from "./toolshed.js";
2
+ export { getTRSToolVersions, getLatestTRSToolVersion } from "./trs.js";
3
+ export type { TRSToolVersion } from "./trs.js";
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { fetchFromToolShed, fetchFromGalaxy, ToolFetchError } from "./toolshed.js";
2
+ export { getTRSToolVersions, getLatestTRSToolVersion } from "./trs.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ParsedTool } from "../models/parsed-tool.js";
1
+ import { ParsedTool } from "@galaxy-tool-util/schema";
2
2
  /** Error thrown when fetching a tool from a remote source fails. */
3
3
  export declare class ToolFetchError extends Error {
4
4
  /** The URL that was requested. */
@@ -1,5 +1,5 @@
1
1
  import * as S from "effect/Schema";
2
- import { ParsedTool } from "../models/parsed-tool.js";
2
+ import { ParsedTool } from "@galaxy-tool-util/schema";
3
3
  /** Error thrown when fetching a tool from a remote source fails. */
4
4
  export class ToolFetchError extends Error {
5
5
  url;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Subset of a TRS `ToolVersion` object as returned by Tool Shed's
3
+ * `/api/ga4gh/trs/v2/tools/{id}/versions` endpoint. Only the fields we
4
+ * actually consume downstream are typed strictly; the rest are kept as
5
+ * unknown so unexpected nulls or new additions don't cause decode failures.
6
+ */
7
+ export interface TRSToolVersion {
8
+ /** TRS version id (e.g. `"0.74+galaxy0"`). */
9
+ id: string;
10
+ /** Display name, often `null` on Tool Shed. */
11
+ name: string | null;
12
+ /** Repository URL. */
13
+ url: string;
14
+ /** Declared descriptor types (e.g. `["GALAXY"]`). */
15
+ descriptor_type: string[];
16
+ /** Author list. */
17
+ author: string[];
18
+ [extra: string]: unknown;
19
+ }
20
+ /**
21
+ * Fetch the list of TRS tool versions for a given `trsToolId`
22
+ * (`<owner>~<repo>~<toolId>` form). Returns the raw server order —
23
+ * Tool Shed typically returns newest first.
24
+ */
25
+ export declare function getTRSToolVersions(toolshedUrl: string, trsToolId: string, fetcher?: typeof fetch): Promise<TRSToolVersion[]>;
26
+ /**
27
+ * Fetch the latest TRS tool version id. Returns `null` if the tool has no
28
+ * published versions. Tool Shed returns versions newest-first; we take the
29
+ * first entry.
30
+ */
31
+ export declare function getLatestTRSToolVersion(toolshedUrl: string, trsToolId: string, fetcher?: typeof fetch): Promise<string | null>;
32
+ //# sourceMappingURL=trs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trs.d.ts","sourceRoot":"","sources":["../../src/client/trs.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AA6BD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAO,KAAwB,GACvC,OAAO,CAAC,cAAc,EAAE,CAAC,CAyC3B;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAO,KAAwB,GACvC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
@@ -0,0 +1,66 @@
1
+ import { ToolFetchError } from "./toolshed.js";
2
+ const REQUEST_TIMEOUT_MS = 30_000;
3
+ function coerceTRSVersion(value, index) {
4
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
5
+ throw new Error(`TRS versions response: entries[${index}] must be an object`);
6
+ }
7
+ const v = value;
8
+ if (typeof v.id !== "string") {
9
+ throw new Error(`TRS versions response: entries[${index}].id must be a string`);
10
+ }
11
+ if (v.name !== null && typeof v.name !== "string") {
12
+ throw new Error(`TRS versions response: entries[${index}].name must be a string or null`);
13
+ }
14
+ if (typeof v.url !== "string") {
15
+ throw new Error(`TRS versions response: entries[${index}].url must be a string`);
16
+ }
17
+ if (!Array.isArray(v.descriptor_type) || v.descriptor_type.some((x) => typeof x !== "string")) {
18
+ throw new Error(`TRS versions response: entries[${index}].descriptor_type must be a string array`);
19
+ }
20
+ if (!Array.isArray(v.author) || v.author.some((x) => typeof x !== "string")) {
21
+ throw new Error(`TRS versions response: entries[${index}].author must be a string array`);
22
+ }
23
+ return v;
24
+ }
25
+ /**
26
+ * Fetch the list of TRS tool versions for a given `trsToolId`
27
+ * (`<owner>~<repo>~<toolId>` form). Returns the raw server order —
28
+ * Tool Shed typically returns newest first.
29
+ */
30
+ export async function getTRSToolVersions(toolshedUrl, trsToolId, fetcher = globalThis.fetch) {
31
+ const url = `${toolshedUrl}/api/ga4gh/trs/v2/tools/${encodeURIComponent(trsToolId)}/versions`;
32
+ let response;
33
+ try {
34
+ response = await fetcher(url, {
35
+ headers: { Accept: "application/json" },
36
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
37
+ });
38
+ }
39
+ catch (err) {
40
+ throw new ToolFetchError(`TRS versions request to ${url} failed: ${err.message}`, url);
41
+ }
42
+ if (!response.ok) {
43
+ const body = await response.text().catch(() => "");
44
+ throw new ToolFetchError(`TRS versions request to ${url} failed: ${response.status} ${body.slice(0, 200)}`, url, response.status);
45
+ }
46
+ const json = await response.json();
47
+ if (!Array.isArray(json)) {
48
+ throw new ToolFetchError(`TRS versions response from ${url} was not an array`, url, response.status);
49
+ }
50
+ try {
51
+ return json.map(coerceTRSVersion);
52
+ }
53
+ catch (err) {
54
+ throw new ToolFetchError(`TRS versions response from ${url} was malformed: ${err.message}`, url, response.status);
55
+ }
56
+ }
57
+ /**
58
+ * Fetch the latest TRS tool version id. Returns `null` if the tool has no
59
+ * published versions. Tool Shed returns versions newest-first; we take the
60
+ * first entry.
61
+ */
62
+ export async function getLatestTRSToolVersion(toolshedUrl, trsToolId, fetcher = globalThis.fetch) {
63
+ const versions = await getTRSToolVersions(toolshedUrl, trsToolId, fetcher);
64
+ return versions.length > 0 ? versions[0].id : null;
65
+ }
66
+ //# sourceMappingURL=trs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trs.js","sourceRoot":"","sources":["../../src/client/trs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,8 +5,6 @@
5
5
  * Node built-ins (filesystem cache storage, YAML config loading) live under
6
6
  * `@galaxy-tool-util/core/node`.
7
7
  */
8
- /** Effect Schema for parsed tool metadata (id, version, name, inputs, outputs, etc.). */
9
- export { ParsedTool, HelpContent, XrefDict, Citation } from "./models/parsed-tool.js";
10
8
  export {
11
9
  /** Parse a full ToolShed tool ID into ToolCoordinates (toolshedUrl, trsToolId, version). */
12
10
  parseToolshedToolId,
@@ -23,6 +21,9 @@ export type { ToolCoordinates, CacheIndexEntry, CacheIndexData, CacheStorage, Re
23
21
  export { IndexedDBCacheStorage } from "./cache/index.js";
24
22
  /** Fetch parsed tool metadata from a ToolShed instance via TRS API. */
25
23
  export { fetchFromToolShed, fetchFromGalaxy, ToolFetchError } from "./client/index.js";
24
+ /** Query TRS for the set of versions published for a tool. */
25
+ export { getTRSToolVersions, getLatestTRSToolVersion } from "./client/index.js";
26
+ export type { TRSToolVersion } from "./client/index.js";
26
27
  /** High-level service: fetch tools from multiple sources with automatic caching. */
27
28
  export { ToolInfoService } from "./tool-info.js";
28
29
  export type { ToolInfoOptions, ToolSource } from "./tool-info.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,yFAAyF;AACzF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO;AACL,4FAA4F;AAC5F,mBAAmB;AACnB,oEAAoE;AACpE,aAAa;AACb,sFAAsF;AACtF,QAAQ;AACR,iFAAiF;AACjF,UAAU;AACV,mEAAmE;AACnE,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,sEAAsE;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,uEAAuE;AACvE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,oFAAoF;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,qEAAqE;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO;AACL,4FAA4F;AAC5F,mBAAmB;AACnB,oEAAoE;AACpE,aAAa;AACb,sFAAsF;AACtF,QAAQ;AACR,iFAAiF;AACjF,UAAU;AACV,mEAAmE;AACnE,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,sEAAsE;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,uEAAuE;AACvE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,oFAAoF;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,qEAAqE;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -5,8 +5,6 @@
5
5
  * Node built-ins (filesystem cache storage, YAML config loading) live under
6
6
  * `@galaxy-tool-util/core/node`.
7
7
  */
8
- /** Effect Schema for parsed tool metadata (id, version, name, inputs, outputs, etc.). */
9
- export { ParsedTool, HelpContent, XrefDict, Citation } from "./models/parsed-tool.js";
10
8
  export {
11
9
  /** Parse a full ToolShed tool ID into ToolCoordinates (toolshedUrl, trsToolId, version). */
12
10
  parseToolshedToolId,
@@ -22,6 +20,8 @@ ToolCache, DEFAULT_TOOLSHED_URL, TOOLSHED_URL_ENV_VAR, } from "./cache/index.js"
22
20
  export { IndexedDBCacheStorage } from "./cache/index.js";
23
21
  /** Fetch parsed tool metadata from a ToolShed instance via TRS API. */
24
22
  export { fetchFromToolShed, fetchFromGalaxy, ToolFetchError } from "./client/index.js";
23
+ /** Query TRS for the set of versions published for a tool. */
24
+ export { getTRSToolVersions, getLatestTRSToolVersion } from "./client/index.js";
25
25
  /** High-level service: fetch tools from multiple sources with automatic caching. */
26
26
  export { ToolInfoService } from "./tool-info.js";
27
27
  /** Shared YAML config schema for tool sources and cache settings. */
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,yFAAyF;AACzF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO;AACL,4FAA4F;AAC5F,mBAAmB;AACnB,oEAAoE;AACpE,aAAa;AACb,sFAAsF;AACtF,QAAQ;AACR,iFAAiF;AACjF,UAAU;AACV,mEAAmE;AACnE,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAQ1B,sEAAsE;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,uEAAuE;AACvE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,oFAAoF;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,qEAAqE;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO;AACL,4FAA4F;AAC5F,mBAAmB;AACnB,oEAAoE;AACpE,aAAa;AACb,sFAAsF;AACtF,QAAQ;AACR,iFAAiF;AACjF,UAAU;AACV,mEAAmE;AACnE,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAQ1B,sEAAsE;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,uEAAuE;AACvE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,oFAAoF;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,qEAAqE;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ParsedTool } from "./models/parsed-tool.js";
1
+ import type { ParsedTool } from "@galaxy-tool-util/schema";
2
2
  import { ToolCache } from "./cache/tool-cache.js";
3
3
  import type { CacheStorage } from "./cache/storage/interface.js";
4
4
  /** A remote source for fetching tool metadata. */
@@ -27,6 +27,11 @@ export declare class ToolInfoService {
27
27
  private readonly fetcher;
28
28
  constructor(opts: ToolInfoOptions);
29
29
  getToolInfo(toolId: string, toolVersion?: string | null): Promise<ParsedTool | null>;
30
+ /**
31
+ * Resolve the latest TRS version for a tool on a Tool Shed. Returns `null`
32
+ * if the tool is unknown to the shed or has no published versions.
33
+ */
34
+ private resolveLatestVersion;
30
35
  addTool(toolId: string, toolVersion: string, parsedTool: ParsedTool, source?: string, sourceUrl?: string): Promise<string>;
31
36
  }
32
37
  //# sourceMappingURL=tool-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-info.d.ts","sourceRoot":"","sources":["../src/tool-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,OAAO,EAAE,YAAY,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4FAA4F;IAC5F,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,IAAI,EAAE,eAAe;IAsB3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqDpF,OAAO,CACX,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,MAAgB,EACxB,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,MAAM,CAAC;CAOnB"}
1
+ {"version":3,"file":"tool-info.d.ts","sourceRoot":"","sources":["../src/tool-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,OAAO,EAAE,YAAY,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4FAA4F;IAC5F,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,IAAI,EAAE,eAAe;IAsB3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAyD1F;;;OAGG;YACW,oBAAoB;IAa5B,OAAO,CACX,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,MAAgB,EACxB,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,MAAM,CAAC;CAOnB"}
package/dist/tool-info.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ToolCache } from "./cache/tool-cache.js";
2
2
  import { cacheKey } from "./cache/cache-key.js";
3
3
  import { fetchFromToolShed, fetchFromGalaxy } from "./client/toolshed.js";
4
+ import { getLatestTRSToolVersion } from "./client/trs.js";
4
5
  /**
5
6
  * High-level service for fetching Galaxy tool metadata with automatic caching.
6
7
  * Tries configured sources in order and caches on first successful fetch.
@@ -32,10 +33,14 @@ export class ToolInfoService {
32
33
  }
33
34
  async getToolInfo(toolId, toolVersion) {
34
35
  const coords = this.cache.resolveToolCoordinates(toolId, toolVersion);
35
- if (coords.version === null) {
36
- throw new Error(`No version available for tool: ${toolId}`);
36
+ let resolvedVersion = coords.version;
37
+ if (resolvedVersion === null) {
38
+ resolvedVersion = await this.resolveLatestVersion(coords.toolshedUrl, coords.trsToolId);
39
+ if (resolvedVersion === null) {
40
+ throw new Error(`No version available for tool: ${toolId}`);
41
+ }
37
42
  }
38
- const key = await cacheKey(coords.toolshedUrl, coords.trsToolId, coords.version);
43
+ const key = await cacheKey(coords.toolshedUrl, coords.trsToolId, resolvedVersion);
39
44
  // Check storage cache (ToolCache checks memory first internally)
40
45
  const cached = await this.cache.loadCached(key);
41
46
  if (cached !== null)
@@ -47,16 +52,16 @@ export class ToolInfoService {
47
52
  let sourceLabel;
48
53
  let sourceUrl;
49
54
  if (source.type === "toolshed") {
50
- parsedTool = await fetchFromToolShed(source.url, coords.trsToolId, coords.version, this.fetcher);
55
+ parsedTool = await fetchFromToolShed(source.url, coords.trsToolId, resolvedVersion, this.fetcher);
51
56
  sourceLabel = "api";
52
- sourceUrl = `${source.url}/api/tools/${coords.trsToolId}/versions/${coords.version}`;
57
+ sourceUrl = `${source.url}/api/tools/${coords.trsToolId}/versions/${resolvedVersion}`;
53
58
  }
54
59
  else {
55
- parsedTool = await fetchFromGalaxy(source.url, toolId, toolVersion, this.fetcher);
60
+ parsedTool = await fetchFromGalaxy(source.url, toolId, resolvedVersion, this.fetcher);
56
61
  sourceLabel = "galaxy";
57
62
  sourceUrl = `${source.url}/api/tools/${encodeURIComponent(toolId)}/parsed`;
58
63
  }
59
- await this.cache.saveTool(key, parsedTool, coords.readableId, coords.version, sourceLabel, sourceUrl);
64
+ await this.cache.saveTool(key, parsedTool, coords.readableId, resolvedVersion, sourceLabel, sourceUrl);
60
65
  return parsedTool;
61
66
  }
62
67
  catch (err) {
@@ -66,6 +71,20 @@ export class ToolInfoService {
66
71
  }
67
72
  return null;
68
73
  }
74
+ /**
75
+ * Resolve the latest TRS version for a tool on a Tool Shed. Returns `null`
76
+ * if the tool is unknown to the shed or has no published versions.
77
+ */
78
+ async resolveLatestVersion(toolshedUrl, trsToolId) {
79
+ try {
80
+ return await getLatestTRSToolVersion(toolshedUrl, trsToolId, this.fetcher);
81
+ }
82
+ catch (err) {
83
+ const msg = err instanceof Error ? err.message : String(err);
84
+ console.debug(`TRS latest-version lookup failed for ${trsToolId} on ${toolshedUrl}: ${msg}`);
85
+ return null;
86
+ }
87
+ }
69
88
  async addTool(toolId, toolVersion, parsedTool, source = "local", sourceUrl = "") {
70
89
  const coords = this.cache.resolveToolCoordinates(toolId, toolVersion);
71
90
  const version = coords.version ?? toolVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-info.js","sourceRoot":"","sources":["../src/tool-info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-info.js","sourceRoot":"","sources":["../src/tool-info.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galaxy-tool-util/core",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "description": "Galaxy tool cache, ToolShed client, and ParsedTool models",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -36,7 +36,8 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "effect": "^3.21.0",
39
- "yaml": "^2.8.3"
39
+ "yaml": "^2.8.3",
40
+ "@galaxy-tool-util/schema": "1.0.0"
40
41
  },
41
42
  "scripts": {
42
43
  "build": "tsc",
@@ -1,46 +0,0 @@
1
- import * as S from "effect/Schema";
2
- /** Tool help content with format (rst, markdown, etc.) and rendered content. */
3
- export declare const HelpContent: S.Struct<{
4
- format: typeof S.String;
5
- content: typeof S.String;
6
- }>;
7
- /** External reference (e.g. bio.tools ID, bioconductor package). */
8
- export declare const XrefDict: S.Struct<{
9
- value: typeof S.String;
10
- type: typeof S.String;
11
- }>;
12
- /** Tool citation entry (bibtex, doi, etc.). */
13
- export declare const Citation: S.Struct<{
14
- type: typeof S.String;
15
- content: typeof S.String;
16
- }>;
17
- /**
18
- * Effect Schema for parsed Galaxy tool metadata as returned by the ToolShed TRS API
19
- * or Galaxy's /api/tools/:id/parsed endpoint.
20
- */
21
- export declare const ParsedTool: S.Struct<{
22
- id: typeof S.String;
23
- version: S.NullOr<typeof S.String>;
24
- name: typeof S.String;
25
- description: S.transform<S.NullOr<typeof S.String>, S.NullOr<typeof S.String>>;
26
- inputs: S.Array$<typeof S.Unknown>;
27
- outputs: S.Array$<typeof S.Unknown>;
28
- citations: S.Array$<S.Struct<{
29
- type: typeof S.String;
30
- content: typeof S.String;
31
- }>>;
32
- license: S.NullOr<typeof S.String>;
33
- profile: S.NullOr<typeof S.String>;
34
- edam_operations: S.Array$<typeof S.String>;
35
- edam_topics: S.Array$<typeof S.String>;
36
- xrefs: S.Array$<S.Struct<{
37
- value: typeof S.String;
38
- type: typeof S.String;
39
- }>>;
40
- help: S.optional<S.Union<[S.Struct<{
41
- format: typeof S.String;
42
- content: typeof S.String;
43
- }>, typeof S.Null]>>;
44
- }>;
45
- export type ParsedTool = S.Schema.Type<typeof ParsedTool>;
46
- //# sourceMappingURL=parsed-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsed-tool.d.ts","sourceRoot":"","sources":["../../src/models/parsed-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,gFAAgF;AAChF,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAEH,oEAAoE;AACpE,eAAO,MAAM,QAAQ;;;EAGnB,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,QAAQ;;;EAGnB,CAAC;AAQH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;EAcrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -1,41 +0,0 @@
1
- import * as S from "effect/Schema";
2
- /** Tool help content with format (rst, markdown, etc.) and rendered content. */
3
- export const HelpContent = S.Struct({
4
- format: S.String,
5
- content: S.String,
6
- });
7
- /** External reference (e.g. bio.tools ID, bioconductor package). */
8
- export const XrefDict = S.Struct({
9
- value: S.String,
10
- type: S.String,
11
- });
12
- /** Tool citation entry (bibtex, doi, etc.). */
13
- export const Citation = S.Struct({
14
- type: S.String,
15
- content: S.String,
16
- });
17
- /** Normalize empty string to null for description field. */
18
- const NullableDescription = S.transform(S.NullOr(S.String), S.NullOr(S.String), {
19
- decode: (val) => (val === "" ? null : val),
20
- encode: (val) => val,
21
- });
22
- /**
23
- * Effect Schema for parsed Galaxy tool metadata as returned by the ToolShed TRS API
24
- * or Galaxy's /api/tools/:id/parsed endpoint.
25
- */
26
- export const ParsedTool = S.Struct({
27
- id: S.String,
28
- version: S.NullOr(S.String),
29
- name: S.String,
30
- description: NullableDescription,
31
- inputs: S.Array(S.Unknown),
32
- outputs: S.Array(S.Unknown),
33
- citations: S.Array(Citation),
34
- license: S.NullOr(S.String),
35
- profile: S.NullOr(S.String),
36
- edam_operations: S.Array(S.String),
37
- edam_topics: S.Array(S.String),
38
- xrefs: S.Array(XrefDict),
39
- help: S.optional(S.Union(HelpContent, S.Null)),
40
- });
41
- //# sourceMappingURL=parsed-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsed-tool.js","sourceRoot":"","sources":["../../src/models/parsed-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;IAC9E,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;CACrB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM;IACZ,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC,CAAC"}