{"_id":"soundcloud-api-ts-next","_rev":"34-7c55dfff87c8dc607a68d1ae1919e892","name":"soundcloud-api-ts-next","dist-tags":{"latest":"1.14.0"},"versions":{"1.0.0":{"name":"soundcloud-api-ts-next","version":"1.0.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.0.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"6afaf3ec8f837f1e1117a6238a0851620c2e7d40","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.0.0.tgz","fileCount":11,"integrity":"sha512-4heUh+/vamvprjZxB7zTNG6qsqCnG5PKIPBW2iIw60tz6yXkYsrpXmcTfJWJULeAJnydHQCm/puEpsH/GjqRhw==","signatures":[{"sig":"MEUCIQCijOXwcqtnDYgPmujzihWHiXyjaY+y8WjHZr4fG04UbgIgAe3R9ERY9IDjZR0LLLPmpxPML1/nLQFJoqtTI0M+2yc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34765},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"d8d81b5e6228a5a16f346c7e2bd4a1553d888f6f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.0.0_1770764120364_0.8631853674951784","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"soundcloud-api-ts-next","version":"1.1.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.1.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"3794933b047d670f8bc9a779bdb44ac591b9a04c","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.1.0.tgz","fileCount":11,"integrity":"sha512-1aqoyAL+WmscGJe82OxHdLjkDoGgcTT4miSySHQd054NACZ0LLJ6P9ehq7M98qhYIo1Nuwa6JlzWYMgjtf1qNA==","signatures":[{"sig":"MEQCIGJ3rkJJz0xfltMsV8tqsZxXEgIy/1V2T97RHU7VHxDBAiAaFnKKY9/+J7T3ONi8QitlU8JhqjV6CE4N5JPSqEgyoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75157},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"901fcc2ff577ab9414594a73de745a09671b25a8","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.1.0_1770764533735_0.9649028950738492","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"soundcloud-api-ts-next","version":"1.2.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.2.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"c4082320e9104a8f2ef7bbce3f6ea594e803d97e","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.2.0.tgz","fileCount":11,"integrity":"sha512-4MZV0l4UDIPFwW83A7LDTi209ofMOH6HWhxJ+HuXlvAuReA3aRkJSs9RaH9MzobUHPCcS5EljgzO4Zrf2saizQ==","signatures":[{"sig":"MEYCIQChYieD5kKUXV7hamSCBWhazjNLVyZPBIhwXifF9t/BqgIhAMiL/lmnDCkRiutgEoCY3B/iEwS29wC5QiKQYZ0ZKXgO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93699},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"290c54e42ef68a4a073cad21d4c2005d2deeb0b4","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.2.0_1770764879992_0.3118265716818569","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"soundcloud-api-ts-next","version":"1.3.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.3.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"88dadcd0e4af508fe54e93cf367de9d51a7cc186","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.3.0.tgz","fileCount":11,"integrity":"sha512-Ieqnf9r9e/e2tjLxBf2HeY1NYgoU7WK03wMsJKTw1pqeXAXl2semJhXhg+Y1sFoq/GJgFWg9h9WjMBI2PNLPwg==","signatures":[{"sig":"MEUCIQCI17l4gjqWk241mOu5MR1JQ89qyPIkmtGtY5c7EVRk6gIgWWCoXTnIlbsNIoJuACirtHnz+wZDzxerBcdMr2tKsUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138772},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"069e83ce9c558447b3ee46ce9fe0c34ddf9253ba","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.3.0_1770765863913_0.3482436713597572","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"soundcloud-api-ts-next","version":"1.3.1","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.3.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"d597eb7330b11a6801230b96262897e6359c1236","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.3.1.tgz","fileCount":11,"integrity":"sha512-FR0bvvNYfyq57nv5zxWYStTLB88yLyizRWBJLuB/UsSB/E+j7cUA3KPloF715vwJRIAnMoCJY9dni46dv1BD8g==","signatures":[{"sig":"MEUCIQCwlo06pMLELU+B7QX8Cgk63FFa03ZqJ/UB/HG/nOIraQIgEmmf0cHIsmp8jt8uXcfzf0YfbXJ22sb50dfRN+Ha9F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135987},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"085dee4f43d1992f7cf7e7be83e90dfcb189e6f2","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.3.1_1770766618841_0.4571939245157042","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"soundcloud-api-ts-next","version":"1.4.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.4.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next#readme","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"987eeb02a2743e4209db2995aed067ac4f8c3c6b","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.4.0.tgz","fileCount":11,"integrity":"sha512-Sti5TTyF0k+7ITLdBmBU7gPWS1+U5TFcXXFNFrP8eu+ft/8ZBD6gzHZS5RX/jTxq4O5QTZJZ+i+N2FXpH3SgwQ==","signatures":[{"sig":"MEUCIQDXfZuZVHSC/QFpz3gIosWN2dbazNxfxBAuGQaVgv/O7gIgGorqTKfI7gLL9m2HBrCk1fkI2otsbde0qKVA2t2S69U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198067},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"d1b950240ef14f9aa664808ea798d30019abf911","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.4.0_1770767245991_0.23061909799874503","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"soundcloud-api-ts-next","version":"1.4.1","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.4.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"a3b66c743d119cb4c462ce625dc5552eeb8d02a1","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.4.1.tgz","fileCount":11,"integrity":"sha512-b74L7zrOQMDh6k63WB8bSm4mdM9mrS4BmAQNZGig9OPt5A6IK8gED8aCT05uuB/8asbpy8P4pnH1nyBxF9yokg==","signatures":[{"sig":"MEYCIQCMiPBwOZRmyfZsnOD23pcfnfUiWLjxXDXAqPlgabgzEQIhALccwslstWSlwKRib+QN50+lewhiCUU6Hxru+jNKIamu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198181},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"a6f72a047c9471f1168ca9dd6a02443681dfb2fa","scripts":{"dev":"tsup --watch","docs":"typedoc","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","react":"^19.0.0","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.4.1_1770767605766_0.40918046554677634","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"soundcloud-api-ts-next","version":"1.5.0","keywords":["soundcloud","nextjs","react","hooks","soundcloud-api","typescript","soundcloud-next"],"license":"MIT","_id":"soundcloud-api-ts-next@1.5.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"b8c36f44c57723fbcba438b23f722e5b0f501acd","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.5.0.tgz","fileCount":11,"integrity":"sha512-CgbWm1RdXxTLY5G1MxvnUFjIFw1epP9TYm3bTpGEf1hFc7V64kNX1xBFswYBfdZi+UvsJV27uqfsZDKI1XtHNw==","signatures":[{"sig":"MEUCIEY9CCeZ2lcuhWmfbwHLGY7wVgi+n7ieEDkv5+c3K8ffAiEAqUCv63Xf0fw8h6WJYCCi+DUFLgoJ7izhCLhpV8hwGks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198816},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"83d9c58762d56ec20ab274a8fd7986f743260e38","scripts":{"dev":"tsup --watch","docs":"typedoc","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Next.js integration for soundcloud-api-ts — React hooks + secure API route handlers","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.5.0_1770768518327_0.5768695756673934","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"soundcloud-api-ts-next","version":"1.5.1","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.5.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"1d34cc84a7e0a0fa2715f0bb76374e51f378ce6f","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.5.1.tgz","fileCount":11,"integrity":"sha512-jLse0TGLgV6ifnSGlyJWW/Q1DpHbNBZYbmo12LjHQB/D3/gdnj5pDqVJNS2YExlrwAGPqouvEf1Bz88VZe9WWw==","signatures":[{"sig":"MEYCIQDbzcUywHB4zeo7/sI38x/vnEmFIYRZJfhiLPCmZnGobQIhAJqOSmGk6OXQWAKttJFoEx+rf8avclLg0vbg86lyu9/6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200325},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"32c90910a4d7d262f3553fb1415c6e2e89d92cfa","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.5.1_1770769267495_0.5248958899753042","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"soundcloud-api-ts-next","version":"1.5.2","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.5.2","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://github.com/twin-paws/soundcloud-api-ts-next","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"b0bfe8dc392fcd3dd7762a05fa8befcff23fdf4d","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.5.2.tgz","fileCount":11,"integrity":"sha512-QrE1ZrpeBbXvtEbQHoXGn1SmEK8se3GQy13yEmf1KHEqept3ESWlQ1/Rfke0lOyrQ1zXByTn53+DSz8iroiTRQ==","signatures":[{"sig":"MEUCIBRdHZ6XfGljazxO9Q4BgeU8Avo9ahMbBQ64eN/DoQOyAiEAlZzFQLZ5MiOGRjwK1LcpbLhj2DiGrfJXIiLxlnfqZCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200364},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"2f1e73277770146fbf27b8faa2325d8ed7ef5784","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.5.2_1770769519566_0.23157288748984906","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"soundcloud-api-ts-next","version":"1.5.3","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.5.3","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"f81bb5a31100b6bcb1ae22003325299ff1744082","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.5.3.tgz","fileCount":11,"integrity":"sha512-Wlq5Sl4qf+w9yJRMHEieFSrsB+pBcYtb9vQv3eQUHv+y1vuQvpfu2c1YPMReeDkVv6A508oUktsF2CF/8ThtlA==","signatures":[{"sig":"MEYCIQD3giCy+cJCOgl27GkQHMW97bH8jWuIGzJYQVFsBRBj/AIhAMl5/w1YY249fRI3W8nIn/Y8n3QPGYY4aADPgwO0RA+R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200364},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"8252d4662ad22e79bda05cb4dd1f6b933c7381fb","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.5.3_1770769824368_0.9527809735928625","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"soundcloud-api-ts-next","version":"1.6.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.6.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"a6e71c6fc77a49399e1baca137c51fb54435295e","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.6.0.tgz","fileCount":11,"integrity":"sha512-u7rVNxxdiUEUwI7lBqPeCwB08Ki+dXoNy0xE2qVHl1xIwVXYxHU4C7rwf7tzL0D1W90PTnQEuAYMZO500fFtVA==","signatures":[{"sig":"MEQCIFLTUA1Wch4m2GzQNO9ANPsQdo/vzszoNPTWyB2xSRIYAiA9OkZKvEu1L2eqJhaVFZJKsmJtM073TYeehI4FNuLaog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200480},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"fea8b5b93d3ae5ac39683d7d8e726e755b0e7173","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.3"},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.6.0_1770771521854_0.7888884453660554","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"soundcloud-api-ts-next","version":"1.7.2","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.7.2","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"21b0bf90ec9f6cff35ca0486c514dbdaf9f97c92","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.7.2.tgz","fileCount":11,"integrity":"sha512-n8bAtj/pccXB+QO2qJtn6IKWMlDI2oXA3zc9OQ+JYxtEaWo75CI1Tmm0Etf37UFX6iNPmGEcb2zRBOQGvnpkVA==","signatures":[{"sig":"MEUCID7qY32Q8wsqrLHWNxrGrC/OJBADTM9Mhnsvhg4hBVAzAiEA7hVnAy/KILfoJTYbgYDSs1mrTQrJvGNxe6CHt7apuv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208943},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"75bcf7e6f88add0c8b6ef993b705e28ce25098e7","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.7.2_1770776896424_0.5076838440125191","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"soundcloud-api-ts-next","version":"1.7.3","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.7.3","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"a14fd0ef95a76ffa7f0fe7662c229de1ddec0633","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.7.3.tgz","fileCount":14,"integrity":"sha512-HK6mvC/qXWvY7HY0jdKa6XoTTxJX9H0xEwI+AOf1+y/yzpsuigcnYpKo24AYcbTdVmRjKA4Hw449bNOy6uPGcA==","signatures":[{"sig":"MEQCIDTIz1XFBYsN9UQEBpZmew1oOOn9EJsItkA3dtrUosi8AiBa4zNRRtWSxsEXuRGTLTlQB5vuiVxto05fmY9HXktOkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225962},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"b5589fcae53122e7f77d8efae515f4d5b97158e1","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.7.3_1770777353637_0.16669034658371396","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"soundcloud-api-ts-next","version":"1.7.4","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.7.4","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"61242342f20085c8c6c75a487a46107dfbebe862","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.7.4.tgz","fileCount":14,"integrity":"sha512-MwZNmR15XHiFoaa0rvXF7JBXMi7raRZl2svepBTWCBW5U5UzHNY38e6pjX3aR/mlUluVVOixoBPSJuK7lExi1w==","signatures":[{"sig":"MEUCIAtq19O6HArMNSZpfNpgOhDeFt33iTpYobIcwJROegsEAiEA8R8wSAIkqoUve89FvtpcbfScpLw/sYqxNNhXGGjjIPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225966},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"1090396c8947722351996404ff61aab488f51aed","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"twin-paws","email":"twinpawsai@icloud.com"},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.7.4_1770781759363_0.6937883097068505","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"soundcloud-api-ts-next","version":"1.7.5","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.7.5","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"7254cb375d6d28c040a4cec19f88961ee30fe177","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.7.5.tgz","fileCount":14,"integrity":"sha512-A8jEqwKyXh3ZpWBAENcp03OYYOkpBkX+FCwDBCOvO1NKeXV05xkDsSjYoRPlPSS7h3RrQ+MJN0maf981nihWLA==","signatures":[{"sig":"MEUCIQCd+6qnyf1fec1tIgWd/6XZHmKnF05ww4/v07IRRyhDgwIgQpQk4QjKPXYtC3Y+T7ZafWTzRFURsDtSpk6ZCM6OJQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225966},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"696f72b9d3e71fc09d31d4a7c16108095c90c167","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.9.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.7.5_1770784980903_0.3189529380539635","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"soundcloud-api-ts-next","version":"1.8.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.8.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"aecc73f7cf4576ac57e88ed367937b2a716febbf","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.8.0.tgz","fileCount":14,"integrity":"sha512-B/t1nPGU4peHrQSfRJaeKipEV0EyAeF59NTBKJHHFd7nDMTbhL8p2F9a+BpXkGv39t+dX3ODG+PP5SCDE+ewiQ==","signatures":[{"sig":"MEYCIQCqoNBAlgjFBNhclqnNzhFK6LMtJt/nGNGtv7sH/zOD5AIhAId1dELZWfrM4f0A0xGw2qTHrIwbW3UbWD84Kn2MKvMG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225967},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"a7603b1d8248744ad04cd5a672d7aaca74824db2","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.10.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.8.0_1770923369544_0.9056779187021966","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"soundcloud-api-ts-next","version":"1.8.1","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.8.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"6ddb7423a7e187f0426e70fd22fe60b1ff0ca783","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.8.1.tgz","fileCount":14,"integrity":"sha512-ynhqWRyhsWfeWlsXyZt2ML1ALyZm2ZjxCxF24fAcmLTIyKeecZ/N964bpVDgXvHKTwZ8mD8O0l59w+bA4BVe5Q==","signatures":[{"sig":"MEQCIHWRbL5ImAWpR/1ZxTio6xrf0E1PtB2eL30DQzzYgQcdAiB5DLaqpnfqYmgWKzDRiCqKJmmvDaBc6twuaWxe4+9+yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226051},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"91688b9d283e5bbbeb9c1a9fe5e9191692e1f140","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.10.1"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.8.1_1770924781088_0.8103209840553918","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"soundcloud-api-ts-next","version":"1.8.2","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.8.2","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"ecc774748557c0e9678fa4b71620a0cf0354d887","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.8.2.tgz","fileCount":14,"integrity":"sha512-5hv7/sM7PNuIN9MSKShLlyyiwhranx9zUEa/2uHz0zoRZhC1oiuiOUCd58jjY6NABsAuJvg9KCs2L+eUCaQQKg==","signatures":[{"sig":"MEQCIC7xcJmRBIKsGcNrTTxlBjkAv+oLykQE5il0YOUBPy/MAiBMRvROTKM/qXO9FgkS/XpVSAia6gq0sc7BZf30m0UxFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226051},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"c5c49994e4cb9be1e6c735181694fdc05009b02c","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.10.2"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.8.2_1770937039101_0.804247813582885","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"soundcloud-api-ts-next","version":"1.9.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.9.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"fdcad84f7865c08219e688072a5fe988aa83168e","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.9.0.tgz","fileCount":14,"integrity":"sha512-keh36Iib3rmeAZwqbv67B4prUuQ8AXhq9RA7GRo9tAOuyYlkwnJqyPF+RBGEVePAHUgBMQsCoFoAoT1VxZWnVw==","signatures":[{"sig":"MEQCIEDtOT3tJMaxbNEcjqAwHqEWNf0uv/ZCKgym7xX5VeE+AiAbf+n+4QGzCb7LgAvst88aUIcORkLVoMwRb28yqOFi5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236787},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"837d5e4b8b6bd99dd70a3b4b6648fded4e11d8dd","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.11.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.9.0_1771201963374_0.1256647049976123","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"soundcloud-api-ts-next","version":"1.9.1","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.9.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"d3efd105a9886c54fca0604b4d70c81d0f325df5","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.9.1.tgz","fileCount":14,"integrity":"sha512-gAhfrEVYF9guXonwqlSNDKjRmUs7XvxAfCJxTls4D/SzxK0DfkjSHJFIxCrFRwuord3eZBC0uZNtzLKp0UDA0w==","signatures":[{"sig":"MEYCIQC91R1lNubz4PayvQr9yugjxXh8X9GCZo8MtAAn9xxy8gIhAJNj/dCquHBvFoN9P7uRKpWL9ugCBeEsARlfWvVYNfni","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237919},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"fae52f091e28f29cc36a1ab24c8443ef48f7c594","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.11.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.9.1_1771209505499_0.18435320492074547","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"soundcloud-api-ts-next","version":"1.9.2","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.9.2","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"c1ddd0ff0c8bac4c72f1c77ff93bebccc44c1ebf","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.9.2.tgz","fileCount":14,"integrity":"sha512-lIrOmU+qQMrNWs0suMDnCV8dA2MJNNrViW6dwmRQRZsP4VVeffFq/38GCB+Ji5OPLfvY3ySBqVOJkBkH18Sa7g==","signatures":[{"sig":"MEUCIQCMg9hJaOlvS6HAcP9gjlR72691BBH0E1i9LjBwR+bJ6AIgUc+W/qNEjwRWCKqinkgvfEFtixhz/WIEGViBp+9B9tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237919},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"74e46d4da864cbb8c40517bd281a0e14569494c3","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.11.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.9.2_1771224806627_0.8284752561085105","host":"s3://npm-registry-packages-npm-production"}},"1.9.3":{"name":"soundcloud-api-ts-next","version":"1.9.3","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.9.3","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"3fb52dfbe56f0878241ae26d01b0037c4d76f7af","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.9.3.tgz","fileCount":14,"integrity":"sha512-5Qf1u7hpcTHTeoyrgdzRhVdgwkayhzuhmWJ26upjSGWGdVrJ2bZj8U81ZZ95ELPfwY6J+XLlnvoIH70cd51dFQ==","signatures":[{"sig":"MEQCICXgh8r9IkFNAL8oBw+DQaXA7A7+OijehpAY0+QZ5gpvAiAf63ff+AkbZm4WeOSbV2NFfkVLyl3qNWLgGcN9AKZcdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237919},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"725820d557fcaabdb670c13d7e6acfd4f9c2f645","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.11.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.9.3_1771263229785_0.6709922957971024","host":"s3://npm-registry-packages-npm-production"}},"1.9.4":{"name":"soundcloud-api-ts-next","version":"1.9.4","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.9.4","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"1f752f28926a1fba372186621329adfcb23cce31","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.9.4.tgz","fileCount":14,"integrity":"sha512-IOZ92HsnRPdeKuelNI3yuVMVF06tYbV2yQpvKPCd77DKZVIsjFR5aggWf+no+vZU04jt60dzmz+ItLa8uIZXCg==","signatures":[{"sig":"MEQCIHgfbldz6e/SAU6HMS/B748Yl6K5yjXxvQTt37By5XXZAiAEKXDhnjdiUfMJnCs1EHMPbgzf7cYP+ZDzCgiKbG1+aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.9.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255312},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"b5113f474e8007f70bd703a478499fcdb910695f","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.0","dependencies":{"soundcloud-api-ts":"^1.11.3"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.9.4_1771813838856_0.44201284833733245","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"soundcloud-api-ts-next","version":"1.10.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.10.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"bd328cf2d7e4d990afce9cf2b1299f4d7fbb1ca2","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.10.0.tgz","fileCount":14,"integrity":"sha512-9+TX/z6CFLeFV5LYG1R2k+UNUBD2dB2wAyZBQx+WE9bX3frJbDR4a8SK8gVTaw88Ljlysielp+JDiXLxq/hlNg==","signatures":[{"sig":"MEQCIDSkrqEe+/7oRqqJGal8fubpN63fhA66Tv2YsAmjHHQZAiBSuFrQ/hBd0zYitTspqTcGiXnL5FfbYp8TZLNUH2JnDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":264941},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"7c1427d82c6e57ff6eae6ac60f36295e349558e4","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.10.0_1772148770660_0.049288198764318114","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"soundcloud-api-ts-next","version":"1.11.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.11.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"f653f859e7b6ea98c758708605afe4d2efade784","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.11.0.tgz","fileCount":14,"integrity":"sha512-o80h+NAsSWhEueMp1R0+w0Xt3AMDvNeJuI9ZCr3pNOt1ORHiYfDJdYKZUqF1ZDCkzyXcXsVqc1aKThyIXeqlTQ==","signatures":[{"sig":"MEYCIQCsgMB3JLdDy/1fzh9ablkVlCDwVJaVbVglgX7BXAFGywIhAJapZ8OU9zef5TFjHQ0HQdqKIwdrRXVDivIF6rZMPNYH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":343419},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"e2a961a6731a9cc51bb4660b94d20ef19380d72e","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.11.0_1772154918562_0.3859918250512884","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"soundcloud-api-ts-next","version":"1.12.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.12.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"7dbbd715b9e7e068ee5515e4bb5c620d79cd3032","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.12.0.tgz","fileCount":14,"integrity":"sha512-YxGIJzBSwELthSrs4WDbmzD+Dn3sGdxOwEPRrB30eOXBmhjyrEkFDs7KkySCCD/Hq8FddlciGvDIAzktHQ2HKA==","signatures":[{"sig":"MEUCIQCYmIs9/N9zrvA6qKVyRRYMs5idW1Q48Wd/UNcTCuv9xAIgcWeNX5PigHJ0hXW1mIASIagkn9nvi1kcbzzu55fhcqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376810},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"46ff3a3cafdcf1ff392667a4af1000e0ddae061b","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.12.0_1772154919522_0.6775616178179935","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"soundcloud-api-ts-next","version":"1.12.1","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.12.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"8967b137452b97be9533723ccf92cebea4cc7dce","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.12.1.tgz","fileCount":14,"integrity":"sha512-A9WLhr9K8mdWVYNFiXnJESKhXX4PvzpgvDFIhUJxPJDgCPyak/YlSCh0KopewAuJk/kdTp8qi8DHc2OpWj8klQ==","signatures":[{"sig":"MEQCIF2LwQLZzv91/Tk5z4+beadOT1FgdSeKSagiVvuPlyJ6AiBAoAsBsPkJqdpYtb9UVeKC3WTJQ5KkS/Mdl0DSSZTOQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":378429},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"00d0d5decf51f48374c11e5b1d57b4276055e55a","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.12.1_1772156155050_0.9533039019100913","host":"s3://npm-registry-packages-npm-production"}},"1.12.2":{"name":"soundcloud-api-ts-next","version":"1.12.2","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.12.2","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"7447bfb27c7616a3a6bcb32f161c734040801c77","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.12.2.tgz","fileCount":14,"integrity":"sha512-Af+QHw+PHc1irv1utrzojDpn5PJQoearDcfTyzwtKo94F5DzRSI927/U6NkqfBfKsgnYKpcx4LbeAkOlyd0J7g==","signatures":[{"sig":"MEYCIQCHK/cYWMmn5+o7Raqy0obJ5ieYR59vBoK0Qf03XlwMWAIhANDe4yvxzRn5U/KkKd4/gO+CL+fU2+tNxVHDzpYW7JQh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":380535},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"7acf968ee30a020676f9a1b90796c297f2de3b08","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.12.2_1772156389403_0.3479597265538963","host":"s3://npm-registry-packages-npm-production"}},"1.12.3":{"name":"soundcloud-api-ts-next","version":"1.12.3","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.12.3","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"d69d145b25fe83cbf551a25c17cdbe0f2ed3ffa1","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.12.3.tgz","fileCount":14,"integrity":"sha512-2Sh79KB0BOJv3u4UQogwTBOrrDVYYkWNfmHxbr0Cjsh1W52IhQPLO5snAugKtiBIXci8HHnSGJZivg3uXTBCkQ==","signatures":[{"sig":"MEUCIBBKrWxrcLLjjsH12A+EmK2uZ6QAZimQcaKYncvxoj9cAiEAg+QJIoiJx9c03oArNeUbzsvYUoSz/XZohQIAxCMMSTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":380989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"6ebd5b0dc22d71bd077e60269273357f2689e50b","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.1"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.12.3_1772163735892_0.11699822818151095","host":"s3://npm-registry-packages-npm-production"}},"1.12.4":{"name":"soundcloud-api-ts-next","version":"1.12.4","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.12.4","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"539e2deeb19ed9314710b5af0b8f20ab8ac3abc3","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.12.4.tgz","fileCount":14,"integrity":"sha512-FqtXLZtm7SIe6Ukne6M2dJffFR6E3SjhWqHcWZ4S4+Mhk1Z06qNG4uYPEvcDESjXkTTQopeEe+BBZfhwn5Jocw==","signatures":[{"sig":"MEUCIE8GVx/XheoyAtjvV7SXqhneAjR9/mRcLZBlF8M/1S8LAiEAh55s7RtrfkJMIynURa77LJ/4Vv+kPg8FS9ViTUxK7mI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":381005},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"5326692dd0ffb1e4c537be7aa0d727c695ecef2b","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.8.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.13.1","dependencies":{"soundcloud-api-ts":"^1.13.2"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.12.4_1772467443440_0.11223263089346047","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"soundcloud-api-ts-next","version":"1.13.0","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.13.0","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"6f0bd059c46add774013f88043cee412630c0c10","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.13.0.tgz","fileCount":14,"integrity":"sha512-hZFjCcs4adjyZp82Kcii/+2Dx6iXzhnmggFf8v/7mgdzHqAonyhNeG4skLbybQpbrUw2DsW70Fz/8h7qmWl9uQ==","signatures":[{"sig":"MEUCIFvv3H9YSslBom7LAui3rG+43eeay5NskVmyILdSDLwaAiEA4paWu7/pON3ATxyCQIp8IZCie3uMPl4kH07M1Zn5xd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":388631},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"2c96c14dcb03bfb2b20733130311510e7fa74516","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.16.0","dependencies":{"soundcloud-api-ts":"^1.14.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"next":"^15.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.13.0_1781131702691_0.24890039426721988","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"soundcloud-api-ts-next","version":"1.13.1","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"license":"MIT","_id":"soundcloud-api-ts-next@1.13.1","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"dist":{"shasum":"0f80158c9f779f6fd60547c89f91b6db3cf68825","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.13.1.tgz","fileCount":14,"integrity":"sha512-7C4xGXXStRpEWOFgj1p2ZqjLHiFa7Lkq4LpoQoO/CotWEP+SbenvMuXkPnQlkAlC7wmFKZApQbuvuDIWqwJOQg==","signatures":[{"sig":"MEUCIQDlz9peHx1WCqk8PVcz0TNzlEvhpdXE2izJb71LSaT0nwIgOtoXA/E0Vh16lJ49PlXbZSBpVHp0x9mK3jm43eRgnB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":388646},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"gitHead":"2dd6fb706c5fd2be845581cc66b1e08fbd7da3a6","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:generate":"typedoc","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"repository":{"url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","directories":{},"_nodeVersion":"24.16.0","dependencies":{"soundcloud-api-ts":"^1.14.0"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"next":"^16.0.0","tsup":"^8.0.0","jsdom":"^28.0.0","react":"^19.0.0","eslint":"^10.0.0","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.7.0","@types/react":"^19.0.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","@typescript-eslint/parser":"^8.55.0","eslint-plugin-react-hooks":"^7.0.1","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/soundcloud-api-ts-next_1.13.1_1781135612995_0.5450024971029983","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"soundcloud-api-ts-next","version":"1.14.0","packageManager":"pnpm@10.23.0","description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","license":"MIT","repository":{"type":"git","url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git"},"homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","docs:generate":"typedoc","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"eslint src/"},"dependencies":{"soundcloud-api-ts":"^1.15.0"},"peerDependencies":{"next":"^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"next":{"optional":false}},"devDependencies":{"@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/react":"^19.0.0","@typescript-eslint/eslint-plugin":"^8.55.0","@typescript-eslint/parser":"^8.55.0","@vitejs/plugin-react":"^5.1.4","@vitest/coverage-v8":"^4.0.18","eslint":"^10.0.0","eslint-plugin-react-hooks":"^7.0.1","jsdom":"^28.0.0","next":"^16.0.0","react":"^19.0.0","tsup":"^8.0.0","typedoc":"^0.28.16","typescript":"^5.7.0","vitest":"^4.0.18"},"bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"engines":{"node":">=20"},"typesVersions":{"*":{"server":["./dist/server.d.ts"]}},"gitHead":"99a265b8ddc28635e1d711697a3caa9e860d239f","_id":"soundcloud-api-ts-next@1.14.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-H49IMdERxfLNpRh9zMznQRvBaBzeVZmQfZudI8aLOwY2Bq4PWfwT8BoZuIaiRS1cEEz/kVayx+9HxXGsxluzug==","shasum":"fd55bd800168cee576164b5efb4a78524007adfb","tarball":"https://registry.npmjs.org/soundcloud-api-ts-next/-/soundcloud-api-ts-next-1.14.0.tgz","fileCount":14,"unpackedSize":409028,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/soundcloud-api-ts-next@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHCYCOT5hGmUsH8vS9LA4+Frgx8sVn0A1JuS6RLEP4AqAiEAuIepPv2lmgULUszx7aGqWHSS0nTRI0LiYIPCOmTBetg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d85492-ee85-4778-bc24-ea63037d547f"}},"directories":{},"maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/soundcloud-api-ts-next_1.14.0_1786939780333_0.9992864770896344"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-10T22:55:20.269Z","modified":"2026-08-17T04:09:40.878Z","1.0.0":"2026-02-10T22:55:20.505Z","1.1.0":"2026-02-10T23:02:13.915Z","1.2.0":"2026-02-10T23:08:00.133Z","1.3.0":"2026-02-10T23:24:24.070Z","1.3.1":"2026-02-10T23:36:59.000Z","1.4.0":"2026-02-10T23:47:26.144Z","1.4.1":"2026-02-10T23:53:26.141Z","1.5.0":"2026-02-11T00:08:38.481Z","1.5.1":"2026-02-11T00:21:07.646Z","1.5.2":"2026-02-11T00:25:19.819Z","1.5.3":"2026-02-11T00:30:24.531Z","1.6.0":"2026-02-11T00:58:41.997Z","1.7.2":"2026-02-11T02:28:16.579Z","1.7.3":"2026-02-11T02:35:53.790Z","1.7.4":"2026-02-11T03:49:19.499Z","1.7.5":"2026-02-11T04:43:01.053Z","1.8.0":"2026-02-12T19:09:29.801Z","1.8.1":"2026-02-12T19:33:01.254Z","1.8.2":"2026-02-12T22:57:19.247Z","1.9.0":"2026-02-16T00:32:43.515Z","1.9.1":"2026-02-16T02:38:25.634Z","1.9.2":"2026-02-16T06:53:26.768Z","1.9.3":"2026-02-16T17:33:49.947Z","1.9.4":"2026-02-23T02:30:39.034Z","1.10.0":"2026-02-26T23:32:50.802Z","1.11.0":"2026-02-27T01:15:18.775Z","1.12.0":"2026-02-27T01:15:19.685Z","1.12.1":"2026-02-27T01:35:55.214Z","1.12.2":"2026-02-27T01:39:49.625Z","1.12.3":"2026-02-27T03:42:16.062Z","1.12.4":"2026-03-02T16:04:03.644Z","1.13.0":"2026-06-10T22:48:22.828Z","1.13.1":"2026-06-10T23:53:33.138Z","1.14.0":"2026-08-17T04:09:40.551Z"},"bugs":{"url":"https://github.com/twin-paws/soundcloud-api-ts-next/issues"},"license":"MIT","homepage":"https://twin-paws.github.io/soundcloud-api-ts-next/","keywords":["soundcloud","soundcloud api","soundcloud-api","typescript","nextjs","next.js","react","react hooks","app router","pages router","oauth","soundcloud oauth","soundcloud typescript","soundcloud react","soundcloud next","music api","api route handlers"],"repository":{"type":"git","url":"git+https://github.com/twin-paws/soundcloud-api-ts-next.git"},"description":"TypeScript SoundCloud API React hooks and Next.js API route handlers — App Router, Pages Router, OAuth PKCE, secrets stay server-side","maintainers":[{"name":"twin-paws","email":"twinpawsai@icloud.com"}],"readme":"# soundcloud-api-ts-next\n\n[![npm version](https://img.shields.io/npm/v/soundcloud-api-ts-next)](https://www.npmjs.com/package/soundcloud-api-ts-next)\n[![npm downloads](https://img.shields.io/npm/dw/soundcloud-api-ts-next)](https://www.npmjs.com/package/soundcloud-api-ts-next)\n[![CI](https://github.com/twin-paws/soundcloud-api-ts-next/actions/workflows/ci.yml/badge.svg)](https://github.com/twin-paws/soundcloud-api-ts-next/actions/workflows/ci.yml)\n[![coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)]()\n[![license](https://img.shields.io/npm/l/soundcloud-api-ts-next)](https://github.com/twin-paws/soundcloud-api-ts-next/blob/main/LICENSE)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/soundcloud-api-ts-next)](https://bundlephobia.com/package/soundcloud-api-ts-next)\n[![install size](https://packagephobia.com/badge?p=soundcloud-api-ts-next)](https://packagephobia.com/result?p=soundcloud-api-ts-next)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)\n[![Node](https://img.shields.io/badge/Node.js-≥20-339933.svg)](https://nodejs.org/)\n[![docs](https://img.shields.io/badge/docs-TypeDoc-blue.svg)](https://twin-paws.github.io/soundcloud-api-ts-next/)\n\nTypeScript React hooks and Next.js API route handlers for the SoundCloud API. Works with App Router and Pages Router. OAuth PKCE authentication built in. Client secrets stay on the server.\n\n[**API Docs**](https://twin-paws.github.io/soundcloud-api-ts-next/) · Built on [soundcloud-api-ts](https://github.com/twin-paws/soundcloud-api-ts) — the TypeScript-first SoundCloud API client.\n\n> **When to use this vs direct API calls:** Use this package when you're building a Next.js app and want typed React hooks for SoundCloud data without exposing credentials to the browser. The hooks fetch through your Next.js API routes, keeping secrets server-side. Supports both App Router and Pages Router. For backend-only or non-React projects, use [soundcloud-api-ts](https://github.com/twin-paws/soundcloud-api-ts) directly.\n\n## Install\n\n```bash\nnpm install soundcloud-api-ts-next\n```\n\n## Quick Start\n\n**1. Create API routes** — secrets stay server-side:\n\n```ts\n// app/api/soundcloud/[...route]/route.ts\nimport { createSoundCloudRoutes } from \"soundcloud-api-ts-next/server\";\n\nconst sc = createSoundCloudRoutes({\n  clientId: process.env.SOUNDCLOUD_CLIENT_ID!,\n  clientSecret: process.env.SOUNDCLOUD_CLIENT_SECRET!,\n  redirectUri: process.env.SOUNDCLOUD_REDIRECT_URI, // for OAuth\n});\n\nconst handler = sc.handler();\nexport const GET = handler;\nexport const POST = handler;\nexport const DELETE = handler;\n```\n\n<details>\n<summary>Production hardening — allowlist, cache headers, CORS, CSRF</summary>\n\n```ts\nconst sc = createSoundCloudRoutes({\n  clientId: process.env.SC_CLIENT_ID!,\n  clientSecret: process.env.SC_CLIENT_SECRET!,\n\n  // Only expose these route prefixes (403 for anything else)\n  routes: {\n    allowlist: [\"tracks\", \"search\", \"users\", \"playlists\", \"me\", \"auth\", \"resolve\"],\n  },\n\n  // Cache-Control per route prefix (applied to GET responses only)\n  cacheHeaders: {\n    tracks: \"public, max-age=60, stale-while-revalidate=300\",\n    me: \"no-store\",\n    default: \"public, max-age=30\",\n  },\n\n  // CORS — restrict to your origin\n  cors: {\n    origin: process.env.NEXT_PUBLIC_BASE_URL!,\n    methods: [\"GET\", \"POST\", \"DELETE\"],\n  },\n\n  // Block cross-origin state-changing requests\n  csrfProtection: true,\n});\n```\n\nAll error responses use a consistent envelope:\n\n```json\n{ \"code\": \"NOT_FOUND\", \"message\": \"Not found\", \"status\": 404, \"requestId\": \"...\", \"errorCode\": \"not_found\" }\n```\n\nSee [`examples/app-router/route.ts`](./examples/app-router/route.ts) for the full example.\n</details>\n\n<details>\n<summary>Pages Router setup</summary>\n\n```ts\n// pages/api/soundcloud/[...route].ts\nimport { createSoundCloudRoutes } from \"soundcloud-api-ts-next/server\";\n\nconst sc = createSoundCloudRoutes({\n  clientId: process.env.SOUNDCLOUD_CLIENT_ID!,\n  clientSecret: process.env.SOUNDCLOUD_CLIENT_SECRET!,\n});\n\nexport default sc.pagesHandler();\n```\n</details>\n\n<details>\n<summary>Custom token provider (e.g. Redis, database)</summary>\n\nIf your app stores OAuth tokens externally instead of using client credentials:\n\n```ts\nimport { createSoundCloudRoutes } from \"soundcloud-api-ts-next/server\";\nimport { getRedisClient } from \"../lib/redis\";\n\nconst sc = createSoundCloudRoutes({\n  clientId: process.env.SOUNDCLOUD_CLIENT_ID!,\n  clientSecret: process.env.SOUNDCLOUD_CLIENT_SECRET!,\n  getToken: async () => {\n    const redis = await getRedisClient();\n    return redis.get(\"soundcloud:access_token\");\n  },\n});\n\nexport default sc.pagesHandler();\n```\n\nWhen `getToken` is set, it's called for every public route instead of the built-in client credentials flow. Auth routes (`/me/*`, actions) still use the `Authorization: Bearer` header from the request.\n</details>\n\n**2. Add the provider:**\n\n```tsx\n// app/layout.tsx\nimport { SoundCloudProvider } from \"soundcloud-api-ts-next\";\n\nexport default function Layout({ children }) {\n  return (\n    <SoundCloudProvider apiPrefix=\"/api/soundcloud\">\n      {children}\n    </SoundCloudProvider>\n  );\n}\n```\n\n**3. Use hooks:**\n\n```tsx\nimport { useTrackSearch, usePlayer } from \"soundcloud-api-ts-next\";\n\nfunction SearchPage() {\n  const { data: tracks, loading } = useTrackSearch(\"lofi beats\");\n\n  if (loading) return <p>Searching...</p>;\n\n  return tracks?.map((track) => (\n    <div key={track.id}>\n      <p>{track.title} — {track.user.username}</p>\n    </div>\n  ));\n}\n```\n\n---\n\n## Hooks\n\nAll hooks return `{ data, loading, error }`.\n\n### General\n\n| Hook | Description |\n|------|-------------|\n| `useResolve(url)` | Resolve a SoundCloud URL to a track, user, or playlist |\n\n### Tracks\n\n| Hook | Description |\n|------|-------------|\n| `useTrack(id)` | Single track |\n| `useTrackSearch(query)` | Search tracks |\n| `useTrackComments(id)` | Track comments |\n| `useTrackLikes(id)` | Users who liked a track |\n| `useRelatedTracks(id)` | Related tracks |\n| `usePlayer(trackId)` | Audio player — `{ playing, progress, duration, play, pause, toggle, seek }` |\n\n### Users\n\n| Hook | Description |\n|------|-------------|\n| `useUser(id)` | Single user |\n| `useUserSearch(query)` | Search users |\n| `useUserTracks(id)` | User's tracks |\n| `useUserPlaylists(id)` | User's playlists |\n| `useUserLikes(id)` | User's liked tracks |\n| `useUserFollowers(id)` | User's followers |\n| `useUserFollowings(id)` | User's followings |\n| `useRelatedUsers(id)` | Related artists |\n| `useUserReposts(id)` | User's track reposts |\n\n### Playlists\n\n| Hook | Description |\n|------|-------------|\n| `usePlaylist(id)` | Single playlist |\n| `usePlaylistSearch(query)` | Search playlists |\n| `usePlaylistTracks(id)` | Playlist tracks |\n\n---\n\n## Server Components (RSC)\n\nUse the server helpers (`getTrack`, `searchTracks`, `getUser`, `getPlaylist`, `getMe`) in React Server Components with optional `next/cache` revalidation:\n\n```ts\n// app/tracks/[id]/page.tsx\nimport { getTrack } from \"soundcloud-api-ts-next/server\";\n\nconst config = {\n  clientId: process.env.SC_CLIENT_ID!,\n  clientSecret: process.env.SC_CLIENT_SECRET!,\n};\n\nexport default async function TrackPage({ params }: { params: { id: string } }) {\n  const track = await getTrack(Number(params.id), config, {\n    revalidate: 60,\n    tags: [`track-${params.id}`],\n  });\n\n  return <h1>{track.title}</h1>;\n}\n```\n\nFor full API access, `createSoundCloudServerClient` is `async` and returns `{ client, userToken, token() }` — call methods on `.client`:\n\n```ts\nimport { createSoundCloudServerClient } from \"soundcloud-api-ts-next/server\";\n\nconst sc = await createSoundCloudServerClient({\n  clientId: process.env.SC_CLIENT_ID!,\n  clientSecret: process.env.SC_CLIENT_SECRET!,\n});\n\nconst tokenResult = await sc.client.auth.getClientToken();\nconst track = await sc.client.tracks.getTrack(trackId, { token: tokenResult.access_token });\n```\n\nSee [`docs/rsc-guide.md`](./docs/rsc-guide.md) for full patterns.\n\n**Cache key helpers** — use `scCacheKeys` (from `/server`) with `revalidateTag` for on-demand invalidation:\n\n```ts\nimport { scCacheKeys, getTrack } from \"soundcloud-api-ts-next/server\";\n\n// Fetch with tag\nconst track = await getTrack(trackId, config, { tags: scCacheKeys.track(trackId) });\n\n// Later, invalidate from a Server Action or route handler\nimport { revalidateTag } from \"next/cache\";\nrevalidateTag(scCacheKeys.track(trackId)[0]);\n```\n\n`scCacheKeys` produces stable string arrays: `track(id)`, `user(id)`, `playlist(id)`, `searchTracks(q)`, `me()`.\n\nSee [`docs/rsc-guide.md`](./docs/rsc-guide.md) for the full guide, including streaming patterns and mixing RSC with client hooks.\n\n---\n\n## TanStack Query / SWR\n\nUse `scFetchers` and `scKeys` for integration with TanStack Query or SWR:\n\n```tsx\nimport { useQuery } from \"@tanstack/react-query\";\nimport { scFetchers, scKeys } from \"soundcloud-api-ts-next\";\n\nfunction TrackCard({ id }: { id: number }) {\n  const { data } = useQuery({\n    queryKey: scKeys.track(id),\n    queryFn: () => scFetchers.track(id),\n  });\n  return <h1>{data?.title}</h1>;\n}\n```\n\n```tsx\n// SWR\nimport useSWR from \"swr\";\nimport { scFetchers, scKeys } from \"soundcloud-api-ts-next\";\n\nfunction TrackCard({ id }: { id: number }) {\n  const { data } = useSWR(scKeys.track(id), () => scFetchers.track(id));\n  return <h1>{data?.title}</h1>;\n}\n```\n\n`scKeys` produces stable array keys (`[\"sc\", \"track\", \"123\"]`) for cache invalidation across queries. `scFetchers` are plain async functions — no React dependency.\n\nSee [`docs/tanstack-query.md`](./docs/tanstack-query.md) for RSC prefetch patterns, authenticated queries, and SWR examples.\n\n---\n\n## Infinite Scroll\n\nCursor-based pagination with `loadMore()` and `reset()`. All return `InfiniteResult<T>`:\n\n```ts\n{ data: T[], loading, error, hasMore, loadMore, reset }\n```\n\n```tsx\nimport { useInfiniteTrackSearch } from \"soundcloud-api-ts-next\";\n\nfunction Feed() {\n  const { data, loading, hasMore, loadMore } = useInfiniteTrackSearch(\"dubstep\");\n\n  return (\n    <>\n      {data.map((track) => <TrackCard key={track.id} track={track} />)}\n      {hasMore && <button onClick={loadMore} disabled={loading}>Load More</button>}\n    </>\n  );\n}\n```\n\n| Hook | Description |\n|------|-------------|\n| `useInfiniteTrackSearch(query)` | Paginated track search |\n| `useInfiniteUserSearch(query)` | Paginated user search |\n| `useInfinitePlaylistSearch(query)` | Paginated playlist search |\n| `useInfiniteUserTracks(id)` | User's tracks |\n| `useInfiniteUserPlaylists(id)` | User's playlists |\n| `useInfiniteUserLikes(id)` | User's liked tracks |\n| `useInfiniteUserFollowers(id)` | User's followers |\n| `useInfiniteUserFollowings(id)` | User's followings |\n| `useInfiniteTrackComments(id)` | Track comments |\n| `useInfinitePlaylistTracks(id)` | Playlist tracks |\n\n---\n\n## Authentication\n\nFull OAuth 2.1 with PKCE via `secure.soundcloud.com`. No secrets on the client.\n\n### Login\n\n```tsx\nimport { useSCAuth } from \"soundcloud-api-ts-next\";\n\nfunction LoginButton() {\n  const { isAuthenticated, user, login, logout } = useSCAuth();\n\n  if (isAuthenticated) {\n    return (\n      <div>\n        <p>Welcome, {user?.username}</p>\n        <button onClick={logout}>Logout</button>\n      </div>\n    );\n  }\n\n  return <button onClick={login}>Login with SoundCloud</button>;\n}\n```\n\n### Callback Page\n\n```tsx\n// app/callback/page.tsx\n\"use client\";\nimport { useEffect } from \"react\";\nimport { useSearchParams, useRouter } from \"next/navigation\";\nimport { useSCAuth } from \"soundcloud-api-ts-next\";\n\nexport default function Callback() {\n  const params = useSearchParams();\n  const router = useRouter();\n  const { handleCallback } = useSCAuth();\n\n  useEffect(() => {\n    const code = params.get(\"code\");\n    const state = params.get(\"state\");\n    if (code && state) {\n      handleCallback(code, state).then(() => router.push(\"/\"));\n    }\n  }, [params]);\n\n  return <p>Authenticating...</p>;\n}\n```\n\n### Authenticated Hooks\n\nAvailable after login. Automatically pass the user's access token.\n\n| Hook | Description |\n|------|-------------|\n| `useMe()` | Current user profile |\n| `useMeTracks()` | Your tracks |\n| `useMeLikes()` | Your liked tracks |\n| `useMePlaylists()` | Your playlists |\n| `useMeFollowings()` | Who you follow |\n| `useMeFollowers()` | Your followers |\n| `useMeFeed()` | Current activity feed |\n| `useMeRecentlyPlayed()` | Last 25 recently played tracks |\n\n### Actions\n\nMutation hooks for authenticated users.\n\n| Hook | Methods |\n|------|---------|\n| `useLike()` | `likeTrack(id)`, `unlikeTrack(id)` |\n| `useFollow()` | `follow(userId)`, `unfollow(userId)` |\n| `useRepost()` | `repostTrack(id)`, `unrepostTrack(id)` |\n\n```tsx\nimport { useLike, useFollow } from \"soundcloud-api-ts-next\";\n\nfunction TrackActions({ trackId, artistId }) {\n  const { likeTrack } = useLike();\n  const { follow } = useFollow();\n\n  return (\n    <>\n      <button onClick={() => likeTrack(trackId)}>❤️ Like</button>\n      <button onClick={() => follow(artistId)}>➕ Follow</button>\n    </>\n  );\n}\n```\n\n---\n\n## Server-Side Auth Manager\n\nFor apps that need custom logic after token exchange — NextAuth JWT minting, database user creation, account linking — use `SCAuthManager` directly instead of the HTTP auth routes.\n\n```ts\n// lib/sc-auth.ts — one module-level instance, shared across all routes\nimport { createSCAuthManager } from \"soundcloud-api-ts-next/server\";\n\nexport const scAuth = createSCAuthManager({\n  clientId: process.env.SC_CLIENT_ID!,\n  clientSecret: process.env.SC_CLIENT_SECRET!,\n  redirectUri: process.env.SC_REDIRECT_URI!,\n});\n```\n\n### `initLogin()` — generate PKCE URL + CSRF state\n\n```ts\n// app/api/auth/sc-login/route.ts\nimport { NextResponse } from \"next/server\";\nimport { scAuth } from \"@/lib/sc-auth\";\n\nexport async function GET() {\n  const { url, state } = await scAuth.initLogin();\n\n  // Persist state in a short-lived httpOnly cookie for CSRF verification\n  const res = NextResponse.redirect(url);\n  res.cookies.set(\"sc-state\", state, { httpOnly: true, maxAge: 600, sameSite: \"lax\" });\n  return res;\n}\n```\n\n`initLogin()` generates a PKCE `code_verifier` + `code_challenge` (S256) and a random CSRF `state` token, stores the verifier server-side, and returns the SoundCloud authorize URL. The PKCE verifier lives in-memory — no cookie or database needed.\n\n### `exchangeCode(code, state)` — verify CSRF + exchange tokens\n\n```ts\n// app/api/auth/sc-callback/route.ts\nimport { NextRequest, NextResponse } from \"next/server\";\nimport { scAuth } from \"@/lib/sc-auth\";\n\nexport async function GET(req: NextRequest) {\n  const code = req.nextUrl.searchParams.get(\"code\")!;\n  const state = req.nextUrl.searchParams.get(\"state\")!;\n\n  // Verify CSRF state matches cookie\n  const cookieState = req.cookies.get(\"sc-state\")?.value;\n  if (!cookieState || cookieState !== state) {\n    return NextResponse.json({ error: \"Invalid state\" }, { status: 400 });\n  }\n\n  // Exchange code + PKCE verifier for tokens\n  const tokens = await scAuth.exchangeCode(code, state);\n  // tokens: { access_token, refresh_token, expires_in, ... }\n\n  // Your app-specific logic here: create user, mint session, etc.\n  return NextResponse.json({ ok: true });\n}\n```\n\n`exchangeCode` verifies `state` against the stored PKCE entry (CSRF check), then calls SoundCloud's token endpoint with the `code_verifier`. The entry is deleted after use (one-time).\n\n### `refreshToken(refreshToken)` — refresh an expired token\n\n```ts\nconst newTokens = await scAuth.refreshToken(expiredRefreshToken);\n```\n\n### API Reference\n\n```ts\nimport { createSCAuthManager, type SCAuthManagerConfig, type SCLoginResult, type SoundCloudToken } from \"soundcloud-api-ts-next/server\";\n\nconst scAuth = createSCAuthManager({\n  clientId: string,\n  clientSecret: string,\n  redirectUri: string,\n});\n\nscAuth.initLogin(): Promise<SCLoginResult>        // { url, state }\nscAuth.exchangeCode(code, state): Promise<SoundCloudToken>\nscAuth.refreshToken(token): Promise<SoundCloudToken>\nscAuth.pendingLogins: number                       // active PKCE entries (for observability)\n```\n\n> **vs HTTP routes:** The `/auth/login` and `/auth/callback` HTTP routes still work and are the right choice for simple client-side flows where you just need tokens returned as JSON. `SCAuthManager` is for when you need to run server-side code between \"got tokens\" and \"user is logged in\".\n\n> **Distributed deployments:** In serverless or edge environments (Vercel, Cloudflare Workers) where in-memory state doesn't persist across invocations, replace the default in-memory PKCE store with `CookiePkceStore`. See [`docs/auth-distributed.md`](./docs/auth-distributed.md) for setup and cookie security options.\n\n---\n\n## Server Routes\n\nThe catch-all handler exposes these routes automatically:\n\n| Route | Method | Description |\n|-------|--------|-------------|\n| `/resolve?url=` | GET | Resolve a SoundCloud URL to an API resource |\n| `/search/tracks?q=` | GET | Search tracks |\n| `/search/users?q=` | GET | Search users |\n| `/search/playlists?q=` | GET | Search playlists |\n| `/tracks/:id` | GET | Track details |\n| `/tracks/:id/stream` | GET | Stream URLs |\n| `/tracks/:id/comments` | GET | Track comments |\n| `/tracks/:id/likes` | GET | Track likes |\n| `/tracks/:id/related` | GET | Related tracks |\n| `/tracks/:id/like` | POST/DELETE | Like/unlike (auth) |\n| `/tracks/:id/repost` | POST/DELETE | Repost/unrepost (auth) |\n| `/users/:id` | GET | User details |\n| `/users/:id/tracks` | GET | User tracks |\n| `/users/:id/playlists` | GET | User playlists |\n| `/users/:id/likes/tracks` | GET | User likes |\n| `/users/:id/followers` | GET | User followers |\n| `/users/:id/followings` | GET | User followings |\n| `/playlists/:id` | GET | Playlist details |\n| `/playlists/:id/tracks` | GET | Playlist tracks |\n| `/playlists/:id/like` | POST/DELETE | Like/unlike (auth) |\n| `/playlists/:id/repost` | POST/DELETE | Repost/unrepost (auth) |\n| `/me` | GET | Current user (auth) |\n| `/me/tracks` | GET | Your tracks (auth) |\n| `/me/likes` | GET | Your likes (auth) |\n| `/me/playlists` | GET | Your playlists (auth) |\n| `/me/followings` | GET | Your followings (auth) |\n| `/me/followers` | GET | Your followers (auth) |\n| `/me/follow/:userId` | POST/DELETE | Follow/unfollow (auth) |\n| `/auth/login` | GET | OAuth URL (PKCE) |\n| `/auth/callback` | GET | Token exchange |\n| `/auth/refresh` | POST | Refresh token |\n| `/auth/logout` | POST | Sign out |\n| `/next?url=` | GET | Pagination cursor |\n\nRoutes marked **(auth)** require `Authorization: Bearer <token>` header.\n\n### Route Telemetry\n\nAdd observability to your API routes with `onRouteComplete`:\n\n```ts\nimport { createSoundCloudRoutes } from \"soundcloud-api-ts-next/server\";\n\nconst sc = createSoundCloudRoutes({\n  clientId: process.env.SC_CLIENT_ID!,\n  clientSecret: process.env.SC_CLIENT_SECRET!,\n  onRouteComplete: (t) => {\n    console.log(`[Route] ${t.method} ${t.route} ${t.status} ${t.durationMs}ms`);\n  },\n});\n```\n\nThe `SCRouteTelemetry` object:\n\n| Field | Type | Description |\n|---|---|---|\n| `route` | `string` | Route path (e.g. \"/tracks/123\") |\n| `method` | `string` | HTTP method |\n| `durationMs` | `number` | Total handler duration |\n| `status` | `number` | HTTP response status |\n| `error` | `string?` | Error message if handler threw |\n\nFor per-request SC API telemetry (individual `scFetch` calls), use `SCRequestTelemetry` via the `soundcloud-api-ts` `SoundCloudClient` class directly.\n\n---\n\n## Types\n\nRe-exported from [soundcloud-api-ts](https://github.com/twin-paws/soundcloud-api-ts):\n\n```ts\nimport type {\n  SoundCloudTrack,\n  SoundCloudUser,\n  SoundCloudPlaylist,\n  SoundCloudComment,\n  SoundCloudStreams,\n  SoundCloudToken,\n} from \"soundcloud-api-ts-next\";\n```\n\n---\n\n## Requirements\n\n- **Next.js** 13+ (App Router or Pages Router)\n- **React** 18+\n- **soundcloud-api-ts** installed automatically as a dependency\n\n## License\n\nMIT\n\n## Related\n\nThis package is part of the **twin-paws SoundCloud ecosystem**:\n\n| Package | Purpose |\n|---|---|\n| [soundcloud-api-ts](https://github.com/twin-paws/soundcloud-api-ts) | TypeScript-first SoundCloud API client — the base this package builds on |\n| **soundcloud-api-ts-next** ← you are here | Next.js integration: hooks, secure API routes, OAuth PKCE, RSC helpers |\n| [soundcloud-widget-react](https://github.com/twin-paws/soundcloud-widget-react) | React component for the SoundCloud HTML5 Widget API — embed players and control playback programmatically |\n\n**Common pattern** — combine all three in a Next.js app:\n\n```ts\n// 1. Fetch track data server-side (soundcloud-api-ts-next)\nimport { getTrack } from \"soundcloud-api-ts-next/server\";\nconst track = await getTrack(trackId, config, { revalidate: 60 });\n\n// 2. Render an embeddable player (soundcloud-widget-react)\nimport { SCWidget } from \"soundcloud-widget-react\";\n<SCWidget trackId={track.id} onPlay={() => trackPlay(track.id)} />\n\n// 3. React hooks for dynamic data (soundcloud-api-ts-next)\nimport { useTrack } from \"soundcloud-api-ts-next\";\nconst { data } = useTrack(trackId); // client-side, post-interaction\n```\n","readmeFilename":"README.md"}