@creeperhost/modlens-mcp 1.6.17 → 1.6.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +97 -10
  2. package/TESTING.md +69 -0
  3. package/dist/cli.js +21 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/curseforge.d.ts +9 -7
  6. package/dist/curseforge.d.ts.map +1 -1
  7. package/dist/curseforge.js +48 -55
  8. package/dist/curseforge.js.map +1 -1
  9. package/dist/db.d.ts.map +1 -1
  10. package/dist/db.js +34 -3
  11. package/dist/db.js.map +1 -1
  12. package/dist/embeddings.d.ts.map +1 -1
  13. package/dist/embeddings.js +1 -0
  14. package/dist/embeddings.js.map +1 -1
  15. package/dist/feed-the-beast.d.ts +5 -5
  16. package/dist/feed-the-beast.d.ts.map +1 -1
  17. package/dist/feed-the-beast.js +5 -21
  18. package/dist/feed-the-beast.js.map +1 -1
  19. package/dist/generated/sqlite/internal/class.js +2 -2
  20. package/dist/generated/sqlite/internal/class.js.map +1 -1
  21. package/dist/java-tools.d.ts +1 -0
  22. package/dist/java-tools.d.ts.map +1 -1
  23. package/dist/java-tools.js +31 -7
  24. package/dist/java-tools.js.map +1 -1
  25. package/dist/launcher.js +15 -0
  26. package/dist/launcher.js.map +1 -1
  27. package/dist/mappings.d.ts +4 -1
  28. package/dist/mappings.d.ts.map +1 -1
  29. package/dist/mappings.js +120 -52
  30. package/dist/mappings.js.map +1 -1
  31. package/dist/minecraft.d.ts +0 -4
  32. package/dist/minecraft.d.ts.map +1 -1
  33. package/dist/minecraft.js +7 -23
  34. package/dist/minecraft.js.map +1 -1
  35. package/dist/mod-artifacts.d.ts +4 -0
  36. package/dist/mod-artifacts.d.ts.map +1 -0
  37. package/dist/mod-artifacts.js +58 -0
  38. package/dist/mod-artifacts.js.map +1 -0
  39. package/dist/modpacks-ch.d.ts +72 -46
  40. package/dist/modpacks-ch.d.ts.map +1 -1
  41. package/dist/modpacks-ch.js +134 -20
  42. package/dist/modpacks-ch.js.map +1 -1
  43. package/dist/modrinth.d.ts +14 -6
  44. package/dist/modrinth.d.ts.map +1 -1
  45. package/dist/modrinth.js +70 -55
  46. package/dist/modrinth.js.map +1 -1
  47. package/dist/platform-adapter.d.ts +1 -0
  48. package/dist/platform-adapter.d.ts.map +1 -1
  49. package/dist/platform.d.ts.map +1 -1
  50. package/dist/platform.js +20 -44
  51. package/dist/platform.js.map +1 -1
  52. package/dist/processor.d.ts +5 -0
  53. package/dist/processor.d.ts.map +1 -1
  54. package/dist/processor.js +166 -46
  55. package/dist/processor.js.map +1 -1
  56. package/dist/registry-submission.d.ts +34 -0
  57. package/dist/registry-submission.d.ts.map +1 -0
  58. package/dist/registry-submission.js +128 -0
  59. package/dist/registry-submission.js.map +1 -0
  60. package/dist/repositories/array-fields.d.ts +3 -0
  61. package/dist/repositories/array-fields.d.ts.map +1 -0
  62. package/dist/repositories/array-fields.js +8 -0
  63. package/dist/repositories/array-fields.js.map +1 -0
  64. package/dist/repositories/embeddings-sqlite.d.ts +1 -0
  65. package/dist/repositories/embeddings-sqlite.d.ts.map +1 -1
  66. package/dist/repositories/embeddings-sqlite.js +26 -58
  67. package/dist/repositories/embeddings-sqlite.js.map +1 -1
  68. package/dist/repositories/embeddings.d.ts.map +1 -1
  69. package/dist/repositories/embeddings.js +26 -3
  70. package/dist/repositories/embeddings.js.map +1 -1
  71. package/dist/repositories/index.d.ts +1 -1
  72. package/dist/repositories/index.d.ts.map +1 -1
  73. package/dist/repositories/mod.d.ts +8 -5
  74. package/dist/repositories/mod.d.ts.map +1 -1
  75. package/dist/repositories/mod.js +25 -11
  76. package/dist/repositories/mod.js.map +1 -1
  77. package/dist/repositories/packs.d.ts.map +1 -1
  78. package/dist/repositories/packs.js +10 -2
  79. package/dist/repositories/packs.js.map +1 -1
  80. package/dist/search-adapter.d.ts +2 -0
  81. package/dist/search-adapter.d.ts.map +1 -1
  82. package/dist/search-adapter.js +21 -9
  83. package/dist/search-adapter.js.map +1 -1
  84. package/dist/security.d.ts +2 -0
  85. package/dist/security.d.ts.map +1 -1
  86. package/dist/security.js +5 -1
  87. package/dist/security.js.map +1 -1
  88. package/dist/server.js +63 -25
  89. package/dist/server.js.map +1 -1
  90. package/dist/sqlite-json.d.ts +3 -0
  91. package/dist/sqlite-json.d.ts.map +1 -0
  92. package/dist/sqlite-json.js +78 -0
  93. package/dist/sqlite-json.js.map +1 -0
  94. package/dist/sqlite-parameters.d.ts +3 -0
  95. package/dist/sqlite-parameters.d.ts.map +1 -0
  96. package/dist/sqlite-parameters.js +19 -0
  97. package/dist/sqlite-parameters.js.map +1 -0
  98. package/dist/sqlite-schema.d.ts +4 -0
  99. package/dist/sqlite-schema.d.ts.map +1 -0
  100. package/dist/sqlite-schema.js +76 -0
  101. package/dist/sqlite-schema.js.map +1 -0
  102. package/dist/tools/catalog.d.ts +1 -6
  103. package/dist/tools/catalog.d.ts.map +1 -1
  104. package/dist/tools/catalog.js +10 -14
  105. package/dist/tools/catalog.js.map +1 -1
  106. package/dist/tools/compat-check.d.ts.map +1 -1
  107. package/dist/tools/compat-check.js +18 -30
  108. package/dist/tools/compat-check.js.map +1 -1
  109. package/dist/tools/diagnostics.js.map +1 -1
  110. package/dist/tools/docs.d.ts.map +1 -1
  111. package/dist/tools/docs.js +8 -3
  112. package/dist/tools/docs.js.map +1 -1
  113. package/dist/tools/embed-registry.d.ts +20 -4
  114. package/dist/tools/embed-registry.d.ts.map +1 -1
  115. package/dist/tools/embed-registry.js +30 -19
  116. package/dist/tools/embed-registry.js.map +1 -1
  117. package/dist/tools/graphify.d.ts +19 -4
  118. package/dist/tools/graphify.d.ts.map +1 -1
  119. package/dist/tools/graphify.js +61 -13
  120. package/dist/tools/graphify.js.map +1 -1
  121. package/dist/tools/ingest.d.ts.map +1 -1
  122. package/dist/tools/ingest.js +4 -4
  123. package/dist/tools/ingest.js.map +1 -1
  124. package/dist/tools/kubejs.js +1 -1
  125. package/dist/tools/kubejs.js.map +1 -1
  126. package/dist/tools/mc-fts.d.ts.map +1 -1
  127. package/dist/tools/mc-fts.js +9 -4
  128. package/dist/tools/mc-fts.js.map +1 -1
  129. package/dist/tools/mcmeta.d.ts +10 -1
  130. package/dist/tools/mcmeta.d.ts.map +1 -1
  131. package/dist/tools/mcmeta.js +43 -29
  132. package/dist/tools/mcmeta.js.map +1 -1
  133. package/dist/tools/mixin-scan.d.ts +12 -6
  134. package/dist/tools/mixin-scan.d.ts.map +1 -1
  135. package/dist/tools/mixin-scan.js +12 -7
  136. package/dist/tools/mixin-scan.js.map +1 -1
  137. package/dist/tools/mod-data.d.ts.map +1 -1
  138. package/dist/tools/mod-data.js +40 -27
  139. package/dist/tools/mod-data.js.map +1 -1
  140. package/dist/tools/modpacks-ch.d.ts +9 -5
  141. package/dist/tools/modpacks-ch.d.ts.map +1 -1
  142. package/dist/tools/modpacks-ch.js +54 -33
  143. package/dist/tools/modpacks-ch.js.map +1 -1
  144. package/dist/tools/packtools.js +3 -3
  145. package/dist/tools/packtools.js.map +1 -1
  146. package/dist/tools/platform.d.ts +2 -2
  147. package/dist/tools/platform.d.ts.map +1 -1
  148. package/dist/tools/platform.js +33 -23
  149. package/dist/tools/platform.js.map +1 -1
  150. package/dist/tools/project.d.ts +342 -0
  151. package/dist/tools/project.d.ts.map +1 -0
  152. package/dist/tools/project.js +519 -0
  153. package/dist/tools/project.js.map +1 -0
  154. package/dist/tools/reports.d.ts.map +1 -1
  155. package/dist/tools/reports.js +5 -3
  156. package/dist/tools/reports.js.map +1 -1
  157. package/dist/tools/vanilla-data.d.ts.map +1 -1
  158. package/dist/tools/vanilla-data.js +3 -33
  159. package/dist/tools/vanilla-data.js.map +1 -1
  160. package/dist/tools/vanilla.d.ts +3 -1
  161. package/dist/tools/vanilla.d.ts.map +1 -1
  162. package/dist/tools/vanilla.js +26 -12
  163. package/dist/tools/vanilla.js.map +1 -1
  164. package/dist/tools/version-diff.d.ts.map +1 -1
  165. package/dist/tools/version-diff.js +4 -24
  166. package/dist/tools/version-diff.js.map +1 -1
  167. package/dist/version-ranges.d.ts +5 -0
  168. package/dist/version-ranges.d.ts.map +1 -0
  169. package/dist/version-ranges.js +93 -0
  170. package/dist/version-ranges.js.map +1 -0
  171. package/package.json +8 -3
  172. package/prisma/backends/template.db +0 -0
  173. package/scripts/build-template-db.mjs +5 -2
  174. package/scripts/enable-sqlite-vec.mjs +2 -106
  175. package/scripts/gradle/modlens.init.gradle +154 -0
  176. package/scripts/project-upload.mjs +74 -0
  177. package/scripts/test-minecraft-eras.mjs +202 -0
  178. package/scripts/test-package.mjs +217 -0
  179. package/scripts/test-project-gradle.mjs +76 -0
  180. package/scripts/test-project-http.mjs +98 -0
  181. package/scripts/test-setup.mjs +18 -0
