@galaxy-tool-util/search 0.1.0 → 1.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.
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/repositories.d.ts +26 -0
- package/dist/client/repositories.d.ts.map +1 -0
- package/dist/client/repositories.js +76 -0
- package/dist/client/repositories.js.map +1 -0
- package/dist/client/revisions.d.ts +32 -0
- package/dist/client/revisions.d.ts.map +1 -0
- package/dist/client/revisions.js +76 -0
- package/dist/client/revisions.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/models/toolshed-repo-search.d.ts +32 -0
- package/dist/models/toolshed-repo-search.d.ts.map +1 -0
- package/dist/models/toolshed-repo-search.js +98 -0
- package/dist/models/toolshed-repo-search.js.map +1 -0
- package/dist/tool-search.d.ts +2 -0
- package/dist/tool-search.d.ts.map +1 -1
- package/dist/tool-search.js +1 -1
- package/dist/tool-search.js.map +1 -1
- package/package.json +3 -3
package/dist/client/index.d.ts
CHANGED
|
@@ -2,4 +2,8 @@ export { ToolFetchError, getTRSToolVersions, getLatestTRSToolVersion, } from "@g
|
|
|
2
2
|
export type { TRSToolVersion } from "@galaxy-tool-util/core";
|
|
3
3
|
export { searchTools, iterateToolSearchPages } from "./toolshed.js";
|
|
4
4
|
export type { SearchToolsOptions } from "./toolshed.js";
|
|
5
|
+
export { searchRepositories, iterateRepoSearchPages, buildRepoQuery } from "./repositories.js";
|
|
6
|
+
export type { SearchRepositoriesOptions } from "./repositories.js";
|
|
7
|
+
export { getToolRevisions } from "./revisions.js";
|
|
8
|
+
export type { ToolRevisionsOptions, ToolRevisionMatch } from "./revisions.js";
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/F,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { ToolFetchError, getTRSToolVersions, getLatestTRSToolVersion, } from "@galaxy-tool-util/core";
|
|
2
2
|
export { searchTools, iterateToolSearchPages } from "./toolshed.js";
|
|
3
|
+
export { searchRepositories, iterateRepoSearchPages, buildRepoQuery } from "./repositories.js";
|
|
4
|
+
export { getToolRevisions } from "./revisions.js";
|
|
3
5
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SearchResults } from "../models/toolshed-search.js";
|
|
2
|
+
import type { RepositorySearchHit } from "../models/toolshed-repo-search.js";
|
|
3
|
+
export interface SearchRepositoriesOptions {
|
|
4
|
+
page?: number;
|
|
5
|
+
pageSize?: number;
|
|
6
|
+
/** Restrict to a single owner via the server-side `owner:` reserved keyword. */
|
|
7
|
+
owner?: string;
|
|
8
|
+
/** Restrict to a single category via the server-side `category:` keyword. */
|
|
9
|
+
category?: string;
|
|
10
|
+
fetcher?: typeof fetch;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build a Tool Shed `q=` value with optional `owner:` / `category:` reserved
|
|
14
|
+
* keywords appended. Categories with whitespace get double-quoted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildRepoQuery(query: string, filters?: {
|
|
17
|
+
owner?: string;
|
|
18
|
+
category?: string;
|
|
19
|
+
}): string;
|
|
20
|
+
export declare function searchRepositories(toolshedUrl: string, query: string, opts?: SearchRepositoriesOptions): Promise<SearchResults<RepositorySearchHit>>;
|
|
21
|
+
/**
|
|
22
|
+
* Iterate Tool Shed repo search pages. Stops when the server returns fewer
|
|
23
|
+
* hits than `pageSize` (or none).
|
|
24
|
+
*/
|
|
25
|
+
export declare function iterateRepoSearchPages(toolshedUrl: string, query: string, opts?: SearchRepositoriesOptions): AsyncGenerator<SearchResults<RepositorySearchHit>, void, void>;
|
|
26
|
+
//# sourceMappingURL=repositories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../src/client/repositories.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAK7E,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,MAAM,CAUR;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAkD7C;AAED;;;GAGG;AACH,wBAAuB,sBAAsB,CAC3C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,yBAA8B,GACnC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAShE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ToolFetchError } from "@galaxy-tool-util/core";
|
|
2
|
+
import { normalizeRepoSearchResults } from "../models/toolshed-repo-search.js";
|
|
3
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
4
|
+
/**
|
|
5
|
+
* Build a Tool Shed `q=` value with optional `owner:` / `category:` reserved
|
|
6
|
+
* keywords appended. Categories with whitespace get double-quoted.
|
|
7
|
+
*/
|
|
8
|
+
export function buildRepoQuery(query, filters = {}) {
|
|
9
|
+
const parts = [];
|
|
10
|
+
const trimmed = query.trim();
|
|
11
|
+
if (trimmed.length > 0)
|
|
12
|
+
parts.push(trimmed);
|
|
13
|
+
if (filters.owner)
|
|
14
|
+
parts.push(`owner:${filters.owner}`);
|
|
15
|
+
if (filters.category) {
|
|
16
|
+
const cat = filters.category;
|
|
17
|
+
parts.push(`category:${/\s/.test(cat) ? `"${cat}"` : cat}`);
|
|
18
|
+
}
|
|
19
|
+
return parts.join(" ");
|
|
20
|
+
}
|
|
21
|
+
export async function searchRepositories(toolshedUrl, query, opts = {}) {
|
|
22
|
+
const fetcher = opts.fetcher ?? globalThis.fetch;
|
|
23
|
+
const q = buildRepoQuery(query, { owner: opts.owner, category: opts.category });
|
|
24
|
+
const params = new URLSearchParams({ q });
|
|
25
|
+
if (opts.page !== undefined)
|
|
26
|
+
params.set("page", String(opts.page));
|
|
27
|
+
if (opts.pageSize !== undefined)
|
|
28
|
+
params.set("page_size", String(opts.pageSize));
|
|
29
|
+
const url = `${toolshedUrl}/api/repositories?${params.toString()}`;
|
|
30
|
+
let response;
|
|
31
|
+
try {
|
|
32
|
+
response = await fetcher(url, {
|
|
33
|
+
headers: { Accept: "application/json" },
|
|
34
|
+
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new ToolFetchError(`Tool Shed repo search request to ${url} failed: ${err.message}`, url);
|
|
39
|
+
}
|
|
40
|
+
if (response.status === 404) {
|
|
41
|
+
return {
|
|
42
|
+
total_results: 0,
|
|
43
|
+
page: opts.page ?? 1,
|
|
44
|
+
page_size: opts.pageSize ?? 0,
|
|
45
|
+
hostname: toolshedUrl,
|
|
46
|
+
hits: [],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const body = await response.text().catch(() => "");
|
|
51
|
+
throw new ToolFetchError(`Tool Shed repo search request to ${url} failed: ${response.status} ${body.slice(0, 200)}`, url, response.status);
|
|
52
|
+
}
|
|
53
|
+
const json = await response.json();
|
|
54
|
+
try {
|
|
55
|
+
return normalizeRepoSearchResults(json);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new ToolFetchError(`Tool Shed repo search response from ${url} was malformed: ${err.message}`, url, response.status);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Iterate Tool Shed repo search pages. Stops when the server returns fewer
|
|
63
|
+
* hits than `pageSize` (or none).
|
|
64
|
+
*/
|
|
65
|
+
export async function* iterateRepoSearchPages(toolshedUrl, query, opts = {}) {
|
|
66
|
+
const pageSize = opts.pageSize ?? 10;
|
|
67
|
+
let page = opts.page ?? 1;
|
|
68
|
+
while (true) {
|
|
69
|
+
const results = await searchRepositories(toolshedUrl, query, { ...opts, page, pageSize });
|
|
70
|
+
yield results;
|
|
71
|
+
if (results.hits.length < pageSize)
|
|
72
|
+
return;
|
|
73
|
+
page += 1;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=repositories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../src/client/repositories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ToolRevisionsOptions {
|
|
2
|
+
owner: string;
|
|
3
|
+
repo: string;
|
|
4
|
+
toolId: string;
|
|
5
|
+
/** When set, restrict matches to revisions whose tool carries this exact version. */
|
|
6
|
+
version?: string;
|
|
7
|
+
fetcher?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
export interface ToolRevisionMatch {
|
|
10
|
+
/** Changeset hash (e.g. `"e28c965eeed4"`). */
|
|
11
|
+
changesetRevision: string;
|
|
12
|
+
/** The tool's `version` attribute in that revision. */
|
|
13
|
+
toolVersion: string;
|
|
14
|
+
/** Position in `get_ordered_installable_revisions` (0-based). Lower = older. */
|
|
15
|
+
order: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve `(owner, repo, toolId[, version])` to the list of changeset revisions
|
|
19
|
+
* that publish that tool, ordered oldest → newest via
|
|
20
|
+
* `/api/repositories/get_ordered_installable_revisions`.
|
|
21
|
+
*
|
|
22
|
+
* Returns `[]` when the repo is absent, when no revisions contain the tool, or
|
|
23
|
+
* when `version` is supplied and no revision publishes that exact version.
|
|
24
|
+
*
|
|
25
|
+
* Sharp edges (Tool Shed side):
|
|
26
|
+
* - Version strings are not monotonic — two changesets can legally publish
|
|
27
|
+
* the same `version` with different content.
|
|
28
|
+
* - The `metadata` payload can be large for repos with many revisions; one
|
|
29
|
+
* call is issued per resolution, so cache across a skill session.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getToolRevisions(toolshedUrl: string, opts: ToolRevisionsOptions): Promise<ToolRevisionMatch[]>;
|
|
32
|
+
//# sourceMappingURL=revisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revisions.d.ts","sourceRoot":"","sources":["../../src/client/revisions.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;CACf;AAyCD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkD9B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ToolFetchError } from "@galaxy-tool-util/core";
|
|
2
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
3
|
+
async function fetchJson(url, fetcher, { allow404 = false } = {}) {
|
|
4
|
+
let response;
|
|
5
|
+
try {
|
|
6
|
+
response = await fetcher(url, {
|
|
7
|
+
headers: { Accept: "application/json" },
|
|
8
|
+
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
throw new ToolFetchError(`Tool Shed request to ${url} failed: ${err.message}`, url);
|
|
13
|
+
}
|
|
14
|
+
if (allow404 && response.status === 404)
|
|
15
|
+
return null;
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
const body = await response.text().catch(() => "");
|
|
18
|
+
throw new ToolFetchError(`Tool Shed request to ${url} failed: ${response.status} ${body.slice(0, 200)}`, url, response.status);
|
|
19
|
+
}
|
|
20
|
+
return response.json();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolve `(owner, repo, toolId[, version])` to the list of changeset revisions
|
|
24
|
+
* that publish that tool, ordered oldest → newest via
|
|
25
|
+
* `/api/repositories/get_ordered_installable_revisions`.
|
|
26
|
+
*
|
|
27
|
+
* Returns `[]` when the repo is absent, when no revisions contain the tool, or
|
|
28
|
+
* when `version` is supplied and no revision publishes that exact version.
|
|
29
|
+
*
|
|
30
|
+
* Sharp edges (Tool Shed side):
|
|
31
|
+
* - Version strings are not monotonic — two changesets can legally publish
|
|
32
|
+
* the same `version` with different content.
|
|
33
|
+
* - The `metadata` payload can be large for repos with many revisions; one
|
|
34
|
+
* call is issued per resolution, so cache across a skill session.
|
|
35
|
+
*/
|
|
36
|
+
export async function getToolRevisions(toolshedUrl, opts) {
|
|
37
|
+
const fetcher = opts.fetcher ?? globalThis.fetch;
|
|
38
|
+
const { owner, repo, toolId, version } = opts;
|
|
39
|
+
const repoListUrl = `${toolshedUrl}/api/repositories?${new URLSearchParams({ owner, name: repo })}`;
|
|
40
|
+
const repoList = (await fetchJson(repoListUrl, fetcher));
|
|
41
|
+
if (!Array.isArray(repoList) || repoList.length === 0)
|
|
42
|
+
return [];
|
|
43
|
+
const repoRow = repoList[0];
|
|
44
|
+
if (typeof repoRow.id !== "string") {
|
|
45
|
+
throw new ToolFetchError(`Tool Shed repository listing from ${repoListUrl} missing string id`, repoListUrl);
|
|
46
|
+
}
|
|
47
|
+
const [metadata, ordered] = await Promise.all([
|
|
48
|
+
fetchJson(`${toolshedUrl}/api/repositories/${encodeURIComponent(repoRow.id)}/metadata?downloadable_only=true`, fetcher),
|
|
49
|
+
fetchJson(`${toolshedUrl}/api/repositories/get_ordered_installable_revisions?${new URLSearchParams({ owner, name: repo })}`, fetcher),
|
|
50
|
+
]);
|
|
51
|
+
if (!metadata || typeof metadata !== "object")
|
|
52
|
+
return [];
|
|
53
|
+
const orderIndex = new Map(Array.isArray(ordered) ? ordered.map((h, i) => [h, i]) : []);
|
|
54
|
+
const matches = [];
|
|
55
|
+
for (const [key, meta] of Object.entries(metadata)) {
|
|
56
|
+
const colon = key.indexOf(":");
|
|
57
|
+
const hash = colon >= 0 ? key.slice(colon + 1) : key;
|
|
58
|
+
const tools = meta?.tools;
|
|
59
|
+
if (!Array.isArray(tools))
|
|
60
|
+
continue;
|
|
61
|
+
for (const t of tools) {
|
|
62
|
+
if (t.id !== toolId)
|
|
63
|
+
continue;
|
|
64
|
+
const tv = typeof t.version === "string" ? t.version : "";
|
|
65
|
+
if (version !== undefined && tv !== version)
|
|
66
|
+
continue;
|
|
67
|
+
const order = orderIndex.get(hash) ?? Number.MAX_SAFE_INTEGER;
|
|
68
|
+
matches.push({ changesetRevision: hash, toolVersion: tv, order });
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Revisions not present in ordered list sink to the end but remain grouped.
|
|
73
|
+
matches.sort((a, b) => a.order - b.order);
|
|
74
|
+
return matches;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=revisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revisions.js","sourceRoot":"","sources":["../../src/client/revisions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export type { ToolSearchHit, SearchResults } from "./models/toolshed-search.js";
|
|
9
9
|
export { normalizeToolSearchResults } from "./models/toolshed-search.js";
|
|
10
|
-
export {
|
|
11
|
-
export
|
|
12
|
-
export {
|
|
10
|
+
export type { RepositorySearchHit } from "./models/toolshed-repo-search.js";
|
|
11
|
+
export { normalizeRepoSearchResults } from "./models/toolshed-repo-search.js";
|
|
12
|
+
export { searchTools, iterateToolSearchPages, searchRepositories, iterateRepoSearchPages, buildRepoQuery, getTRSToolVersions, getLatestTRSToolVersion, getToolRevisions, ToolFetchError, } from "./client/index.js";
|
|
13
|
+
export type { SearchToolsOptions, SearchRepositoriesOptions, TRSToolVersion, ToolRevisionsOptions, ToolRevisionMatch, } from "./client/index.js";
|
|
14
|
+
export { ToolSearchService, normalizeHit } from "./tool-search.js";
|
|
13
15
|
export type { NormalizedToolHit, ToolSearchServiceOptions, SearchToolsServiceOptions, } from "./tool-search.js";
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* (in subsequent releases) `ToolSearchService` + ranking.
|
|
7
7
|
*/
|
|
8
8
|
export { normalizeToolSearchResults } from "./models/toolshed-search.js";
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
9
|
+
export { normalizeRepoSearchResults } from "./models/toolshed-repo-search.js";
|
|
10
|
+
export { searchTools, iterateToolSearchPages, searchRepositories, iterateRepoSearchPages, buildRepoQuery, getTRSToolVersions, getLatestTRSToolVersion, getToolRevisions, ToolFetchError, } from "./client/index.js";
|
|
11
|
+
export { ToolSearchService, normalizeHit } from "./tool-search.js";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plain TypeScript types for Tool Shed `/api/repositories?q=` responses, plus a
|
|
3
|
+
* one-way normalizer. Wire types stay snake_case to mirror the server.
|
|
4
|
+
*
|
|
5
|
+
* Differs from `ToolSearchHit` in shape and in ranking — the repository search
|
|
6
|
+
* supports `category:` and `owner:` reserved keywords inside `q=`, and
|
|
7
|
+
* popularity (`times_downloaded`) actively shifts ranking.
|
|
8
|
+
*/
|
|
9
|
+
import type { SearchResults } from "./toolshed-search.js";
|
|
10
|
+
export interface RepositorySearchHit {
|
|
11
|
+
repository: {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
repo_owner_username: string;
|
|
15
|
+
description: string | null;
|
|
16
|
+
long_description: string | null;
|
|
17
|
+
remote_repository_url: string | null;
|
|
18
|
+
homepage_url: string | null;
|
|
19
|
+
/** ISO date or null. Populated lazily by the server. */
|
|
20
|
+
last_update: string | null;
|
|
21
|
+
/** Human-formatted update timestamp (e.g. "2023-06-08 08:02 PM"). */
|
|
22
|
+
full_last_updated: string | null;
|
|
23
|
+
/** Comma-separated category slugs (e.g. `"sequence analysis,fastq manipulation"`). */
|
|
24
|
+
categories: string | null;
|
|
25
|
+
approved: boolean;
|
|
26
|
+
times_downloaded: number;
|
|
27
|
+
};
|
|
28
|
+
/** Whoosh BM25 score (popularity-boosted). Higher is better. */
|
|
29
|
+
score: number;
|
|
30
|
+
}
|
|
31
|
+
export declare function normalizeRepoSearchResults(raw: unknown): SearchResults<RepositorySearchHit>;
|
|
32
|
+
//# sourceMappingURL=toolshed-repo-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolshed-repo-search.d.ts","sourceRoot":"","sources":["../../src/models/toolshed-repo-search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,MAAM,CAAC;QAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,wDAAwD;QACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,qEAAqE;QACrE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,sFAAsF;QACtF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,EAAE,OAAO,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;AA8GD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAiB3F"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plain TypeScript types for Tool Shed `/api/repositories?q=` responses, plus a
|
|
3
|
+
* one-way normalizer. Wire types stay snake_case to mirror the server.
|
|
4
|
+
*
|
|
5
|
+
* Differs from `ToolSearchHit` in shape and in ranking — the repository search
|
|
6
|
+
* supports `category:` and `owner:` reserved keywords inside `q=`, and
|
|
7
|
+
* popularity (`times_downloaded`) actively shifts ranking.
|
|
8
|
+
*/
|
|
9
|
+
function isObject(value) {
|
|
10
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function coerceCount(value, field) {
|
|
13
|
+
if (typeof value === "number") {
|
|
14
|
+
if (!Number.isFinite(value)) {
|
|
15
|
+
throw new Error(`Tool Shed repo search response: \`${field}\` is not a finite number`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
const n = Number(value);
|
|
21
|
+
if (!Number.isFinite(n)) {
|
|
22
|
+
throw new Error(`Tool Shed repo search response: \`${field}\` (${JSON.stringify(value)}) is not numeric`);
|
|
23
|
+
}
|
|
24
|
+
return n;
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Tool Shed repo search response: \`${field}\` must be a number or numeric string`);
|
|
27
|
+
}
|
|
28
|
+
function coerceOptionalString(value, path) {
|
|
29
|
+
if (value === undefined || value === null)
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof value !== "string") {
|
|
32
|
+
throw new Error(`Tool Shed repo search response: ${path} must be a string or null`);
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
function coerceRepoHit(value, hitIndex) {
|
|
37
|
+
if (!isObject(value)) {
|
|
38
|
+
throw new Error(`Tool Shed repo search response: hits[${hitIndex}] must be an object`);
|
|
39
|
+
}
|
|
40
|
+
const repo = value.repository;
|
|
41
|
+
if (!isObject(repo)) {
|
|
42
|
+
throw new Error(`Tool Shed repo search response: hits[${hitIndex}].repository must be an object`);
|
|
43
|
+
}
|
|
44
|
+
const required = [
|
|
45
|
+
"id",
|
|
46
|
+
"name",
|
|
47
|
+
"repo_owner_username",
|
|
48
|
+
];
|
|
49
|
+
for (const key of required) {
|
|
50
|
+
if (typeof repo[key] !== "string") {
|
|
51
|
+
throw new Error(`Tool Shed repo search response: hits[${hitIndex}].repository.${String(key)} must be a string`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (typeof value.score !== "number" || !Number.isFinite(value.score)) {
|
|
55
|
+
throw new Error(`Tool Shed repo search response: hits[${hitIndex}].score must be a finite number`);
|
|
56
|
+
}
|
|
57
|
+
const approved = repo.approved;
|
|
58
|
+
if (typeof approved !== "boolean") {
|
|
59
|
+
throw new Error(`Tool Shed repo search response: hits[${hitIndex}].repository.approved must be a boolean`);
|
|
60
|
+
}
|
|
61
|
+
const timesDownloaded = coerceCount(repo.times_downloaded, `hits[${hitIndex}].repository.times_downloaded`);
|
|
62
|
+
return {
|
|
63
|
+
repository: {
|
|
64
|
+
id: repo.id,
|
|
65
|
+
name: repo.name,
|
|
66
|
+
repo_owner_username: repo.repo_owner_username,
|
|
67
|
+
description: coerceOptionalString(repo.description, `hits[${hitIndex}].repository.description`),
|
|
68
|
+
long_description: coerceOptionalString(repo.long_description, `hits[${hitIndex}].repository.long_description`),
|
|
69
|
+
remote_repository_url: coerceOptionalString(repo.remote_repository_url, `hits[${hitIndex}].repository.remote_repository_url`),
|
|
70
|
+
homepage_url: coerceOptionalString(repo.homepage_url, `hits[${hitIndex}].repository.homepage_url`),
|
|
71
|
+
last_update: coerceOptionalString(repo.last_update, `hits[${hitIndex}].repository.last_update`),
|
|
72
|
+
full_last_updated: coerceOptionalString(repo.full_last_updated, `hits[${hitIndex}].repository.full_last_updated`),
|
|
73
|
+
categories: coerceOptionalString(repo.categories, `hits[${hitIndex}].repository.categories`),
|
|
74
|
+
approved,
|
|
75
|
+
times_downloaded: timesDownloaded,
|
|
76
|
+
},
|
|
77
|
+
score: value.score,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function normalizeRepoSearchResults(raw) {
|
|
81
|
+
if (!isObject(raw)) {
|
|
82
|
+
throw new Error("Tool Shed repo search response: payload must be an object");
|
|
83
|
+
}
|
|
84
|
+
if (typeof raw.hostname !== "string") {
|
|
85
|
+
throw new Error("Tool Shed repo search response: `hostname` must be a string");
|
|
86
|
+
}
|
|
87
|
+
if (!Array.isArray(raw.hits)) {
|
|
88
|
+
throw new Error("Tool Shed repo search response: `hits` must be an array");
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
total_results: coerceCount(raw.total_results, "total_results"),
|
|
92
|
+
page: coerceCount(raw.page, "page"),
|
|
93
|
+
page_size: coerceCount(raw.page_size, "page_size"),
|
|
94
|
+
hostname: raw.hostname,
|
|
95
|
+
hits: raw.hits.map(coerceRepoHit),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=toolshed-repo-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolshed-repo-search.js","sourceRoot":"","sources":["../../src/models/toolshed-repo-search.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-search.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ToolInfoService, ToolSource } from "@galaxy-tool-util/core";
|
|
2
2
|
import type { ParsedTool } from "@galaxy-tool-util/schema";
|
|
3
|
+
import type { ToolSearchHit } from "./models/toolshed-search.js";
|
|
3
4
|
/**
|
|
4
5
|
* A Tool Shed search hit flattened into a neutral, camelCase shape suitable
|
|
5
6
|
* for UI consumption and cross-source dedup.
|
|
@@ -65,4 +66,5 @@ export declare class ToolSearchService {
|
|
|
65
66
|
private collectFromSource;
|
|
66
67
|
private enrich;
|
|
67
68
|
}
|
|
69
|
+
export declare function normalizeHit(hit: ToolSearchHit, source: ToolSource): NormalizedToolHit;
|
|
68
70
|
//# sourceMappingURL=tool-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,sEAAsE;IACtE,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,IAAI,EAAE,wBAAwB;IAMpC,WAAW,CACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA+BzB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK1E,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAIjF,iBAAiB;YAmBjB,MAAM;CASrB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,iBAAiB,CAoBtF"}
|
package/dist/tool-search.js
CHANGED
|
@@ -72,7 +72,7 @@ export class ToolSearchService {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
function normalizeHit(hit, source) {
|
|
75
|
+
export function normalizeHit(hit, source) {
|
|
76
76
|
const { id, name, description, repo_name, repo_owner_username, version, changeset_revision } = hit.tool;
|
|
77
77
|
const trsToolId = `${repo_owner_username}~${repo_name}~${id}`;
|
|
78
78
|
const base = toolIdFromTrs(source.url, trsToolId);
|
package/dist/tool-search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAqD9D;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACX,OAAO,CAAe;IACtB,IAAI,CAAkB;IACtB,OAAO,CAAe;IAEvC,YAAY,IAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAa,EACb,OAAkC,EAAE;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAEzC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,EAAyB,CAAC;QACnC,CAAC,CAAC,CACH,CACF,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,CAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9F,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,SAAiB;QAC1D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,WAAmB,EAAE,SAAiB;QACpE,OAAO,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,MAAkB,EAClB,KAAa,EACb,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;YACjE,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,EAAE,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,UAAU;gBAAE,OAAO,GAAG,CAAC;QAC3C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,GAAsB;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAC/E,IAAI,MAAM,KAAK,IAAI;gBAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AAED,
|
|
1
|
+
{"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galaxy-tool-util/search",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Tool discovery — Tool Shed search client, result normalization, and ranking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"@types/node": "^25.5.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@galaxy-tool-util/core": "
|
|
35
|
-
"@galaxy-tool-util/schema": "
|
|
34
|
+
"@galaxy-tool-util/core": "1.1.0",
|
|
35
|
+
"@galaxy-tool-util/schema": "1.1.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "tsc",
|