@galaxy-tool-util/core 1.10.1 → 1.12.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/cache/index.d.ts +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/node.d.ts +5 -5
- package/dist/cache/node.d.ts.map +1 -1
- package/dist/cache/node.js +6 -1
- package/dist/cache/node.js.map +1 -1
- package/dist/cache/storage/filesystem.d.ts +6 -1
- package/dist/cache/storage/filesystem.d.ts.map +1 -1
- package/dist/cache/storage/filesystem.js +53 -15
- package/dist/cache/storage/filesystem.js.map +1 -1
- package/dist/cache/storage/indexeddb.d.ts +3 -0
- package/dist/cache/storage/indexeddb.d.ts.map +1 -1
- package/dist/cache/storage/indexeddb.js +20 -3
- package/dist/cache/storage/indexeddb.js.map +1 -1
- package/dist/cache/storage/interface.d.ts +4 -0
- package/dist/cache/storage/interface.d.ts.map +1 -1
- package/dist/cache/tool-cache.d.ts +13 -4
- package/dist/cache/tool-cache.d.ts.map +1 -1
- package/dist/cache/tool-cache.js +31 -4
- package/dist/cache/tool-cache.js.map +1 -1
- package/dist/cache-http/cache-to-trs.d.ts +36 -0
- package/dist/cache-http/cache-to-trs.d.ts.map +1 -0
- package/dist/cache-http/cache-to-trs.js +81 -0
- package/dist/cache-http/cache-to-trs.js.map +1 -0
- package/dist/cache-http/dto.d.ts +69 -0
- package/dist/cache-http/dto.d.ts.map +1 -0
- package/dist/cache-http/dto.js +8 -0
- package/dist/cache-http/dto.js.map +1 -0
- package/dist/cache-http/error.d.ts +10 -0
- package/dist/cache-http/error.d.ts.map +1 -0
- package/dist/cache-http/error.js +15 -0
- package/dist/cache-http/error.js.map +1 -0
- package/dist/cache-http/handlers.d.ts +41 -0
- package/dist/cache-http/handlers.d.ts.map +1 -0
- package/dist/cache-http/handlers.js +241 -0
- package/dist/cache-http/handlers.js.map +1 -0
- package/dist/cache-http/index.d.ts +13 -0
- package/dist/cache-http/index.d.ts.map +1 -0
- package/dist/cache-http/index.js +12 -0
- package/dist/cache-http/index.js.map +1 -0
- package/dist/cache-http/route-table.d.ts +67 -0
- package/dist/cache-http/route-table.d.ts.map +1 -0
- package/dist/cache-http/route-table.js +145 -0
- package/dist/cache-http/route-table.js.map +1 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/tool-source.d.ts +6 -0
- package/dist/client/tool-source.d.ts.map +1 -0
- package/dist/client/tool-source.js +27 -0
- package/dist/client/tool-source.js.map +1 -0
- package/dist/client/toolshed.d.ts.map +1 -1
- package/dist/client/toolshed.js +24 -2
- package/dist/client/toolshed.js.map +1 -1
- package/dist/diagnostics.d.ts +5 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +3 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/node-http.d.ts +39 -0
- package/dist/node-http.d.ts.map +1 -0
- package/dist/node-http.js +114 -0
- package/dist/node-http.js.map +1 -0
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -0
- package/dist/node.js.map +1 -1
- package/dist/tool-info.d.ts +7 -0
- package/dist/tool-info.d.ts.map +1 -1
- package/dist/tool-info.js +77 -19
- package/dist/tool-info.js.map +1 -1
- package/dist/tool-source.d.ts +9 -0
- package/dist/tool-source.d.ts.map +1 -0
- package/dist/tool-source.js +9 -0
- package/dist/tool-source.js.map +1 -0
- package/package.json +2 -2
package/dist/cache/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { cacheKey } from "./cache-key.js";
|
|
|
4
4
|
export { CacheIndex } from "./cache-index.js";
|
|
5
5
|
export type { CacheIndexEntry, CacheIndexData } from "./cache-index.js";
|
|
6
6
|
export { ToolCache } from "./tool-cache.js";
|
|
7
|
-
export type { ResolvedCoordinates, CacheStats } from "./tool-cache.js";
|
|
7
|
+
export type { ResolvedCoordinates, CacheStats, ToolCacheOptions } from "./tool-cache.js";
|
|
8
8
|
export { DEFAULT_TOOLSHED_URL, TOOLSHED_URL_ENV_VAR } from "./tool-cache-defaults.js";
|
|
9
9
|
export type { CacheStorage } from "./storage/interface.js";
|
|
10
10
|
export { IndexedDBCacheStorage } from "./storage/indexeddb.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/cache/node.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ToolCache } from "./tool-cache.js";
|
|
2
|
-
import type { ToolInfoOptions
|
|
1
|
+
import { ToolCache, type ToolCacheOptions } from "./tool-cache.js";
|
|
2
|
+
import type { ToolInfoOptions } from "../tool-info.js";
|
|
3
3
|
import { ToolInfoService } from "../tool-info.js";
|
|
4
4
|
export { FilesystemCacheStorage } from "./storage/filesystem.js";
|
|
5
5
|
export { CACHE_DIR_ENV_VAR } from "./tool-cache-defaults.js";
|
|
@@ -8,23 +8,23 @@ export declare const DEFAULT_CACHE_DIR: string;
|
|
|
8
8
|
/** Resolve cache directory: explicit override > env var > default. */
|
|
9
9
|
export declare function getCacheDir(override?: string): string;
|
|
10
10
|
/** Options for `makeNodeToolCache` — same as ToolCache minus `storage`, plus `cacheDir`. */
|
|
11
|
-
export interface NodeToolCacheOptions {
|
|
11
|
+
export interface NodeToolCacheOptions extends Omit<ToolCacheOptions, "storage"> {
|
|
12
12
|
cacheDir?: string;
|
|
13
|
-
defaultToolshedUrl?: string;
|
|
14
13
|
}
|
|
15
14
|
/**
|
|
16
15
|
* Construct a ToolCache backed by the default filesystem storage.
|
|
17
16
|
* `cacheDir` resolves via {@link getCacheDir} (explicit > env var > default).
|
|
17
|
+
* Recoverable diagnostics go to stderr unless `onDiagnostic` overrides the sink.
|
|
18
18
|
*/
|
|
19
19
|
export declare function makeNodeToolCache(opts?: NodeToolCacheOptions): ToolCache;
|
|
20
20
|
/** Options for `makeNodeToolInfoService` — ToolInfoOptions without `storage`, plus `cacheDir`. */
|
|
21
21
|
export interface NodeToolInfoOptions extends Omit<ToolInfoOptions, "storage"> {
|
|
22
22
|
cacheDir?: string;
|
|
23
|
-
sources?: ToolSource[];
|
|
24
23
|
}
|
|
25
24
|
/**
|
|
26
25
|
* Construct a ToolInfoService backed by the default filesystem storage.
|
|
27
26
|
* `cacheDir` resolves via {@link getCacheDir}.
|
|
27
|
+
* Recoverable diagnostics go to stderr unless `onDiagnostic` overrides the sink.
|
|
28
28
|
*/
|
|
29
29
|
export declare function makeNodeToolInfoService(opts?: NodeToolInfoOptions): ToolInfoService;
|
|
30
30
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/cache/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/cache/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/cache/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,QAAgD,CAAC;AAE/E,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,4FAA4F;AAC5F,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAOxE;AAED,kGAAkG;AAClG,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAOnF"}
|
package/dist/cache/node.js
CHANGED
|
@@ -12,26 +12,31 @@ export const DEFAULT_CACHE_DIR = join(homedir(), ".galaxy", "tool_info_cache");
|
|
|
12
12
|
export function getCacheDir(override) {
|
|
13
13
|
return override ?? process.env[CACHE_DIR_ENV_VAR] ?? DEFAULT_CACHE_DIR;
|
|
14
14
|
}
|
|
15
|
+
const stderrDiagnostic = (message) => console.error(message);
|
|
15
16
|
/**
|
|
16
17
|
* Construct a ToolCache backed by the default filesystem storage.
|
|
17
18
|
* `cacheDir` resolves via {@link getCacheDir} (explicit > env var > default).
|
|
19
|
+
* Recoverable diagnostics go to stderr unless `onDiagnostic` overrides the sink.
|
|
18
20
|
*/
|
|
19
21
|
export function makeNodeToolCache(opts) {
|
|
20
22
|
const cacheDir = getCacheDir(opts?.cacheDir);
|
|
21
23
|
return new ToolCache({
|
|
24
|
+
...opts,
|
|
22
25
|
storage: new FilesystemCacheStorage(cacheDir),
|
|
23
|
-
|
|
26
|
+
onDiagnostic: opts?.onDiagnostic ?? stderrDiagnostic,
|
|
24
27
|
});
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* Construct a ToolInfoService backed by the default filesystem storage.
|
|
28
31
|
* `cacheDir` resolves via {@link getCacheDir}.
|
|
32
|
+
* Recoverable diagnostics go to stderr unless `onDiagnostic` overrides the sink.
|
|
29
33
|
*/
|
|
30
34
|
export function makeNodeToolInfoService(opts) {
|
|
31
35
|
const cacheDir = getCacheDir(opts?.cacheDir);
|
|
32
36
|
return new ToolInfoService({
|
|
33
37
|
...opts,
|
|
34
38
|
storage: new FilesystemCacheStorage(cacheDir),
|
|
39
|
+
onDiagnostic: opts?.onDiagnostic ?? stderrDiagnostic,
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
42
|
//# sourceMappingURL=node.js.map
|
package/dist/cache/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cache/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cache/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE/E,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,QAAiB;IAC3C,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC;AACzE,CAAC;AAED,MAAM,gBAAgB,GAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAO7E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2B;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,IAAI,SAAS,CAAC;QACnB,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAC7C,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,gBAAgB;KACrD,CAAC,CAAC;AACL,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA0B;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,IAAI,eAAe,CAAC;QACzB,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAC7C,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,gBAAgB;KACrD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { CacheStorage } from "./interface.js";
|
|
2
|
+
import { type ToolSourceDocument } from "../../tool-source.js";
|
|
2
3
|
/**
|
|
3
4
|
* Node.js filesystem-backed CacheStorage.
|
|
4
|
-
* Stores
|
|
5
|
+
* Stores parsed entries as `<cacheDir>/<key>.json` and wrapper text as
|
|
6
|
+
* `<key>.source`, with format metadata in `<key>.source.json`.
|
|
5
7
|
* The internal `__index__` key maps to `index.json` for backward compatibility.
|
|
6
8
|
*/
|
|
7
9
|
export declare class FilesystemCacheStorage implements CacheStorage {
|
|
@@ -11,6 +13,9 @@ export declare class FilesystemCacheStorage implements CacheStorage {
|
|
|
11
13
|
load(key: string): Promise<unknown | null>;
|
|
12
14
|
save(key: string, data: unknown): Promise<void>;
|
|
13
15
|
delete(key: string): Promise<void>;
|
|
16
|
+
private sourcePaths;
|
|
17
|
+
loadSource(key: string): Promise<ToolSourceDocument | null>;
|
|
18
|
+
saveSource(key: string, source: ToolSourceDocument): Promise<void>;
|
|
14
19
|
list(): Promise<string[]>;
|
|
15
20
|
stat(key: string): Promise<{
|
|
16
21
|
sizeBytes: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/filesystem.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/filesystem.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AASrF;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;IAErC,OAAO,CAAC,SAAS;IAKX,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW1C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,OAAO,CAAC,WAAW;IAIb,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAc3D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAaxE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFile, writeFile, mkdir, unlink, readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { isToolSourceDocument } from "../../tool-source.js";
|
|
4
5
|
/**
|
|
5
6
|
* Key used by CacheIndex to store the index metadata.
|
|
6
7
|
* Mapped to "index.json" on disk for backward compatibility with existing caches.
|
|
@@ -9,7 +10,8 @@ const INDEX_KEY = "__index__";
|
|
|
9
10
|
const INDEX_FILENAME = "index.json";
|
|
10
11
|
/**
|
|
11
12
|
* Node.js filesystem-backed CacheStorage.
|
|
12
|
-
* Stores
|
|
13
|
+
* Stores parsed entries as `<cacheDir>/<key>.json` and wrapper text as
|
|
14
|
+
* `<key>.source`, with format metadata in `<key>.source.json`.
|
|
13
15
|
* The internal `__index__` key maps to `index.json` for backward compatibility.
|
|
14
16
|
*/
|
|
15
17
|
export class FilesystemCacheStorage {
|
|
@@ -39,29 +41,65 @@ export class FilesystemCacheStorage {
|
|
|
39
41
|
await writeFile(this.keyToPath(key), JSON.stringify(data, null, 2));
|
|
40
42
|
}
|
|
41
43
|
async delete(key) {
|
|
42
|
-
const path
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
for (const path of [this.keyToPath(key), ...this.sourcePaths(key)]) {
|
|
45
|
+
try {
|
|
46
|
+
await unlink(path);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
if (err.code !== "ENOENT")
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
sourcePaths(key) {
|
|
55
|
+
return [join(this.cacheDir, `${key}.source`), join(this.cacheDir, `${key}.source.json`)];
|
|
56
|
+
}
|
|
57
|
+
async loadSource(key) {
|
|
58
|
+
const [sourcePath, metadataPath] = this.sourcePaths(key);
|
|
59
|
+
try {
|
|
60
|
+
const contents = await readFile(sourcePath, "utf-8");
|
|
61
|
+
const metadata = JSON.parse(await readFile(metadataPath, "utf-8"));
|
|
62
|
+
const source = { ...metadata, contents };
|
|
63
|
+
return isToolSourceDocument(source) ? source : null;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
if (err.code === "ENOENT" || err instanceof SyntaxError)
|
|
67
|
+
return null;
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async saveSource(key, source) {
|
|
72
|
+
await mkdir(this.cacheDir, { recursive: true });
|
|
73
|
+
const [sourcePath, metadataPath] = this.sourcePaths(key);
|
|
74
|
+
const { contents, ...metadata } = source;
|
|
75
|
+
await writeFile(sourcePath, contents, "utf-8");
|
|
76
|
+
await writeFile(metadataPath, JSON.stringify(metadata));
|
|
45
77
|
}
|
|
46
78
|
async list() {
|
|
47
79
|
if (!existsSync(this.cacheDir))
|
|
48
80
|
return [];
|
|
49
81
|
const files = await readdir(this.cacheDir);
|
|
50
|
-
return
|
|
51
|
-
|
|
52
|
-
|
|
82
|
+
return [
|
|
83
|
+
...new Set(files
|
|
84
|
+
.filter((f) => (f.endsWith(".json") || f.endsWith(".source")) &&
|
|
85
|
+
f !== INDEX_FILENAME &&
|
|
86
|
+
!f.endsWith(".source.json"))
|
|
87
|
+
.map((f) => (f.endsWith(".source") ? f.slice(0, -7) : f.slice(0, -5)))),
|
|
88
|
+
];
|
|
53
89
|
}
|
|
54
90
|
async stat(key) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
91
|
+
let sizeBytes = 0;
|
|
92
|
+
let mtime;
|
|
93
|
+
for (const path of [this.keyToPath(key), ...this.sourcePaths(key)]) {
|
|
94
|
+
if (!existsSync(path))
|
|
95
|
+
continue;
|
|
59
96
|
const s = await stat(path);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
97
|
+
sizeBytes += s.size;
|
|
98
|
+
const date = s.mtime.toISOString();
|
|
99
|
+
if (mtime === undefined || date > mtime)
|
|
100
|
+
mtime = date;
|
|
64
101
|
}
|
|
102
|
+
return mtime === undefined ? null : { sizeBytes, mtime };
|
|
65
103
|
}
|
|
66
104
|
async saveAll(entries) {
|
|
67
105
|
await mkdir(this.cacheDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/cache/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/cache/storage/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CacheStorage } from "./interface.js";
|
|
2
|
+
import { type ToolSourceDocument } from "../../tool-source.js";
|
|
2
3
|
/**
|
|
3
4
|
* IndexedDB-backed CacheStorage for browser and Web Worker contexts.
|
|
4
5
|
* Suitable for VS Code web extension language servers running as Web Workers.
|
|
@@ -19,6 +20,8 @@ export declare class IndexedDBCacheStorage implements CacheStorage {
|
|
|
19
20
|
sizeBytes: number;
|
|
20
21
|
mtime?: string;
|
|
21
22
|
} | null>;
|
|
23
|
+
loadSource(key: string): Promise<ToolSourceDocument | null>;
|
|
24
|
+
saveSource(key: string, source: ToolSourceDocument): Promise<void>;
|
|
22
25
|
/** Bulk insert using a single transaction — efficient for pre-populating from a bundled dataset. */
|
|
23
26
|
saveAll(entries: ReadonlyArray<[string, unknown]>): Promise<void>;
|
|
24
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/indexeddb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/indexeddb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AASrF;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IAG5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,EAAE,CAA4B;gBAET,MAAM,GAAE,MAAwB;IAE7D,OAAO,CAAC,KAAK;IAkBP,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAU1C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAcxE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAK3D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,oGAAoG;IAC9F,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAYxE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { isToolSourceDocument } from "../../tool-source.js";
|
|
1
2
|
/** Stable database name — increment version suffix on schema changes. */
|
|
2
3
|
const DEFAULT_DB_NAME = "galaxy-tool-cache-v1";
|
|
3
4
|
const STORE_NAME = "data";
|
|
4
5
|
/** Reserved key used by CacheIndex to store the index metadata object. */
|
|
5
6
|
const INDEX_KEY = "__index__";
|
|
7
|
+
const SOURCE_PREFIX = "__source__:";
|
|
6
8
|
/**
|
|
7
9
|
* IndexedDB-backed CacheStorage for browser and Web Worker contexts.
|
|
8
10
|
* Suitable for VS Code web extension language servers running as Web Workers.
|
|
@@ -57,6 +59,7 @@ export class IndexedDBCacheStorage {
|
|
|
57
59
|
return new Promise((resolve, reject) => {
|
|
58
60
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
59
61
|
tx.objectStore(STORE_NAME).delete(key);
|
|
62
|
+
tx.objectStore(STORE_NAME).delete(`${SOURCE_PREFIX}${key}`);
|
|
60
63
|
tx.oncomplete = () => resolve();
|
|
61
64
|
tx.onerror = () => reject(tx.error);
|
|
62
65
|
});
|
|
@@ -66,23 +69,37 @@ export class IndexedDBCacheStorage {
|
|
|
66
69
|
return new Promise((resolve, reject) => {
|
|
67
70
|
const tx = db.transaction(STORE_NAME, "readonly");
|
|
68
71
|
const req = tx.objectStore(STORE_NAME).getAllKeys();
|
|
69
|
-
req.onsuccess = () => resolve(
|
|
72
|
+
req.onsuccess = () => resolve([
|
|
73
|
+
...new Set(req.result
|
|
74
|
+
.filter((k) => k !== INDEX_KEY)
|
|
75
|
+
.map((k) => (k.startsWith(SOURCE_PREFIX) ? k.slice(SOURCE_PREFIX.length) : k))),
|
|
76
|
+
]);
|
|
70
77
|
req.onerror = () => reject(req.error);
|
|
71
78
|
});
|
|
72
79
|
}
|
|
73
80
|
async stat(key) {
|
|
74
81
|
const value = await this.load(key);
|
|
75
|
-
|
|
82
|
+
const source = await this.loadSource(key);
|
|
83
|
+
if (value === null && source === null)
|
|
76
84
|
return null;
|
|
77
85
|
let sizeBytes;
|
|
78
86
|
if (value instanceof Blob) {
|
|
79
87
|
sizeBytes = value.size;
|
|
80
88
|
}
|
|
81
89
|
else {
|
|
82
|
-
sizeBytes = JSON.stringify(value).length;
|
|
90
|
+
sizeBytes = value === null ? 0 : new TextEncoder().encode(JSON.stringify(value)).length;
|
|
83
91
|
}
|
|
92
|
+
if (source !== null)
|
|
93
|
+
sizeBytes += new TextEncoder().encode(JSON.stringify(source)).length;
|
|
84
94
|
return { sizeBytes };
|
|
85
95
|
}
|
|
96
|
+
async loadSource(key) {
|
|
97
|
+
const source = await this.load(`${SOURCE_PREFIX}${key}`);
|
|
98
|
+
return isToolSourceDocument(source) ? source : null;
|
|
99
|
+
}
|
|
100
|
+
async saveSource(key, source) {
|
|
101
|
+
await this.save(`${SOURCE_PREFIX}${key}`, source);
|
|
102
|
+
}
|
|
86
103
|
/** Bulk insert using a single transaction — efficient for pre-populating from a bundled dataset. */
|
|
87
104
|
async saveAll(entries) {
|
|
88
105
|
const db = await this.getDb();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.js","sourceRoot":"","sources":["../../../src/cache/storage/indexeddb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexeddb.js","sourceRoot":"","sources":["../../../src/cache/storage/indexeddb.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Pluggable storage backend for the tool cache.
|
|
3
3
|
* Implementations: FilesystemCacheStorage (Node.js), IndexedDBCacheStorage (browser/Web Worker).
|
|
4
4
|
*/
|
|
5
|
+
import type { ToolSourceDocument } from "../../tool-source.js";
|
|
5
6
|
export interface CacheStorage {
|
|
6
7
|
/** Load a value by key. Returns null if not found. */
|
|
7
8
|
load(key: string): Promise<unknown | null>;
|
|
@@ -18,5 +19,8 @@ export interface CacheStorage {
|
|
|
18
19
|
sizeBytes: number;
|
|
19
20
|
mtime?: string;
|
|
20
21
|
} | null>;
|
|
22
|
+
/** Optional wrapper-document storage. Deleting a tool key must also delete its source. */
|
|
23
|
+
loadSource?(key: string): Promise<ToolSourceDocument | null>;
|
|
24
|
+
saveSource?(key: string, source: ToolSourceDocument): Promise<void>;
|
|
21
25
|
}
|
|
22
26
|
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,wCAAwC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,4DAA4D;IAC5D,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1B,kGAAkG;IAClG,OAAO,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,kFAAkF;IAClF,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,wCAAwC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,4DAA4D;IAC5D,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1B,kGAAkG;IAClG,OAAO,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,kFAAkF;IAClF,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1E,0FAA0F;IAC1F,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC7D,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ParsedTool } from "@galaxy-tool-util/schema";
|
|
2
|
+
import { type DiagnosticSink } from "../diagnostics.js";
|
|
2
3
|
import { CacheIndex } from "./cache-index.js";
|
|
3
4
|
import type { CacheStorage } from "./storage/interface.js";
|
|
5
|
+
import type { ToolSourceDocument } from "../tool-source.js";
|
|
4
6
|
import { DEFAULT_TOOL_VERSION, DEFAULT_TOOLSHED_URL, TOOLSHED_URL_ENV_VAR } from "./tool-cache-defaults.js";
|
|
5
7
|
export { DEFAULT_TOOL_VERSION, DEFAULT_TOOLSHED_URL, TOOLSHED_URL_ENV_VAR };
|
|
6
8
|
export interface CacheStats {
|
|
@@ -19,6 +21,12 @@ export interface ResolvedCoordinates {
|
|
|
19
21
|
version: string | null;
|
|
20
22
|
readableId: string;
|
|
21
23
|
}
|
|
24
|
+
export interface ToolCacheOptions {
|
|
25
|
+
storage: CacheStorage;
|
|
26
|
+
defaultToolshedUrl?: string;
|
|
27
|
+
/** Receives recoverable cache diagnostics. Silent by default. */
|
|
28
|
+
onDiagnostic?: DiagnosticSink;
|
|
29
|
+
}
|
|
22
30
|
/**
|
|
23
31
|
* Two-layer cache (memory + storage) for parsed Galaxy tool metadata.
|
|
24
32
|
* Resolves tool IDs to cache keys, loads/saves tool JSON, and manages the cache index.
|
|
@@ -31,11 +39,10 @@ export declare class ToolCache {
|
|
|
31
39
|
readonly defaultToolshedUrl: string;
|
|
32
40
|
readonly index: CacheIndex;
|
|
33
41
|
private readonly storage;
|
|
42
|
+
private readonly onDiagnostic;
|
|
34
43
|
private memoryCache;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
defaultToolshedUrl?: string;
|
|
38
|
-
});
|
|
44
|
+
private sourceCache;
|
|
45
|
+
constructor(opts: ToolCacheOptions);
|
|
39
46
|
resolveToolCoordinates(toolId: string, toolVersion?: string | null): ResolvedCoordinates;
|
|
40
47
|
hasCached(toolId: string, toolVersion?: string | null): Promise<boolean>;
|
|
41
48
|
loadCached(key: string): Promise<ParsedTool | null>;
|
|
@@ -56,6 +63,8 @@ export declare class ToolCache {
|
|
|
56
63
|
* the inspector needs to render explicitly.
|
|
57
64
|
*/
|
|
58
65
|
loadCachedRaw(key: string): Promise<unknown | null>;
|
|
66
|
+
loadToolSource(key: string): Promise<ToolSourceDocument | null>;
|
|
67
|
+
saveToolSource(key: string, source: ToolSourceDocument): Promise<void>;
|
|
59
68
|
/** Per-entry size/mtime if the storage backend supports it. */
|
|
60
69
|
statCached(key: string): Promise<{
|
|
61
70
|
sizeBytes: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;AAS5E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/tool-cache.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as S from "effect/Schema";
|
|
2
2
|
import { ParsedTool } from "@galaxy-tool-util/schema";
|
|
3
|
+
import { ignoreDiagnostic } from "../diagnostics.js";
|
|
3
4
|
import { CacheIndex } from "./cache-index.js";
|
|
4
5
|
import { cacheKey } from "./cache-key.js";
|
|
5
6
|
import { normalizeShortTrsToolId, parseToolshedToolId, toolIdFromTrs } from "./tool-id.js";
|
|
@@ -23,10 +24,13 @@ export class ToolCache {
|
|
|
23
24
|
defaultToolshedUrl;
|
|
24
25
|
index;
|
|
25
26
|
storage;
|
|
27
|
+
onDiagnostic;
|
|
26
28
|
memoryCache = new Map();
|
|
29
|
+
sourceCache = new Map();
|
|
27
30
|
constructor(opts) {
|
|
28
31
|
this.defaultToolshedUrl = opts.defaultToolshedUrl ?? envToolshedUrl() ?? DEFAULT_TOOLSHED_URL;
|
|
29
32
|
this.storage = opts.storage;
|
|
33
|
+
this.onDiagnostic = opts.onDiagnostic ?? ignoreDiagnostic;
|
|
30
34
|
this.index = new CacheIndex(this.storage);
|
|
31
35
|
}
|
|
32
36
|
resolveToolCoordinates(toolId, toolVersion) {
|
|
@@ -39,12 +43,13 @@ export class ToolCache {
|
|
|
39
43
|
readableId: toolIdFromTrs(parsed.toolshedUrl, parsed.trsToolId),
|
|
40
44
|
};
|
|
41
45
|
}
|
|
42
|
-
const
|
|
46
|
+
const shortTrsId = normalizeShortTrsToolId(toolId);
|
|
47
|
+
const trsToolId = shortTrsId ?? toolId;
|
|
43
48
|
return {
|
|
44
49
|
toolshedUrl: this.defaultToolshedUrl,
|
|
45
50
|
trsToolId,
|
|
46
51
|
version: toolVersion ?? DEFAULT_TOOL_VERSION,
|
|
47
|
-
readableId: toolIdFromTrs(this.defaultToolshedUrl, trsToolId),
|
|
52
|
+
readableId: shortTrsId === null ? toolId : toolIdFromTrs(this.defaultToolshedUrl, trsToolId),
|
|
48
53
|
};
|
|
49
54
|
}
|
|
50
55
|
async hasCached(toolId, toolVersion) {
|
|
@@ -71,7 +76,7 @@ export class ToolCache {
|
|
|
71
76
|
return parsedTool;
|
|
72
77
|
}
|
|
73
78
|
catch (err) {
|
|
74
|
-
|
|
79
|
+
this.onDiagnostic(`Failed to load cached tool ${key}: ${err}`);
|
|
75
80
|
return null;
|
|
76
81
|
}
|
|
77
82
|
}
|
|
@@ -98,6 +103,25 @@ export class ToolCache {
|
|
|
98
103
|
async loadCachedRaw(key) {
|
|
99
104
|
return this.storage.load(key);
|
|
100
105
|
}
|
|
106
|
+
async loadToolSource(key) {
|
|
107
|
+
const cached = this.sourceCache.get(key);
|
|
108
|
+
if (cached !== undefined)
|
|
109
|
+
return cached;
|
|
110
|
+
try {
|
|
111
|
+
const source = (await this.storage.loadSource?.(key)) ?? null;
|
|
112
|
+
if (source !== null)
|
|
113
|
+
this.sourceCache.set(key, source);
|
|
114
|
+
return source;
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
this.onDiagnostic(`Failed to load cached tool source ${key}: ${err}`);
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async saveToolSource(key, source) {
|
|
122
|
+
this.sourceCache.set(key, source);
|
|
123
|
+
await this.storage.saveSource?.(key, source);
|
|
124
|
+
}
|
|
101
125
|
/** Per-entry size/mtime if the storage backend supports it. */
|
|
102
126
|
async statCached(key) {
|
|
103
127
|
if (typeof this.storage.stat !== "function")
|
|
@@ -111,10 +135,11 @@ export class ToolCache {
|
|
|
111
135
|
async removeCached(key) {
|
|
112
136
|
const inIndex = await this.index.has(key);
|
|
113
137
|
const inStorage = inIndex ? false : (await this.storage.list()).includes(key);
|
|
114
|
-
const existed = inIndex || inStorage;
|
|
138
|
+
const existed = inIndex || inStorage || this.sourceCache.has(key);
|
|
115
139
|
await this.storage.delete(key);
|
|
116
140
|
await this.index.remove(key);
|
|
117
141
|
this.memoryCache.delete(key);
|
|
142
|
+
this.sourceCache.delete(key);
|
|
118
143
|
return existed;
|
|
119
144
|
}
|
|
120
145
|
async saveTool(key, parsedTool, toolId, toolVersion, source, sourceUrl = "") {
|
|
@@ -162,6 +187,7 @@ export class ToolCache {
|
|
|
162
187
|
}
|
|
163
188
|
await this.index.clear();
|
|
164
189
|
this.memoryCache.clear();
|
|
190
|
+
this.sourceCache.clear();
|
|
165
191
|
return keys.length;
|
|
166
192
|
}
|
|
167
193
|
const prefix = toolIdPrefix.replace(/\*$/, "");
|
|
@@ -170,6 +196,7 @@ export class ToolCache {
|
|
|
170
196
|
await this.storage.delete(entry.cache_key);
|
|
171
197
|
await this.index.remove(entry.cache_key);
|
|
172
198
|
this.memoryCache.delete(entry.cache_key);
|
|
199
|
+
this.sourceCache.delete(entry.cache_key);
|
|
173
200
|
}
|
|
174
201
|
return toRemove.length;
|
|
175
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert cache index entries into GA4GH TRS Tool / ToolVersion shapes.
|
|
3
|
+
*
|
|
4
|
+
* Mapping (per merged plan §3):
|
|
5
|
+
* Tool.id ← tool_id (TRS form, ~-separated; we already store it that way)
|
|
6
|
+
* Tool.organization ← left of first `~`, falling back to tool_id when there is no separator
|
|
7
|
+
* Tool.url ← {baseUrl}/api/ga4gh/trs/v2/tools/{tool_id}
|
|
8
|
+
* Tool.toolclass ← GALAXY_TOOL_CLASS
|
|
9
|
+
* Tool.versions ← entries grouped by tool_id, mapped to ToolVersion
|
|
10
|
+
* ToolVersion.id ← tool_version
|
|
11
|
+
* ToolVersion.url ← {baseUrl}/api/ga4gh/trs/v2/tools/{tool_id}/versions/{tool_version}
|
|
12
|
+
* ToolVersion.descriptor_type ← ["GALAXY"]
|
|
13
|
+
*/
|
|
14
|
+
import { type TrsTool, type TrsToolVersion } from "@galaxy-tool-util/schema";
|
|
15
|
+
/** Cache index entry shape (from `ToolCache.listCached()`). */
|
|
16
|
+
export interface CacheIndexRecord {
|
|
17
|
+
cache_key: string;
|
|
18
|
+
tool_id: string;
|
|
19
|
+
tool_version: string;
|
|
20
|
+
source: string;
|
|
21
|
+
source_url: string;
|
|
22
|
+
cached_at: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Normalize a cache `tool_id` to TRS form (`owner~repo~tool_id`). The cache
|
|
26
|
+
* historically stores readable form (`shed/repos/owner/repo/tool_id`); newer
|
|
27
|
+
* entries may already be TRS-shaped. Callers reading off the cache index
|
|
28
|
+
* should always go through this.
|
|
29
|
+
*/
|
|
30
|
+
export declare function toTrsToolId(rawToolId: string): string;
|
|
31
|
+
export declare function entryToTrsVersion(entry: CacheIndexRecord, baseUrl: string): TrsToolVersion;
|
|
32
|
+
/** Group entries by TRS tool_id and emit one TRS Tool per group. */
|
|
33
|
+
export declare function cacheToTrs(entries: CacheIndexRecord[], baseUrl: string): TrsTool[];
|
|
34
|
+
/** Build a single TRS Tool by TRS-form tool id, or null if no entries match. */
|
|
35
|
+
export declare function cacheToTrsOne(entries: CacheIndexRecord[], trsToolId: string, baseUrl: string): TrsTool | null;
|
|
36
|
+
//# sourceMappingURL=cache-to-trs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-to-trs.d.ts","sourceRoot":"","sources":["../../src/cache-http/cache-to-trs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAqB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGhG,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrD;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAO1F;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAmBlF;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,GAAG,IAAI,CAUhB"}
|