@@ -1,7 +1,3 @@
1
- /** Versions with SRG mappings that we explicitly support even before 1.14 */
2
- export declare const LEGACY_SRG_VERSIONS: Set<string>;
3
- /** Pre-1.7.10 release versions with RetroMCP Tiny v2 mappings */
4
- export declare const LEGACY_RETROMCP_VERSIONS: Set<string>;
5
1
  export interface McVersionEntry {
6
2
  id: string;
7
3
  type: "release" | "snapshot" | "old_beta" | "old_alpha";
@@ -1 +1 @@
1
- {"version":3,"file":"minecraft.d.ts","sourceRoot":"","sources":["../src/minecraft.ts"],"names":[],"mappings":"AAYA,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,aAQ9B,CAAC;AAEH,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,aAKnC,CAAC;AAEH,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACvB;AAID,wBAAsB,kBAAkB,CAAC,gBAAgB,UAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAc5F;AAED,0DAA0D;AAC1D,eAAO,MAAM,OAAO;mBACQ,MAAM;qBACN,MAAM;0BACN,MAAM;yBACN,MAAM,aAAa,MAAM;CAEpD,CAAC;AAEF,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBnE"}
1
+ {"version":3,"file":"minecraft.d.ts","sourceRoot":"","sources":["../src/minecraft.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACvB;AAID,wBAAsB,kBAAkB,CAAC,gBAAgB,UAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAY5F;AAED,0DAA0D;AAC1D,eAAO,MAAM,OAAO;mBACQ,MAAM;qBACN,MAAM;0BACN,MAAM;yBACN,MAAM,aAAa,MAAM;CAEpD,CAAC;AAEF,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBnE"}
package/dist/minecraft.js CHANGED
@@ -7,24 +7,8 @@ import { pipeline } from "stream/promises";
7
7
  import { join } from "path";
8
8
  import { CACHE_ROOT, ensureDir, exists } from "./cache.js";
9
9
  import { fetchWithRetry, DOWNLOAD_OPTS } from "./fetch-utils.js";
10
+ import { hasRetroMcpMappings, hasSrgMappings } from "./mappings.js";
10
11
  const VERSIONS_URL = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json";
11
- /** Versions with SRG mappings that we explicitly support even before 1.14 */
12
- export const LEGACY_SRG_VERSIONS = new Set([
13
- "1.7.2", "1.7.10",
14
- "1.8", "1.8.8", "1.8.9",
15
- "1.9", "1.9.2", "1.9.4",
16
- "1.10", "1.10.2",
17
- "1.11", "1.11.1", "1.11.2",
18
- "1.12", "1.12.1", "1.12.2",
19
- "1.13", "1.13.1", "1.13.2",
20
- ]);
21
- /** Pre-1.7.10 release versions with RetroMCP Tiny v2 mappings */
22
- export const LEGACY_RETROMCP_VERSIONS = new Set([
23
- "1.5.2",
24
- "1.2.5", "1.2.4", "1.2.3",
25
- "1.1",
26
- "1.0",
27
- ]);
28
12
  let manifestCache = null;
29
13
  export async function fetchMcVersionList(includeSnapshots = false) {
30
14
  if (!manifestCache) {
@@ -32,9 +16,9 @@ export async function fetchMcVersionList(includeSnapshots = false) {
32
16
  if (!res.ok)
33
17
  throw new Error(`Failed to fetch MC version manifest: ${res.status}`);
34
18
  const data = await res.json();
35
- // Filter to 1.14+ (mojmap era) plus legacy SRG versions (1.7.2–1.12.2) plus RetroMCP versions
36
- manifestCache = data.versions.filter((v) => v.type !== "old_beta" && v.type !== "old_alpha" &&
37
- (new Date(v.releaseTime) >= new Date("2019-04-23") || LEGACY_SRG_VERSIONS.has(v.id) || LEGACY_RETROMCP_VERSIONS.has(v.id)));
19
+ // Use the remapper's catalog so supported alpha/beta releases remain reachable.
20
+ manifestCache = data.versions.filter(v => hasSrgMappings(v.id) || hasRetroMcpMappings(v.id)
21
+ || (v.type !== "old_beta" && v.type !== "old_alpha" && Date.parse(v.releaseTime) >= Date.parse("2019-04-23")));
38
22
  }
39
23
  return includeSnapshots
40
24
  ? manifestCache
@@ -43,9 +27,9 @@ export async function fetchMcVersionList(includeSnapshots = false) {
43
27
  /** Paths under ~/.modlens-cache for vanilla MC assets. */
44
28
  export const mcPaths = {
45
29
  jar: (version) => join(CACHE_ROOT, "mc-jars", `${version}.jar`),
46
- index: (version) => join(CACHE_ROOT, "mc-index", `${version}.json`),
47
- decompiled: (version) => join(CACHE_ROOT, "mc-decompiled", version),
48
- classFile: (version, className) => join(CACHE_ROOT, "mc-decompiled", version, `${className}.java`),
30
+ index: (version) => join(CACHE_ROOT, "mc-index", `${version}-named-v2.json`),
31
+ decompiled: (version) => join(CACHE_ROOT, "mc-decompiled-named", version),
32
+ classFile: (version, className) => join(CACHE_ROOT, "mc-decompiled-named", version, `${className}.java`),
49
33
  };
50
34
  /** Download the MC client JAR for a version if not cached, return local path. */
51
35
  export async function getMcJarPath(version) {
@@ -1 +1 @@
1
- {"version":3,"file":"minecraft.js","sourceRoot":"","sources":["../src/minecraft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minecraft.js","sourceRoot":"","sources":["../src/minecraft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ModVersion } from "./modpacks-ch.js";
2
+ /** Share downloaded artifacts between metadata inspection and ingestion. */
3
+ export declare function downloadModVersion(projectId: string | number, version: ModVersion, force?: boolean): Promise<string>;
4
+ //# sourceMappingURL=mod-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod-artifacts.d.ts","sourceRoot":"","sources":["../src/mod-artifacts.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKrF,4EAA4E;AAC5E,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAsCxH"}
@@ -0,0 +1,58 @@
1
+ import { randomUUID } from "crypto";
2
+ import { createWriteStream } from "fs";
3
+ import { rename, unlink } from "fs/promises";
4
+ import { join } from "path";
5
+ import { pipeline } from "stream/promises";
6
+ import { CACHE_ROOT, ensureDir, exists } from "./cache.js";
7
+ import { DOWNLOAD_OPTS, fetchWithRetry } from "./fetch-utils.js";
8
+ import { resolveModVersionUrl, USER_AGENT } from "./modpacks-ch.js";
9
+ import { fileSha1, validatePath } from "./security.js";
10
+ const downloads = new Map();
11
+ /** Share downloaded artifacts between metadata inspection and ingestion. */
12
+ export async function downloadModVersion(projectId, version, force = false) {
13
+ const sha1 = version.sha1?.toLowerCase();
14
+ if (sha1 && !/^[a-f0-9]{40}$/.test(sha1))
15
+ throw new Error(`Invalid SHA-1 for ${version.name}`);
16
+ const directory = validatePath(String(projectId), join(CACHE_ROOT, "mods"));
17
+ const destination = validatePath(`${sha1 || version.id}.jar`, directory);
18
+ const pending = downloads.get(destination);
19
+ if (pending) {
20
+ if (!force)
21
+ return pending;
22
+ await pending;
23
+ return downloadModVersion(projectId, version, true);
24
+ }
25
+ const download = async () => {
26
+ if (!force && await exists(destination) && (!sha1 || await fileSha1(destination) === sha1))
27
+ return destination;
28
+ const url = resolveModVersionUrl(version);
29
+ if (!url)
30
+ throw new Error(`No download URL available for ${version.name}`);
31
+ await ensureDir(destination);
32
+ const temporary = `${destination}.${randomUUID()}.tmp`;
33
+ try {
34
+ // Fetch errors can contain a URL with a configured download key.
35
+ const response = await fetchWithRetry(url, { headers: { "User-Agent": USER_AGENT } }, DOWNLOAD_OPTS)
36
+ .catch(() => { throw new Error(`Download failed for ${version.name}`); });
37
+ if (!response.ok)
38
+ throw new Error(`Download failed for ${version.name}: HTTP ${response.status}`);
39
+ await pipeline(response.body, createWriteStream(temporary));
40
+ if (sha1 && await fileSha1(temporary) !== sha1)
41
+ throw new Error(`SHA-1 mismatch for ${version.name}`);
42
+ await rename(temporary, destination);
43
+ return destination;
44
+ }
45
+ finally {
46
+ await unlink(temporary).catch(() => { });
47
+ }
48
+ };
49
+ const task = download();
50
+ downloads.set(destination, task);
51
+ try {
52
+ return await task;
53
+ }
54
+ finally {
55
+ downloads.delete(destination);
56
+ }
57
+ }
58
+ //# sourceMappingURL=mod-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod-artifacts.js","sourceRoot":"","sources":["../src/mod-artifacts.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- export declare const FTBAPI = "https://api.modpacks.ch/public";
1
+ export declare const MODPACKS_CH_API = "https://api.modpacks.ch/public";
2
2
  /** User-Agent as requested by the modpacks.ch (CreeperHost) team for usage tracking. */
3
3
  export declare const USER_AGENT = "modlens-mcp/1.0 (github.com/CreeperHost/modlens-mcp)";
4
- export interface FtbArt {
4
+ export interface Artwork {
5
5
  id: number;
6
6
  url: string;
7
7
  type: string;
@@ -12,17 +12,17 @@ export interface FtbArt {
12
12
  size: number;
13
13
  updated: number;
14
14
  }
15
- export interface FtbLink {
15
+ export interface Link {
16
16
  id: number;
17
17
  name: string;
18
18
  link: string;
19
19
  type: string;
20
20
  }
21
- export interface FtbTag {
21
+ export interface Tag {
22
22
  id: number;
23
23
  name: string;
24
24
  }
25
- export interface FtbAuthor {
25
+ export interface Author {
26
26
  id: number;
27
27
  name: string;
28
28
  type: string;
@@ -33,8 +33,8 @@ export interface FtbAuthor {
33
33
  * A single version/file entry inside GET /mod/{id}.
34
34
  * Contains full file metadata and CDN download URL — no CF API key required.
35
35
  */
36
- export interface FtbModVersion {
37
- id: number;
36
+ export interface ModVersion {
37
+ id: number | string;
38
38
  name: string;
39
39
  version: string;
40
40
  type: string;
@@ -45,10 +45,12 @@ export interface FtbModVersion {
45
45
  size: number;
46
46
  clientonly: boolean;
47
47
  updated: number;
48
- targets: FtbTarget[];
49
- dependencies: FtbModDependency[];
48
+ targets: Target[];
49
+ dependencies: ModDependency[];
50
+ /** Present only when missing loader targets were recovered from the artifact. */
51
+ loaderSource?: "jar";
50
52
  }
51
- export interface FtbModDependency {
53
+ export interface ModDependency {
52
54
  id: number | string;
53
55
  name: string;
54
56
  type: string;
@@ -56,34 +58,40 @@ export interface FtbModDependency {
56
58
  updated: number;
57
59
  }
58
60
  /** Response from GET /mod/{id} */
59
- export interface FtbMod {
61
+ export interface ModMetadata {
60
62
  id: number | string;
61
63
  name: string;
62
64
  synopsis: string;
63
- art: FtbArt[];
64
- links: FtbLink[];
65
- versions: FtbModVersion[];
65
+ art: Artwork[];
66
+ links: Link[];
67
+ versions: ModVersion[];
66
68
  installs: number;
67
69
  plays: number;
68
70
  status: string;
69
71
  updated: number;
70
72
  refreshed: number;
73
+ description?: string;
74
+ provider?: string;
75
+ slug?: string;
76
+ tags?: Tag[] | null;
77
+ targets?: Target[] | null;
78
+ loaderSource?: "jar";
71
79
  }
72
80
  /** Response from GET /mod/search/{limit}?term={q} */
73
- export interface FtbModSearchResult {
81
+ export interface ModSearchResult {
74
82
  mods: (number | string)[];
75
83
  total: number;
76
84
  limit: number;
77
85
  term: string;
78
86
  }
79
- export interface FtbPackVersionRef {
87
+ export interface PackVersionRef {
80
88
  id: number;
81
89
  name: string;
82
90
  type: string;
83
91
  updated: number;
84
- targets: FtbTarget[];
92
+ targets: Target[];
85
93
  }
86
- export interface FtbTarget {
94
+ export interface Target {
87
95
  id: number;
88
96
  name: string;
89
97
  version: string;
@@ -91,18 +99,18 @@ export interface FtbTarget {
91
99
  updated: number;
92
100
  }
93
101
  /** Response from GET /modpack/{id} */
94
- export interface FtbPack {
102
+ export interface PackMetadata {
95
103
  id: number;
96
104
  name: string;
97
105
  synopsis: string;
98
106
  description: string;
99
- art: FtbArt[];
100
- links: FtbLink[];
101
- authors: FtbAuthor[];
102
- versions: FtbPackVersionRef[];
107
+ art: Artwork[];
108
+ links: Link[];
109
+ authors: Author[];
110
+ versions: PackVersionRef[];
103
111
  installs: number;
104
112
  plays: number;
105
- tags: FtbTag[];
113
+ tags: Tag[];
106
114
  status: string;
107
115
  provider: string;
108
116
  updated: number;
@@ -115,7 +123,7 @@ export interface FtbPack {
115
123
  } | null;
116
124
  }
117
125
  /** Response from GET /modpack/search/{limit}?term={q} */
118
- export interface FtbPackSearchResult {
126
+ export interface PackSearchResult {
119
127
  packs: number[];
120
128
  curseforge?: number[];
121
129
  total: number;
@@ -123,7 +131,7 @@ export interface FtbPackSearchResult {
123
131
  term?: string;
124
132
  refreshed?: number;
125
133
  }
126
- export interface FtbManifestFile {
134
+ export interface ManifestFile {
127
135
  id: number;
128
136
  name: string;
129
137
  /**
@@ -151,14 +159,14 @@ export interface FtbManifestFile {
151
159
  };
152
160
  }
153
161
  /** Response from GET /modpack/{packId}/{versionId} */
154
- export interface FtbManifest {
162
+ export interface PackManifest {
155
163
  id: number;
156
164
  parent: number;
157
165
  name: string;
158
166
  type: string;
159
167
  version: string;
160
- targets: FtbTarget[];
161
- files: FtbManifestFile[];
168
+ targets: Target[];
169
+ files: ManifestFile[];
162
170
  specs: {
163
171
  id: number;
164
172
  minimum: number;
@@ -170,34 +178,34 @@ export interface FtbManifest {
170
178
  refreshed: number;
171
179
  status: string;
172
180
  }
173
- export declare function searchMods(term: string, limit?: number): Promise<FtbModSearchResult | null>;
174
- export declare function getMod(id: number | string): Promise<FtbMod | null>;
181
+ export declare function modpacksChGet<T>(path: string): Promise<T | null>;
182
+ export declare function searchMods(term: string, limit?: number): Promise<ModSearchResult | null>;
183
+ export declare function getMod(id: number | string): Promise<ModMetadata | null>;
175
184
  /**
176
185
  * Batch-fetch multiple mods by their IDs. Useful after a search to enrich
177
186
  * result IDs into full mod objects. Runs requests in parallel.
178
187
  */
179
- export declare function getModsBatch(ids: (number | string)[]): Promise<FtbMod[]>;
188
+ export declare function getModsBatch(ids: (number | string)[]): Promise<ModMetadata[]>;
180
189
  /**
181
190
  * Resolve the download URL for a mod version.
182
191
  * Some entries have url="" — in that case the CDN URL is constructed from
183
192
  * the file ID using the same cfCdnUrl pattern as pack manifests.
184
193
  */
185
- export declare function resolveModVersionUrl(version: FtbModVersion): string | null;
186
- export declare function searchPacks(term: string, limit?: number): Promise<FtbPackSearchResult | null>;
194
+ export declare function resolveModVersionUrl(version: ModVersion): string | null;
195
+ export declare function searchPacks(term: string, limit?: number): Promise<PackSearchResult | null>;
187
196
  export declare function getFeaturedPacks(limit?: number): Promise<{
188
197
  packs: number[];
189
198
  total: number;
190
199
  } | null>;
191
- export declare function getPack(packId: number): Promise<FtbPack | null>;
192
- export declare function getPackManifest(packId: number, versionId: number): Promise<FtbManifest | null>;
200
+ export declare function getPack(packId: number): Promise<PackMetadata | null>;
201
+ export declare function getPackManifest(packId: number, versionId: number): Promise<PackManifest | null>;
193
202
  /**
194
- * Search CurseForge packs via the unified FTB search endpoint.
195
- * The /curseforge/search/ endpoint does NOT exist — CF packs are returned
196
- * in the `curseforge` array of the main /modpack/search/ response.
203
+ * Search CurseForge packs via the unified modpacks.ch search endpoint.
204
+ * Provider-specific browsing is also available through providerSearch.
197
205
  */
198
- export declare function searchCfPacks(term: string, limit?: number): Promise<FtbPackSearchResult | null>;
199
- export declare function getCfPack(packId: number): Promise<FtbPack | null>;
200
- export declare function getCfPackManifest(packId: number, versionId: number): Promise<FtbManifest | null>;
206
+ export declare function searchCfPacks(term: string, limit?: number): Promise<PackSearchResult | null>;
207
+ export declare function getCfPack(packId: number): Promise<PackMetadata | null>;
208
+ export declare function getCfPackManifest(packId: number, versionId: number): Promise<PackManifest | null>;
201
209
  /**
202
210
  * Build a direct CurseForge CDN download URL for a manifest file whose `url`
203
211
  * is empty (CF packs return url: "" for mod-type files).
@@ -205,9 +213,27 @@ export declare function getCfPackManifest(packId: number, versionId: number): Pr
205
213
  * Pattern: https://edge.forgecdn.net/files/{fileId÷1000}/{fileId%1000}/{name}
206
214
  */
207
215
  export declare function cfCdnUrl(fileId: number, filename: string): string;
216
+ export declare function providerSearch(provider: "modrinth" | "curseforge", kind: "mod" | "modpack", term: string, opts?: {
217
+ loader?: string;
218
+ mcVersion?: string;
219
+ limit?: number;
220
+ }): Promise<ModMetadata[]>;
221
+ export declare function providerVersions(namespace: "mod" | "modrinth" | "modpack" | "ftb" | "curseforge", id: string | number, opts?: {
222
+ loader?: string;
223
+ mcVersion?: string;
224
+ mcVersionRange?: string;
225
+ limit?: number;
226
+ force?: boolean;
227
+ }): Promise<ModVersion[]>;
228
+ export declare function packVersions(namespace: "modpack" | "ftb" | "curseforge", id: number): Promise<PackVersionRef[]>;
229
+ export declare function loaderVersions(mcVersion: string, loader: string): Promise<{
230
+ version: string;
231
+ gameVersion: string;
232
+ type: string;
233
+ }[]>;
234
+ export declare function providerLink(record: ModMetadata, type: string): string | undefined;
208
235
  /**
209
- * CurseForge CDN downloads require the API key as an apiKey query parameter.
210
- * Keep non-CurseForge URLs untouched so Modrinth/FTB mirrors are not polluted.
236
+ * Attach an optional configured key only to CurseForge's own download hosts.
211
237
  */
212
238
  export declare function withCurseForgeApiKey(rawUrl: string): string;
213
239
  /**
@@ -219,11 +245,11 @@ export declare function withCurseForgeApiKey(rawUrl: string): string;
219
245
  * overrides ZIPs that have their own url should still be fine, this only
220
246
  * returns null if there is genuinely no URL to construct).
221
247
  */
222
- export declare function resolveFileUrl(file: FtbManifestFile): string | null;
248
+ export declare function resolveFileUrl(file: ManifestFile): string | null;
223
249
  /**
224
250
  * Download a single FTB/CF manifest file to a local destination path.
225
251
  * Handles both FTB packs (direct CDN `url`) and CurseForge packs (empty `url`
226
252
  * → reconstruct via cfCdnUrl from embedded curseforge metadata).
227
253
  */
228
- export declare function downloadManifestFile(file: FtbManifestFile, destPath: string): Promise<void>;
254
+ export declare function downloadManifestFile(file: ManifestFile, destPath: string): Promise<void>;
229
255
  //# sourceMappingURL=modpacks-ch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modpacks-ch.d.ts","sourceRoot":"","sources":["../src/modpacks-ch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modpacks-ch.d.ts","sourceRoot":"","sources":["../src/modpacks-ch.ts"],"names":[],"mappings":"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"}