@creeperhost/modlens-mcp 1.6.18 → 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 (179) 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 +31 -1
  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/java-tools.d.ts +1 -0
  20. package/dist/java-tools.d.ts.map +1 -1
  21. package/dist/java-tools.js +31 -7
  22. package/dist/java-tools.js.map +1 -1
  23. package/dist/launcher.js +15 -0
  24. package/dist/launcher.js.map +1 -1
  25. package/dist/mappings.d.ts +4 -1
  26. package/dist/mappings.d.ts.map +1 -1
  27. package/dist/mappings.js +120 -52
  28. package/dist/mappings.js.map +1 -1
  29. package/dist/minecraft.d.ts +0 -4
  30. package/dist/minecraft.d.ts.map +1 -1
  31. package/dist/minecraft.js +7 -23
  32. package/dist/minecraft.js.map +1 -1
  33. package/dist/mod-artifacts.d.ts +4 -0
  34. package/dist/mod-artifacts.d.ts.map +1 -0
  35. package/dist/mod-artifacts.js +58 -0
  36. package/dist/mod-artifacts.js.map +1 -0
  37. package/dist/modpacks-ch.d.ts +72 -46
  38. package/dist/modpacks-ch.d.ts.map +1 -1
  39. package/dist/modpacks-ch.js +134 -20
  40. package/dist/modpacks-ch.js.map +1 -1
  41. package/dist/modrinth.d.ts +14 -6
  42. package/dist/modrinth.d.ts.map +1 -1
  43. package/dist/modrinth.js +70 -55
  44. package/dist/modrinth.js.map +1 -1
  45. package/dist/platform-adapter.d.ts +1 -0
  46. package/dist/platform-adapter.d.ts.map +1 -1
  47. package/dist/platform.d.ts.map +1 -1
  48. package/dist/platform.js +20 -44
  49. package/dist/platform.js.map +1 -1
  50. package/dist/processor.d.ts +5 -0
  51. package/dist/processor.d.ts.map +1 -1
  52. package/dist/processor.js +166 -46
  53. package/dist/processor.js.map +1 -1
  54. package/dist/registry-submission.d.ts +34 -0
  55. package/dist/registry-submission.d.ts.map +1 -0
  56. package/dist/registry-submission.js +128 -0
  57. package/dist/registry-submission.js.map +1 -0
  58. package/dist/repositories/array-fields.d.ts +3 -0
  59. package/dist/repositories/array-fields.d.ts.map +1 -0
  60. package/dist/repositories/array-fields.js +8 -0
  61. package/dist/repositories/array-fields.js.map +1 -0
  62. package/dist/repositories/embeddings-sqlite.d.ts +1 -0
  63. package/dist/repositories/embeddings-sqlite.d.ts.map +1 -1
  64. package/dist/repositories/embeddings-sqlite.js +26 -58
  65. package/dist/repositories/embeddings-sqlite.js.map +1 -1
  66. package/dist/repositories/embeddings.d.ts.map +1 -1
  67. package/dist/repositories/embeddings.js +26 -3
  68. package/dist/repositories/embeddings.js.map +1 -1
  69. package/dist/repositories/index.d.ts +1 -1
  70. package/dist/repositories/index.d.ts.map +1 -1
  71. package/dist/repositories/mod.d.ts +8 -5
  72. package/dist/repositories/mod.d.ts.map +1 -1
  73. package/dist/repositories/mod.js +25 -11
  74. package/dist/repositories/mod.js.map +1 -1
  75. package/dist/repositories/packs.d.ts.map +1 -1
  76. package/dist/repositories/packs.js +10 -2
  77. package/dist/repositories/packs.js.map +1 -1
  78. package/dist/search-adapter.d.ts +2 -0
  79. package/dist/search-adapter.d.ts.map +1 -1
  80. package/dist/search-adapter.js +21 -9
  81. package/dist/search-adapter.js.map +1 -1
  82. package/dist/security.d.ts +2 -0
  83. package/dist/security.d.ts.map +1 -1
  84. package/dist/security.js +5 -1
  85. package/dist/security.js.map +1 -1
  86. package/dist/server.js +63 -25
  87. package/dist/server.js.map +1 -1
  88. package/dist/sqlite-json.d.ts +3 -0
  89. package/dist/sqlite-json.d.ts.map +1 -0
  90. package/dist/sqlite-json.js +78 -0
  91. package/dist/sqlite-json.js.map +1 -0
  92. package/dist/sqlite-parameters.d.ts +3 -0
  93. package/dist/sqlite-parameters.d.ts.map +1 -0
  94. package/dist/sqlite-parameters.js +19 -0
  95. package/dist/sqlite-parameters.js.map +1 -0
  96. package/dist/sqlite-schema.d.ts +4 -0
  97. package/dist/sqlite-schema.d.ts.map +1 -0
  98. package/dist/sqlite-schema.js +76 -0
  99. package/dist/sqlite-schema.js.map +1 -0
  100. package/dist/tools/catalog.d.ts +1 -6
  101. package/dist/tools/catalog.d.ts.map +1 -1
  102. package/dist/tools/catalog.js +10 -14
  103. package/dist/tools/catalog.js.map +1 -1
  104. package/dist/tools/compat-check.d.ts.map +1 -1
  105. package/dist/tools/compat-check.js +18 -30
  106. package/dist/tools/compat-check.js.map +1 -1
  107. package/dist/tools/diagnostics.js.map +1 -1
  108. package/dist/tools/docs.d.ts.map +1 -1
  109. package/dist/tools/docs.js +8 -3
  110. package/dist/tools/docs.js.map +1 -1
  111. package/dist/tools/embed-registry.d.ts +20 -4
  112. package/dist/tools/embed-registry.d.ts.map +1 -1
  113. package/dist/tools/embed-registry.js +30 -19
  114. package/dist/tools/embed-registry.js.map +1 -1
  115. package/dist/tools/graphify.d.ts +19 -4
  116. package/dist/tools/graphify.d.ts.map +1 -1
  117. package/dist/tools/graphify.js +61 -13
  118. package/dist/tools/graphify.js.map +1 -1
  119. package/dist/tools/ingest.d.ts.map +1 -1
  120. package/dist/tools/ingest.js +4 -4
  121. package/dist/tools/ingest.js.map +1 -1
  122. package/dist/tools/kubejs.js +1 -1
  123. package/dist/tools/kubejs.js.map +1 -1
  124. package/dist/tools/mc-fts.d.ts.map +1 -1
  125. package/dist/tools/mc-fts.js +9 -4
  126. package/dist/tools/mc-fts.js.map +1 -1
  127. package/dist/tools/mcmeta.d.ts +10 -1
  128. package/dist/tools/mcmeta.d.ts.map +1 -1
  129. package/dist/tools/mcmeta.js +43 -29
  130. package/dist/tools/mcmeta.js.map +1 -1
  131. package/dist/tools/mixin-scan.d.ts +12 -6
  132. package/dist/tools/mixin-scan.d.ts.map +1 -1
  133. package/dist/tools/mixin-scan.js +12 -7
  134. package/dist/tools/mixin-scan.js.map +1 -1
  135. package/dist/tools/mod-data.d.ts.map +1 -1
  136. package/dist/tools/mod-data.js +40 -27
  137. package/dist/tools/mod-data.js.map +1 -1
  138. package/dist/tools/modpacks-ch.d.ts +9 -5
  139. package/dist/tools/modpacks-ch.d.ts.map +1 -1
  140. package/dist/tools/modpacks-ch.js +54 -33
  141. package/dist/tools/modpacks-ch.js.map +1 -1
  142. package/dist/tools/packtools.js +3 -3
  143. package/dist/tools/packtools.js.map +1 -1
  144. package/dist/tools/platform.d.ts +2 -2
  145. package/dist/tools/platform.d.ts.map +1 -1
  146. package/dist/tools/platform.js +33 -23
  147. package/dist/tools/platform.js.map +1 -1
  148. package/dist/tools/project.d.ts +342 -0
  149. package/dist/tools/project.d.ts.map +1 -0
  150. package/dist/tools/project.js +519 -0
  151. package/dist/tools/project.js.map +1 -0
  152. package/dist/tools/reports.d.ts.map +1 -1
  153. package/dist/tools/reports.js +5 -3
  154. package/dist/tools/reports.js.map +1 -1
  155. package/dist/tools/vanilla-data.d.ts.map +1 -1
  156. package/dist/tools/vanilla-data.js +3 -33
  157. package/dist/tools/vanilla-data.js.map +1 -1
  158. package/dist/tools/vanilla.d.ts +3 -1
  159. package/dist/tools/vanilla.d.ts.map +1 -1
  160. package/dist/tools/vanilla.js +26 -12
  161. package/dist/tools/vanilla.js.map +1 -1
  162. package/dist/tools/version-diff.d.ts.map +1 -1
  163. package/dist/tools/version-diff.js +4 -24
  164. package/dist/tools/version-diff.js.map +1 -1
  165. package/dist/version-ranges.d.ts +5 -0
  166. package/dist/version-ranges.d.ts.map +1 -0
  167. package/dist/version-ranges.js +93 -0
  168. package/dist/version-ranges.js.map +1 -0
  169. package/package.json +5 -1
  170. package/prisma/backends/template.db +0 -0
  171. package/scripts/build-template-db.mjs +3 -1
  172. package/scripts/enable-sqlite-vec.mjs +2 -106
  173. package/scripts/gradle/modlens.init.gradle +154 -0
  174. package/scripts/project-upload.mjs +74 -0
  175. package/scripts/test-minecraft-eras.mjs +202 -0
  176. package/scripts/test-package.mjs +8 -0
  177. package/scripts/test-project-gradle.mjs +76 -0
  178. package/scripts/test-project-http.mjs +98 -0
  179. package/scripts/test-setup.mjs +18 -0
