{"_id":"@api-wrappers/igdb-wrapper","_rev":"7-71a6e2e372bf0fcbe16804c613606ef5","name":"@api-wrappers/igdb-wrapper","dist-tags":{"latest":"1.1.1"},"versions":{"0.4.0":{"name":"@api-wrappers/igdb-wrapper","version":"0.4.0","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@0.4.0","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"edaf797b0bf0117afb6202e85edf471db49a1cb6","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-0.4.0.tgz","fileCount":9,"integrity":"sha512-BlXlv7sEuKjX7jdVZIrTfd8lXDLLPWJP2m50NZIEFSpqwyepqapxnox/PkvRNUWK5eN0b51Sp/hCvf9cMICOrQ==","signatures":[{"sig":"MEQCIHTak0dCc+EimOA/HBBpNA1ZiQBKkZrafF6J48Wz6NRbAiAf3cn6lqMIX9stut42QisaEV+saGpHjq5qif8VWHCXSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84513},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"f78f491a617b6cd8e1b51a0c65f7d2d644f6039d","scripts":{"dev":"bun run src/index.ts","build":"tsdown","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"tdanks2000","email":"tommydanks2000@outlook.com"},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.5.1","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.21.5","@types/bun":"latest","typescript":"^5.4.0","@changesets/cli":"^2.30.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_0.4.0_1774811433939_0.6148468429539886","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@api-wrappers/igdb-wrapper","version":"0.5.0","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@0.5.0","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"0bd331aef5bd891ce36d534ca43b02e5878a3dae","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-0.5.0.tgz","fileCount":10,"integrity":"sha512-YSwoQ+T945Y4YjzYuFcqUYFK6WDeU4GfF+tISTC74RBB9XrcqbEm+LvLDC/9G8gmorHsHN3+5HZnGVu9PwLk5w==","signatures":[{"sig":"MEUCIQDnnhfsNJFFZDsTtZFaHWJuenCvmNEjyTpvR/wREb8ViQIgfmMXdjK+kiENtF5a5lpm6rRN1LSf97Z+FK10gWp8dwU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90512},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"b29d73194391e96fa89e85e9debc32d3e7a8e8ae","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"tsdown --config tsdown.config.mjs --config-loader native","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@api-wrappers/api-core":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_0.5.0_1778322814042_0.67170788219415","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@api-wrappers/igdb-wrapper","version":"0.6.0","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@0.6.0","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"6887217c6bfa01c4c87b1b7a8bf2db185ebdd93f","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-0.6.0.tgz","fileCount":10,"integrity":"sha512-oSOkC/2dxv/Wc4QA/rmxN2+S3LTlDbJh+MM/UBPlQ26N44H1fQWKvB30P7H2jO96T40vRNFcx1cluqmowmpKjQ==","signatures":[{"sig":"MEYCIQC6K/zAjia0JftK1vgzF3/zIs+1y+Rop1A97DZSRpOlPAIhAMl43vpUXwHwJTYQvoFwxZzA9scCSBAtynZEGYPIoDcc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":224803},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"f2cc3df217e0e656c5075c9059956b97a6069e80","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"tsdown --config tsdown.config.mjs --config-loader native","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@api-wrappers/api-core":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_0.6.0_1778388088783_0.9599804530747094","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@api-wrappers/igdb-wrapper","version":"0.6.1","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@0.6.1","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"72e50fd0899500c43491e2cabe403ade05a50496","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-0.6.1.tgz","fileCount":10,"integrity":"sha512-JAsqDkuUo9+8LJJ9ehrLr02eAUTrBNx3KDB2pPsTxXpBVLSokLJRir4v2f95LmKo0HWQ3i2c6oREBtnliGJ1vw==","signatures":[{"sig":"MEQCIGXmIxUXJ5fF0Rv/shCOWMYpsUYGaMPDYJHYS7lf47RQAiBKl0NENNpeyzdG01WGn5rXLJowg+2/xJGsalO/VbvYWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":218892},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"3a232537ae9f47d0f419fc944f55d1a4ef813e71","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"tsdown --config tsdown.config.mjs --config-loader native","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@api-wrappers/api-core":"^0.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_0.6.1_1778415585439_0.34131315554506614","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@api-wrappers/igdb-wrapper","version":"1.0.0","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@1.0.0","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"7c8c786b2fda57cd390c115969c21493a4a3b2df","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-1.0.0.tgz","fileCount":17,"integrity":"sha512-9oE1C2/A42sPRIxyy6geoeEUjJd9bcfRYZDo0SQLWjdC6DcZq7tbNAUwYjx1vbMH8IvB9+G5Rdjs6PA9Smi8oA==","signatures":[{"sig":"MEQCIAs1fsi+SMT28FKnSiaXTpgsjPStsHyDnvR2S3lT8vkOAiBzEkkPWU4b/zsDneZ9pACe3TePPhJoQdBWnFZ5tDbggg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":245236},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"99606eddd58f30d0567d263a59c487a43552e928","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"tsdown --config tsdown.config.mjs --config-loader native","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run test && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@api-wrappers/api-core":"^0.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_1.0.0_1778604568416_0.05207745495656102","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@api-wrappers/igdb-wrapper","version":"1.0.1","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","typescript","type-safe","query-builder","twitch","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","_id":"@api-wrappers/igdb-wrapper@1.0.1","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"dist":{"shasum":"30216c52098441e920b5e84f42ac27f0b0a6615b","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-1.0.1.tgz","fileCount":24,"integrity":"sha512-inclxgM9ZvSlV/0UvtxJWPy+D/jeBfc5NLBMzYqpw1LXPv/u+ayPRUSYHWIyqworTNsBFyz+qbjo3Wskn4YHSA==","signatures":[{"sig":"MEYCIQC62DWYM9395QxVDcyvDJ9CxgJDirouPW/wCVsa6CjfxwIhAK/hDuMsqZ3Xe8EMdkE/uKvFp4jP5xL6YEIKeq5agqg1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261688},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"8a9575098915e1bd727e57aa8516e3fa8fb4bad9","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"tsdown --config tsdown.config.mjs --config-loader native","release":"changeset publish","changeset":"changeset","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run test && npm run build","version-packages":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"repository":{"url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe TypeScript client for the IGDB API with a fluent query builder, automatic retries, and built-in rate limiting","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@api-wrappers/api-core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"typescript":"^5 || ^6"},"_npmOperationalInternal":{"tmp":"tmp/igdb-wrapper_1.0.1_1778792272795_0.29978222742137395","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@api-wrappers/igdb-wrapper","version":"1.1.1","description":"Type-safe IGDB client with a fluent APICalypse query builder, endpoint helpers, auth, retries, and rate limiting","module":"./dist/index.mjs","type":"module","main":"./dist/index.cjs","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"publishConfig":{"access":"public"},"sideEffects":false,"scripts":{"dev":"bun run src/index.ts","build":"tsdown --config tsdown.config.mjs --config-loader native","test":"bun test","typecheck":"tsc --noEmit","package-smoke":"node scripts/package-smoke.cjs","check":"bun run typecheck && bun run test && bun run build","verify":"bun run check && npm pack --dry-run","changeset":"changeset","version-packages":"changeset version","release":"changeset publish","prepublishOnly":"bun run check"},"keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","game-database","typescript","type-safe","query-builder","fluent-query-builder","apicalypse","twitch","twitch-api","nodejs","bun"],"author":{"name":"api-wrappers"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git"},"homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"engines":{"node":">=18"},"devDependencies":{"@changesets/cli":"^2.31.0","@types/bun":"^1.3.13","tsdown":"^0.22.0","typescript":"^6.0.3"},"peerDependencies":{"typescript":"^5 || ^6"},"dependencies":{"@api-wrappers/api-core":"^1.0.1"},"gitHead":"9a505696fade6375e4fa5484a89cb9bef8117fb1","_id":"@api-wrappers/igdb-wrapper@1.1.1","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-zrqGfO1q6SL92D9U28FMSRV1p/X3eGlLJZNff7/nuFsOB+9aZ7RQtn7Qi/SJnyfUU8XDyS6aqsm4iZvEyv8rjw==","shasum":"a6dca5dfdd9033a334666d1c15f1af68e24d4c95","tarball":"https://registry.npmjs.org/@api-wrappers/igdb-wrapper/-/igdb-wrapper-1.1.1.tgz","fileCount":26,"unpackedSize":280205,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@api-wrappers%2figdb-wrapper@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIETR5dfIzS7q9wpcoYQv6aONEMCDA7rHnnZ8FXo5PlvkAiB6YjI/s8To+Kd2n8VZqsqGwFqPpw5G/CH9MuBBPv0uRA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f50bc1c9-7de8-4eb9-aeea-67638268572d"}},"directories":{},"maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/igdb-wrapper_1.1.1_1786424517550_0.9079695697924135"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-29T19:10:33.826Z","modified":"2026-08-11T05:01:58.093Z","0.4.0":"2026-03-29T19:10:34.118Z","0.5.0":"2026-05-09T10:33:34.194Z","0.6.0":"2026-05-10T04:41:28.943Z","0.6.1":"2026-05-10T12:19:45.596Z","1.0.0":"2026-05-12T16:49:28.631Z","1.0.1":"2026-05-14T20:57:52.944Z","1.1.1":"2026-08-11T05:01:57.707Z"},"bugs":{"url":"https://github.com/Api-Wrappers/igdb-wrapper/issues"},"author":{"name":"api-wrappers"},"license":"MIT","homepage":"https://github.com/Api-Wrappers/igdb-wrapper#readme","keywords":["igdb","igdb-api","@api-wrappers/igdb-wrapper","api-wrapper","games","game-api","game-database","typescript","type-safe","query-builder","fluent-query-builder","apicalypse","twitch","twitch-api","nodejs","bun"],"repository":{"type":"git","url":"git+https://github.com/Api-Wrappers/igdb-wrapper.git"},"description":"Type-safe IGDB client with a fluent APICalypse query builder, endpoint helpers, auth, retries, and rate limiting","maintainers":[{"name":"tdanks2000","email":"tommydanks2000@outlook.com"}],"readme":"<h1 align=\"center\">@api-wrappers/igdb-wrapper</h1>\n\n<p align=\"center\">\n  A type-safe IGDB client with a fluent query builder that keeps APICalypse out of fragile strings.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@api-wrappers/igdb-wrapper\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@api-wrappers/igdb-wrapper\"></a>\n  <a href=\"https://www.npmjs.com/package/@api-wrappers/igdb-wrapper\"><img alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/@api-wrappers/igdb-wrapper\"></a>\n  <a href=\"https://github.com/Api-Wrappers/igdb-wrapper/blob/main/LICENSE\"><img alt=\"license\" src=\"https://img.shields.io/npm/l/@api-wrappers/igdb-wrapper\"></a>\n  <a href=\"https://github.com/Api-Wrappers/igdb-wrapper/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/Api-Wrappers/igdb-wrapper/actions/workflows/ci.yml/badge.svg\"></a>\n  <a href=\"https://github.com/Api-Wrappers/igdb-wrapper/stargazers\"><img alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/api-wrappers/igdb-wrapper\"></a>\n</p>\n\nIGDB's APICalypse query language is powerful, but raw request strings get\nbrittle quickly. Field names, filters, nested relations, pagination clauses,\nand sort order all live inside string literals that TypeScript cannot check.\n\n`@api-wrappers/igdb-wrapper` keeps the IGDB request model and gives you a\ntyped, fluent query builder for the parts that usually break: selected fields,\nfilters, sorting, pagination, endpoint access, auth, retries, rate limiting,\nand structured errors. You can still drop to raw APICalypse when IGDB supports\nsyntax the builder does not cover yet.\n\n```ts\nimport { IGDBClient, buildImageUrl } from \"@api-wrappers/igdb-wrapper\";\n\nconst client = new IGDBClient({\n  clientId: process.env.TWITCH_CLIENT_ID!,\n  clientSecret: process.env.TWITCH_CLIENT_SECRET!,\n});\n\nconst games = await client.games\n  .query()\n  .select((game) => ({\n    id: game.id,\n    name: game.name,\n    rating: game.rating,\n    cover: {\n      imageId: game.cover.image_id,\n    },\n  }))\n  .where((game, { or }) =>\n    or(game.rating.gte(90), game.aggregated_rating.gte(90)),\n  )\n  .sort((game) => game.rating, \"desc\")\n  .limit(5)\n  .execute();\n\nfor (const game of games) {\n  const coverUrl = game.cover?.imageId\n    ? buildImageUrl(game.cover.imageId, { size: \"cover_big\", retina: true })\n    : null;\n\n  console.log(game.name, game.rating, coverUrl);\n}\n```\n\n---\n\n## Before and after\n\nRaw APICalypse works, but every field and clause is a string:\n\n```ts\nconst games = await client.request(\n  \"games\",\n  `\nfields id,name,rating,first_release_date,cover.image_id;\nwhere rating >= 80 & first_release_date >= 1672531200 & platforms = [48,6];\nsort rating desc;\nlimit 10;\n`,\n);\n```\n\nThe equivalent query-builder version keeps field names and filter operators in\ntyped TypeScript code:\n\n```ts\nconst games = await client.games\n  .query()\n  .select((game) => ({\n    id: game.id,\n    name: game.name,\n    rating: game.rating,\n    releaseDate: game.first_release_date,\n    cover: {\n      imageId: game.cover.image_id,\n    },\n  }))\n  .where((game) => [\n    game.rating.gte(80),\n    game.first_release_date.gte(1672531200),\n    game.platforms.containsAll([48, 6]),\n  ])\n  .sort((game) => game.rating, \"desc\")\n  .limit(10)\n  .execute();\n```\n\n---\n\n## Why use it?\n\n- **Typed query builder:** select fields, compose filters, sort, limit, offset,\n  inspect the generated APICalypse with `.raw()` / `.inspect()`, and keep the\n  returned shape typed.\n- **Endpoint helpers:** every registered IGDB v4 endpoint is exposed as a\n  camel-cased `IGDBClient` property with `.query()`, `.findById()`,\n  `.search()`, `.request()`, `.count()`, `.meta()`, and protobuf helpers.\n- **Auth:** Twitch client credentials are exchanged, cached, and refreshed with\n  single-flight concurrency so parallel cold-start requests share one token\n  fetch.\n- **Retries:** transient failures are retried through `@api-wrappers/api-core`.\n- **Rate limiting:** the default limiter matches IGDB's documented request and\n  concurrency limits.\n- **Pagination:** use `limit()` / `offset()` for UI pages, `.count()` for\n  totals, and `.paginate()` for background syncs.\n- **Structured errors:** handle `IGDBAuthError`, `IGDBRateLimitError`,\n  `IGDBNotFoundError`, and `IGDBValidationError` without parsing strings.\n- **api-core runtime:** HTTP transport, plugins, retry, rate limiting, timeout,\n  custom fetch, and logging flow through the shared\n  `@api-wrappers/api-core` runtime.\n\n---\n\n## API coverage\n\n- Registered IGDB v4 endpoints are available as camel-cased client properties,\n  including `games`, `platforms`, `companies`, `covers`, `genres`, `websites`,\n  and the rest of the generated endpoint map.\n- Each endpoint exposes typed query helpers plus raw escape hatches:\n  `.query()`, `.findMany()`, `.findById()`, `.search()`, `.request()`,\n  `.count()`, `.meta()`, and `.requestProtobuf()`.\n- Client-level helpers cover custom endpoint access, raw requests, counts,\n  metadata, protobuf responses, raw or builder-based multi-query bodies, and\n  webhooks.\n- Utility exports include IGDB image URL building and tag-number creation.\n\nSee [Endpoints](./docs/endpoints.md) and [API Reference](./docs/api-reference.md)\nfor the full surface.\n\n---\n\n## Practical examples\n\n### Search games\n\n```ts\nconst results = await client.games\n  .search(\"zelda\")\n  .select((game) => ({\n    id: game.id,\n    name: game.name,\n    slug: game.slug,\n    rating: game.rating,\n  }))\n  .limit(10)\n  .execute();\n```\n\n### Get a game by ID\n\n```ts\nconst game = await client.games.findById(1942);\n```\n\n### Select only the fields your app needs\n\n```ts\nconst games = await client.games\n  .query()\n  .select((game) => ({\n    title: game.name,\n    summary: game.summary,\n    releaseDate: game.first_release_date,\n    cover: {\n      imageId: game.cover.image_id,\n    },\n  }))\n  .limit(5)\n  .execute();\n```\n\n### Filter by rating, release date, and platform\n\n```ts\nconst games = await client.games\n  .query()\n  .where((game) => [\n    game.rating.gte(80),\n    game.first_release_date.gte(1672531200),\n    game.platforms.containsAll([48, 6]),\n  ])\n  .limit(20)\n  .execute();\n```\n\n### Sort results\n\n```ts\nconst topRated = await client.games\n  .query()\n  .select((game) => ({ name: game.name, rating: game.rating }))\n  .sort((game) => game.rating, \"desc\")\n  .limit(10)\n  .execute();\n```\n\n### Build paginated UI\n\n```ts\nconst pageSize = 20;\nconst pageIndex = 0;\n\nconst baseQuery = client.games\n  .query()\n  .select((game) => ({ id: game.id, name: game.name, rating: game.rating }))\n  .where((game) => game.rating_count.gte(100))\n  .sort((game) => game.rating, \"desc\");\n\nconst [items, total] = await Promise.all([\n  baseQuery.limit(pageSize).offset(pageIndex * pageSize).execute(),\n  baseQuery.count(),\n]);\n```\n\n### Build an IGDB image URL\n\n```ts\nimport { buildImageUrl } from \"@api-wrappers/igdb-wrapper\";\n\nconst coverUrl = game.cover?.imageId\n  ? buildImageUrl(game.cover.imageId, { size: \"cover_big\", retina: true })\n  : null;\n```\n\n### Send a multi-query request\n\nUse `multiQueryBuilder()` when each block can be expressed with the normal\nquery builder. It compiles through the same `.raw()` path as regular queries:\n\n```ts\nconst query = client\n  .multiQueryBuilder()\n  .query(client.games, \"Top Games\", (games) =>\n    games.fields(\"name\", \"rating\").sort((game) => game.rating, \"desc\").limit(5),\n  )\n  .count(client.platforms, \"Platform Count\");\n\nconst response = await client.multiQuery(query);\n```\n\nRaw IGDB multi-query bodies remain supported for full APICalypse compatibility:\n\n```ts\nconst response = await client.multiQuery(`\nquery games \"Top Games\" {\n  fields name,rating;\n  sort rating desc;\n  limit 5;\n};\n\nquery platforms/count \"Platform Count\" {\n};\n`);\n```\n\n---\n\n## Common app use cases\n\n- **Game library apps:** search IGDB, store stable IDs, and fetch typed details\n  for game pages.\n- **Recommendation apps:** filter by rating, platform, genre, release window,\n  and popularity signals without hand-building long strings.\n- **Launchers:** enrich local game metadata with cover art, platform data,\n  release dates, and involved companies.\n- **Game collection trackers:** build paginated browse screens, collection\n  imports, wishlist views, and background sync jobs.\n\n---\n\n## Installation\n\n```bash\nnpm install @api-wrappers/igdb-wrapper\n# or\nyarn add @api-wrappers/igdb-wrapper\n# or\npnpm add @api-wrappers/igdb-wrapper\n# or\nbun add @api-wrappers/igdb-wrapper\n```\n\n> **Requirements:** Node.js 18+ (uses native `fetch`). TypeScript 5+ recommended.\n\n## Runtime support\n\n- Node.js 18+.\n- Bun, including the repo's development and validation commands.\n- TypeScript 5 or 6 projects.\n- Custom `fetch`, transport, plugins, logger, retry, timeout, and rate-limit\n  options through `@api-wrappers/api-core`.\n- Twitch client credentials should be used from server-side code or trusted\n  backend environments, not exposed in browser bundles.\n\n---\n\n## Quick Start\n\nIGDB uses Twitch application credentials. Create an app in the [Twitch Developer Console](https://dev.twitch.tv/console/apps), then set:\n\n```bash\nTWITCH_CLIENT_ID=your_client_id\nTWITCH_CLIENT_SECRET=your_client_secret\n```\n\n```ts\nimport { IGDBClient } from \"@api-wrappers/igdb-wrapper\";\n\nconst client = new IGDBClient({\n  clientId: process.env.TWITCH_CLIENT_ID!,\n  clientSecret: process.env.TWITCH_CLIENT_SECRET!,\n});\n\nconst game = await client.games\n  .query()\n  .select((game) => ({\n    name: game.name,\n    summary: game.summary,\n    releaseDate: game.first_release_date,\n  }))\n  .where((game) => game.slug.eq(\"elden-ring\"))\n  .first();\n\nconsole.log(game?.name);\n```\n\n---\n\n## Documentation\n\n| Guide | Description |\n|---|---|\n| [Getting Started](./docs/getting-started.md) | Installation, credentials, and your first query |\n| [Querying](./docs/querying.md) | Full query builder API: select, where, sort, paginate |\n| [Examples](./docs/examples.md) | Copyable recipes for search, IDs, field selection, filtering, sorting, pagination, images, and multi-query |\n| [Endpoints](./docs/endpoints.md) | All IGDB v4 endpoint properties and raw endpoint access |\n| [Error Handling](./docs/error-handling.md) | All error types and how to handle them |\n| [Configuration](./docs/configuration.md) | Retry, rate limiting, and advanced options |\n| [API Reference](./docs/api-reference.md) | Complete method signatures |\n| [Release Readiness](./docs/release-readiness.md) | Trust checklist for releases, docs, CI, package contents, and examples |\n| [Contributing Ideas](./docs/contributing-ideas.md) | Beginner-friendly issues and slightly larger contribution ideas |\n| [Roadmap](./ROADMAP.md) | Current strengths, known API gaps, and planned improvements |\n| [Contributing](./CONTRIBUTING.md) | Setup, validation, code style, and pull request expectations |\n\nExample source files are also available in [`examples/`](./examples).\n\n---\n\n## Release process\n\nMaintainers publish through Changesets on the `main` branch. The release\nworkflow installs with Bun, runs `bun run verify`, creates or updates the\nChangesets version PR when changesets are present, publishes to npm with\nprovenance, and creates GitHub release notes from the published tag.\n\nRequired repository settings:\n\n- `NPM_TOKEN` secret with permission to publish `@api-wrappers/igdb-wrapper`.\n- GitHub Actions workflow permissions enabled for contents, pull requests, and\n  OIDC provenance.\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/Api-Wrappers/igdb-wrapper/blob/main/LICENSE) file for details.\n\n<br/>\n\n# ❤️\n\n<p align=\"center\">\n<a target=\"_blank\" href=\"https://tdanks.com/mental-health/quote\">\n❤️ Reminder that <strong><i>you are great, you are enough, and your presence is valued.</i></strong> If you are struggling with your mental health, please reach out to someone you love and consult a professional. You are not alone. ❤️\n</a>\n</p>\n","readmeFilename":"README.md"}