@creeperhost/modlens-mcp 1.6.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/README.md +938 -0
- package/dist/access-flags.d.ts +58 -0
- package/dist/access-flags.d.ts.map +1 -0
- package/dist/access-flags.js +79 -0
- package/dist/access-flags.js.map +1 -0
- package/dist/access-flags.test.d.ts +2 -0
- package/dist/access-flags.test.d.ts.map +1 -0
- package/dist/access-flags.test.js +189 -0
- package/dist/access-flags.test.js.map +1 -0
- package/dist/batch-ingest.d.ts +2 -0
- package/dist/batch-ingest.d.ts.map +1 -0
- package/dist/batch-ingest.js +54 -0
- package/dist/batch-ingest.js.map +1 -0
- package/dist/batch-resolve-mixins.d.ts +2 -0
- package/dist/batch-resolve-mixins.d.ts.map +1 -0
- package/dist/batch-resolve-mixins.js +36 -0
- package/dist/batch-resolve-mixins.js.map +1 -0
- package/dist/cache.d.ts +16 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +36 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1318 -0
- package/dist/cli.js.map +1 -0
- package/dist/curseforge.d.ts +53 -0
- package/dist/curseforge.d.ts.map +1 -0
- package/dist/curseforge.js +104 -0
- package/dist/curseforge.js.map +1 -0
- package/dist/db-backend.d.ts +17 -0
- package/dist/db-backend.d.ts.map +1 -0
- package/dist/db-backend.js +40 -0
- package/dist/db-backend.js.map +1 -0
- package/dist/db.d.ts +11 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +55 -0
- package/dist/db.js.map +1 -0
- package/dist/embed-queue.d.ts +12 -0
- package/dist/embed-queue.d.ts.map +1 -0
- package/dist/embed-queue.js +103 -0
- package/dist/embed-queue.js.map +1 -0
- package/dist/embeddings.d.ts +21 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +55 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/env-path.d.ts +19 -0
- package/dist/env-path.d.ts.map +1 -0
- package/dist/env-path.js +40 -0
- package/dist/env-path.js.map +1 -0
- package/dist/fetch-utils.d.ts +24 -0
- package/dist/fetch-utils.d.ts.map +1 -0
- package/dist/fetch-utils.js +73 -0
- package/dist/fetch-utils.js.map +1 -0
- package/dist/fetch-utils.test.d.ts +2 -0
- package/dist/fetch-utils.test.d.ts.map +1 -0
- package/dist/fetch-utils.test.js +133 -0
- package/dist/fetch-utils.test.js.map +1 -0
- package/dist/generated/sqlite/browser.d.ts +55 -0
- package/dist/generated/sqlite/browser.d.ts.map +1 -0
- package/dist/generated/sqlite/browser.js +18 -0
- package/dist/generated/sqlite/browser.js.map +1 -0
- package/dist/generated/sqlite/client.d.ts +72 -0
- package/dist/generated/sqlite/client.d.ts.map +1 -0
- package/dist/generated/sqlite/client.js +33 -0
- package/dist/generated/sqlite/client.js.map +1 -0
- package/dist/generated/sqlite/commonInputTypes.d.ts +387 -0
- package/dist/generated/sqlite/commonInputTypes.d.ts.map +1 -0
- package/dist/generated/sqlite/commonInputTypes.js +11 -0
- package/dist/generated/sqlite/commonInputTypes.js.map +1 -0
- package/dist/generated/sqlite/enums.d.ts +2 -0
- package/dist/generated/sqlite/enums.d.ts.map +1 -0
- package/dist/generated/sqlite/enums.js +11 -0
- package/dist/generated/sqlite/enums.js.map +1 -0
- package/dist/generated/sqlite/internal/class.d.ts +226 -0
- package/dist/generated/sqlite/internal/class.d.ts.map +1 -0
- package/dist/generated/sqlite/internal/class.js +84 -0
- package/dist/generated/sqlite/internal/class.js.map +1 -0
- package/dist/generated/sqlite/internal/prismaNamespace.d.ts +1344 -0
- package/dist/generated/sqlite/internal/prismaNamespace.d.ts.map +1 -0
- package/dist/generated/sqlite/internal/prismaNamespace.js +220 -0
- package/dist/generated/sqlite/internal/prismaNamespace.js.map +1 -0
- package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts +204 -0
- package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts.map +1 -0
- package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js +191 -0
- package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js.map +1 -0
- package/dist/generated/sqlite/models/DocEntry.d.ts +1223 -0
- package/dist/generated/sqlite/models/DocEntry.d.ts.map +1 -0
- package/dist/generated/sqlite/models/DocEntry.js +2 -0
- package/dist/generated/sqlite/models/DocEntry.js.map +1 -0
- package/dist/generated/sqlite/models/McSourceFile.d.ts +1289 -0
- package/dist/generated/sqlite/models/McSourceFile.d.ts.map +1 -0
- package/dist/generated/sqlite/models/McSourceFile.js +2 -0
- package/dist/generated/sqlite/models/McSourceFile.js.map +1 -0
- package/dist/generated/sqlite/models/McVersion.d.ts +1315 -0
- package/dist/generated/sqlite/models/McVersion.d.ts.map +1 -0
- package/dist/generated/sqlite/models/McVersion.js +2 -0
- package/dist/generated/sqlite/models/McVersion.js.map +1 -0
- package/dist/generated/sqlite/models/McVersionDiff.d.ts +1061 -0
- package/dist/generated/sqlite/models/McVersionDiff.d.ts.map +1 -0
- package/dist/generated/sqlite/models/McVersionDiff.js +2 -0
- package/dist/generated/sqlite/models/McVersionDiff.js.map +1 -0
- package/dist/generated/sqlite/models/Mod.d.ts +2396 -0
- package/dist/generated/sqlite/models/Mod.d.ts.map +1 -0
- package/dist/generated/sqlite/models/Mod.js +2 -0
- package/dist/generated/sqlite/models/Mod.js.map +1 -0
- package/dist/generated/sqlite/models/ModClass.d.ts +1254 -0
- package/dist/generated/sqlite/models/ModClass.d.ts.map +1 -0
- package/dist/generated/sqlite/models/ModClass.js +2 -0
- package/dist/generated/sqlite/models/ModClass.js.map +1 -0
- package/dist/generated/sqlite/models/ModSourceFile.d.ts +1283 -0
- package/dist/generated/sqlite/models/ModSourceFile.d.ts.map +1 -0
- package/dist/generated/sqlite/models/ModSourceFile.js +2 -0
- package/dist/generated/sqlite/models/ModSourceFile.js.map +1 -0
- package/dist/generated/sqlite/models/ModTag.d.ts +1278 -0
- package/dist/generated/sqlite/models/ModTag.d.ts.map +1 -0
- package/dist/generated/sqlite/models/ModTag.js +2 -0
- package/dist/generated/sqlite/models/ModTag.js.map +1 -0
- package/dist/generated/sqlite/models/ModVersionDiff.d.ts +1073 -0
- package/dist/generated/sqlite/models/ModVersionDiff.d.ts.map +1 -0
- package/dist/generated/sqlite/models/ModVersionDiff.js +2 -0
- package/dist/generated/sqlite/models/ModVersionDiff.js.map +1 -0
- package/dist/generated/sqlite/models/Primer.d.ts +1319 -0
- package/dist/generated/sqlite/models/Primer.d.ts.map +1 -0
- package/dist/generated/sqlite/models/Primer.js +2 -0
- package/dist/generated/sqlite/models/Primer.js.map +1 -0
- package/dist/generated/sqlite/models.d.ts +12 -0
- package/dist/generated/sqlite/models.d.ts.map +1 -0
- package/dist/generated/sqlite/models.js +2 -0
- package/dist/generated/sqlite/models.js.map +1 -0
- package/dist/jar.d.ts +7 -0
- package/dist/jar.d.ts.map +1 -0
- package/dist/jar.js +52 -0
- package/dist/jar.js.map +1 -0
- package/dist/java-tools.d.ts +46 -0
- package/dist/java-tools.d.ts.map +1 -0
- package/dist/java-tools.js +263 -0
- package/dist/java-tools.js.map +1 -0
- package/dist/launcher.d.ts +3 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +105 -0
- package/dist/launcher.js.map +1 -0
- package/dist/mappings.d.ts +95 -0
- package/dist/mappings.d.ts.map +1 -0
- package/dist/mappings.js +1094 -0
- package/dist/mappings.js.map +1 -0
- package/dist/mappings.test.d.ts +2 -0
- package/dist/mappings.test.d.ts.map +1 -0
- package/dist/mappings.test.js +161 -0
- package/dist/mappings.test.js.map +1 -0
- package/dist/minecraft.d.ts +21 -0
- package/dist/minecraft.d.ts.map +1 -0
- package/dist/minecraft.js +70 -0
- package/dist/minecraft.js.map +1 -0
- package/dist/modpacks-ch.d.ts +224 -0
- package/dist/modpacks-ch.d.ts.map +1 -0
- package/dist/modpacks-ch.js +146 -0
- package/dist/modpacks-ch.js.map +1 -0
- package/dist/modrinth.d.ts +67 -0
- package/dist/modrinth.d.ts.map +1 -0
- package/dist/modrinth.js +88 -0
- package/dist/modrinth.js.map +1 -0
- package/dist/platform-adapter.d.ts +23 -0
- package/dist/platform-adapter.d.ts.map +1 -0
- package/dist/platform-adapter.js +2 -0
- package/dist/platform-adapter.js.map +1 -0
- package/dist/platform.d.ts +47 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +175 -0
- package/dist/platform.js.map +1 -0
- package/dist/processor.d.ts +51 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +655 -0
- package/dist/processor.js.map +1 -0
- package/dist/processor.test.d.ts +2 -0
- package/dist/processor.test.d.ts.map +1 -0
- package/dist/processor.test.js +629 -0
- package/dist/processor.test.js.map +1 -0
- package/dist/repositories/embeddings-sqlite.d.ts +38 -0
- package/dist/repositories/embeddings-sqlite.d.ts.map +1 -0
- package/dist/repositories/embeddings-sqlite.js +208 -0
- package/dist/repositories/embeddings-sqlite.js.map +1 -0
- package/dist/repositories/embeddings.d.ts +40 -0
- package/dist/repositories/embeddings.d.ts.map +1 -0
- package/dist/repositories/embeddings.js +136 -0
- package/dist/repositories/embeddings.js.map +1 -0
- package/dist/repositories/index.d.ts +2 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +15 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/mcVersion.d.ts +16 -0
- package/dist/repositories/mcVersion.d.ts.map +1 -0
- package/dist/repositories/mcVersion.js +52 -0
- package/dist/repositories/mcVersion.js.map +1 -0
- package/dist/repositories/mod.d.ts +241 -0
- package/dist/repositories/mod.d.ts.map +1 -0
- package/dist/repositories/mod.js +342 -0
- package/dist/repositories/mod.js.map +1 -0
- package/dist/repositories/packs.d.ts +44 -0
- package/dist/repositories/packs.d.ts.map +1 -0
- package/dist/repositories/packs.js +138 -0
- package/dist/repositories/packs.js.map +1 -0
- package/dist/search-adapter.d.ts +34 -0
- package/dist/search-adapter.d.ts.map +1 -0
- package/dist/search-adapter.js +195 -0
- package/dist/search-adapter.js.map +1 -0
- package/dist/search.d.ts +6 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +54 -0
- package/dist/search.js.map +1 -0
- package/dist/search.test.d.ts +2 -0
- package/dist/search.test.d.ts.map +1 -0
- package/dist/search.test.js +71 -0
- package/dist/search.test.js.map +1 -0
- package/dist/security.d.ts +98 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +446 -0
- package/dist/security.js.map +1 -0
- package/dist/security.test.d.ts +2 -0
- package/dist/security.test.d.ts.map +1 -0
- package/dist/security.test.js +687 -0
- package/dist/security.test.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1465 -0
- package/dist/server.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +1113 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/bytecode.d.ts +129 -0
- package/dist/tools/bytecode.d.ts.map +1 -0
- package/dist/tools/bytecode.js +679 -0
- package/dist/tools/bytecode.js.map +1 -0
- package/dist/tools/catalog.d.ts +54 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +249 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/compat-check.d.ts +23 -0
- package/dist/tools/compat-check.d.ts.map +1 -0
- package/dist/tools/compat-check.js +250 -0
- package/dist/tools/compat-check.js.map +1 -0
- package/dist/tools/compat-check.test.d.ts +2 -0
- package/dist/tools/compat-check.test.d.ts.map +1 -0
- package/dist/tools/compat-check.test.js +179 -0
- package/dist/tools/compat-check.test.js.map +1 -0
- package/dist/tools/diagnostics.d.ts +10 -0
- package/dist/tools/diagnostics.d.ts.map +1 -0
- package/dist/tools/diagnostics.js +133 -0
- package/dist/tools/diagnostics.js.map +1 -0
- package/dist/tools/diagnostics.test.d.ts +2 -0
- package/dist/tools/diagnostics.test.d.ts.map +1 -0
- package/dist/tools/diagnostics.test.js +168 -0
- package/dist/tools/diagnostics.test.js.map +1 -0
- package/dist/tools/docs.d.ts +19 -0
- package/dist/tools/docs.d.ts.map +1 -0
- package/dist/tools/docs.js +230 -0
- package/dist/tools/docs.js.map +1 -0
- package/dist/tools/embed-registry.d.ts +125 -0
- package/dist/tools/embed-registry.d.ts.map +1 -0
- package/dist/tools/embed-registry.js +560 -0
- package/dist/tools/embed-registry.js.map +1 -0
- package/dist/tools/gradle.d.ts +16 -0
- package/dist/tools/gradle.d.ts.map +1 -0
- package/dist/tools/gradle.js +182 -0
- package/dist/tools/gradle.js.map +1 -0
- package/dist/tools/graphify.d.ts +144 -0
- package/dist/tools/graphify.d.ts.map +1 -0
- package/dist/tools/graphify.js +798 -0
- package/dist/tools/graphify.js.map +1 -0
- package/dist/tools/graphify.test.d.ts +2 -0
- package/dist/tools/graphify.test.d.ts.map +1 -0
- package/dist/tools/graphify.test.js +39 -0
- package/dist/tools/graphify.test.js.map +1 -0
- package/dist/tools/ingest.d.ts +85 -0
- package/dist/tools/ingest.d.ts.map +1 -0
- package/dist/tools/ingest.js +477 -0
- package/dist/tools/ingest.js.map +1 -0
- package/dist/tools/ingest.test.d.ts +2 -0
- package/dist/tools/ingest.test.d.ts.map +1 -0
- package/dist/tools/ingest.test.js +340 -0
- package/dist/tools/ingest.test.js.map +1 -0
- package/dist/tools/kubejs.d.ts +37 -0
- package/dist/tools/kubejs.d.ts.map +1 -0
- package/dist/tools/kubejs.js +245 -0
- package/dist/tools/kubejs.js.map +1 -0
- package/dist/tools/mappings.d.ts +17 -0
- package/dist/tools/mappings.d.ts.map +1 -0
- package/dist/tools/mappings.js +85 -0
- package/dist/tools/mappings.js.map +1 -0
- package/dist/tools/mc-fts.d.ts +101 -0
- package/dist/tools/mc-fts.d.ts.map +1 -0
- package/dist/tools/mc-fts.js +279 -0
- package/dist/tools/mc-fts.js.map +1 -0
- package/dist/tools/mcmeta.d.ts +41 -0
- package/dist/tools/mcmeta.d.ts.map +1 -0
- package/dist/tools/mcmeta.js +365 -0
- package/dist/tools/mcmeta.js.map +1 -0
- package/dist/tools/mixin-scan.d.ts +113 -0
- package/dist/tools/mixin-scan.d.ts.map +1 -0
- package/dist/tools/mixin-scan.js +433 -0
- package/dist/tools/mixin-scan.js.map +1 -0
- package/dist/tools/mod-data.d.ts +83 -0
- package/dist/tools/mod-data.d.ts.map +1 -0
- package/dist/tools/mod-data.js +630 -0
- package/dist/tools/mod-data.js.map +1 -0
- package/dist/tools/mod-tags.d.ts +59 -0
- package/dist/tools/mod-tags.d.ts.map +1 -0
- package/dist/tools/mod-tags.js +279 -0
- package/dist/tools/mod-tags.js.map +1 -0
- package/dist/tools/mod-tags.test.d.ts +2 -0
- package/dist/tools/mod-tags.test.d.ts.map +1 -0
- package/dist/tools/mod-tags.test.js +75 -0
- package/dist/tools/mod-tags.test.js.map +1 -0
- package/dist/tools/modpacks-ch.d.ts +257 -0
- package/dist/tools/modpacks-ch.d.ts.map +1 -0
- package/dist/tools/modpacks-ch.js +516 -0
- package/dist/tools/modpacks-ch.js.map +1 -0
- package/dist/tools/packtools.d.ts +113 -0
- package/dist/tools/packtools.d.ts.map +1 -0
- package/dist/tools/packtools.js +809 -0
- package/dist/tools/packtools.js.map +1 -0
- package/dist/tools/packtools.test.d.ts +2 -0
- package/dist/tools/packtools.test.d.ts.map +1 -0
- package/dist/tools/packtools.test.js +99 -0
- package/dist/tools/packtools.test.js.map +1 -0
- package/dist/tools/platform.d.ts +68 -0
- package/dist/tools/platform.d.ts.map +1 -0
- package/dist/tools/platform.js +452 -0
- package/dist/tools/platform.js.map +1 -0
- package/dist/tools/primers.d.ts +36 -0
- package/dist/tools/primers.d.ts.map +1 -0
- package/dist/tools/primers.js +451 -0
- package/dist/tools/primers.js.map +1 -0
- package/dist/tools/reports.d.ts +19 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +573 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/source.d.ts +10 -0
- package/dist/tools/source.d.ts.map +1 -0
- package/dist/tools/source.js +101 -0
- package/dist/tools/source.js.map +1 -0
- package/dist/tools/vanilla-data.d.ts +127 -0
- package/dist/tools/vanilla-data.d.ts.map +1 -0
- package/dist/tools/vanilla-data.js +824 -0
- package/dist/tools/vanilla-data.js.map +1 -0
- package/dist/tools/vanilla.d.ts +171 -0
- package/dist/tools/vanilla.d.ts.map +1 -0
- package/dist/tools/vanilla.js +612 -0
- package/dist/tools/vanilla.js.map +1 -0
- package/dist/tools/version-diff.d.ts +113 -0
- package/dist/tools/version-diff.d.ts.map +1 -0
- package/dist/tools/version-diff.js +519 -0
- package/dist/tools/version-diff.js.map +1 -0
- package/dist/tools/version-diff.test.d.ts +2 -0
- package/dist/tools/version-diff.test.d.ts.map +1 -0
- package/dist/tools/version-diff.test.js +102 -0
- package/dist/tools/version-diff.test.js.map +1 -0
- package/dist/validate.d.ts +19 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +54 -0
- package/dist/validate.js.map +1 -0
- package/dist/validate.test.d.ts +2 -0
- package/dist/validate.test.d.ts.map +1 -0
- package/dist/validate.test.js +73 -0
- package/dist/validate.test.js.map +1 -0
- package/package.json +62 -0
- package/prisma/backends/schema.sqlite.prisma +215 -0
- package/prisma/backends/template.db +0 -0
- package/prisma/schema.prisma +303 -0
- package/scripts/backup.mjs +151 -0
- package/scripts/build-template-db.mjs +38 -0
- package/scripts/check-atm10.mjs +27 -0
- package/scripts/check-sync.mjs +13 -0
- package/scripts/create-fts-index.mjs +50 -0
- package/scripts/enable-pgvector.mjs +90 -0
- package/scripts/enable-sqlite-vec.mjs +158 -0
- package/scripts/migrate-backend.mjs +188 -0
- package/scripts/migrate-embed-provenance.mjs +80 -0
- package/scripts/migrate-metadata-source.mjs +62 -0
- package/scripts/migrate-mod-source-files.mjs +67 -0
- package/scripts/post-update.mjs +77 -0
- package/scripts/verify-atm10.mjs +63 -0
package/dist/security.js
ADDED
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { resolve, sep, isAbsolute } from "path";
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
import { readFile } from "fs/promises";
|
|
4
|
+
import { platform } from "os";
|
|
5
|
+
// ── WSL path normalization ────────────────────────────────────────────────────
|
|
6
|
+
/**
|
|
7
|
+
* Normalizes a path that may have been typed from a WSL shell or a Windows
|
|
8
|
+
* shell so both work transparently.
|
|
9
|
+
*
|
|
10
|
+
* On Windows:
|
|
11
|
+
* /mnt/c/foo/bar.jar → C:/foo/bar.jar
|
|
12
|
+
* /mnt/wsl/foo.jar → left as-is (no drive letter, unlikely to be valid Win path)
|
|
13
|
+
* C:\foo\bar.jar → left as-is (already Windows)
|
|
14
|
+
*
|
|
15
|
+
* On Linux/macOS: returned unchanged (WSL paths are native there).
|
|
16
|
+
*/
|
|
17
|
+
export function normalizeJarPath(p) {
|
|
18
|
+
if (platform() !== "win32")
|
|
19
|
+
return p;
|
|
20
|
+
const m = p.match(/^\/mnt\/([a-zA-Z])(\/.*)?$/);
|
|
21
|
+
if (m) {
|
|
22
|
+
const drive = m[1].toUpperCase();
|
|
23
|
+
const rest = (m[2] ?? "").replace(/\//g, "\\");
|
|
24
|
+
return `${drive}:${rest || "\\"}`;
|
|
25
|
+
}
|
|
26
|
+
return p;
|
|
27
|
+
}
|
|
28
|
+
// ── Path traversal guard ──────────────────────────────────────────────────────
|
|
29
|
+
/**
|
|
30
|
+
* Validate that `untrusted` resolves to a path inside `base`.
|
|
31
|
+
* Throws if it would escape (path traversal attempt).
|
|
32
|
+
* Returns the resolved absolute path on success.
|
|
33
|
+
*/
|
|
34
|
+
export function validatePath(untrusted, base) {
|
|
35
|
+
const resolvedBase = resolve(base);
|
|
36
|
+
const resolvedTarget = resolve(base, untrusted);
|
|
37
|
+
// Allow empty / "." — both resolve to base itself
|
|
38
|
+
if (resolvedTarget === resolvedBase)
|
|
39
|
+
return resolvedTarget;
|
|
40
|
+
const baseWithSep = resolvedBase.endsWith(sep) ? resolvedBase : resolvedBase + sep;
|
|
41
|
+
if (!resolvedTarget.startsWith(baseWithSep)) {
|
|
42
|
+
throw new Error(`Path traversal attempt rejected: '${untrusted}'`);
|
|
43
|
+
}
|
|
44
|
+
return resolvedTarget;
|
|
45
|
+
}
|
|
46
|
+
// ── JAR path guard ────────────────────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Assert that `p` is an absolute path ending in `.jar`.
|
|
49
|
+
* Use on paths sourced from the DB or other semi-trusted boundaries
|
|
50
|
+
* to prevent filesystem access to arbitrary files.
|
|
51
|
+
*/
|
|
52
|
+
export function assertJarPath(p) {
|
|
53
|
+
if (!isAbsolute(p) || !p.toLowerCase().endsWith(".jar")) {
|
|
54
|
+
throw new Error(`Invalid JAR path rejected: '${p}'`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ── ReDoS guard ───────────────────────────────────────────────────────────────
|
|
58
|
+
const MAX_REGEX_LENGTH = 500;
|
|
59
|
+
/**
|
|
60
|
+
* Compile a user-supplied regex string safely.
|
|
61
|
+
* Throws if the pattern is too long or fails to compile.
|
|
62
|
+
*/
|
|
63
|
+
export function safeRegex(pattern, flags = "i") {
|
|
64
|
+
if (pattern.length > MAX_REGEX_LENGTH) {
|
|
65
|
+
throw new Error(`Regex pattern too long (max ${MAX_REGEX_LENGTH} characters)`);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return new RegExp(pattern, flags);
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
throw new Error(`Invalid regex pattern: ${e instanceof Error ? e.message : String(e)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ── SHA-512 integrity helpers ─────────────────────────────────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Compute the SHA-512 hex digest of a file on disk.
|
|
77
|
+
*/
|
|
78
|
+
export async function fileSha512(filePath) {
|
|
79
|
+
const buf = await readFile(filePath);
|
|
80
|
+
return createHash("sha512").update(buf).digest("hex");
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Verify a file's SHA-512 against an expected value.
|
|
84
|
+
* Throws `HashMismatchError` if they differ.
|
|
85
|
+
*/
|
|
86
|
+
export class HashMismatchError extends Error {
|
|
87
|
+
constructor(filePath, expected, actual) {
|
|
88
|
+
super(`SHA-512 mismatch for ${filePath}:\n expected: ${expected}\n actual: ${actual}`);
|
|
89
|
+
this.name = "HashMismatchError";
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export async function verifyFileHash(filePath, expectedSha512) {
|
|
93
|
+
const actual = await fileSha512(filePath);
|
|
94
|
+
if (actual !== expectedSha512.toLowerCase()) {
|
|
95
|
+
throw new HashMismatchError(filePath, expectedSha512.toLowerCase(), actual);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// ── Invisible Unicode detection ───────────────────────────────────────────────
|
|
99
|
+
/**
|
|
100
|
+
* Decode Unicode Tag characters (U+E0000-E007F) back to their ASCII equivalents.
|
|
101
|
+
* This is the technique used by tools like HideTextTool to embed invisible text
|
|
102
|
+
* within visible strings. Returns the hidden ASCII payload (empty if none).
|
|
103
|
+
*/
|
|
104
|
+
export function decodeTagChars(text) {
|
|
105
|
+
let decoded = "";
|
|
106
|
+
for (let i = 0; i < text.length; i++) {
|
|
107
|
+
const ch = text.charCodeAt(i);
|
|
108
|
+
// Tag chars are in the supplementary plane — encoded as surrogate pairs
|
|
109
|
+
if (ch >= 0xD800 && ch <= 0xDBFF && i + 1 < text.length) {
|
|
110
|
+
const lo = text.charCodeAt(i + 1);
|
|
111
|
+
if (lo >= 0xDC00 && lo <= 0xDFFF) {
|
|
112
|
+
const cp = (ch - 0xD800) * 0x400 + (lo - 0xDC00) + 0x10000;
|
|
113
|
+
if (cp >= 0xE0000 && cp <= 0xE007F) {
|
|
114
|
+
decoded += String.fromCharCode(cp - 0xE0000);
|
|
115
|
+
}
|
|
116
|
+
i++; // skip low surrogate
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return decoded;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Strip all invisible / zero-width Unicode characters from a string.
|
|
124
|
+
* Covers: Unicode Tag block (U+E0000-E007F), zero-width chars (U+200B-200D,
|
|
125
|
+
* U+FEFF, U+2060), bidi overrides (U+200E-200F, U+202A-202E, U+2066-2069),
|
|
126
|
+
* interlinear annotations (U+FFF9-FFFB), and variation selectors (U+FE00-FE0F).
|
|
127
|
+
*/
|
|
128
|
+
export function stripInvisibleUnicode(text) {
|
|
129
|
+
let out = "";
|
|
130
|
+
for (let i = 0; i < text.length; i++) {
|
|
131
|
+
const ch = text.charCodeAt(i);
|
|
132
|
+
// Supplementary plane — check surrogate pairs
|
|
133
|
+
if (ch >= 0xD800 && ch <= 0xDBFF && i + 1 < text.length) {
|
|
134
|
+
const lo = text.charCodeAt(i + 1);
|
|
135
|
+
if (lo >= 0xDC00 && lo <= 0xDFFF) {
|
|
136
|
+
const cp = (ch - 0xD800) * 0x400 + (lo - 0xDC00) + 0x10000;
|
|
137
|
+
// Skip Tag block (U+E0000-E007F)
|
|
138
|
+
if (cp >= 0xE0000 && cp <= 0xE007F) {
|
|
139
|
+
i++;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
out += text[i] + text[i + 1];
|
|
143
|
+
i++;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// BMP invisible characters
|
|
148
|
+
if ((ch >= 0x200B && ch <= 0x200D) || // ZWSP, ZWNJ, ZWJ
|
|
149
|
+
ch === 0xFEFF || // BOM / ZWNBSP
|
|
150
|
+
ch === 0x2060 || // Word Joiner
|
|
151
|
+
(ch >= 0x200E && ch <= 0x200F) || // LRM, RLM
|
|
152
|
+
(ch >= 0x202A && ch <= 0x202E) || // bidi embedding/override
|
|
153
|
+
(ch >= 0x2066 && ch <= 0x2069) || // bidi isolate
|
|
154
|
+
(ch >= 0xFFF9 && ch <= 0xFFFB) || // interlinear annotation
|
|
155
|
+
(ch >= 0xFE00 && ch <= 0xFE0F) // variation selectors
|
|
156
|
+
) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
out += text[i];
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check whether a string contains any invisible Unicode characters
|
|
165
|
+
* (Tag block, zero-width, bidi overrides, etc.).
|
|
166
|
+
*/
|
|
167
|
+
export function containsInvisibleUnicode(text) {
|
|
168
|
+
return text !== stripInvisibleUnicode(text);
|
|
169
|
+
}
|
|
170
|
+
// ── Graph bundle validation ───────────────────────────────────────────────────
|
|
171
|
+
const PROMPT_INJECTION_PATTERNS = [
|
|
172
|
+
/(ignore|disregard|forget)\s+(all|previous|prior|above|system)/i,
|
|
173
|
+
/(system\s*prompt|you\s*are\s*now|admin\s*mode|execute|run\s*command|eval\()/i,
|
|
174
|
+
/(curl|wget|bash|powershell|rm\s+-rf|del\s+\/)/i,
|
|
175
|
+
];
|
|
176
|
+
const CONTROL_CHAR_REGEX = /[\x00-\x08\x0b\x0c\x0e-\x1f]/;
|
|
177
|
+
function checkStringField(value, maxLen, fieldName) {
|
|
178
|
+
if (value === undefined || value === null)
|
|
179
|
+
return null;
|
|
180
|
+
if (typeof value !== "string")
|
|
181
|
+
return `${fieldName} must be a string`;
|
|
182
|
+
if (value.length > maxLen)
|
|
183
|
+
return `${fieldName} exceeds max length (${maxLen})`;
|
|
184
|
+
if (CONTROL_CHAR_REGEX.test(value))
|
|
185
|
+
return `${fieldName} contains control characters`;
|
|
186
|
+
if (containsInvisibleUnicode(value))
|
|
187
|
+
return `${fieldName} contains hidden unicode`;
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
function scanForPromptInjection(text) {
|
|
191
|
+
// Check visible text
|
|
192
|
+
if (PROMPT_INJECTION_PATTERNS.some(p => p.test(text)))
|
|
193
|
+
return true;
|
|
194
|
+
// Decode hidden Tag-character payload and check that too
|
|
195
|
+
const hidden = decodeTagChars(text);
|
|
196
|
+
if (hidden && PROMPT_INJECTION_PATTERNS.some(p => p.test(hidden)))
|
|
197
|
+
return true;
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Validate a graph.json bundle for security issues.
|
|
202
|
+
* Checks schema, string lengths, prompt injection, and size limits.
|
|
203
|
+
*/
|
|
204
|
+
export function validateGraphBundle(graph) {
|
|
205
|
+
if (!graph || typeof graph !== "object") {
|
|
206
|
+
return { valid: false, reason: "graph must be an object" };
|
|
207
|
+
}
|
|
208
|
+
const g = graph;
|
|
209
|
+
// Reject __proto__ pollution
|
|
210
|
+
if (Object.prototype.hasOwnProperty.call(g, "__proto__") ||
|
|
211
|
+
Object.prototype.hasOwnProperty.call(g, "constructor") ||
|
|
212
|
+
Object.prototype.hasOwnProperty.call(g, "prototype")) {
|
|
213
|
+
return { valid: false, reason: "proto_pollution" };
|
|
214
|
+
}
|
|
215
|
+
const nodes = g.nodes;
|
|
216
|
+
const edges = g.edges;
|
|
217
|
+
if (!Array.isArray(nodes))
|
|
218
|
+
return { valid: false, reason: "nodes must be an array" };
|
|
219
|
+
if (!Array.isArray(edges))
|
|
220
|
+
return { valid: false, reason: "edges must be an array" };
|
|
221
|
+
// Size limits
|
|
222
|
+
if (nodes.length > 500_000)
|
|
223
|
+
return { valid: false, reason: "too many nodes (>500k)" };
|
|
224
|
+
if (edges.length > 2_000_000)
|
|
225
|
+
return { valid: false, reason: "too many edges (>2M)" };
|
|
226
|
+
const flagged = [];
|
|
227
|
+
// Validate nodes
|
|
228
|
+
for (const node of nodes) {
|
|
229
|
+
if (!node || typeof node !== "object")
|
|
230
|
+
return { valid: false, reason: "node must be an object" };
|
|
231
|
+
const n = node;
|
|
232
|
+
if (Object.prototype.hasOwnProperty.call(n, "__proto__"))
|
|
233
|
+
return { valid: false, reason: "proto_pollution in node" };
|
|
234
|
+
const idErr = checkStringField(n.id, 500, "node.id");
|
|
235
|
+
if (idErr)
|
|
236
|
+
return { valid: false, reason: idErr };
|
|
237
|
+
if (!n.id)
|
|
238
|
+
return { valid: false, reason: "node missing id" };
|
|
239
|
+
const typeErr = checkStringField(n.type, 100, "node.type");
|
|
240
|
+
if (typeErr)
|
|
241
|
+
return { valid: false, reason: typeErr };
|
|
242
|
+
const srcErr = checkStringField(n.src, 300, "node.src");
|
|
243
|
+
if (srcErr)
|
|
244
|
+
return { valid: false, reason: srcErr };
|
|
245
|
+
const communityErr = checkStringField(n.community, 1000, "node.community");
|
|
246
|
+
if (communityErr)
|
|
247
|
+
return { valid: false, reason: communityErr };
|
|
248
|
+
// Scan text fields for prompt injection
|
|
249
|
+
const textFields = [n.id, n.community].filter(Boolean).map(String);
|
|
250
|
+
for (const text of textFields) {
|
|
251
|
+
if (scanForPromptInjection(text)) {
|
|
252
|
+
flagged.push(`node:${n.id}`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Validate edges
|
|
257
|
+
for (const edge of edges) {
|
|
258
|
+
if (!edge || typeof edge !== "object")
|
|
259
|
+
return { valid: false, reason: "edge must be an object" };
|
|
260
|
+
const e = edge;
|
|
261
|
+
if (Object.prototype.hasOwnProperty.call(e, "__proto__"))
|
|
262
|
+
return { valid: false, reason: "proto_pollution in edge" };
|
|
263
|
+
const srcErr = checkStringField(e.source, 500, "edge.source");
|
|
264
|
+
if (srcErr)
|
|
265
|
+
return { valid: false, reason: srcErr };
|
|
266
|
+
if (!e.source)
|
|
267
|
+
return { valid: false, reason: "edge missing source" };
|
|
268
|
+
const tgtErr = checkStringField(e.target, 500, "edge.target");
|
|
269
|
+
if (tgtErr)
|
|
270
|
+
return { valid: false, reason: tgtErr };
|
|
271
|
+
if (!e.target)
|
|
272
|
+
return { valid: false, reason: "edge missing target" };
|
|
273
|
+
const relErr = checkStringField(e.relation, 1000, "edge.relation");
|
|
274
|
+
if (relErr)
|
|
275
|
+
return { valid: false, reason: relErr };
|
|
276
|
+
const ctxErr = checkStringField(e.context, 1000, "edge.context");
|
|
277
|
+
if (ctxErr)
|
|
278
|
+
return { valid: false, reason: ctxErr };
|
|
279
|
+
// Scan text fields for prompt injection
|
|
280
|
+
const textFields = [e.relation, e.context].filter(Boolean).map(String);
|
|
281
|
+
for (const text of textFields) {
|
|
282
|
+
if (scanForPromptInjection(text)) {
|
|
283
|
+
flagged.push(`edge:${e.source}->${e.target}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (flagged.length > 0) {
|
|
288
|
+
return { valid: false, reason: "prompt_injection_suspect", flaggedEntries: flagged };
|
|
289
|
+
}
|
|
290
|
+
return { valid: true };
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Validate nodes/edges submitted by the chat agent during enrichment.
|
|
294
|
+
* Same checks as validateGraphBundle but on individual arrays.
|
|
295
|
+
*/
|
|
296
|
+
export function validateGraphEntries(nodes, edges) {
|
|
297
|
+
return validateGraphBundle({ nodes, edges });
|
|
298
|
+
}
|
|
299
|
+
// ── Embedding bundle validation ───────────────────────────────────────────────
|
|
300
|
+
const JAVA_CLASS_PATTERN = /^[a-zA-Z_$][a-zA-Z0-9_$]*(\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/;
|
|
301
|
+
/**
|
|
302
|
+
* Validate an embedding bundle for security issues.
|
|
303
|
+
*/
|
|
304
|
+
export function validateEmbeddingBundle(bundle) {
|
|
305
|
+
if (!bundle || typeof bundle !== "object") {
|
|
306
|
+
return { valid: false, reason: "bundle must be an object" };
|
|
307
|
+
}
|
|
308
|
+
const b = bundle;
|
|
309
|
+
// Reject proto pollution
|
|
310
|
+
if (Object.prototype.hasOwnProperty.call(b, "__proto__") ||
|
|
311
|
+
Object.prototype.hasOwnProperty.call(b, "constructor") ||
|
|
312
|
+
Object.prototype.hasOwnProperty.call(b, "prototype")) {
|
|
313
|
+
return { valid: false, reason: "proto_pollution" };
|
|
314
|
+
}
|
|
315
|
+
if (b.version !== 1)
|
|
316
|
+
return { valid: false, reason: "unsupported bundle version" };
|
|
317
|
+
if (typeof b.model !== "string" || b.model.length > 200)
|
|
318
|
+
return { valid: false, reason: "invalid model field" };
|
|
319
|
+
if (typeof b.dimensions !== "number" || b.dimensions < 1 || b.dimensions > 4096) {
|
|
320
|
+
return { valid: false, reason: "dimensions out of range (1-4096)" };
|
|
321
|
+
}
|
|
322
|
+
const targetType = typeof b.targetType === "string" ? b.targetType : "mod";
|
|
323
|
+
if (!["mod", "vanilla", "modloader"].includes(targetType)) {
|
|
324
|
+
return { valid: false, reason: "invalid targetType" };
|
|
325
|
+
}
|
|
326
|
+
const targetId = typeof b.targetId === "string"
|
|
327
|
+
? b.targetId
|
|
328
|
+
: typeof b.modId === "string"
|
|
329
|
+
? b.modId
|
|
330
|
+
: null;
|
|
331
|
+
const targetVersion = typeof b.targetVersion === "string"
|
|
332
|
+
? b.targetVersion
|
|
333
|
+
: typeof b.modVersion === "string"
|
|
334
|
+
? b.modVersion
|
|
335
|
+
: null;
|
|
336
|
+
if (!targetId || targetId.length > 200)
|
|
337
|
+
return { valid: false, reason: "invalid targetId" };
|
|
338
|
+
if (!targetVersion || targetVersion.length > 200)
|
|
339
|
+
return { valid: false, reason: "invalid targetVersion" };
|
|
340
|
+
const entries = b.entries;
|
|
341
|
+
if (!Array.isArray(entries))
|
|
342
|
+
return { valid: false, reason: "entries must be an array" };
|
|
343
|
+
if (entries.length > 100_000)
|
|
344
|
+
return { valid: false, reason: "too many entries (>100k)" };
|
|
345
|
+
const dims = b.dimensions;
|
|
346
|
+
for (const entry of entries) {
|
|
347
|
+
if (!entry || typeof entry !== "object")
|
|
348
|
+
return { valid: false, reason: "entry must be an object" };
|
|
349
|
+
const e = entry;
|
|
350
|
+
if (Object.prototype.hasOwnProperty.call(e, "__proto__"))
|
|
351
|
+
return { valid: false, reason: "proto_pollution in entry" };
|
|
352
|
+
// className validation
|
|
353
|
+
if (typeof e.className !== "string")
|
|
354
|
+
return { valid: false, reason: "entry missing className" };
|
|
355
|
+
if (e.className.length > 500)
|
|
356
|
+
return { valid: false, reason: "className too long" };
|
|
357
|
+
if (!JAVA_CLASS_PATTERN.test(e.className)) {
|
|
358
|
+
return { valid: false, reason: `invalid className format: ${e.className.slice(0, 50)}` };
|
|
359
|
+
}
|
|
360
|
+
// Embedding validation
|
|
361
|
+
if (!Array.isArray(e.embedding))
|
|
362
|
+
return { valid: false, reason: "entry missing embedding array" };
|
|
363
|
+
if (e.embedding.length !== dims) {
|
|
364
|
+
return { valid: false, reason: `embedding dimension mismatch: expected ${dims}, got ${e.embedding.length}` };
|
|
365
|
+
}
|
|
366
|
+
for (const val of e.embedding) {
|
|
367
|
+
if (typeof val !== "number" || !Number.isFinite(val)) {
|
|
368
|
+
return { valid: false, reason: "embedding contains non-finite value" };
|
|
369
|
+
}
|
|
370
|
+
if (Math.abs(val) > 100) {
|
|
371
|
+
return { valid: false, reason: "embedding value out of range (|x| > 100)" };
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return { valid: true };
|
|
376
|
+
}
|
|
377
|
+
// ── Registry index validation ─────────────────────────────────────────────────
|
|
378
|
+
/**
|
|
379
|
+
* Validate an embedding registry index (index.json) returned from a remote server.
|
|
380
|
+
* Ensures each bundle entry has the expected field types to prevent TypeErrors
|
|
381
|
+
* from malformed/malicious registry responses.
|
|
382
|
+
*/
|
|
383
|
+
export function validateEmbedRegistryIndex(data) {
|
|
384
|
+
if (!data || typeof data !== "object")
|
|
385
|
+
return { valid: false, reason: "registry must be an object" };
|
|
386
|
+
const d = data;
|
|
387
|
+
if (typeof d.version !== "number")
|
|
388
|
+
return { valid: false, reason: "missing or invalid version" };
|
|
389
|
+
if (!Array.isArray(d.bundles))
|
|
390
|
+
return { valid: false, reason: "bundles must be an array" };
|
|
391
|
+
if (d.bundles.length > 50_000)
|
|
392
|
+
return { valid: false, reason: "too many bundles (>50k)" };
|
|
393
|
+
for (let i = 0; i < d.bundles.length; i++) {
|
|
394
|
+
const entry = d.bundles[i];
|
|
395
|
+
if (!entry || typeof entry !== "object")
|
|
396
|
+
return { valid: false, reason: `bundle[${i}] must be an object` };
|
|
397
|
+
const e = entry;
|
|
398
|
+
if (typeof e.url !== "string" || e.url.length > 2000)
|
|
399
|
+
return { valid: false, reason: `bundle[${i}].url invalid` };
|
|
400
|
+
if (typeof e.sha256 !== "string" || !/^[a-f0-9]{64}$/i.test(e.sha256))
|
|
401
|
+
return { valid: false, reason: `bundle[${i}].sha256 invalid` };
|
|
402
|
+
if (typeof e.model !== "string" || e.model.length > 200)
|
|
403
|
+
return { valid: false, reason: `bundle[${i}].model invalid` };
|
|
404
|
+
if (typeof e.targetId !== "string" || e.targetId.length > 200)
|
|
405
|
+
return { valid: false, reason: `bundle[${i}].targetId invalid` };
|
|
406
|
+
if (typeof e.targetVersion !== "string" || e.targetVersion.length > 200)
|
|
407
|
+
return { valid: false, reason: `bundle[${i}].targetVersion invalid` };
|
|
408
|
+
if (e.targetType != null && !["mod", "vanilla", "modloader"].includes(e.targetType)) {
|
|
409
|
+
return { valid: false, reason: `bundle[${i}].targetType invalid` };
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return { valid: true };
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Validate a graph registry index (index.json) returned from a remote server.
|
|
416
|
+
*/
|
|
417
|
+
export function validateGraphRegistryIndex(data) {
|
|
418
|
+
if (!data || typeof data !== "object")
|
|
419
|
+
return { valid: false, reason: "registry must be an object" };
|
|
420
|
+
const d = data;
|
|
421
|
+
if (typeof d.version !== "number")
|
|
422
|
+
return { valid: false, reason: "missing or invalid version" };
|
|
423
|
+
if (!Array.isArray(d.graphs))
|
|
424
|
+
return { valid: false, reason: "graphs must be an array" };
|
|
425
|
+
if (d.graphs.length > 50_000)
|
|
426
|
+
return { valid: false, reason: "too many graphs (>50k)" };
|
|
427
|
+
for (let i = 0; i < d.graphs.length; i++) {
|
|
428
|
+
const entry = d.graphs[i];
|
|
429
|
+
if (!entry || typeof entry !== "object")
|
|
430
|
+
return { valid: false, reason: `graph[${i}] must be an object` };
|
|
431
|
+
const e = entry;
|
|
432
|
+
if (typeof e.graphUrl !== "string" || e.graphUrl.length > 2000)
|
|
433
|
+
return { valid: false, reason: `graph[${i}].graphUrl invalid` };
|
|
434
|
+
if (typeof e.sha256 !== "string" || !/^[a-f0-9]{64}$/i.test(e.sha256))
|
|
435
|
+
return { valid: false, reason: `graph[${i}].sha256 invalid` };
|
|
436
|
+
if (typeof e.modId !== "string" || e.modId.length > 200)
|
|
437
|
+
return { valid: false, reason: `graph[${i}].modId invalid` };
|
|
438
|
+
if (typeof e.version !== "string" || e.version.length > 200)
|
|
439
|
+
return { valid: false, reason: `graph[${i}].version invalid` };
|
|
440
|
+
if (e.targetType != null && !["mod", "vanilla", "modloader"].includes(e.targetType)) {
|
|
441
|
+
return { valid: false, reason: `graph[${i}].targetType invalid` };
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return { valid: true };
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.test.d.ts","sourceRoot":"","sources":["../src/security.test.ts"],"names":[],"mappings":""}
|