diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index fb173ed..dc80f13 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -6,7 +6,7 @@ runs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 26 cache: npm - name: Install dependencies diff --git a/.github/workflows/lint-and-check-gen.yml b/.github/workflows/lint-and-check-gen.yml index b2c39c2..0dc0b1a 100644 --- a/.github/workflows/lint-and-check-gen.yml +++ b/.github/workflows/lint-and-check-gen.yml @@ -25,6 +25,9 @@ jobs: - name: Lint schema run: npm run lint:schema + - name: Lint UUIDs + run: npm run lint:uuids + lint-links: runs-on: ubuntu-latest diff --git a/.github/workflows/push-task-list-changes.yml b/.github/workflows/push-task-list-changes.yml index 8419194..4bca8d7 100644 --- a/.github/workflows/push-task-list-changes.yml +++ b/.github/workflows/push-task-list-changes.yml @@ -17,7 +17,7 @@ jobs: - uses: ./.github/actions/setup - name: Generate list - run: npm run gen:list:tedious + run: npm run gen:list:official - name: Checkout plugin repository uses: actions/checkout@v6 @@ -28,7 +28,7 @@ jobs: - name: Copy task tiers to plugin repository run: | - cp lists/tedious.json collection-log-master/src/main/resources/com/collectionlogmaster/task-list.json + cp lists/official.json collection-log-master/src/main/resources/com/collectionlogmaster/task-list.json - name: Create PR uses: ./.github/actions/create-pr diff --git a/.vscode/settings.json b/.vscode/settings.json index 3de4090..ed87089 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,7 +13,7 @@ "[jsonc]": { "editor.defaultFormatter": "biomejs.biome" }, - "typescript.tsdk": "node_modules/typescript/lib", + "js/ts.tsdk.path": "node_modules/typescript/lib", "editor.formatOnSave": true, "editor.formatOnPaste": true, "emmet.showExpandedAbbreviation": "never", diff --git a/bin/gen-uuids.mts b/bin/gen-uuids.mts deleted file mode 100644 index b63849e..0000000 --- a/bin/gen-uuids.mts +++ /dev/null @@ -1,19 +0,0 @@ -import { randomUUID } from 'node:crypto'; -import { readFile, writeFile } from 'node:fs/promises'; -import { Glob } from 'glob'; -import type { TaskTier } from '@/types.js'; -import fmt from '@/util/formatter.mjs'; - -const tierWalker = new Glob('./tiers/*.json', {}); -for await (const tierFile of tierWalker) { - const tierData: TaskTier = JSON.parse((await readFile(tierFile)).toString()); - for (const task of tierData.tasks) { - if (task.id === '' || task.id == null) { - task.id = randomUUID(); - console.log(`Generated UUID ${task.id} for task ${task.name}`); - } - } - - // biome-ignore lint/style/noNonNullAssertion: trust me bro - await writeFile(tierFile, fmt.Serialize(tierData)!); -} diff --git a/bin/validate-links.mts b/bin/validate-links.mts index 60171da..15e899a 100644 --- a/bin/validate-links.mts +++ b/bin/validate-links.mts @@ -10,6 +10,7 @@ import ajv from '@/util/ajv.mjs'; const CACHE_DIR = './.cache/links'; const IMAGE_CONTENT_TYPE_REGEX = /^image\/(png|gif)/; const HTML_CONTENT_TYPE_REGEX = /^text\/html/; +const HTTP_STATUS_OK = 200; function cacheKey(link: string): string { return hash('sha1', link); @@ -23,7 +24,7 @@ async function validateLink(link: string, contentTypeRegex: RegExp): Promise(); + +const tierWalker = new Glob('./tiers/*.json', {}); +for await (const tierFile of tierWalker) { + const tierData: TaskTier = JSON.parse((await readFile(tierFile)).toString()); + for (const task of tierData.tasks) { + if (shouldGenerate && (task.id === '' || task.id == null)) { + task.id = randomUUID(); + console.log(`Generated UUID ${task.id} for task ${task.name}`); + } + + const uuidTasks = uuidMap.getOrInsert(task.id ?? '', []); + uuidTasks.push([tierFile, task]); + } + + if (shouldGenerate) { + // biome-ignore lint/style/noNonNullAssertion: trust me bro + await writeFile(tierFile, fmt.Serialize(tierData)!); + } +} + +let hasErrors = false; + +const emptyIdTasks = uuidMap.get('') ?? []; +if (emptyIdTasks.length > 0) { + hasErrors = true; + + console.error('Tasks without an ID found:'); + for (const [file, task] of emptyIdTasks) { + console.error(`- ${file}: ${task.name}`); + } + console.error(); +} + +uuidMap.delete(''); +for (const [uuid, tasks] of uuidMap.entries()) { + if (tasks.length <= 1) { + continue; + } + + console.error(`Duplicate tasks with ID ${uuid}:`); + for (const [file, task] of tasks) { + console.error(`- ${file}: ${task.name}`); + } +} + +if (hasErrors) { + exit(1); +} diff --git a/biome.jsonc b/biome.jsonc index 855b6c9..65574c5 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json", + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "extends": ["ultracite"], "files": { "includes": [ @@ -7,7 +7,7 @@ // we'll use FracturedJson to format the tasks files "!tiers/*.json", "!lists/*.json", - "!ext/**", + "!ext", "!package-lock.json", "!types.d.ts" ] @@ -28,9 +28,16 @@ "noConsole": "off" }, "nursery": { - "noUselessUndefined": "off", - "noAwaitInLoop": "off" + "noUselessUndefined": "off" + }, + "performance": { + "noAwaitInLoops": "off" } } + }, + "javascript": { + "formatter": { + "quoteStyle": "single" + } } } diff --git a/package-lock.json b/package-lock.json index e212ab5..e7458d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,21 +5,21 @@ "packages": { "": { "devDependencies": { - "@biomejs/biome": "2.0.6", - "@tsconfig/node-ts": "^23.6.1", - "@tsconfig/node22": "^22.0.2", + "@biomejs/biome": "2.2.6", + "@tsconfig/node-ts": "^23.6.4", + "@tsconfig/node26": "^26.0.0", "@types/ajv": "^0.0.5", - "@types/node": "^24.0.13", - "ajv": "^8.17.1", + "@types/node": "^26.1.0", + "ajv": "^8.20.0", "ajv-formats": "^3.0.1", - "fracturedjsonjs": "^4.1.0", - "glob": "^11.0.3", + "fracturedjsonjs": "^4.1.1", + "glob": "^11.1.0", "json-schema-to-typescript": "^15.0.4", - "lefthook": "^1.12.1", + "lefthook": "^1.13.6", "radash": "^12.1.1", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "ultracite": "5.0.32" + "tsx": "^4.23.0", + "typescript": "^6.0.3", + "ultracite": "^5.6.4" } }, "node_modules/@apidevtools/json-schema-ref-parser": { @@ -41,9 +41,9 @@ } }, "node_modules/@biomejs/biome": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.0.6.tgz", - "integrity": "sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.6.tgz", + "integrity": "sha512-yKTCNGhek0rL5OEW1jbLeZX8LHaM8yk7+3JRGv08my+gkpmtb5dDE+54r2ZjZx0ediFEn1pYBOJSmOdDP9xtFw==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -57,20 +57,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.0.6", - "@biomejs/cli-darwin-x64": "2.0.6", - "@biomejs/cli-linux-arm64": "2.0.6", - "@biomejs/cli-linux-arm64-musl": "2.0.6", - "@biomejs/cli-linux-x64": "2.0.6", - "@biomejs/cli-linux-x64-musl": "2.0.6", - "@biomejs/cli-win32-arm64": "2.0.6", - "@biomejs/cli-win32-x64": "2.0.6" + "@biomejs/cli-darwin-arm64": "2.2.6", + "@biomejs/cli-darwin-x64": "2.2.6", + "@biomejs/cli-linux-arm64": "2.2.6", + "@biomejs/cli-linux-arm64-musl": "2.2.6", + "@biomejs/cli-linux-x64": "2.2.6", + "@biomejs/cli-linux-x64-musl": "2.2.6", + "@biomejs/cli-win32-arm64": "2.2.6", + "@biomejs/cli-win32-x64": "2.2.6" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.0.6.tgz", - "integrity": "sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.6.tgz", + "integrity": "sha512-UZPmn3M45CjTYulgcrFJFZv7YmK3pTxTJDrFYlNElT2FNnkkX4fsxjExTSMeWKQYoZjvekpH5cvrYZZlWu3yfA==", "cpu": [ "arm64" ], @@ -85,9 +85,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.0.6.tgz", - "integrity": "sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.6.tgz", + "integrity": "sha512-HOUIquhHVgh/jvxyClpwlpl/oeMqntlteL89YqjuFDiZ091P0vhHccwz+8muu3nTyHWM5FQslt+4Jdcd67+xWQ==", "cpu": [ "x64" ], @@ -102,13 +102,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.0.6.tgz", - "integrity": "sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.6.tgz", + "integrity": "sha512-BpGtuMJGN+o8pQjvYsUKZ+4JEErxdSmcRD/JG3mXoWc6zrcA7OkuyGFN1mDggO0Q1n7qXxo/PcupHk8gzijt5g==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -119,13 +122,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.6.tgz", - "integrity": "sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.6.tgz", + "integrity": "sha512-TjCenQq3N6g1C+5UT3jE1bIiJb5MWQvulpUngTIpFsL4StVAUXucWD0SL9MCW89Tm6awWfeXBbZBAhJwjyFbRQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -136,13 +142,16 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.0.6.tgz", - "integrity": "sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.6.tgz", + "integrity": "sha512-1HaM/dpI/1Z68zp8ZdT6EiBq+/O/z97a2AiHMl+VAdv5/ELckFt9EvRb8hDHpk8hUMoz03gXkC7VPXOVtU7faA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -153,13 +162,16 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.6.tgz", - "integrity": "sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.6.tgz", + "integrity": "sha512-1ZcBux8zVM3JhWN2ZCPaYf0+ogxXG316uaoXJdgoPZcdK/rmRcRY7PqHdAos2ExzvjIdvhQp72UcveI98hgOog==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -170,9 +182,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.0.6.tgz", - "integrity": "sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.6.tgz", + "integrity": "sha512-h3A88G8PGM1ryTeZyLlSdfC/gz3e95EJw9BZmA6Po412DRqwqPBa2Y9U+4ZSGUAXCsnSQE00jLV8Pyrh0d+jQw==", "cpu": [ "arm64" ], @@ -187,9 +199,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.0.6.tgz", - "integrity": "sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.6.tgz", + "integrity": "sha512-yx0CqeOhPjYQ5ZXgPfu8QYkgBhVJyvWe36as7jRuPrKPO5ylVDfwVtPQ+K/mooNTADW0IhxOZm3aPu16dP8yNQ==", "cpu": [ "x64" ], @@ -227,9 +239,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", - "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", "cpu": [ "ppc64" ], @@ -244,9 +256,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", - "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", "cpu": [ "arm" ], @@ -261,9 +273,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", - "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", "cpu": [ "arm64" ], @@ -278,9 +290,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", - "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", "cpu": [ "x64" ], @@ -295,9 +307,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", - "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", "cpu": [ "arm64" ], @@ -312,9 +324,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", - "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", "cpu": [ "x64" ], @@ -329,9 +341,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", - "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", "cpu": [ "arm64" ], @@ -346,9 +358,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", - "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", "cpu": [ "x64" ], @@ -363,9 +375,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", - "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", "cpu": [ "arm" ], @@ -380,9 +392,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", - "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", "cpu": [ "arm64" ], @@ -397,9 +409,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", - "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", "cpu": [ "ia32" ], @@ -414,9 +426,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", - "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", "cpu": [ "loong64" ], @@ -431,9 +443,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", - "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", "cpu": [ "mips64el" ], @@ -448,9 +460,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", - "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", "cpu": [ "ppc64" ], @@ -465,9 +477,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", - "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", "cpu": [ "riscv64" ], @@ -482,9 +494,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", - "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", "cpu": [ "s390x" ], @@ -499,9 +511,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", - "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", "cpu": [ "x64" ], @@ -516,9 +528,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", - "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", "cpu": [ "arm64" ], @@ -533,9 +545,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", - "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", "cpu": [ "x64" ], @@ -550,9 +562,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", - "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", "cpu": [ "arm64" ], @@ -567,9 +579,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", - "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", "cpu": [ "x64" ], @@ -584,9 +596,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", - "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", "cpu": [ "arm64" ], @@ -601,9 +613,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", - "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", "cpu": [ "x64" ], @@ -618,9 +630,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", - "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", "cpu": [ "arm64" ], @@ -635,9 +647,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", - "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", "cpu": [ "ia32" ], @@ -652,9 +664,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", - "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", "cpu": [ "x64" ], @@ -668,54 +680,16 @@ "node": ">=18" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" - }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", @@ -723,297 +697,33 @@ "dev": true, "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.2.tgz", - "integrity": "sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.2.tgz", - "integrity": "sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz", - "integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.2.tgz", - "integrity": "sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.2.tgz", - "integrity": "sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.2.tgz", - "integrity": "sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.2.tgz", - "integrity": "sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.2.tgz", - "integrity": "sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.2.tgz", - "integrity": "sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.2.tgz", - "integrity": "sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.2.tgz", - "integrity": "sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.2.tgz", - "integrity": "sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.2.tgz", - "integrity": "sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.2.tgz", - "integrity": "sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.2.tgz", - "integrity": "sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.2.tgz", - "integrity": "sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.2.tgz", - "integrity": "sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.2.tgz", - "integrity": "sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.2.tgz", - "integrity": "sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==", - "cpu": [ - "ia32" - ], + "node_modules/@trpc/server": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.18.0.tgz", + "integrity": "sha512-JAvXOuNTxgXjIDfQaOvDq1j66LMNfDJUH1IU7Slfn8EvRv2EkH6ehu3A7zpYhjO0syHHiYg77v2lG2JFJgvw7Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.2.tgz", - "integrity": "sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==", - "cpu": [ - "x64" + "funding": [ + "https://trpc.io/sponsor" ], - "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "bin": { + "intent": "bin/intent.js" + }, + "peerDependencies": { + "typescript": ">=5.7.2" + } }, "node_modules/@tsconfig/node-ts": { - "version": "23.6.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node-ts/-/node-ts-23.6.1.tgz", - "integrity": "sha512-1E5cUp+S65pLKKI9VrGMQPWDHxOEq3dAGM2onG3fLeSRwWbylYFwhIjnzJikjSN7w2nCgwxmv8ifvUKDFkK38Q==", + "version": "23.6.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node-ts/-/node-ts-23.6.4.tgz", + "integrity": "sha512-37BMJvNQZ+vTgd1xG2TGBkJ6ENeT4eO4Wh2CHrnn0IwH7ybLFCzh4Uc//kc7UIvqiRac4uGdIc1meKOjMSlKzw==", "dev": true, "license": "MIT" }, - "node_modules/@tsconfig/node22": { - "version": "22.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.2.tgz", - "integrity": "sha512-Kmwj4u8sDRDrMYRoN9FDEcXD8UpBSaPQQ24Gz+Gamqfm7xxn+GBR7ge/Z7pK8OXNGyUzbSwJj+TH6B+DS/epyA==", + "node_modules/@tsconfig/node26": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node26/-/node26-26.0.0.tgz", + "integrity": "sha512-AlW882moMu/JzvTVjdGqJEsrqD5nSWHiFD7Aeuw6Rb58S4Aig+09mDUFFlXJx/y6/y77NwGYLlqhWxvolcC0sw==", "dev": true, "license": "MIT" }, @@ -1024,30 +734,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1056,198 +742,57 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "24.0.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz", - "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz", + "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.8.0" + "undici-types": "~8.3.0" } }, - "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "ajv": "^8.0.0" }, "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "ajv": "^8.0.0" }, "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { + "ajv": { "optional": true } } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1255,77 +800,40 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 16" + "node": "18 || 20 || >=22" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=7.0.0" + "node": "18 || 20 || >=22" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/citty": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz", + "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==", "dev": true, "license": "MIT" }, "node_modules/commander": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", - "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "dev": true, "license": "MIT", "engines": { @@ -1347,34 +855,6 @@ "node": ">= 8" } }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -1385,31 +865,10 @@ "node": ">=0.10.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, "node_modules/esbuild": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", - "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1420,52 +879,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.6", - "@esbuild/android-arm": "0.25.6", - "@esbuild/android-arm64": "0.25.6", - "@esbuild/android-x64": "0.25.6", - "@esbuild/darwin-arm64": "0.25.6", - "@esbuild/darwin-x64": "0.25.6", - "@esbuild/freebsd-arm64": "0.25.6", - "@esbuild/freebsd-x64": "0.25.6", - "@esbuild/linux-arm": "0.25.6", - "@esbuild/linux-arm64": "0.25.6", - "@esbuild/linux-ia32": "0.25.6", - "@esbuild/linux-loong64": "0.25.6", - "@esbuild/linux-mips64el": "0.25.6", - "@esbuild/linux-ppc64": "0.25.6", - "@esbuild/linux-riscv64": "0.25.6", - "@esbuild/linux-s390x": "0.25.6", - "@esbuild/linux-x64": "0.25.6", - "@esbuild/netbsd-arm64": "0.25.6", - "@esbuild/netbsd-x64": "0.25.6", - "@esbuild/openbsd-arm64": "0.25.6", - "@esbuild/openbsd-x64": "0.25.6", - "@esbuild/openharmony-arm64": "0.25.6", - "@esbuild/sunos-x64": "0.25.6", - "@esbuild/win32-arm64": "0.25.6", - "@esbuild/win32-ia32": "0.25.6", - "@esbuild/win32-x64": "0.25.6" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, "node_modules/fast-deep-equal": { @@ -1476,9 +915,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", + "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", "dev": true, "funding": [ { @@ -1493,11 +932,14 @@ "license": "BSD-3-Clause" }, "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -1525,9 +967,9 @@ } }, "node_modules/fracturedjsonjs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/fracturedjsonjs/-/fracturedjsonjs-4.1.0.tgz", - "integrity": "sha512-qy6LPA8OOiiyRHt5/sNKDayD7h5r3uHmHxSOLbBsgtU/hkt5vOVWOR51MdfDbeCNfj7k/dKCRbXYm8FBAJcgWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fracturedjsonjs/-/fracturedjsonjs-4.1.1.tgz", + "integrity": "sha512-zpxgrF586btwidqdDRggOviFnihJh2uqompWfV8EkSd0zPROgQKToY2QCPkG+2uzHvt1fmRkqZIWklAnsKuRsA==", "dev": true, "license": "MIT" }, @@ -1546,29 +988,17 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-tsconfig": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", - "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", + "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" @@ -1593,16 +1023,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1624,13 +1044,13 @@ "license": "ISC" }, "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" }, "engines": { "node": "20 || >=22" @@ -1639,18 +1059,21 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1698,9 +1121,9 @@ "license": "MIT" }, "node_modules/lefthook": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.12.1.tgz", - "integrity": "sha512-r+po/Y+P3kGU1RA5grotgLi+sDpdTnV9KVDczIeqj1F8we7cD3ZHH4YKyIcrkORZpqDckipWxq4sKvITKvBzYw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.13.6.tgz", + "integrity": "sha512-ojj4/4IJ29Xn4drd5emqVgilegAPN3Kf0FQM2p/9+lwSTpU+SZ1v4Ig++NF+9MOa99UKY8bElmVrLhnUUNFh5g==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1708,22 +1131,22 @@ "lefthook": "bin/index.js" }, "optionalDependencies": { - "lefthook-darwin-arm64": "1.12.1", - "lefthook-darwin-x64": "1.12.1", - "lefthook-freebsd-arm64": "1.12.1", - "lefthook-freebsd-x64": "1.12.1", - "lefthook-linux-arm64": "1.12.1", - "lefthook-linux-x64": "1.12.1", - "lefthook-openbsd-arm64": "1.12.1", - "lefthook-openbsd-x64": "1.12.1", - "lefthook-windows-arm64": "1.12.1", - "lefthook-windows-x64": "1.12.1" + "lefthook-darwin-arm64": "1.13.6", + "lefthook-darwin-x64": "1.13.6", + "lefthook-freebsd-arm64": "1.13.6", + "lefthook-freebsd-x64": "1.13.6", + "lefthook-linux-arm64": "1.13.6", + "lefthook-linux-x64": "1.13.6", + "lefthook-openbsd-arm64": "1.13.6", + "lefthook-openbsd-x64": "1.13.6", + "lefthook-windows-arm64": "1.13.6", + "lefthook-windows-x64": "1.13.6" } }, "node_modules/lefthook-darwin-arm64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.12.1.tgz", - "integrity": "sha512-BMGqDU1JtXc5S7ObHE6l9QaUZXO4GQyMcrqeqz1C+4DbmRqB/e0YP9kKiBnFZ86Rb9IQ85k2bzgV7HG5etjfUQ==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.13.6.tgz", + "integrity": "sha512-m6Lb77VGc84/Qo21Lhq576pEvcgFCnvloEiP02HbAHcIXD0RTLy9u2yAInrixqZeaz13HYtdDaI7OBYAAdVt8A==", "cpu": [ "arm64" ], @@ -1735,9 +1158,9 @@ ] }, "node_modules/lefthook-darwin-x64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-1.12.1.tgz", - "integrity": "sha512-mUuLK+TumNaSWvuK0R1rUJ5QsGvSv4IZLsDNhc67EwRe31qhgfumeblfENoXdk2xSaM8pakByF73NzrMjAfQpg==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-1.13.6.tgz", + "integrity": "sha512-CoRpdzanu9RK3oXR1vbEJA5LN7iB+c7hP+sONeQJzoOXuq4PNKVtEaN84Gl1BrVtCNLHWFAvCQaZPPiiXSy8qg==", "cpu": [ "x64" ], @@ -1749,9 +1172,9 @@ ] }, "node_modules/lefthook-freebsd-arm64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.12.1.tgz", - "integrity": "sha512-Gm2kTp8w6JCTXAitvf9omvVr5/6d6TKhancmIIJyTvDFXu5pA969jY5BCsrYsMcz9XQYBhIda4UBnJLMtSkKrw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.13.6.tgz", + "integrity": "sha512-X4A7yfvAJ68CoHTqP+XvQzdKbyd935sYy0bQT6Ajz7FL1g7hFiro8dqHSdPdkwei9hs8hXeV7feyTXbYmfjKQQ==", "cpu": [ "arm64" ], @@ -1763,9 +1186,9 @@ ] }, "node_modules/lefthook-freebsd-x64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.12.1.tgz", - "integrity": "sha512-a0t5KSFKA2gIZIKa2zBiCkoCObgKxkDXTPrEmhFSDkTgNtlF+9+BTWMXJn0Y9hx+abAZNapf917B+Fo1qrYr7A==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.13.6.tgz", + "integrity": "sha512-ai2m+Sj2kGdY46USfBrCqLKe9GYhzeq01nuyDYCrdGISePeZ6udOlD1k3lQKJGQCHb0bRz4St0r5nKDSh1x/2A==", "cpu": [ "x64" ], @@ -1777,9 +1200,9 @@ ] }, "node_modules/lefthook-linux-arm64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-1.12.1.tgz", - "integrity": "sha512-uzC8BDcACzcYI9hsD2/HAdqUSbAZSdLEGuCg+l3r7BEtPXkucEPz3E+dW7MjTIM+2nbz+Oh2VASTx3jUE68/Rg==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-1.13.6.tgz", + "integrity": "sha512-cbo4Wtdq81GTABvikLORJsAWPKAJXE8Q5RXsICFUVznh5PHigS9dFW/4NXywo0+jfFPCT6SYds2zz4tCx6DA0Q==", "cpu": [ "arm64" ], @@ -1791,9 +1214,9 @@ ] }, "node_modules/lefthook-linux-x64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-1.12.1.tgz", - "integrity": "sha512-1hJRZg5kMAtNw+6nJJoguFnXjM/SavNzaEicrbqDM2QA6dzD2DtO0zZ6GDjWpNmUqlix7VEVGDZqdKR6L3ZdRw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-1.13.6.tgz", + "integrity": "sha512-uJl9vjCIIBTBvMZkemxCE+3zrZHlRO7Oc+nZJ+o9Oea3fu+W82jwX7a7clw8jqNfaeBS+8+ZEQgiMHWCloTsGw==", "cpu": [ "x64" ], @@ -1805,9 +1228,9 @@ ] }, "node_modules/lefthook-openbsd-arm64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.12.1.tgz", - "integrity": "sha512-SWuHbIgrDimL4lUXdpXp0EfwTXnz0ESJf3w2cCJ4zhPwhIUn8jnEnYLXDaeOA21YIWK1hR3G991Ma1DQyap2gw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.13.6.tgz", + "integrity": "sha512-7r153dxrNRQ9ytRs2PmGKKkYdvZYFPre7My7XToSTiRu5jNCq++++eAKVkoyWPduk97dGIA+YWiEr5Noe0TK2A==", "cpu": [ "arm64" ], @@ -1819,9 +1242,9 @@ ] }, "node_modules/lefthook-openbsd-x64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.12.1.tgz", - "integrity": "sha512-DuIpSBOI/qBDqsei9vvO8O/D+sz7YJtGOapmN0FqPf5rjkyCOwTVEmyDKlpp4g2aN3qNUpct/zQJbWQGRs5tLg==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.13.6.tgz", + "integrity": "sha512-Z+UhLlcg1xrXOidK3aLLpgH7KrwNyWYE3yb7ITYnzJSEV8qXnePtVu8lvMBHs/myzemjBzeIr/U/+ipjclR06g==", "cpu": [ "x64" ], @@ -1833,9 +1256,9 @@ ] }, "node_modules/lefthook-windows-arm64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-1.12.1.tgz", - "integrity": "sha512-So6jozPLISV6f4lY35aHzkEweFzGZPSD2+vuNEiGnIg+Im9HGaiwp8U/GhhMef4mU4SFCedn+6gHCpA6yd0LAQ==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-1.13.6.tgz", + "integrity": "sha512-Uxef6qoDxCmUNQwk8eBvddYJKSBFglfwAY9Y9+NnnmiHpWTjjYiObE9gT2mvGVpEgZRJVAatBXc+Ha5oDD/OgQ==", "cpu": [ "arm64" ], @@ -1847,9 +1270,9 @@ ] }, "node_modules/lefthook-windows-x64": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-1.12.1.tgz", - "integrity": "sha512-9bnDuzWHcK1iHsgOBO2eOjVJsVSYbNfoVgimU3w6DLoiWUR9hJu5FflJgHWveOb0Ptznzxe5TE0JPClVf3kMFQ==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-1.13.6.tgz", + "integrity": "sha512-mOZoM3FQh3o08M8PQ/b3IYuL5oo36D9ehczIw1dAgp1Ly+Tr4fJ96A+4SEJrQuYeRD4mex9bR7Ps56I73sBSZA==", "cpu": [ "x64" ], @@ -1861,50 +1284,33 @@ ] }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/loupe": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", - "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, "node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, "node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1921,39 +1327,31 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "node_modules/nypm": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.8.tgz", + "integrity": "sha512-Q9K4Diu6l5u6xJQogeFSs/zKtyMSgFKFtRQV+tHP4kL7KPm2grpBU0dFIwFaXwNxN0MtfKWc43VpCugAa+LPsw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", + "dependencies": { + "citty": "^0.2.2", + "pathe": "^2.0.3", + "tinyexec": "^1.2.4" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "nypm": "dist/cli.mjs" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=18" } }, "node_modules/package-json-from-dist": { @@ -1974,9 +1372,9 @@ } }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1984,7 +1382,7 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1997,16 +1395,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2015,9 +1403,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -2027,39 +1415,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.4.tgz", + "integrity": "sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==", "dev": true, "license": "MIT", "bin": { @@ -2092,56 +1451,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/rollup": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.2.tgz", - "integrity": "sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.44.2", - "@rollup/rollup-android-arm64": "4.44.2", - "@rollup/rollup-darwin-arm64": "4.44.2", - "@rollup/rollup-darwin-x64": "4.44.2", - "@rollup/rollup-freebsd-arm64": "4.44.2", - "@rollup/rollup-freebsd-x64": "4.44.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.44.2", - "@rollup/rollup-linux-arm-musleabihf": "4.44.2", - "@rollup/rollup-linux-arm64-gnu": "4.44.2", - "@rollup/rollup-linux-arm64-musl": "4.44.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.44.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.44.2", - "@rollup/rollup-linux-riscv64-gnu": "4.44.2", - "@rollup/rollup-linux-riscv64-musl": "4.44.2", - "@rollup/rollup-linux-s390x-gnu": "4.44.2", - "@rollup/rollup-linux-x64-gnu": "4.44.2", - "@rollup/rollup-linux-x64-musl": "4.44.2", - "@rollup/rollup-win32-arm64-msvc": "4.44.2", - "@rollup/rollup-win32-ia32-msvc": "4.44.2", - "@rollup/rollup-win32-x64-msvc": "4.44.2", - "fsevents": "~2.3.2" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2165,13 +1474,6 @@ "node": ">=8" } }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -2192,217 +1494,85 @@ "dev": true, "license": "MIT" }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/tinyexec": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" }, "engines": { - "node": ">=12" + "node": ">=12.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/strip-literal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", - "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "node_modules/trpc-cli": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/trpc-cli/-/trpc-cli-0.11.0.tgz", + "integrity": "sha512-cFt5LVl1EzwmhZtWa6xPBWr6rgLXGgEOqmcTMIYcI6fLQE1REgu6tS55LmqUJs5kVSXrOd1z5/aufJS71xUUyA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "js-tokens": "^9.0.1" + "commander": "^14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "bin": { + "trpc-cli": "dist/bin.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", - "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@orpc/server": "^1.0.0", + "@trpc/server": "^10.45.2 || ^11.0.1", + "@valibot/to-json-schema": "^1.1.0", + "effect": "^3.14.2 || ^4.0.0", + "valibot": "^1.1.0", + "zod": "^3.24.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@orpc/server": { + "optional": true + }, + "@trpc/server": { + "optional": true + }, + "@valibot/to-json-schema": { + "optional": true + }, + "effect": { + "optional": true + }, + "valibot": { + "optional": true + }, + "zod": { + "optional": true + } } }, "node_modules/tsx": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", - "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.0.tgz", + "integrity": "sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" + "esbuild": "~0.28.0" }, "bin": { "tsx": "dist/cli.mjs" @@ -2415,9 +1585,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2429,200 +1599,31 @@ } }, "node_modules/ultracite": { - "version": "5.0.32", - "resolved": "https://registry.npmjs.org/ultracite/-/ultracite-5.0.32.tgz", - "integrity": "sha512-JjVNswL1mkIaOkPVh1nuEGnbEaCa94+ftqJ9hpRX2Y+jt72pcv32JeWg3Dqhkz/e3l449f7KAzMHO4x6IbxFZQ==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/ultracite/-/ultracite-5.6.4.tgz", + "integrity": "sha512-Ejgh8uYhqgV1QzKAE1vwRHHu24mTCg43DLOJG+gXi7hHSAPAWdDEs9fgBiuYZxH2bsQiWSsEF6hMv5aLJuM6/w==", "dev": true, "license": "MIT", "dependencies": { "@clack/prompts": "^0.11.0", - "commander": "^14.0.0", + "@trpc/server": "^11.6.0", "deepmerge": "^4.3.1", "jsonc-parser": "^3.3.1", - "vitest": "^3.2.4" + "nypm": "^0.6.2", + "trpc-cli": "^0.11.0", + "zod": "^4.1.12" }, "bin": { "ultracite": "dist/index.js" } }, "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", "dev": true, "license": "MIT" }, - "node_modules/vite": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz", - "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.6", - "picomatch": "^4.0.2", - "postcss": "^8.5.6", - "rollup": "^4.40.0", - "tinyglobby": "^0.2.14" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2639,119 +1640,14 @@ "node": ">= 8" } }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "dev": true, "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/package.json b/package.json index fbd2f4a..2dcbe38 100644 --- a/package.json +++ b/package.json @@ -6,29 +6,36 @@ "lint:ultracite": "ultracite lint", "lint:tasks": "tsx bin/frac.mts --lint tiers/*.json", "lint:schema": "tsx bin/validate-schema.mts", + "lint:uuids": "tsx bin/validate-uuids.mts", "lint:links": "tsx bin/validate-links.mts", - "lint": "npm run lint:ultracite && npm run lint:tasks && npm run lint:schema && npm run lint:links", + "lint": "npm run lint:ultracite && npm run lint:tasks && npm run lint:schema && npm run lint:uuids && npm run lint:links", "gen:types": "tsx bin/gen-types.mts", - "gen:uuids": "npx tsx bin/gen-uuids.mts", + "gen:uuids": "tsx bin/validate-uuids.mts --generate", "gen:list:official": "tsx bin/gen-list.mts official easy,medium,hard,elite,master", - "gen:list:tedious": "tsx bin/gen-list.mts tedious easy,medium,hard,elite,master-tedious", "all": "npm run format && npm run lint && npm run gen" }, "devDependencies": { - "@biomejs/biome": "2.0.6", - "@tsconfig/node-ts": "^23.6.1", - "@tsconfig/node22": "^22.0.2", + "@biomejs/biome": "2.2.6", + "@tsconfig/node-ts": "^23.6.4", + "@tsconfig/node26": "^26.0.0", "@types/ajv": "^0.0.5", - "@types/node": "^24.0.13", - "ajv": "^8.17.1", + "@types/node": "^26.1.0", + "ajv": "^8.20.0", "ajv-formats": "^3.0.1", - "fracturedjsonjs": "^4.1.0", - "glob": "^11.0.3", + "fracturedjsonjs": "^4.1.1", + "glob": "^11.1.0", "json-schema-to-typescript": "^15.0.4", - "lefthook": "^1.12.1", + "lefthook": "^1.13.6", "radash": "^12.1.1", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "ultracite": "5.0.32" + "tsx": "^4.23.0", + "typescript": "^6.0.3", + "ultracite": "^5.6.4" + }, + "volta": { + "node": "26.4.0" + }, + "allowScripts": { + "esbuild": true, + "lefthook": true } } diff --git a/tiers/master-tedious.json b/tiers/master-tedious.json deleted file mode 100644 index 9f7077e..0000000 --- a/tiers/master-tedious.json +++ /dev/null @@ -1,2498 +0,0 @@ -{ - "name": "master", - "tasks": [ - { - "id": "ef05cf24-406c-4235-9cdc-c029bc9a8259", - "name": "Infernal cape", - "tip": "Infernal cape", - "wikiLink": "https://oldschool.runescape.wiki/w/Infernal_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Infernal_cape_detail_animated.gif/320px-Infernal_cape_detail_animated.gif", - "displayItemId": 21295, - "verification": { - "method": "collection-log", - "itemIds": [ 21295 ], - "count": 1 - } - }, - { - "id": "173c4945-a37a-48a5-a86a-0cf02c898d71", - "name": "Get 3 new uniques from easy clues", - "tip": "Get 3 new uniques from easy clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(easy)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(easy)_detail.png/320px-Reward_casket_(easy)_detail.png", - "displayItemId": 20546, - "verification": { - "method": "collection-log", - "itemIds": [ - 20166, 10366, 10280, 12297, 2587, 2583, 2585, 3472, 2589, 2595, 2591, - 2593, 3473, 2597, 7332, 7338, 7344, 7350, 7356, 10306, 10308, 10310, - 10312, 10314, 23366, 23369, 23372, 23375, 23378, 20193, 20184, 20187, 20190, - 20196, 20178, 20169, 20172, 20175, 20181, 12231, 12225, 12227, 12229, 12233, - 12241, 12235, 12237, 12239, 12243, 12221, 12215, 12217, 12219, 12223, 12211, - 12205, 12207, 12209, 12213, 7362, 7366, 7364, 7368, 23381, 23384, 7394, - 7390, 7386, 7396, 7392, 7388, 12453, 12449, 12445, 12455, 12451, 12447, - 10458, 10464, 10462, 10466, 10460, 10468, 12193, 12195, 12253, 12255, 12265, - 12267, 10316, 10320, 10318, 10322, 10324, 2631, 2633, 2635, 12247, 2637, - 10392, 12245, 12249, 12251, 10398, 10394, 10396, 12375, 23363, 23354, 23360, - 23357, 20205, 20208, 10404, 10424, 10406, 10426, 10412, 10432, 10414, 10434, - 10408, 10428, 10410, 10430, 20211, 20217, 20214, 23351, 20199, 20202 - ], - "count": 113 - } - }, - { - "id": "58daee85-1d97-4752-932c-5a73595366bb", - "name": "Get 3 new uniques from easy clues", - "tip": "Get 3 new uniques from easy clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(easy)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(easy)_detail.png/320px-Reward_casket_(easy)_detail.png", - "displayItemId": 20546, - "verification": { - "method": "collection-log", - "itemIds": [ - 20166, 10366, 10280, 12297, 2587, 2583, 2585, 3472, 2589, 2595, 2591, - 2593, 3473, 2597, 7332, 7338, 7344, 7350, 7356, 10306, 10308, 10310, - 10312, 10314, 23366, 23369, 23372, 23375, 23378, 20193, 20184, 20187, 20190, - 20196, 20178, 20169, 20172, 20175, 20181, 12231, 12225, 12227, 12229, 12233, - 12241, 12235, 12237, 12239, 12243, 12221, 12215, 12217, 12219, 12223, 12211, - 12205, 12207, 12209, 12213, 7362, 7366, 7364, 7368, 23381, 23384, 7394, - 7390, 7386, 7396, 7392, 7388, 12453, 12449, 12445, 12455, 12451, 12447, - 10458, 10464, 10462, 10466, 10460, 10468, 12193, 12195, 12253, 12255, 12265, - 12267, 10316, 10320, 10318, 10322, 10324, 2631, 2633, 2635, 12247, 2637, - 10392, 12245, 12249, 12251, 10398, 10394, 10396, 12375, 23363, 23354, 23360, - 23357, 20205, 20208, 10404, 10424, 10406, 10426, 10412, 10432, 10414, 10434, - 10408, 10428, 10410, 10430, 20211, 20217, 20214, 23351, 20199, 20202 - ], - "count": 116 - } - }, - { - "id": "6193be06-c77d-4226-ad3d-260fbfedf91a", - "name": "Get 3 new uniques from easy clues", - "tip": "Get 3 new uniques from easy clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(easy)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(easy)_detail.png/320px-Reward_casket_(easy)_detail.png", - "displayItemId": 20546, - "verification": { - "method": "collection-log", - "itemIds": [ - 20166, 10366, 10280, 12297, 2587, 2583, 2585, 3472, 2589, 2595, 2591, - 2593, 3473, 2597, 7332, 7338, 7344, 7350, 7356, 10306, 10308, 10310, - 10312, 10314, 23366, 23369, 23372, 23375, 23378, 20193, 20184, 20187, 20190, - 20196, 20178, 20169, 20172, 20175, 20181, 12231, 12225, 12227, 12229, 12233, - 12241, 12235, 12237, 12239, 12243, 12221, 12215, 12217, 12219, 12223, 12211, - 12205, 12207, 12209, 12213, 7362, 7366, 7364, 7368, 23381, 23384, 7394, - 7390, 7386, 7396, 7392, 7388, 12453, 12449, 12445, 12455, 12451, 12447, - 10458, 10464, 10462, 10466, 10460, 10468, 12193, 12195, 12253, 12255, 12265, - 12267, 10316, 10320, 10318, 10322, 10324, 2631, 2633, 2635, 12247, 2637, - 10392, 12245, 12249, 12251, 10398, 10394, 10396, 12375, 23363, 23354, 23360, - 23357, 20205, 20208, 10404, 10424, 10406, 10426, 10412, 10432, 10414, 10434, - 10408, 10428, 10410, 10430, 20211, 20217, 20214, 23351, 20199, 20202 - ], - "count": 119 - } - }, - { - "id": "6df86a60-45f7-46be-aeae-73e1e3852cc1", - "name": "Get 3 new uniques from easy clues", - "tip": "Get 3 new uniques from easy clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(easy)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(easy)_detail.png/320px-Reward_casket_(easy)_detail.png", - "displayItemId": 20546, - "verification": { - "method": "collection-log", - "itemIds": [ - 20166, 10366, 10280, 12297, 2587, 2583, 2585, 3472, 2589, 2595, 2591, - 2593, 3473, 2597, 7332, 7338, 7344, 7350, 7356, 10306, 10308, 10310, - 10312, 10314, 23366, 23369, 23372, 23375, 23378, 20193, 20184, 20187, 20190, - 20196, 20178, 20169, 20172, 20175, 20181, 12231, 12225, 12227, 12229, 12233, - 12241, 12235, 12237, 12239, 12243, 12221, 12215, 12217, 12219, 12223, 12211, - 12205, 12207, 12209, 12213, 7362, 7366, 7364, 7368, 23381, 23384, 7394, - 7390, 7386, 7396, 7392, 7388, 12453, 12449, 12445, 12455, 12451, 12447, - 10458, 10464, 10462, 10466, 10460, 10468, 12193, 12195, 12253, 12255, 12265, - 12267, 10316, 10320, 10318, 10322, 10324, 2631, 2633, 2635, 12247, 2637, - 10392, 12245, 12249, 12251, 10398, 10394, 10396, 12375, 23363, 23354, 23360, - 23357, 20205, 20208, 10404, 10424, 10406, 10426, 10412, 10432, 10414, 10434, - 10408, 10428, 10410, 10430, 20211, 20217, 20214, 23351, 20199, 20202 - ], - "count": 122 - } - }, - { - "id": "8edb672a-0ad9-4d8c-a040-d9ff04acd6cd", - "name": "Get 3 new uniques from easy clues", - "tip": "Get 3 new uniques from easy clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(easy)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(easy)_detail.png/320px-Reward_casket_(easy)_detail.png", - "displayItemId": 20546, - "verification": { - "method": "collection-log", - "itemIds": [ - 20166, 10366, 10280, 12297, 2587, 2583, 2585, 3472, 2589, 2595, 2591, - 2593, 3473, 2597, 7332, 7338, 7344, 7350, 7356, 10306, 10308, 10310, - 10312, 10314, 23366, 23369, 23372, 23375, 23378, 20193, 20184, 20187, 20190, - 20196, 20178, 20169, 20172, 20175, 20181, 12231, 12225, 12227, 12229, 12233, - 12241, 12235, 12237, 12239, 12243, 12221, 12215, 12217, 12219, 12223, 12211, - 12205, 12207, 12209, 12213, 7362, 7366, 7364, 7368, 23381, 23384, 7394, - 7390, 7386, 7396, 7392, 7388, 12453, 12449, 12445, 12455, 12451, 12447, - 10458, 10464, 10462, 10466, 10460, 10468, 12193, 12195, 12253, 12255, 12265, - 12267, 10316, 10320, 10318, 10322, 10324, 2631, 2633, 2635, 12247, 2637, - 10392, 12245, 12249, 12251, 10398, 10394, 10396, 12375, 23363, 23354, 23360, - 23357, 20205, 20208, 10404, 10424, 10406, 10426, 10412, 10432, 10414, 10434, - 10408, 10428, 10410, 10430, 20211, 20217, 20214, 23351, 20199, 20202 - ], - "count": 125 - } - }, - { - "id": "9aee901d-580a-435c-ad3c-8d603be1324f", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 93 - } - }, - { - "id": "526119e9-f647-4623-af14-cd6eabc165f7", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 96 - } - }, - { - "id": "ee6fdd29-0c0f-45a7-bd6d-3646d58061e1", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 99 - } - }, - { - "id": "4a95793a-08c3-40c2-836f-afa9c30ae104", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 102 - } - }, - { - "id": "cf66008a-0b9e-4e7a-945c-875e3aa1fe82", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 105 - } - }, - { - "id": "d4b18c65-10f8-483b-bcb4-43b96c130088", - "name": "Get 3 new uniques from medium clues", - "tip": "Killing guards is a decent way of getting the clues. Once you have 50 hunter, Eclectic implings are also a fantastic source.", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(medium)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(medium)_detail.png/320px-Reward_casket_(medium)_detail.png", - "displayItemId": 20545, - "verification": { - "method": "collection-log", - "itemIds": [ - 20275, 10282, 2577, 10364, 2579, 12598, 23389, 23413, 2605, 2599, 2601, - 3474, 2603, 2613, 2607, 2609, 3475, 2611, 7334, 7340, 7346, 7352, - 7358, 10296, 10298, 10300, 10302, 10304, 23392, 23395, 23398, 23401, 23404, - 12283, 12277, 12279, 12285, 12281, 12293, 12287, 12289, 12295, 12291, 7370, - 7372, 7378, 7380, 10452, 10446, 10454, 10448, 10456, 10450, 12203, 12197, - 12201, 12199, 12259, 12261, 12257, 12263, 12271, 12273, 12269, 12275, 7319, - 7323, 7321, 7327, 7325, 12309, 12311, 12313, 2645, 2647, 2649, 12299, - 12301, 12303, 12305, 12307, 12319, 20240, 20243, 12377, 20251, 20260, 20254, - 20263, 20257, 20272, 12361, 12428, 12359, 20246, 23407, 23410, 20266, 20269, - 10416, 10436, 10418, 10438, 10400, 10420, 10402, 10422, 12315, 12339, 12317, - 12341, 12347, 12343, 12349, 12345 - ], - "count": 108 - } - }, - { - "id": "08a85781-7b02-4aa7-aef2-5d87eda0ef04", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 108 - } - }, - { - "id": "15d925a8-0a1a-43cc-a050-6df6294d1cab", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 111 - } - }, - { - "id": "00f98db6-e429-4d90-a5b4-e143bdeacedd", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 114 - } - }, - { - "id": "36fe5b13-68a8-43a8-8ac1-b34512240704", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 117 - } - }, - { - "id": "43b7342b-c562-4def-ada0-5ebd16e5e1f9", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 120 - } - }, - { - "id": "f521f22e-1689-4044-94ad-08e798f28be6", - "name": "Get 3 new uniques from hard clues", - "tip": "Get 3 new uniques from hard clues", - "wikiLink": "https://oldschool.runescape.wiki/w/Reward_casket_(hard)", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Reward_casket_(hard)_detail.png/320px-Reward_casket_(hard)_detail.png", - "displayItemId": 20544, - "verification": { - "method": "collection-log", - "itemIds": [ - 10354, 10284, 2581, 7400, 7399, 7398, 22231, 2627, 2623, 2625, 3477, - 2629, 2619, 2615, 2617, 3476, 2621, 7336, 7342, 7348, 7354, 7360, - 10286, 10288, 10290, 10292, 10294, 2657, 2653, 2655, 3478, 2659, 2673, - 2669, 2671, 3480, 2675, 2665, 2661, 2663, 3479, 2667, 12466, 12460, - 12462, 12464, 12468, 12476, 12470, 12472, 12474, 12478, 12486, 12480, 12482, - 12484, 12488, 12327, 12331, 12329, 12333, 7374, 7376, 7382, 7384, 10390, - 10386, 10388, 10384, 19933, 10382, 10378, 10380, 10376, 19927, 10374, 10370, - 10372, 10368, 19936, 12504, 12500, 12502, 12498, 19924, 12512, 12508, 12510, - 12506, 19930, 12496, 12492, 12494, 12490, 19921, 10470, 10440, 10472, 10442, - 10474, 10444, 19912, 19915, 2651, 12323, 12321, 12325, 2639, 2641, 2643, - 12516, 12514, 12518, 12520, 12522, 12524, 19918, 12379, 23206, 23224, 23227, - 23237, 23232, 23209, 23212, 23215, 23218, 23221, 23191, 23188, 23194, 23203, - 23200, 23197 - ], - "count": 123 - } - }, - { - "id": "668ed54d-57b5-47b4-abfb-8c17cf224e86", - "name": "1 Minigame log slot", - "tip": "1 Minigame log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 24844, - "verification": { - "method": "collection-log", - "itemIds": [ 26901, 25348, 12703, 4508, 4509, 4510, 4512, 11895, 25174 ], - "count": 1 - } - }, - { - "id": "8967c7e3-cbfb-4afc-a475-13dbd26b2e9d", - "name": "1 Minigame log slot", - "tip": "1 Minigame log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 24844, - "verification": { - "method": "collection-log", - "itemIds": [ 26901, 25348, 12703, 4508, 4509, 4510, 4512, 11895, 25174 ], - "count": 2 - } - }, - { - "id": "cdeda86b-4a5b-482a-ac5a-7b5c351a9446", - "name": "1 Minigame log slot", - "tip": "1 Minigame log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 24844, - "verification": { - "method": "collection-log", - "itemIds": [ 26901, 25348, 12703, 4508, 4509, 4510, 4512, 11895, 25174 ], - "count": 3 - } - }, - { - "id": "4c31421a-edda-4658-8800-0dddf673c292", - "name": "1 Minigame log slot", - "tip": "1 Minigame log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 24844, - "verification": { - "method": "collection-log", - "itemIds": [ 26901, 25348, 12703, 4508, 4509, 4510, 4512, 11895, 25174 ], - "count": 4 - } - }, - { - "id": "1eef324f-5560-4c3a-aa0a-71c2c432aa32", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 2 - } - }, - { - "id": "68ed059b-388d-43db-a9fa-eea35f59d5ee", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 4 - } - }, - { - "id": "4bf1f387-c5e2-425e-abcf-e7671fca5ef4", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 6 - } - }, - { - "id": "af908bd1-7f6c-4ff4-aa14-290a0538588c", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 8 - } - }, - { - "id": "4fc8f459-8f3b-4612-ada4-cd4bd140bbcc", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 10 - } - }, - { - "id": "84e4f620-d62e-46bc-8ff1-aea9b17cc216", - "name": "Get 2 LMS slots", - "tip": "Can be purchased as a reward from the Last Man Standing PVP Minigame.", - "wikiLink": "https://oldschool.runescape.wiki/w/Last_Man_Standing", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Victor's_cape_(1000)_detail.png/320px-Victor's_cape_(1000)_detail.png", - "displayItemId": 24520, - "tags": [ "lms" ], - "verification": { - "method": "collection-log", - "itemIds": [ - 24219, 24201, 24192, 24195, 24204, 24198, 24189, 24190, 24191, 24217, 24207, - 24209, 24211, 24213, 24215, 24520 - ], - "count": 12 - } - }, - { - "id": "b5e5139f-42fd-463b-ad6e-97ebdb842b13", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "ede854a1-b9d1-4856-8d89-02182195807c", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "6324e37d-9529-4b6b-9f5e-f83c5eee12f4", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "87e14907-f8ac-4325-b59d-98c184b7d00e", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "9fc1da48-ae77-4b08-9f7f-a3104a8e8efe", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "ea086b39-dacf-4cc0-9ec1-9eaaa54df8db", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "2856578b-5437-4c98-a90c-0a3fb3ce62d1", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "dc70209e-5a20-47cf-8d49-0d80ae05b039", - "name": "1 CoX log slot", - "tip": "1 CoX log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Chambers_of_Xeric", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Chambers_of_Xeric_logo.png/320px-Chambers_of_Xeric_logo.png", - "displayItemId": 22396 - }, - { - "id": "95ba1e36-cdc5-4e46-b7d9-899c93c7551b", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "6231259c-1305-4740-912d-2b1fb22512df", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "6e895910-e193-4d53-9204-02c8f108acff", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "7ea16ed2-042f-4378-9c3e-fdc064afbf38", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "9e5090b5-d62b-4047-919d-6eab9f658dba", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "1334b859-deb5-4d3f-a35f-686ee84a9418", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "a8fab6b7-b7b9-4779-bbc5-ff300a8d4ac2", - "name": "1 ToB log slot", - "tip": "1 ToB log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Theatre_of_Blood", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Theatre_of_Blood_logo.png/320px-Theatre_of_Blood_logo.png", - "displayItemId": 22502 - }, - { - "id": "c88096af-566f-4070-802c-b324e8e73bed", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "26e24f26-7d80-4f36-8c9d-10cc854d7a81", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "5231a9b6-46e8-4548-b091-1303425160e9", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "5d2c95c6-1afc-4b39-b76f-51bc7a43f864", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "ee5b2a60-ebc9-4901-a09c-bd4720da4d86", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "653963f2-d6d9-4a6f-aecc-b2f25fcc3325", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "0ca2eaf8-b91f-4cc2-a04a-fefa9bda4082", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "4be568d3-6ce9-42c7-bce8-db1e07345601", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "08d567f5-9518-44ac-b157-1d043254ed2f", - "name": "1 ToA log slot", - "tip": "1 ToA log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Tombs_of_Amascut", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Tombs_of_Amascut.png/320px-Tombs_of_Amascut.png", - "displayItemId": 27265 - }, - { - "id": "80491c4e-049d-4fff-9759-56772ca267f8", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 6 - } - }, - { - "id": "372d9c03-ea8a-4087-8424-d00f6be40f8d", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 7 - } - }, - { - "id": "8a14b417-6781-4e76-be3d-2dd6aa27da9e", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 8 - } - }, - { - "id": "bdf8e113-b7ac-49b2-a4c5-be2d88bdf9f7", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 9 - } - }, - { - "id": "979d674f-91aa-439d-922e-fc63c78ca53e", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 10 - } - }, - { - "id": "33301114-0029-49de-9079-f6c3bcb8b83a", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 11 - } - }, - { - "id": "7febe2c8-84e4-4c33-92e1-07fd48bccdca", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 12 - } - }, - { - "id": "bcaeacbb-990b-4050-9b74-e194f8153a4c", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 13 - } - }, - { - "id": "7a30054c-c4e5-4302-9e1a-3a281c750d5e", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 14 - } - }, - { - "id": "692e0843-f520-488f-a421-17cada5e566f", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 15 - } - }, - { - "id": "d6d10f16-2747-4909-9577-66d6e84b1ced", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 16 - } - }, - { - "id": "5eb02e23-6f64-4a14-9a33-bb72951df118", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 17 - } - }, - { - "id": "01c8b5f1-9f43-499c-a08f-f2a29760292c", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 18 - } - }, - { - "id": "62872665-5890-49c2-af0e-4b38a8b04f95", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 19 - } - }, - { - "id": "6f8abd57-deff-4dba-8a06-80906badaffc", - "name": "1 Boss pet or jar", - "tip": "1 Boss pet or jar", - "wikiLink": "https://oldschool.runescape.wiki/w/Boss_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pet_general_graardor_detail.png/320px-Pet_general_graardor_detail.png", - "displayItemId": 13262, - "verification": { - "method": "collection-log", - "itemIds": [ - 13262, 12646, 20693, 25602, 13178, 13247, 30152, 22746, 21291, 12647, 22473, - 24491, 30154, 27590, 26348, 29836, 21748, 20851, 11995, 12643, 12644, 12645, - 12816, 12650, 12652, 12655, 12649, 12648, 12921, 12651, 12653, 13181, 28801, - 21273, 23495, 13225, 27352, 13177, 13179, 21992, 28960, 30622, 28250, 28252, - 28246, 28248, 30888, 23760, 23757, 31130, 31285, 33124, 12007, 12885, 12936, - 13245, 13277, 19701, 21745, 22106, 23064, 23525, 24495, 25521, 25524, 29786, - 32921 - ], - "count": 20 - } - }, - { - "id": "c203f664-29a9-4215-9fd0-aa71f58754d0", - "name": "1 Skilling pet", - "tip": "1 Skilling pet", - "wikiLink": "https://oldschool.runescape.wiki/w/Skilling_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Giant_squirrel_detail.png/320px-Giant_squirrel_detail.png", - "displayItemId": 20663, - "verification": { - "method": "collection-log", - "itemIds": [ 13320, 13321, 13322, 13324, 20659, 20661, 20663, 20665, 31283 ], - "count": 1 - } - }, - { - "id": "859d4d15-1d11-401a-8b78-c83908d1840b", - "name": "1 Skilling pet", - "tip": "1 Skilling pet", - "wikiLink": "https://oldschool.runescape.wiki/w/Skilling_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Giant_squirrel_detail.png/320px-Giant_squirrel_detail.png", - "displayItemId": 20663, - "verification": { - "method": "collection-log", - "itemIds": [ 13320, 13321, 13322, 13324, 20659, 20661, 20663, 20665, 31283 ], - "count": 2 - } - }, - { - "id": "00ad0e57-43ef-4e22-b796-109b3e08b7fd", - "name": "1 Skilling pet", - "tip": "1 Skilling pet", - "wikiLink": "https://oldschool.runescape.wiki/w/Skilling_pets", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Giant_squirrel_detail.png/320px-Giant_squirrel_detail.png", - "displayItemId": 20663, - "verification": { - "method": "collection-log", - "itemIds": [ 13320, 13321, 13322, 13324, 20659, 20661, 20663, 20665, 31283 ], - "count": 3 - } - }, - { - "id": "3f21cd81-d205-4b4d-8adb-c0624790e1a7", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "2b89cb04-9ecc-48b7-a1ff-42b544222a63", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "0ca979bb-74fe-4d09-912c-82484f2f1a7a", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "314d6310-5de8-46f6-8bf3-109dbe1b835d", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "a0675b50-c7db-4a86-911b-0d28840dd0d3", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "76535b96-a1ce-4cef-b40b-fb5c3ceaf54e", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "6ed02b78-5056-4be6-834f-4945cef6386f", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "6fc4f70a-d5b7-4979-bc27-c7bff470c309", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "68524c6d-dba1-4f47-a417-4cabc558088a", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "208d73d5-b84d-420c-9024-f5ed6634a4e3", - "name": "1 Wildy unique", - "tip": "1 Wildy unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Wilderness", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Pkskull_(Steam_Emoticon).png/320px-Pkskull_(Steam_Emoticon).png", - "displayItemId": 22547 - }, - { - "id": "4817bd39-5f12-43fa-a99f-83cff074c4f3", - "name": "Get 1 slayer log slot", - "tip": "Good Luck on Imbued Heart!", - "wikiLink": "https://oldschool.runescape.wiki/w/Slayer", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Slayer_icon_(detail).png/320px-Slayer_icon_(detail).png", - "displayItemId": 20724, - "verification": { - "method": "collection-log", - "itemIds": [ - 20724, 21270, 23047, 23050, 23053, 23056, 23059, 22963, 11286, 21637 - ], - "count": 1 - } - }, - { - "id": "59c59736-7679-463a-baf6-c11912fcbf25", - "name": "Get 1 slayer log slot", - "tip": "Good Luck on Imbued Heart!", - "wikiLink": "https://oldschool.runescape.wiki/w/Slayer", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Slayer_icon_(detail).png/320px-Slayer_icon_(detail).png", - "displayItemId": 20724, - "verification": { - "method": "collection-log", - "itemIds": [ - 20724, 21270, 23047, 23050, 23053, 23056, 23059, 22963, 11286, 21637 - ], - "count": 2 - } - }, - { - "id": "8fb553c8-d0ef-410d-b73c-ecac4329e512", - "name": "Get 1 slayer log slot", - "tip": "Good Luck on Imbued Heart!", - "wikiLink": "https://oldschool.runescape.wiki/w/Slayer", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Slayer_icon_(detail).png/320px-Slayer_icon_(detail).png", - "displayItemId": 20724, - "verification": { - "method": "collection-log", - "itemIds": [ - 20724, 21270, 23047, 23050, 23053, 23056, 23059, 22963, 11286, 21637 - ], - "count": 3 - } - }, - { - "id": "a312f33a-f44e-45d2-ba87-67ab32400529", - "name": "Get 1 slayer log slot", - "tip": "Good Luck on Imbued Heart!", - "wikiLink": "https://oldschool.runescape.wiki/w/Slayer", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Slayer_icon_(detail).png/320px-Slayer_icon_(detail).png", - "displayItemId": 20724, - "verification": { - "method": "collection-log", - "itemIds": [ - 20724, 21270, 23047, 23050, 23053, 23056, 23059, 22963, 11286, 21637 - ], - "count": 4 - } - }, - { - "id": "42d0c365-5910-49c4-bacd-d950585d5c8a", - "name": "Get 1 slayer log slot", - "tip": "Good Luck on Imbued Heart!", - "wikiLink": "https://oldschool.runescape.wiki/w/Slayer", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Slayer_icon_(detail).png/320px-Slayer_icon_(detail).png", - "displayItemId": 20724, - "verification": { - "method": "collection-log", - "itemIds": [ - 20724, 21270, 23047, 23050, 23053, 23056, 23059, 22963, 11286, 21637 - ], - "count": 5 - } - }, - { - "id": "7066afad-e3ca-427d-b482-f2fc09576f06", - "name": "1 Miscellaneous log slot", - "tip": "1 Miscellaneous log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 11335, - "verification": { - "method": "collection-log", - "itemIds": [ - 21509, 19707, 11335, 22103, 22100, 20439, 20436, 20442, 20433, 24034, 24037, - 24040, 24043, 24046 - ], - "count": 1 - } - }, - { - "id": "7a109368-c716-4b5e-8683-888a01298b16", - "name": "1 Miscellaneous log slot", - "tip": "1 Miscellaneous log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 11335, - "verification": { - "method": "collection-log", - "itemIds": [ - 21509, 19707, 11335, 22103, 22100, 20439, 20436, 20442, 20433, 24034, 24037, - 24040, 24043, 24046 - ], - "count": 2 - } - }, - { - "id": "68d04c37-b686-429e-b72b-6efb54738b10", - "name": "1 Miscellaneous log slot", - "tip": "1 Miscellaneous log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 11335, - "verification": { - "method": "collection-log", - "itemIds": [ - 21509, 19707, 11335, 22103, 22100, 20439, 20436, 20442, 20433, 24034, 24037, - 24040, 24043, 24046 - ], - "count": 3 - } - }, - { - "id": "1ccafb95-d36e-436c-ab65-c73aad344557", - "name": "1 Miscellaneous log slot", - "tip": "1 Miscellaneous log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 11335, - "verification": { - "method": "collection-log", - "itemIds": [ - 21509, 19707, 11335, 22103, 22100, 20439, 20436, 20442, 20433, 24034, 24037, - 24040, 24043, 24046 - ], - "count": 4 - } - }, - { - "id": "52b75bae-5757-4fde-89c1-0d54fad11790", - "name": "1 Miscellaneous log slot", - "tip": "1 Miscellaneous log slot", - "wikiLink": "https://oldschool.runescape.wiki/w/Collection_log", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Collection_log_detail.png/320px-Collection_log_detail.png", - "displayItemId": 11335, - "verification": { - "method": "collection-log", - "itemIds": [ - 21509, 19707, 11335, 22103, 22100, 20439, 20436, 20442, 20433, 24034, 24037, - 24040, 24043, 24046 - ], - "count": 5 - } - }, - { - "id": "fd0e4fce-e558-426e-81f2-82895462332b", - "name": "1 Sigil from Corp", - "tip": "1 Sigil from Corp", - "wikiLink": "https://oldschool.runescape.wiki/w/Arcane_sigil", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Arcane_sigil_detail.png/320px-Arcane_sigil_detail.png", - "displayItemId": 12819, - "verification": { - "method": "collection-log", - "itemIds": [ 12827, 12823, 12819 ], - "count": 1 - } - }, - { - "id": "c59b687d-44f7-4815-8dd0-1d72ea725fa7", - "name": "1 Mutagen from Zulrah", - "tip": "1 Mutagen from Zulrah", - "wikiLink": "https://oldschool.runescape.wiki/w/Magma_mutagen", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Magma_mutagen_detail.png/320px-Magma_mutagen_detail.png", - "displayItemId": 13201, - "verification": { - "method": "collection-log", - "itemIds": [ 13200, 13201 ], - "count": 1 - } - }, - { - "id": "0484a44f-0991-43a9-bb30-808d6437f707", - "name": "1 Zalcano unique", - "tip": "1 Zalcano unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Zalcano", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Zalcano_shard_detail.png/320px-Zalcano_shard_detail.png", - "displayItemId": 23908, - "verification": { - "method": "collection-log", - "itemIds": [ 23953, 23908 ], - "count": 1 - } - }, - { - "id": "dfcb3155-0e12-444e-bab7-c8e3c5aa52cf", - "name": "1 Vorkath unique", - "tip": "A rare drop from Vorkath", - "wikiLink": "https://oldschool.runescape.wiki/w/Vorkath", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Dragonbone_necklace_detail.png/320px-Dragonbone_necklace_detail.png", - "displayItemId": 22111, - "verification": { - "method": "collection-log", - "itemIds": [ 22111, 22006 ], - "count": 1 - } - }, - { - "id": "e2036f41-dbce-4f48-9834-210371ae0c5c", - "name": "1 Nightmare unique", - "tip": "1 Nightmare unique", - "wikiLink": "https://oldschool.runescape.wiki/w/The_Nightmare", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Inquisitor's_mace_detail.png/320px-Inquisitor's_mace_detail.png", - "displayItemId": 24417, - "verification": { - "method": "collection-log", - "itemIds": [ - 24422, 24517, 24511, 24514, 24419, 24420, 24421, 24417, 25837, 25838 - ], - "count": 1 - } - }, - { - "id": "3cafb876-c10f-4396-8e3e-12e9fecf2adb", - "name": "1 Nightmare unique", - "tip": "1 Nightmare unique", - "wikiLink": "https://oldschool.runescape.wiki/w/The_Nightmare", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Inquisitor's_mace_detail.png/320px-Inquisitor's_mace_detail.png", - "displayItemId": 24417, - "verification": { - "method": "collection-log", - "itemIds": [ - 24422, 24517, 24511, 24514, 24419, 24420, 24421, 24417, 25837, 25838 - ], - "count": 2 - } - }, - { - "id": "3df7f914-6bce-4f3c-a6c3-581e9c4eebce", - "name": "1 Nightmare unique", - "tip": "1 Nightmare unique", - "wikiLink": "https://oldschool.runescape.wiki/w/The_Nightmare", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Inquisitor's_mace_detail.png/320px-Inquisitor's_mace_detail.png", - "displayItemId": 24417, - "verification": { - "method": "collection-log", - "itemIds": [ - 24422, 24517, 24511, 24514, 24419, 24420, 24421, 24417, 25837, 25838 - ], - "count": 3 - } - }, - { - "id": "7af50f50-1d4a-4567-b205-2f35c30eb1b5", - "name": "1 Nightmare unique", - "tip": "1 Nightmare unique", - "wikiLink": "https://oldschool.runescape.wiki/w/The_Nightmare", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Inquisitor's_mace_detail.png/320px-Inquisitor's_mace_detail.png", - "displayItemId": 24417, - "verification": { - "method": "collection-log", - "itemIds": [ - 24422, 24517, 24511, 24514, 24419, 24420, 24421, 24417, 25837, 25838 - ], - "count": 4 - } - }, - { - "id": "ac401402-3e8d-4785-86de-1708ce73da65", - "name": "1 Nightmare unique", - "tip": "1 Nightmare unique", - "wikiLink": "https://oldschool.runescape.wiki/w/The_Nightmare", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Inquisitor's_mace_detail.png/320px-Inquisitor's_mace_detail.png", - "displayItemId": 24417, - "verification": { - "method": "collection-log", - "itemIds": [ - 24422, 24517, 24511, 24514, 24419, 24420, 24421, 24417, 25837, 25838 - ], - "count": 5 - } - }, - { - "id": "3288456d-a278-414f-9280-3e0dea65cdda", - "name": "1 Nex unique", - "tip": "1 Nex unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Nex", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Nex.png/320px-Nex.png", - "displayItemId": 26372, - "verification": { - "method": "collection-log", - "itemIds": [ 26370, 26372, 26376, 26378, 26380, 26235 ], - "count": 3 - } - }, - { - "id": "9de4d9dd-f68d-4b6c-b1f4-f19d05ea5607", - "name": "1 Nex unique", - "tip": "1 Nex unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Nex", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Nex.png/320px-Nex.png", - "displayItemId": 26372, - "verification": { - "method": "collection-log", - "itemIds": [ 26370, 26372, 26376, 26378, 26380, 26235 ], - "count": 4 - } - }, - { - "id": "a045bcb9-3f13-4ee5-b4e7-f24945dc4b6a", - "name": "1 Nex unique", - "tip": "1 Nex unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Nex", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Nex.png/320px-Nex.png", - "displayItemId": 26372, - "verification": { - "method": "collection-log", - "itemIds": [ 26370, 26372, 26376, 26378, 26380, 26235 ], - "count": 5 - } - }, - { - "id": "655aa891-b6ad-4d08-abde-7f9b2d5f2c24", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 1 - } - }, - { - "id": "51d7ff46-c976-43c3-af0b-0ce8ec9e524e", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 2 - } - }, - { - "id": "c5b3205c-45c6-4885-906e-2e0844df0054", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 3 - } - }, - { - "id": "85f1b299-4567-4e80-a5a2-2c8bc145646b", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 4 - } - }, - { - "id": "34679f6d-d400-45d5-b5ab-b49b259c4866", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 5 - } - }, - { - "id": "42928f64-1ade-4f7c-b163-41fe08cac0e4", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 6 - } - }, - { - "id": "fe293785-101e-4331-918c-5ebdae8cef99", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 7 - } - }, - { - "id": "c9d0af3c-b034-41c7-8afe-71040c9ff35f", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 8 - } - }, - { - "id": "b9a8a76e-d833-4575-ad8e-746ffb9fe0c1", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 9 - } - }, - { - "id": "1695718e-f588-49dc-8d8c-91ff9a9ec2ab", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 10 - } - }, - { - "id": "263e5f41-9456-454e-9b9f-482480623dc6", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 11 - } - }, - { - "id": "389c4820-08c4-4328-9532-6d6c395ce6ab", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 12 - } - }, - { - "id": "a9f466ec-5710-4106-af96-a9a694107e9e", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 13 - } - }, - { - "id": "959f5efe-b825-4e71-b2c2-5606f621cdc8", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 14 - } - }, - { - "id": "6c7df241-9838-4acf-94d1-7f99ea9bac4b", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 15 - } - }, - { - "id": "fb551b3f-ebfe-4c8b-9d25-edf85087e506", - "name": "A new level 99", - "tip": "A new level 99", - "wikiLink": "https://oldschool.runescape.wiki/w/Skill_cape", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 16 - } - }, - { - "id": "744cd2a7-5ecd-4298-9ee3-0f72b3fceb4d", - "name": "Get a level 99", - "tip": "Ok it's grind time!", - "wikiLink": "https://oldschool.runescape.wiki/w/Skills", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Max_cape_detail.png/320px-Max_cape_detail.png", - "displayItemId": 13280, - "verification": { - "method": "skill", - "experience": { - "attack" : 13034431, - "strength" : 13034431, - "defence" : 13034431, - "ranged" : 13034431, - "prayer" : 13034431, - "magic" : 13034431, - "runecraft" : 13034431, - "hitpoints" : 13034431, - "crafting" : 13034431, - "mining" : 13034431, - "smithing" : 13034431, - "fishing" : 13034431, - "cooking" : 13034431, - "firemaking" : 13034431, - "woodcutting" : 13034431, - "agility" : 13034431, - "herblore" : 13034431, - "thieving" : 13034431, - "fletching" : 13034431, - "slayer" : 13034431, - "farming" : 13034431, - "construction": 13034431, - "hunter" : 13034431, - "sailing" : 13034431 - }, - "count": 17 - } - }, - { - "id": "ef6ad784-9b0f-490d-813c-6256089e3653", - "name": "Master tier Combat Achievements", - "tip": "Master tier Combat Achievements", - "wikiLink": "https://oldschool.runescape.wiki/w/Combat_achievements", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Combat_achievements_detail.png/320px-Combat_achievements_detail.png", - "displayItemId": 25934 - }, - { - "id": "7eb00acb-984b-465b-8ed4-eb00ae654df8", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 12 - } - }, - { - "id": "c27813c4-bf33-4e83-a8ce-13fa5e5e949d", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 13 - } - }, - { - "id": "589d89f6-9853-440e-a0e4-4f6d981ffe23", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 14 - } - }, - { - "id": "4e610977-8cfa-47a0-96a3-d89f8aa90596", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 15 - } - }, - { - "id": "ff65b543-a201-4ef1-a8c3-09b73675bbf9", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 16 - } - }, - { - "id": "5a1268cd-0d17-4be2-bedd-34cb89793eec", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 17 - } - }, - { - "id": "8bc8c7ca-51a5-43b6-8481-f60ac284abb3", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 18 - } - }, - { - "id": "c4d4b7fb-5216-4f50-827d-4e683a73f1ff", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 19 - } - }, - { - "id": "6c700957-e0c6-4d13-954e-9dcf785f3b57", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 20 - } - }, - { - "id": "055b248c-6349-4357-bd2e-30c7018519d9", - "name": "Get 1 unique from the DT2 bosses", - "tip": "Get 1 unique from the DT2 bosses", - "wikiLink": "https://oldschool.runescape.wiki/w/Desert_Treasure_II", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Soulreaper_axe_detail.png/320px-Soulreaper_axe_detail.png", - "displayItemId": 28338, - "verification": { - "method": "collection-log", - "itemIds": [ - 26241, 26243, 26245, 28319, 28321, 28323, 28325, 28330, 28331, 28332, 28333, - 28334, 28268, 28270, 28272, 28274, 28276, 28279, 28281, 28283, 28285 - ], - "count": 21 - } - }, - { - "id": "ba596dd8-4112-45a0-97fd-ecbb300b53b9", - "name": "1 Fortis Colosseum unique", - "tip": "1 Fortis Colosseum unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Fortis_Colosseum", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Dizana's_quiver_detail.png/320px-Dizana's_quiver_detail.png", - "displayItemId": 28951, - "verification": { - "method": "collection-log", - "itemIds": [ 28947, 28933, 28936, 28939, 28942, 28919 ], - "count": 4 - } - }, - { - "id": "db816180-3cf0-4cda-841c-ff230fd64544", - "name": "1 Fortis Colosseum unique", - "tip": "1 Fortis Colosseum unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Fortis_Colosseum", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Dizana's_quiver_detail.png/320px-Dizana's_quiver_detail.png", - "displayItemId": 28951, - "verification": { - "method": "collection-log", - "itemIds": [ 28947, 28933, 28936, 28939, 28942, 28919 ], - "count": 5 - } - }, - { - "id": "a26a29d5-a775-4ab2-8a68-774f3bfc6040", - "name": "1 Fortis Colosseum unique", - "tip": "1 Fortis Colosseum unique", - "wikiLink": "https://oldschool.runescape.wiki/w/Fortis_Colosseum", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Dizana's_quiver_detail.png/320px-Dizana's_quiver_detail.png", - "displayItemId": 28951, - "verification": { - "method": "collection-log", - "itemIds": [ 28947, 28933, 28936, 28939, 28942, 28919 ], - "count": 6 - } - }, - { - "id": "00a37be2-ca6a-41ef-9c4b-178540faa31e", - "name": "Obtain the Quetzin", - "tip": "Obtain the Quetzin", - "wikiLink": "https://oldschool.runescape.wiki/w/Quetzin", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Quetzin_detail.png/320px-Quetzin_detail.png", - "displayItemId": 28962, - "verification": { - "method": "collection-log", - "itemIds": [ 28962 ], - "count": 1 - } - }, - { - "id": "ca7978f7-634f-417e-8a6f-149e63ba5629", - "name": "Get 1 unique from Yama", - "tip": "Get 1 unique from Yama", - "wikiLink": "https://oldschool.runescape.wiki/w/Yama", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Yama.png/320px-Yama.png", - "displayItemId": 30753, - "verification": { - "method": "collection-log", - "itemIds": [ - 30775, 30750, 30753, 30756, 30759, 30806, 30763, 30805, 30795, 30765 - ], - "count": 8 - } - }, - { - "id": "bb345874-c397-40d2-a71b-395c1c0f317e", - "name": "Get 1 unique from Yama", - "tip": "Get 1 unique from Yama", - "wikiLink": "https://oldschool.runescape.wiki/w/Yama", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Yama.png/320px-Yama.png", - "displayItemId": 30753, - "verification": { - "method": "collection-log", - "itemIds": [ - 30775, 30750, 30753, 30756, 30759, 30806, 30763, 30805, 30795, 30765 - ], - "count": 9 - } - }, - { - "id": "1b7ab1e3-bd97-4405-8b68-3a0d4ace88c0", - "name": "Get 1 unique from Yama", - "tip": "Get 1 unique from Yama", - "wikiLink": "https://oldschool.runescape.wiki/w/Yama", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Yama.png/320px-Yama.png", - "displayItemId": 30753, - "verification": { - "method": "collection-log", - "itemIds": [ - 30775, 30750, 30753, 30756, 30759, 30806, 30763, 30805, 30795, 30765 - ], - "count": 10 - } - }, - { - "id": "122f61f7-80e7-4d79-bd4f-543a2868e06a", - "name": "Get 1 unique from Doom of Mokhaiotl", - "tip": "Giant, insect-like, demonic boss found in the Tonali Cavern after completion of The Final Dawn quest.", - "wikiLink": "https://oldschool.runescape.wiki/w/Doom_of_Mokhaiotl", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Eye_of_ayak_detail.png/320px-Eye_of_ayak_detail.png", - "displayItemId": 31115, - "verification": { - "method": "collection-log", - "itemIds": [ 31111, 31099, 31109, 31115, 31088 ], - "count": 5 - } - }, - { - "id": "5d089860-d548-4305-9f46-aeb8a0292bb4", - "name": "Get the Salvor's paint", - "tip": "Can be very rarely obtained while salvaging mercenary shipwrecks.", - "wikiLink": "https://oldschool.runescape.wiki/w/Salvor's_paint", - "imageLink": "https://oldschool.runescape.wiki/images/thumb/Salvor's_paint_detail.png/320px-Salvor's_paint_detail.png", - "displayItemId": 32099, - "verification": { - "method": "collection-log", - "itemIds": [ 32099 ], - "count": 1 - } - } - ] -} diff --git a/tsconfig.json b/tsconfig.json index 1b1acf5..3cedb60 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,12 @@ { - "extends": ["@tsconfig/node22/tsconfig.json", "@tsconfig/node-ts/tsconfig.json"], + "extends": ["@tsconfig/node26/tsconfig.json", "@tsconfig/node-ts/tsconfig.json"], "compilerOptions": { "strictNullChecks": true, "lib": ["es2024", "ESNext.Array", "ESNext.Collection", "ESNext.Iterator", "DOM"], "paths": { "@/*": ["./*"] }, - "resolveJsonModule": true + "resolveJsonModule": true, + "types": ["node"] } }