@@ -8,32 +8,41 @@
8
8
  import { fetchWithRetry, DOWNLOAD_OPTS } from "./fetch-utils.js";
9
9
  import { createWriteStream } from "fs";
10
10
  import { pipeline } from "stream/promises";
11
- export const FTBAPI = "https://api.modpacks.ch/public";
11
+ import { matchesVersionRange } from "./version-ranges.js";
12
+ export const MODPACKS_CH_API = "https://api.modpacks.ch/public";
12
13
  const CURSEFORGE_API_KEY = process.env.CURSEFORGE_API_KEY ?? "";
13
14
  /** User-Agent as requested by the modpacks.ch (CreeperHost) team for usage tracking. */
14
15
  export const USER_AGENT = "modlens-mcp/1.0 (github.com/CreeperHost/modlens-mcp)";
15
16
  const HEADERS = { "User-Agent": USER_AGENT };
16
17
  // ── API helpers ───────────────────────────────────────────────────────────────
17
- async function get(path) {
18
- const res = await fetchWithRetry(`${FTBAPI}/${path}`, { headers: HEADERS });
18
+ export async function modpacksChGet(path) {
19
+ const res = await fetchWithRetry(`${MODPACKS_CH_API}/${path}`, { headers: HEADERS });
19
20
  if (res.status === 404)
20
21
  return null;
21
22
  if (!res.ok)
22
23
  throw new Error(`modpacks.ch API ${res.status} for /${path}`);
23
24
  const text = await res.text();
25
+ let data;
24
26
  try {
25
- return JSON.parse(text);
27
+ data = JSON.parse(text);
26
28
  }
27
29
  catch {
28
- throw new Error(`modpacks.ch returned non-JSON for /${path}: ${text.slice(0, 200)}`);
30
+ throw new Error(`modpacks.ch returned non-JSON for /${path}`);
29
31
  }
32
+ if (data.status === "error") {
33
+ if (/^mod\/[a-f\d]{40}$/i.test(path) && data.message === "Unable to find mod with this checksum")
34
+ return null;
35
+ throw new Error(`modpacks.ch: ${data.message ?? "Request failed"}`);
36
+ }
37
+ return data;
30
38
  }
31
39
  // ── Mod API ───────────────────────────────────────────────────────────────────
32
40
  export async function searchMods(term, limit = 20) {
33
- return get(`mod/search/${limit}?term=${encodeURIComponent(term)}`);
41
+ const result = await get(`mod/search/${limit}?term=${encodeURIComponent(term)}`);
42
+ return result ? { ...result, mods: result.mods.map(entry => typeof entry === "object" ? entry.id : entry) } : null;
34
43
  }
35
44
  export async function getMod(id) {
36
- return get(`mod/${id}`);
45
+ return get(`mod/${encodeURIComponent(id)}`);
37
46
  }
38
47
  /**
39
48
  * Batch-fetch multiple mods by their IDs. Useful after a search to enrich
@@ -53,10 +62,10 @@ export async function getModsBatch(ids) {
53
62
  export function resolveModVersionUrl(version) {
54
63
  if (version.url)
55
64
  return withCurseForgeApiKey(version.url);
56
- if (version.id)
57
- return cfCdnUrl(version.id, version.name);
58
65
  if (version.mirrors?.length)
59
66
  return withCurseForgeApiKey(version.mirrors[0]);
67
+ if (/^\d+$/.test(String(version.id)) && Number(version.id) > 0)
68
+ return cfCdnUrl(Number(version.id), version.name);
60
69
  return null;
61
70
  }
62
71
  // ── Modpack API (FTB namespace) ───────────────────────────────────────────────
@@ -67,7 +76,8 @@ export async function getFeaturedPacks(limit = 20) {
67
76
  return get(`modpack/featured/${limit}`);
68
77
  }
69
78
  export async function getPack(packId) {
70
- return get(`modpack/${packId}`);
79
+ const pack = await get(`modpack/${packId}`);
80
+ return pack ? { ...pack, versions: await packVersions("modpack", pack.id) } : null;
71
81
  }
72
82
  export async function getPackManifest(packId, versionId) {
73
83
  return get(`modpack/${packId}/${versionId}`);
@@ -76,15 +86,15 @@ export async function getPackManifest(packId, versionId) {
76
86
  // Mirrors the /modpack/ namespace but for CurseForge-hosted packs.
77
87
  // provider field will be "curseforge" in all responses.
78
88
  /**
79
- * Search CurseForge packs via the unified FTB search endpoint.
80
- * The /curseforge/search/ endpoint does NOT exist — CF packs are returned
81
- * in the `curseforge` array of the main /modpack/search/ response.
89
+ * Search CurseForge packs via the unified modpacks.ch search endpoint.
90
+ * Provider-specific browsing is also available through providerSearch.
82
91
  */
83
92
  export async function searchCfPacks(term, limit = 20) {
84
93
  return searchPacks(term, limit);
85
94
  }
86
95
  export async function getCfPack(packId) {
87
- return get(`curseforge/${packId}`);
96
+ const pack = await get(`curseforge/${packId}`);
97
+ return pack ? { ...pack, versions: await packVersions("curseforge", pack.id) } : null;
88
98
  }
89
99
  export async function getCfPackManifest(packId, versionId) {
90
100
  return get(`curseforge/${packId}/${versionId}`);
@@ -100,9 +110,113 @@ export function cfCdnUrl(fileId, filename) {
100
110
  const lo = fileId % 1000;
101
111
  return withCurseForgeApiKey(`https://edge.forgecdn.net/files/${hi}/${lo}/${encodeURIComponent(filename)}`);
102
112
  }
113
+ const get = modpacksChGet;
114
+ export async function providerSearch(provider, kind, term, opts = {}) {
115
+ const verifyModLoader = kind === "mod" && !!opts.loader;
116
+ const filters = [opts.mcVersion, verifyModLoader ? undefined : opts.loader].filter(Boolean).map(v => encodeURIComponent(v));
117
+ const route = `${provider}/${kind === "mod" ? "mods/" : ""}search`;
118
+ const rows = [];
119
+ const limit = opts.limit ?? 20;
120
+ for (let page = 1; rows.length < limit && page <= 1000; page++) {
121
+ // Numeric path segments select the page; "all" is not a browse filter.
122
+ const result = await get(`${route}/${[...filters, page].join("/")}?term=${encodeURIComponent(term)}`);
123
+ if (!result)
124
+ break;
125
+ const entries = result.mods ?? result.packs;
126
+ if (!Array.isArray(entries))
127
+ throw new Error("modpacks.ch returned an invalid search page");
128
+ for (let entry of entries) {
129
+ if (verifyModLoader) {
130
+ const [version] = await providerVersions("mod", entry.id, { ...opts, limit: 1 });
131
+ if (!version)
132
+ continue;
133
+ entry = { ...entry, versions: [version], targets: version.targets,
134
+ ...(version.loaderSource ? { loaderSource: version.loaderSource } : {}) };
135
+ }
136
+ rows.push(entry);
137
+ if (rows.length >= limit)
138
+ break;
139
+ }
140
+ if (!entries.length || page >= Number(result.pages ?? 1))
141
+ break;
142
+ if (page === 1000 && rows.length < limit)
143
+ throw new Error("modpacks.ch search pagination exceeded 1000 pages");
144
+ }
145
+ return rows.slice(0, limit);
146
+ }
147
+ export async function providerVersions(namespace, id, opts = {}) {
148
+ const loader = opts.loader?.trim().toLowerCase();
149
+ // An upstream loader filter hides unlabeled files, including newer files of
150
+ // otherwise labeled projects. Keep upstream ordering and filter each record.
151
+ const inspectMissingLoaders = namespace === "mod" && !!loader;
152
+ const filters = [opts.mcVersion, inspectMissingLoaders ? undefined : loader].filter(Boolean).map(v => encodeURIComponent(v));
153
+ const route = `${namespace}/${encodeURIComponent(id)}/versions/${filters.join("/") || "all"}`;
154
+ const versions = [];
155
+ const seen = new Set();
156
+ if (opts.limit !== undefined && opts.limit <= 0)
157
+ return versions;
158
+ for (let page = 1; page <= 1000; page++) {
159
+ const result = await get(`${route}/${page}`);
160
+ if (!result)
161
+ break;
162
+ if (!Array.isArray(result.versions))
163
+ throw new Error("modpacks.ch returned an invalid version page");
164
+ for (let version of result.versions) {
165
+ if (seen.has(String(version.id)))
166
+ continue;
167
+ seen.add(String(version.id));
168
+ if (namespace === "mod" && opts.mcVersion && !version.targets?.some(target => target.type === "game" && target.version === opts.mcVersion))
169
+ continue;
170
+ if (opts.mcVersionRange && !version.targets?.some(target => target.type === "game" && matchesVersionRange(target.version, opts.mcVersionRange)))
171
+ continue;
172
+ if (inspectMissingLoaders) {
173
+ let loaders = (version.targets ?? []).filter(target => target.type === "modloader")
174
+ .map(target => target.name?.trim().toLowerCase()).filter(name => name && name !== "unknown");
175
+ if (!loaders.length) {
176
+ const { downloadModVersion } = await import("./mod-artifacts.js");
177
+ const { inspectJarLoaders } = await import("./processor.js");
178
+ try {
179
+ loaders = await inspectJarLoaders(await downloadModVersion(id, version, opts.force));
180
+ }
181
+ catch (error) {
182
+ throw new Error(`Unable to inspect loader for ${version.name} (${version.id}): ${error instanceof Error ? error.message : String(error)}`);
183
+ }
184
+ version = { ...version, loaderSource: "jar", targets: [
185
+ ...(version.targets ?? []).filter(target => target.type !== "modloader"),
186
+ ...loaders.map(name => ({ id: -1, name, version: "", type: "modloader", updated: version.updated })),
187
+ ] };
188
+ }
189
+ if (!loaders.includes(loader))
190
+ continue;
191
+ }
192
+ versions.push(version);
193
+ if (versions.length >= (opts.limit ?? Infinity))
194
+ return versions;
195
+ }
196
+ if (versions.length >= (opts.limit ?? Infinity) || page >= Number(result.pages ?? 1))
197
+ break;
198
+ if (page === 1000)
199
+ throw new Error("modpacks.ch version pagination exceeded 1000 pages");
200
+ }
201
+ return versions;
202
+ }
203
+ export async function packVersions(namespace, id) {
204
+ return (await providerVersions(namespace, id)).map(version => {
205
+ const fileId = Number(version.id);
206
+ if (!Number.isSafeInteger(fileId) || fileId <= 0)
207
+ throw new Error(`Invalid ${namespace} pack version ID`);
208
+ return { ...version, id: fileId };
209
+ });
210
+ }
211
+ export async function loaderVersions(mcVersion, loader) {
212
+ const data = await get(`loaders/${encodeURIComponent(mcVersion)}/${encodeURIComponent(loader)}`);
213
+ return data?.loaders ?? [];
214
+ }
215
+ export function providerLink(record, type) {
216
+ return record.links?.find(l => l.type?.toLowerCase() === type || l.name?.toLowerCase() === type)?.link;
217
+ }
103
218
  /**
104
- * CurseForge CDN downloads require the API key as an apiKey query parameter.
105
- * Keep non-CurseForge URLs untouched so Modrinth/FTB mirrors are not polluted.
219
+ * Attach an optional configured key only to CurseForge's own download hosts.
106
220
  */
107
221
  export function withCurseForgeApiKey(rawUrl) {
108
222
  if (!CURSEFORGE_API_KEY || !rawUrl)
@@ -115,7 +229,7 @@ export function withCurseForgeApiKey(rawUrl) {
115
229
  return rawUrl;
116
230
  }
117
231
  const host = url.hostname.toLowerCase();
118
- if (!host.endsWith("forgecdn.net") && !host.endsWith("curseforge.com"))
232
+ if (!["forgecdn.net", "curseforge.com"].some(domain => host === domain || host.endsWith(`.${domain}`)))
119
233
  return rawUrl;
120
234
  if (!url.searchParams.has("apiKey"))
121
235
  url.searchParams.set("apiKey", CURSEFORGE_API_KEY);
@@ -133,10 +247,10 @@ export function withCurseForgeApiKey(rawUrl) {
133
247
  export function resolveFileUrl(file) {
134
248
  if (file.url)
135
249
  return withCurseForgeApiKey(file.url);
136
- if (file.curseforge)
137
- return cfCdnUrl(file.curseforge.file, file.name);
138
250
  if (file.mirror)
139
251
  return withCurseForgeApiKey(file.mirror);
252
+ if (file.curseforge)
253
+ return cfCdnUrl(file.curseforge.file, file.name);
140
254
  // cf-extract overrides ZIPs use the version ID as their file ID
141
255
  if (file.type === "cf-extract" && file.id)
142
256
  return cfCdnUrl(file.id, file.name);
@@ -161,7 +275,7 @@ export async function downloadManifestFile(file, destPath) {
161
275
  res = await attempt(file.mirror);
162
276
  }
163
277
  if (!res.ok)
164
- throw new Error(`Failed to download ${file.name}: HTTP ${res.status} from ${primary}`);
278
+ throw new Error(`Failed to download ${file.name}: HTTP ${res.status}`);
165
279
  const writer = createWriteStream(destPath);
166
280
  await pipeline(res.body, writer);
167
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"modpacks-ch.js","sourceRoot":"","sources":["../src/modpacks-ch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modpacks-ch.js","sourceRoot":"","sources":["../src/modpacks-ch.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type ModMetadata, type ModVersion } from "./modpacks-ch.js";
1
2
  import type { PlatformAdapter } from "./platform-adapter.js";
2
3
  export interface ModrinthVersion {
3
4
  id: string;
@@ -7,6 +8,7 @@ export interface ModrinthVersion {
7
8
  version_type?: string;
8
9
  game_versions?: string[];
9
10
  loaders?: string[];
11
+ loaderSource?: "jar";
10
12
  date_published: string;
11
13
  downloads: number;
12
14
  files: Array<{
@@ -16,7 +18,7 @@ export interface ModrinthVersion {
16
18
  size?: number;
17
19
  file_type?: string | null;
18
20
  hashes: {
19
- sha512: string;
21
+ sha512?: string;
20
22
  sha1?: string;
21
23
  };
22
24
  }>;
@@ -31,8 +33,12 @@ export interface ModrinthProject {
31
33
  issues_url: string | null;
32
34
  }
33
35
  export declare function lookupBySha512(sha512: string): Promise<ModrinthVersion | null>;
36
+ export declare function asModrinthProject(project: ModMetadata, kind?: string): ModrinthProject;
37
+ export declare function asModrinthVersion(version: ModVersion, projectId: string): ModrinthVersion;
34
38
  export declare function getProject(projectId: string): Promise<ModrinthProject | null>;
35
- export declare function getLatestVersion(projectId: string, mcVersion?: string): Promise<ModrinthVersion | null>;
39
+ export declare function lookupProjectByHash(hash: string): Promise<ModrinthProject | null>;
40
+ export declare function getPackProject(projectId: string): Promise<ModrinthProject | null>;
41
+ export declare function getLatestVersion(projectId: string, mcVersion?: string, loader?: string): Promise<ModrinthVersion | null>;
36
42
  export interface ModrinthSearchHit {
37
43
  project_id: string;
38
44
  slug: string;
@@ -44,6 +50,7 @@ export interface ModrinthSearchHit {
44
50
  latest_version: string;
45
51
  versions: string[];
46
52
  loaders: string[];
53
+ loaderSource?: "jar";
47
54
  date_modified: string;
48
55
  license: string;
49
56
  project_type: string;
@@ -62,15 +69,16 @@ export declare function searchProjects(query: string, opts?: {
62
69
  mcVersion?: string;
63
70
  limit?: number;
64
71
  projectType?: string;
65
- }): Promise<ModrinthSearchResult | null>;
66
- /**
67
- * Get all versions for a project, optionally filtered by loader and/or MC version.
68
- */
72
+ }): Promise<ModrinthSearchResult>;
69
73
  export declare function getProjectVersions(projectId: string, opts?: {
70
74
  loader?: string;
71
75
  mcVersion?: string;
76
+ limit?: number;
77
+ pack?: boolean;
72
78
  }): Promise<ModrinthVersion[]>;
79
+ export declare function getPackVersions(projectId: string): Promise<ModrinthVersion[]>;
73
80
  export declare function getProjectVersion(projectId: string, versionRef: string): Promise<ModrinthVersion | null>;
81
+ export declare function getPackVersion(projectId: string, versionRef: string): Promise<ModrinthVersion | null>;
74
82
  export declare function getVersion(versionId: string): Promise<ModrinthVersion | null>;
75
83
  export declare function getPrimaryFile(version: ModrinthVersion): ModrinthVersion["files"][number] | null;
76
84
  export declare const modrinthPlatformAdapter: PlatformAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"modrinth.d.ts","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modrinth.d.ts","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"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"}
package/dist/modrinth.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { fetchWithRetry, safeJson } from "./fetch-utils.js";
2
+ import { getMod, modpacksChGet, providerVersions, providerSearch, providerLink, resolveModVersionUrl, } from "./modpacks-ch.js";
2
3
  const MODRINTH_BASE = "https://api.modrinth.com/v2";
3
4
  const token = process.env.MODRINTH_TOKEN ?? "";
4
5
  const headers = {
@@ -15,67 +16,82 @@ export async function lookupBySha512(sha512) {
15
16
  throw new Error(`Modrinth lookup failed: ${res.status}`);
16
17
  return safeJson(res, "Modrinth version lookup");
17
18
  }
19
+ export function asModrinthProject(project, kind = "mod") {
20
+ return {
21
+ id: String(project.id),
22
+ slug: project.slug ?? String(project.id),
23
+ title: project.name,
24
+ description: project.synopsis ?? "",
25
+ project_type: kind,
26
+ source_url: providerLink(project, "source") ?? providerLink(project, "github") ?? null,
27
+ issues_url: providerLink(project, "issues") ?? null,
28
+ };
29
+ }
30
+ export function asModrinthVersion(version, projectId) {
31
+ const url = resolveModVersionUrl(version);
32
+ return {
33
+ id: String(version.id),
34
+ project_id: projectId,
35
+ name: version.name,
36
+ version_number: version.version ?? version.name,
37
+ version_type: version.type,
38
+ date_published: new Date((version.updated ?? 0) * 1000).toISOString(),
39
+ downloads: 0,
40
+ game_versions: (version.targets ?? []).filter(target => target.type === "game").map(target => target.version),
41
+ loaders: (version.targets ?? []).filter(target => target.type === "modloader").map(target => target.name),
42
+ ...(version.loaderSource ? { loaderSource: version.loaderSource } : {}),
43
+ files: url ? [{ url, filename: version.name, primary: true, size: version.size, hashes: { sha1: version.sha1 } }] : [],
44
+ };
45
+ }
18
46
  export async function getProject(projectId) {
19
- const res = await fetchWithRetry(`${MODRINTH_BASE}/project/${projectId}`, { headers });
20
- if (res.status === 404)
21
- return null;
22
- if (!res.ok)
23
- throw new Error(`Modrinth project fetch failed: ${res.status}`);
24
- return safeJson(res, "Modrinth project");
47
+ const p = await getMod(projectId);
48
+ return p ? asModrinthProject(p) : null;
25
49
  }
26
- export async function getLatestVersion(projectId, mcVersion) {
27
- const params = new URLSearchParams({ loaders: '["fabric","neoforge","forge","quilt"]' });
28
- if (mcVersion)
29
- params.set("game_versions", JSON.stringify([mcVersion]));
30
- const res = await fetchWithRetry(`${MODRINTH_BASE}/project/${projectId}/version?${params}`, { headers });
31
- if (!res.ok)
50
+ export async function lookupProjectByHash(hash) {
51
+ const project = await getMod(hash);
52
+ if (!project || (project.provider && project.provider !== "modrinth") || /^\d+$/.test(String(project.id)))
32
53
  return null;
33
- const versions = await safeJson(res, "Modrinth versions");
34
- return versions[0] ?? null;
54
+ return asModrinthProject(project);
55
+ }
56
+ export async function getPackProject(projectId) {
57
+ const p = await modpacksChGet(`modrinth/${encodeURIComponent(projectId)}`);
58
+ return p ? asModrinthProject(p, "modpack") : null;
59
+ }
60
+ export async function getLatestVersion(projectId, mcVersion, loader) {
61
+ if (mcVersion && !/^\d+(?:\.\d+)*$/.test(mcVersion)) {
62
+ const [version] = await providerVersions("mod", projectId, { loader, mcVersionRange: mcVersion, limit: 1 });
63
+ return version ? asModrinthVersion(version, projectId) : null;
64
+ }
65
+ const rows = await getProjectVersions(projectId, { mcVersion, loader, limit: 1 });
66
+ return rows[0] ?? null;
35
67
  }
36
68
  /**
37
69
  * Search Modrinth by name/keyword, optionally filtered by loader and/or MC version.
38
70
  */
39
71
  export async function searchProjects(query, opts = {}) {
40
- const facets = [["project_type:mod"]];
41
- if (opts.loader)
42
- facets.push([`categories:${opts.loader}`]);
43
- if (opts.mcVersion)
44
- facets.push([`versions:${opts.mcVersion}`]);
45
- if (opts.projectType)
46
- facets[0] = [`project_type:${opts.projectType}`];
47
- const params = new URLSearchParams({
48
- query,
49
- limit: String(opts.limit ?? 20),
50
- facets: JSON.stringify(facets),
51
- });
52
- const res = await fetchWithRetry(`${MODRINTH_BASE}/search?${params}`, { headers });
53
- if (!res.ok)
54
- return null;
55
- return safeJson(res, "Modrinth search");
72
+ const kind = opts.projectType ?? "mod";
73
+ if (kind !== "mod" && kind !== "modpack")
74
+ throw new Error(`Unsupported modpacks.ch project type: ${kind}`);
75
+ const rows = await providerSearch("modrinth", kind, query, opts);
76
+ const hits = rows.map(p => ({ project_id: String(p.id), slug: p.slug ?? String(p.id), title: p.name,
77
+ description: p.synopsis ?? "", categories: (p.tags ?? []).map(t => t.name), downloads: p.installs ?? 0,
78
+ follows: 0, latest_version: "", versions: (p.targets ?? []).filter(t => t.type === "game").map(t => t.version),
79
+ loaders: (p.targets ?? []).filter(t => t.type === "modloader").map(t => t.name),
80
+ ...(p.loaderSource ? { loaderSource: p.loaderSource } : {}),
81
+ date_modified: new Date((p.updated ?? 0) * 1000).toISOString(), license: "", project_type: kind }));
82
+ return { hits, offset: 0, limit: opts.limit ?? 20, total_hits: hits.length };
56
83
  }
57
- /**
58
- * Get all versions for a project, optionally filtered by loader and/or MC version.
59
- */
60
84
  export async function getProjectVersions(projectId, opts = {}) {
61
- const params = new URLSearchParams();
62
- if (opts.loader)
63
- params.set("loaders", JSON.stringify([opts.loader]));
64
- if (opts.mcVersion)
65
- params.set("game_versions", JSON.stringify([opts.mcVersion]));
66
- params.set("include_changelog", "false");
67
- const res = await fetchWithRetry(`${MODRINTH_BASE}/project/${projectId}/version?${params}`, { headers });
68
- if (!res.ok)
69
- return [];
70
- return safeJson(res, "Modrinth project versions");
85
+ return (await providerVersions(opts.pack ? "modrinth" : "mod", projectId, opts)).map(v => asModrinthVersion(v, projectId));
86
+ }
87
+ export async function getPackVersions(projectId) {
88
+ return getProjectVersions(projectId, { pack: true });
71
89
  }
72
90
  export async function getProjectVersion(projectId, versionRef) {
73
- const res = await fetchWithRetry(`${MODRINTH_BASE}/project/${projectId}/version/${encodeURIComponent(versionRef)}`, { headers });
74
- if (res.status === 404)
75
- return null;
76
- if (!res.ok)
77
- throw new Error(`Modrinth version fetch failed: ${res.status}`);
78
- return safeJson(res, "Modrinth project version");
91
+ return (await getProjectVersions(projectId)).find(v => v.id === versionRef || v.version_number === versionRef) ?? null;
92
+ }
93
+ export async function getPackVersion(projectId, versionRef) {
94
+ return (await getPackVersions(projectId)).find(v => v.id === versionRef || v.version_number === versionRef) ?? null;
79
95
  }
80
96
  export async function getVersion(versionId) {
81
97
  const res = await fetchWithRetry(`${MODRINTH_BASE}/version/${encodeURIComponent(versionId)}`, { headers });
@@ -90,16 +106,15 @@ export function getPrimaryFile(version) {
90
106
  }
91
107
  export const modrinthPlatformAdapter = {
92
108
  name: "modrinth",
93
- async lookup({ sha512 }) {
94
- if (!sha512)
109
+ async lookup({ sha1 }) {
110
+ if (!sha1)
95
111
  return null;
96
- const ver = await lookupBySha512(sha512).catch(() => null);
97
- if (!ver)
112
+ const proj = await lookupProjectByHash(sha1);
113
+ if (!proj)
98
114
  return null;
99
- const proj = await getProject(ver.project_id).catch(() => null);
100
115
  return {
101
116
  platform: "modrinth",
102
- projectId: ver.project_id,
117
+ projectId: proj.id,
103
118
  slug: proj?.slug,
104
119
  sourceUrl: proj?.source_url,
105
120
  };
@@ -1 +1 @@
1
- {"version":3,"file":"modrinth.js","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modrinth.js","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACH,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,GAE9F,MAAM,kBAAkB,CAAC;AAG1B,MAAM,aAAa,GAAG,6BAA6B,CAAC;AACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AAE/C,MAAM,OAAO,GAA2B;IACpC,YAAY,EAAE,sDAAsD;IACpE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC7C,CAAC;AAiCF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qDAAqD,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,aAAa,iBAAiB,MAAM,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1G,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAkB,GAAG,EAAE,yBAAyB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAoB,EAAE,IAAI,GAAG,KAAK;IAChE,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,KAAK,EAAE,OAAO,CAAC,IAAI;QACnB,WAAW,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QACnC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI;QACtF,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI;KACtD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAmB,EAAE,SAAiB;IACpE,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,cAAc,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;QAC/C,YAAY,EAAE,OAAO,CAAC,IAAI;QAC1B,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACrE,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7G,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACzG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;KACzH,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB;IAC9C,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACvH,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IAClD,MAAM,CAAC,GAAG,MAAM,aAAa,CAAc,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAkB,EAAE,MAAe;IACzF,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5G,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC3B,CAAC;AA0BD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,OAAoF,EAAE;IACtI,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,GAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,UAAU,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI;QAChH,WAAW,EAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAC,CAAC,CAAC,QAAQ,IAAI,CAAC;QACjG,OAAO,EAAC,CAAC,EAAE,cAAc,EAAC,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,OAAO,CAAC;QACrG,OAAO,EAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC;QACxE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,aAAa,EAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,OAAO,EAAC,EAAE,EAAE,YAAY,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IAClG,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAC,UAAU,EAAC,IAAI,CAAC,MAAM,EAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,OAA8E,EAAE;IACxI,OAAO,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,iBAAiB,CAAC,CAAC,EAAC,SAAS,CAAC,CAAC,CAAC;AAC5H,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB;IACnD,OAAO,kBAAkB,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;IACzE,OAAO,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,UAAU,IAAI,CAAC,CAAC,cAAc,KAAG,UAAU,CAAC,IAAI,IAAI,CAAC;AACrH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,UAAkB;IACtE,OAAO,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,UAAU,IAAI,CAAC,CAAC,cAAc,KAAG,UAAU,CAAC,IAAI,IAAI,CAAC;AAClH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB;IAC9C,MAAM,GAAG,GAAG,MAAM,cAAc,CAC5B,GAAG,aAAa,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAC3D,EAAE,OAAO,EAAE,CACd,CAAC;IACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,QAAQ,CAAkB,GAAG,EAAE,kBAAkB,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAwB;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACpD,IAAI,EAAE,UAAU;IAChB,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;QACjB,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO;YACH,QAAQ,EAAE,UAAmB;YAC7B,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,IAAI,EAAO,IAAI,EAAE,IAAI;YACrB,SAAS,EAAE,IAAI,EAAE,UAAU;SAC9B,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /** Hashes available for a mod JAR at ingest time. */
2
2
  export type JarHashes = {
3
+ sha1?: string | null;
3
4
  sha512: string | null;
4
5
  murmur2: string | null;
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../src/platform-adapter.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAG,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACjB;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvF;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvF,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9D,CAAC"}
1
+ {"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../src/platform-adapter.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAG,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACjB;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvF;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvF,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,wBAAsB,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAahG;AAED,wBAAsB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAuBrG;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoBvG;AAED,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAqD/F;AAYD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvE;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1F;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAaxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBxE"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD,wBAAsB,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAGhG;AAED,wBAAsB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAyBrG;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAOvG;AAED,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAuD/F;AAYD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvE;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1F;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAaxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKxE"}