{"_id":"@chemmangat/msal-next","_rev":"45-2ccc65e3a18d73084b4459a54f36aefd","name":"@chemmangat/msal-next","dist-tags":{"latest":"5.3.4"},"versions":{"1.0.0":{"name":"@chemmangat/msal-next","version":"1.0.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@1.0.0","maintainers":[{"name":"chemmangat","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"1ee7685439f9296826120bfefb8d0ae83f01056a","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-1.0.0.tgz","fileCount":8,"integrity":"sha512-VjIw5DnQPLwmkpxEVwlI5ln4Umghz9y8AcuYC3dpmu4A7/AhXYdKntPlqxnlOMxSLYSuu1lgfhWChM9EBQOOxQ==","signatures":[{"sig":"MEYCIQD2QOpBJROnRU2tEZS6St5fdXDubEfq3mKZ84BtkMg7YgIhAIDFVo4dOBF9+uzzMI6LFV6fqFPVP1SwR6nI5ehAoxPr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62214},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"885947b772514f58d792f341be7b85064d3c4582","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Fully configurable MSAL authentication package for Next.js App Router","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","react":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0","@azure/msal-browser":"^3.11.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_1.0.0_1771405861080_0.940208648076819","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@chemmangat/msal-next","version":"1.1.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@1.1.0","maintainers":[{"name":"chemmangat","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"873fec5ca1facdb8454fd881caf63354fb30d848","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-1.1.0.tgz","fileCount":8,"integrity":"sha512-tzyi6/GXnQC3xnAUfyEydpSP58y8JwKy59lBEtBXN/a5E0Tbdz/KidfpCiFZwgZnQgJYKfdQUfQB7l1FgU8FXA==","signatures":[{"sig":"MEYCIQCxEvJ79U0gIcq/vvLiCzvZOeQ1QYgIS//g2lQp6iZiGAIhAItrG1oVbMIrwdJ+oGUjZkL76LxZMpd+pZLfAnD2fqgK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80714},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"f7c1957261330fddf320641df5aa3019c88eecbc","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Fully configurable MSAL authentication package for Next.js App Router","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","react":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0","@azure/msal-browser":"^3.11.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_1.1.0_1771660163064_0.6094620410835869","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@chemmangat/msal-next","version":"1.2.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@1.2.0","maintainers":[{"name":"chemmangat","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"c30e552a1b71ae96252525e072775ad3d5393a77","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-1.2.0.tgz","fileCount":8,"integrity":"sha512-Fk1cYmAW+A1Q3q7dgOJ/WGPEc67WtbaWncqxNFxp5R+10ehA4Q64gpOx8j79Zp08pB7gh9S+59dO4pmFMJ8M4w==","signatures":[{"sig":"MEUCIF31Nd6a9ywxHNlRI395px9+Al+c85fWg3Jbvvf/x18IAiEArWMz1Dc/ELJXtLyTSk4jSmWpDp9ZODYhqe8djJ6EiSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93193},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"da90366efcef6d40f60a9a262245b7fe27ddb1b0","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Fully configurable MSAL authentication package for Next.js App Router","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","react":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_1.2.0_1771840260002_0.40002057663236057","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@chemmangat/msal-next","version":"1.2.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@1.2.1","maintainers":[{"name":"chemmangat","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"ad0cec98ea1235f2aa9f35c9f1de81fbf537237b","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-1.2.1.tgz","fileCount":8,"integrity":"sha512-8BAUrSsFnMQQ21YMMXbc6/KDxXHs74eUp3FCwqggNUoIuaIonxF0xMsKDX6QAmJSy9VCiJCKPamE34ysDhdzng==","signatures":[{"sig":"MEQCIHWQQJPHsjPOIKnf02vwnIwMFHBr9YjjfJ9jZIGkKes2AiB2Y592jjkTb48MPWnWxMpM6jSEJttqWxsSqAMvdsSBNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92933},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d7ca872ae8ca1c9db0490ad2d6e9a977b00db3c3","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Fully configurable MSAL authentication package for Next.js App Router","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","react":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_1.2.1_1771840466168_0.08740521938394985","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@chemmangat/msal-next","version":"2.0.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@2.0.0","maintainers":[{"name":"chemmangat","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"2e62c6480434906ffb49f100a8076a2cc3eee029","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.0.0.tgz","fileCount":14,"integrity":"sha512-DlYNndzJ6F3+uCtIIeuc4I5kPA0z7Vm1qlKfjtun02ocnmflMTJt0d/hO5a0zqr8WvakZ4PHJB7UQ+MH6MF/pA==","signatures":[{"sig":"MEUCIQD8O5+6oSb8S/WvG8/WCzcFNlXMh3weGf8aGfCuMtP57gIgMU0FLktMOkjVEg0JSvfFuSDewojHauf47g0XUycSAWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334967},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"0299d80fedaff5225bdcffb536afdb4b26233118","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.0.0_1771926321944_0.02465011265771877","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@chemmangat/msal-next","version":"2.1.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@2.1.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"35a50f47496a6301a659afb12a46f3942b33234d","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.1.0.tgz","fileCount":10,"integrity":"sha512-Wn0ODcgJh0eIMMzf5hCFisZcSvUz04r4yVo9bJZVPGcoVCKGItAN7KeYt5GedwEOy40jgNYjHjjzch93Q1wCuA==","signatures":[{"sig":"MEYCIQDaNgKphoEb+MeK0yum/rBpYDZvlggJ0NCMzMAyYSN1EgIhAInakxsEBwBxXYVmYwLuHjbeSnDZm2kzUaxSk6StS3pZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95751},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"061a8b1bc9efd8a73a6e0bf31f5364de4a9f1eaf","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.1.0_1772514084136_0.9679202717595152","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@chemmangat/msal-next","version":"2.1.1","keywords":["msal","nextjs","next.js","next","authentication","auth","azure-ad","azure","microsoft","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","azure-active-directory","entra-id","login","signin","react","msal-react","msal-browser","next14","next15","nextjs-auth","microsoft-login"],"author":{"name":"Chemmangat"},"license":"MIT","_id":"@chemmangat/msal-next@2.1.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"602ea7f1f81c386aba29aa79304ebf7ca11299f1","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.1.1.tgz","fileCount":10,"integrity":"sha512-ZNfJ2dVGDhrkCun8U804OdbP6iQdC87QrciNT5WXEpCLl5KS/Mw4DxKxsKfY61zODYo6iG3FEfy1r5UWj5C0EA==","signatures":[{"sig":"MEYCIQCcDvhCrWXBShlCBWZxEy39pR+a7m6ewvHC630efLnf2QIhAMWR120sM/CkmBC/qFXKgl6bS3rGdajdaUU/sgKsPaPW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97211},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"061a8b1bc9efd8a73a6e0bf31f5364de4a9f1eaf","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.1.1_1772514834956_0.5613012363043071","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@chemmangat/msal-next","version":"2.0.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@2.0.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"bd9e86f0d9e8e64990e96147470dbe069eba8099","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.0.1.tgz","fileCount":15,"integrity":"sha512-oA18zuMXBQWuIeBf4cJumtAogZp2lfNvyRpQJjf9EOWd5DVHX6u2kkh7SJhYTyRFxTj+HAExS2uBbjTKttatYQ==","signatures":[{"sig":"MEUCIDCRksImUBFKArJoCmjOnMyKId6LP7R0gsz5QKaacnuAAiEAnOmrxBOoXmZhhLFI54JSwT0VpCoIxzKVUcoBHLqyQbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388809},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"47c64256b3049249b5235a0faf069d68970340bb","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.0.1_1772674054567_0.6505322326028491","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@chemmangat/msal-next","version":"2.1.2","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@2.1.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"6f8c802339ccaff44b212681a7123ff07d46321d","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.1.2.tgz","fileCount":15,"integrity":"sha512-lDMxiQl9TdUUZm6AzJebkklt4Ew/NkxtGDAEorE8/haM3IkjflJzBkKkjU6EMzwGxZaTAuhm95wODBEP9lSJUg==","signatures":[{"sig":"MEQCICPrADMnVUQtzwY3BIniEs7CtabSVy26voguhZ4W9E31AiB9JXq+702gEBUshvWe+qRzRl3uhBFWt9N3/wYA+9I64A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388809},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"47c64256b3049249b5235a0faf069d68970340bb","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.1.2_1772674248879_0.3409037409673874","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@chemmangat/msal-next","version":"2.3.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@2.3.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"6a8773fe24f06f786aafff3c886d66e51e4d8ea2","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-2.3.0.tgz","fileCount":11,"integrity":"sha512-7ziRMTQ5Yia4lNPPIuBYtvOO06DV2aUVVFMzi06t6kcRzXM++QXl/mWN4ZPx+iUl3bKULkyTiAD8yjorNizhHg==","signatures":[{"sig":"MEUCIQChXOSCKz2DJoZE61/NSPRGZwHtA8SNnd2epkeYUN2GQQIgKNYTKQO4mQVMlYIKj3dS7TZgR6VGHiJarOpadZuHa3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108663},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"40bdb5f8e7f90f362337dab36e13eb61c267297e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_2.3.0_1772675278156_0.19896004176628934","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@chemmangat/msal-next","version":"3.0.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"3f2289c1b0c7482ef8843c8728cf817218709d51","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.0.tgz","fileCount":11,"integrity":"sha512-YWxEQFpH/NP80wSzzaiFHzhbXQ2sGPS+yvcZSopAxiWtHR6LfHZzX0j3+HBl7CN54AelNMobT5Dtw36BI9osMQ==","signatures":[{"sig":"MEYCIQD0KZLb3KLYd8iy6wSMOJyL9KUUNXaDA+M7uQe2/28cowIhAIFGVp/u/QBWXXw1CrXYvD4JyqI+b4sv/jiOXh81j0Q4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119415},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"40bdb5f8e7f90f362337dab36e13eb61c267297e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.0_1772682122301_0.3509186146567429","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@chemmangat/msal-next","version":"3.0.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"73d2d5b40393d41f3c86b600051a92e46a79c192","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.1.tgz","fileCount":11,"integrity":"sha512-T0okWN1yOGrgLNcckeMtShnJHcGszA1Vd3f16hBaYDTTWD1FaArgmZ8vS7mnoC4zhyPDpWtKrHMzSnMZ9TuA+Q==","signatures":[{"sig":"MEUCIG0mj8x/K4q5TqVZ7C5gb5nQMvyEydJ7c7XDHRA+UC94AiEA6kdzMxRFI6MtBcpKiYiHshAYzLQkQ8ibka0EbnnsZu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119411},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"bd686c0313cab0bc266a64a0523e1662fe1a22c5","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.1_1772687653379_0.24316046896772425","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@chemmangat/msal-next","version":"3.0.2","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"904565a73b25061f6da4bbeb2f560b2f1ae30a22","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.2.tgz","fileCount":11,"integrity":"sha512-FaPIMIcwbpFmPd/fkw44y9ILWuTzlLDZeDnIfIFemiNjsJ/xcXykVMalBLAxu/Zf7SqHyqujtrUZkgdPjH5/lQ==","signatures":[{"sig":"MEYCIQDRemhHFJ/0KDDMqE65vBV7ftrSJZvyoTYwB7n2NyFVWAIhAKYxW9W/uY6LWKRJnOrX4KlZX7fSG4laD0RTGfZ/rKFP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123617},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"5f64e15078d78c91e72c76f8daff2f6d55af632d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.2_1772688783433_0.29870934334449806","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@chemmangat/msal-next","version":"3.0.3","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.3","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"3b02f2fb45d5e8d9b92df87f7269d84f91825937","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.3.tgz","fileCount":12,"integrity":"sha512-F9g62dG/g8KiAaZQRloHfvvqMnbS8niyKd3VszTOFJxVzCiOGV4OhMGP+E1CiHnWk9U3NkfCKp67nkMuE+LU2w==","signatures":[{"sig":"MEUCIAISjhyug211zherocPislBKe2Z2bFNBnmaE5Ra/Lfl7AiEAvH8am/pZNlY6uYJV4gmy6JUnZzb9bmhYA1AaNFO7xMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35031},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"9fe572c3eedebb73c9207973341101eb08f0106e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.3_1772689826097_0.5547601331875456","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@chemmangat/msal-next","version":"3.0.4","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.4","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"883f4bc8ef99c3221437a8063be69d08867261b1","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.4.tgz","fileCount":13,"integrity":"sha512-l+xeFrgkyZwSbhCqhRY/qB6R6jq00JljCet8b1z0TVb9WB+Zuu78zM6G+emwOQ0qtcMNICFYIncwCXgqt3SAMQ==","signatures":[{"sig":"MEUCIQC+wbPfk/mmm/vRt8x4cN9VVkvGS8ZaH6S1oj+Uah+GWQIgOBXGY1UCwPmNlhU1sN/OPPFxX1IKeSajlsmXKchwBnE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186215},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"04d71792a68d1bd218da4da53a51a0578cde5089","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.4_1772690834508_0.025263571603402868","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@chemmangat/msal-next","version":"3.0.5","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.5","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"580b9a7c1f41533e49fe9c5a84df50d81b2f15dd","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.5.tgz","fileCount":12,"integrity":"sha512-QfnPCH9Yu+lZEdnUWCj0N7enZZON1kgwo+0ufvz0cASwW+x3Nn11+IGpjW8H6rS9XKakfXkZcsN0+KBJpnp8Ig==","signatures":[{"sig":"MEYCIQCM1gC7r8afJ6X9GfH3wKD5e5T9FdbTWpNcFmk3GyeVwAIhAOYyIDBElX5GekPU5hvf42qwm+5YOCiRhqbT1GnicK+N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187422},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"07841af45162c575ab406336834e3cf073c4ceaf","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.5_1772691420677_0.7466505530446137","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@chemmangat/msal-next","version":"3.0.6","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.6","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"bdf9bfe6efdecfab0d589010ccf8116ec1c9a306","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.6.tgz","fileCount":12,"integrity":"sha512-RYAdUQVL8xEXfe1u+kCK/BowY/JKwJh+lo1ZCOKdcKlNunDFjAmc/pbCV3TZ53VzisRpGy0KAjb7g+vMqwCwsg==","signatures":[{"sig":"MEQCIC7NGCLVrKk9diUWmoQx0v6OyPHlNO87uerEoXznfmyfAiAG3dqOiQdVkFTnnV9euFQrlYzJ2CcTpU51QREkCIdGLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188032},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"e384301a1a51862d0b70891789c113e26848c84c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.6_1772691851305_0.2656069432554833","host":"s3://npm-registry-packages-npm-production"}},"3.0.8":{"name":"@chemmangat/msal-next","version":"3.0.8","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.0.8","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"9f8f12a8c8afc95824e59fa335072f14ed7046e5","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.0.8.tgz","fileCount":14,"integrity":"sha512-K5pHC0QBiAXWhCpiJJR73mu39ahScBa/irTWfN0XNEvtLL/LvRdbOYmBDbXaakfoy8qtvB7xd+KfsczhyxZKJA==","signatures":[{"sig":"MEYCIQCVFKiF1T+Tzc0k6769JjG5wmpdKHaVHab91UtdpLJ6qAIhAOnIh0OzEkR3SvtxxcoF5l7z11VvEMvs7OsYmGPaSMIF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214859},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"f58127f7e37717fb96d8aa36b3da9ffdb7d7c21b","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.0.8_1772692702334_0.11957992901662151","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@chemmangat/msal-next","version":"3.1.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"1a59a8bc83206c976756992fb21f4c73c05a29fe","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.0.tgz","fileCount":14,"integrity":"sha512-dboDJSjUoupx3n81n7lqDMfX4kDZTri/HxDIdU6HHvqa1O5Do/1XD8FeI/0f1REovZ06SNi/m/LX0BfDpRNVvw==","signatures":[{"sig":"MEUCIGkgdin155AqkHCQEvfg4zePc4+GwxyQVHjs5iRbdUj3AiEAvYjQFz4ZozUCLrch3fBfhHNGzlagYj0AZVBJLoshw5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214859},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"1fb150725bfa291684d1c087a6ac2b0fe575490c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.0_1772692914712_0.20290509590776495","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@chemmangat/msal-next","version":"3.1.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"4da570e4aaba25f861e2d64bae4eddd85c202cc7","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.1.tgz","fileCount":14,"integrity":"sha512-Ln+WBb9D0O5kCEM9miY+XBqH08BucZ8vaCiRVC0CBsiVLTMmh7QFjdb/7mQKruuvZdq8Tfhk7WQk3EUoKDolRA==","signatures":[{"sig":"MEQCID4bvIdvYrD4RVrlOp1vg6KRZ5A52NvSYja8Mi/lsli4AiBk5xBDNN4rJRE+vxBcd1YhgDcocTXnaPoyeh40PPwIjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221142},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"1160b73b1a3add94c02c4f8a678cb515ddecebb2","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.1_1772693453622_0.7136979095377447","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"@chemmangat/msal-next","version":"3.1.2","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"f9ba1a290a1730d34d2b44f9eaf9ddee9e757e92","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.2.tgz","fileCount":14,"integrity":"sha512-CAuwCcDg6d7ZfGnjWQMZiFYnQiCJoPCU1c7edCI+EJNtZG8lcuwSo1bgzzB1fpN/2zala4X4u2yMMqdgmyRl6g==","signatures":[{"sig":"MEYCIQCyqvZkeZFQe8DDxOcoUvJL4xT3/Mi0Ivy5E6cO7oujpQIhALlRw8Hqp0m8idd341VvffotgokTN8uIGmIU57SRke4M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221147},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"43751c4d263626f296daaecfe1f136ba999bc4df","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.2_1772693658489_0.2844454433836421","host":"s3://npm-registry-packages-npm-production"}},"3.1.5":{"name":"@chemmangat/msal-next","version":"3.1.5","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.5","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"3e4aad11ae828ae5650aed7304e68f6ac2d36bc8","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.5.tgz","fileCount":14,"integrity":"sha512-n021mJ8wCpLMNBdcMtRZY+GRZrlZudvCXIICG+yScPs8dRyKEBbtdzP7A33jb6bpqtHG3dmbg9k7s1VQqLQQ9Q==","signatures":[{"sig":"MEQCIEZC4X8/7fkUp7S8EvL4xPRyNsC3FhhAhj9oJcxYEv5EAiAJvYS3Dg9E/J6mtBKd/9CRGFN9tUxzGPhJaKluWQFxYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226862},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"4ce90a351eeaac632e0bf86bc2c13f483b212f9b","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.5_1772695340549_0.5415361645309922","host":"s3://npm-registry-packages-npm-production"}},"3.1.6":{"name":"@chemmangat/msal-next","version":"3.1.6","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.6","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"2e321ceec2259e9a6811c8888dd0118e655448ba","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.6.tgz","fileCount":14,"integrity":"sha512-DdAc5XZfK1sm8XTWW8jD018cWTqfxAdrsY6TnRYHUUOTYeHflMOhUco1uzhvWRJ4X+O39+nAfIzwOrCe94XBFA==","signatures":[{"sig":"MEUCIQC0f0ipAfudfJc4enh1lsCXpZWdhEYcnnREMFAHlAdCngIgKJ7ywXhwRDolBV4XmPfC8jGBC994JvVHg0FBcZKK0w8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228856},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"b5d06ccea739ce72f6d6bf8f70ec0ddbca185780","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.6_1772696511044_0.9808841007667894","host":"s3://npm-registry-packages-npm-production"}},"3.1.7":{"name":"@chemmangat/msal-next","version":"3.1.7","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.7","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"d19a98f2aa8ecca07d646b352b14a19a536b6a30","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.7.tgz","fileCount":14,"integrity":"sha512-nFvaNgWGlxmSxP+qyJHsJVgScK0QCBtSSz7fpNhiMlGGKRAXaV9uaLzXs3eOyu4IVSFk32+oFuXL1GadgnwDNg==","signatures":[{"sig":"MEQCICd5JYctxw1X6MYcGm83+FZ/XixU0CFvr+VEt7/o3Ix3AiAHn/uWKfsDrF1invHN6lJorQLGpHSZDNqoXFw6jEgo6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218406},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"4b9081ec2a35f46a9e9d5c21b8b9eb637be5aa04","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.7_1772697731988_0.08051257035764459","host":"s3://npm-registry-packages-npm-production"}},"3.1.8":{"name":"@chemmangat/msal-next","version":"3.1.8","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.8","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"e7041f96e26518fa21bf8fd066f9adde622e66bc","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.8.tgz","fileCount":14,"integrity":"sha512-GaMFACBDHnju0AqBgDVhqxag7sqQFhnv/0TRlxH30La3gB4+aCuk7uJk5u2maWp8HfRTUX1KLxTz3r3c24RJ6A==","signatures":[{"sig":"MEQCIB+85rWZ/PfwNRtqymR1tOXLz0Ocq97MTvs1CKvUIlENAiARPZF7oeimiHc2PEX69jaHvpqimCaZ71MDdEWSvmo4QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173593},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"b0947c808ea4b89d8fda989a2e2a01171b782064","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.8_1772869352991_0.7237774169645479","host":"s3://npm-registry-packages-npm-production"}},"3.1.9":{"name":"@chemmangat/msal-next","version":"3.1.9","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@3.1.9","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"160946f0f6b167c04276f138fa3b11e836d180d0","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-3.1.9.tgz","fileCount":14,"integrity":"sha512-aiSLJPw/3hDf9wMBbS/6VGRWipjUOSGpxnftBgW1uohgzYgxZ5xR4h70dTn6sMrLnm1z5REcFTIwZe6a09oEzQ==","signatures":[{"sig":"MEYCIQD4ynnzAcVakPZW+vWP1C5EikvvFP5jV3bNOPUg1thvKgIhALzctFJbJzBYh61fVHZ/v9yEOSRwwnOmdUaHFO6kW1Yw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173613},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"9be2b92edfdf7548ca1fd2113f13d002789512c9","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_3.1.9_1772869560038_0.5833943936414927","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@chemmangat/msal-next","version":"4.0.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.0.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"b72eb9393ccfcec98ac4c89c3cb5a72f899650ed","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.0.0.tgz","fileCount":14,"integrity":"sha512-txFovilfDHbS3xSIvG0p1UTLTcrilgyDpGGKHh4JI9kW471ktNEhIP/Ly5/V6aa6ubX/BOlh6pdTk7mHrov8Ag==","signatures":[{"sig":"MEUCIHXUnpqC6h7TN5T06PI7LTnqbJkagGSMwZWTPmJiBF09AiEA8rr0Zc9uXo1AQpD4owKlcEdJDNwRmVsRzkF3Ion8KdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185463},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"c1a76bf67afd52214ef61f8e729ec0f57b1de5c4","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.0.0_1772870922374_0.5508946266082653","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@chemmangat/msal-next","version":"4.0.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.0.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"84c8d171c3d8ca1626db8ef58b244a3c2556c714","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.0.1.tgz","fileCount":14,"integrity":"sha512-5HBDby+Iwl/fJ8MS4boOWL1VhCuW54gbxRkhArGNICfpw8RbLbc7XyQK7M6OIUhLydbHNsIIjB5puE3ks9VjOw==","signatures":[{"sig":"MEYCIQCurwZDfSXjMADFp42WGn3BWuTxXbfD6mfZFLO0xZ7GhwIhAM4IQyFnQ/1iiXSZ6FpvG83AvgthEnI01P88F/JhRkv6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186920},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"6e4b9a2dff2fd4c59f15d2f3e3b306967622a2fb","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.0.1_1772871179863_0.9664419436963154","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@chemmangat/msal-next","version":"4.0.2","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.0.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"a8022692e074efb1ef25d340885f947985147945","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.0.2.tgz","fileCount":14,"integrity":"sha512-ntNs60+OqtWAOMi/2bn54N6uCc1P4NWnD+z6ZEztTzy/pD3aFH6WKrWrIvmX8KSP425RkbDI1I5XpKsBjToFgA==","signatures":[{"sig":"MEYCIQCfKcixJms1XiBhQj0c4BfCYLLzFIUY01wY1U75B12O/wIhAKBhlUv+m+pgFOfxPEwyb4HV1pBqEMdJ4JOSqlZ8Thd2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235663},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"c4410625f9bf344b953e5c4457dcf41ae10a58f3","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.0.2_1772900866386_0.024359721631836084","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@chemmangat/msal-next","version":"4.1.0","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.1.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"8d956cb1875e662554ddc6ccf7a5f57563b58b74","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.1.0.tgz","fileCount":14,"integrity":"sha512-TO6cB+13i2UYArN9YJ1tn1STphtkvQVwcDyyX+wlNYOIz1d/Pq/UdOjhKevsMHmct2mERcpan+P+0WuIYlABRw==","signatures":[{"sig":"MEYCIQCWz5Xi0pyIkMdhNTGOUNqNru99q4zRiLczn3WFPF6eMgIhAJszhR7SqtjRt+ULPYQu5z40CsGP73+7LQ39jX7LqvUh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328638},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"fc074e0676348311db8a4d4e6215176e3a87b75b","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.1.0_1772903127730_0.003368105245791675","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"@chemmangat/msal-next","version":"4.1.1","keywords":["msal","nextjs","authentication","azure-ad","microsoft","oauth","next.js","app-router","typescript","sso","microsoft-graph"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.1.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"e839f3b1677638c5695e12c44278fae2935e3847","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.1.1.tgz","fileCount":14,"integrity":"sha512-JqgVfL1rYlkZJf+SQifa9DzKHhO4Vcfs2u+62H1c/LfGcet3sfVwqbopUYtIO18WyLPPYAEa96i16uN4I9RtEQ==","signatures":[{"sig":"MEUCIQDrELSoFDad4dNcWE3zxNW+Cy6rKrAPNqbhCYNiJ96X5QIgWATfWp02gw4IIPhPLF5Twgt6JIrC3dspL3w+Z2tqeXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328727},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"8de55e01d270cf460eed7580f1e989c29d203785","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-grade MSAL authentication package for Next.js App Router with minimal boilerplate","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.1.1_1772905213259_0.06874458512235404","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@chemmangat/msal-next","version":"4.2.0","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.2.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"fe40c6d071a32f1e3c847f3f25610050dd04c106","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.2.0.tgz","fileCount":14,"integrity":"sha512-Rl7BcZ1ix08TDqZqSbcy531Ts+zcRoo6zO9oz0eVppbE9jZKmi9Kcn6nlGu6LEIjpQjQRjX0cqMzcRsrSr7blw==","signatures":[{"sig":"MEYCIQCC3cjaLan/TXSSD6tQPwpOwBUt5KzkJgjLdi70/AT5rwIhAMlU11S9EqnW0STn5kr6hCG7JmRPT45IUCflpZ6DpmWX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388899},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"1ab1009c834994089d192b2d3c04ef683e1560be","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.2.0_1772975887805_0.10930192521702797","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@chemmangat/msal-next","version":"4.2.1","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.2.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"707335f6445014ee459f97e4b8ab7d0ed0f9e56f","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.2.1.tgz","fileCount":14,"integrity":"sha512-PslTACzuKduUlevGCDYRyPTM5rcKgu90PUuZJbDoMUABSk6s9zFNlpTkp8xFBJ5GrExDaRVEDlqHQUZY1sPIKw==","signatures":[{"sig":"MEUCIQCKi7gbPvgKvZ5DYOvWV9AuLZscz9foCHty0fmxAP4nawIgZ11LdD7cf/xTucksDqz3mL4Ivd66izWdv5QXpAJ2ibM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393173},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"ffcbb675857a60f5f7f29255193271013eba71a1","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.2.1_1773662847415_0.18032551345774128","host":"s3://npm-registry-packages-npm-production"}},"4.2.2":{"name":"@chemmangat/msal-next","version":"4.2.2","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@4.2.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"1448790b649d76219f21b99116b69246ab8a1101","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-4.2.2.tgz","fileCount":14,"integrity":"sha512-rEa2E+cScGIrb4P208SF0q/pxFtGtgFNFSkI/4gZV6A7j2gNHOgjkZF8C+/flS/2za376KcM41vS+LGFcmJTJA==","signatures":[{"sig":"MEQCIEpSKjy76QkmioaN31LgT4/WkxO+NInvcFbvlW2Ks2UmAiAkQ2lDRrktVv9pE30buDwkWDY994FmqFbV9z0hQVOaBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387670},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"a45c5d7389b1a9fb54cd7a9de18f339f107ecd7a","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_4.2.2_1773664195798_0.0813779149836551","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@chemmangat/msal-next","version":"5.0.0","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.0.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"f25ad38ab60123a5b3a7312d1a0f4cd7009e4351","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.0.0.tgz","fileCount":14,"integrity":"sha512-i7exIpkv6PVpdx73LFM1nbkQCkZc6KF0/jU1CPBiEaIOqPYrjUhr+ks6Syk0XvlWX6gp9S6JjbkpH3IB4M8obQ==","signatures":[{"sig":"MEUCIQDqOXC+/XZviEwUPLwlhr2xOXqdofn+2MFgRXg+IbI9uAIgSKvwGS/ZKFe8nq4SDCTLIxNvTREQCBCI5Un/0D84gVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394226},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"f3f1c5796b628149ab5e0c4ad4612707ad98f6da","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.0.0_1773666910299_0.6896583100993947","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@chemmangat/msal-next","version":"5.0.1","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.0.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"1de51524c1080a32eff011ce84d0cbaaf0142c63","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.0.1.tgz","fileCount":14,"integrity":"sha512-lwru0UpDzThL3R2Q6JApP2I2JCcBxIhpP/4KbdMOcudZVJSyPQD8UJAkiD9tAIqMSFnh0a1uq7ePHqcA6+U4qw==","signatures":[{"sig":"MEQCIAqDv5Ib5sBX25IlshGGef57phj54gnT9jK3i51Tv6PeAiAcP1on6f+4lhsDEAH1XgTIBS9GdG55jOzrJFo+TVEfpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395103},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"3db7cc024fb0ae40099dea05c9ccf5bcbd9453f9","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.0.1_1773667234055_0.8454057757834619","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@chemmangat/msal-next","version":"5.1.0","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.1.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"960f1ec3d7cc17c513196665b9c2eb8d2e56f8b8","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.1.0.tgz","fileCount":14,"integrity":"sha512-qeoFIPytJ07syiL/uZrfYf+3S5QY4HDyvn0cmdLoBK8EmUnAzFW0zzLYglQh2jzJD+UR0fZTHR26ngxCIPM5vA==","signatures":[{"sig":"MEUCIQD1ksuIx7oZ0FOMtY/shIe8tAVDN0BAwXAp11ZqZtW67wIgFb2VQT417PiGaJAHazFbYy0doKEzAg4qqWzdv1puPz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423046},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"184ceed4230e8afa906969f895ce74fc36c6c76c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^2.0.15","@azure/msal-browser":"^3.11.1","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.1.0_1773733209520_0.9173349030404505","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@chemmangat/msal-next","version":"5.2.0","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.2.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"02165f0c2f3f0e18e20915878b4487cacc6e7946","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.2.0.tgz","fileCount":14,"integrity":"sha512-u7gfQQyoVxByeiEoGvSR0HyjYHcN224TI7Jud2amVUhOxRXW8t/fk3U/kY1Nr814z4ZB654xEk+QlCtwGpai3Q==","signatures":[{"sig":"MEUCIHW5yGcZXNMkNURMFTqV9oyLGlf6e4x9Lv+meJpYpjvoAiEAlG3Esp7BtwPECv9f7iS9tTNWdL7jvtgC2nrAZKC4kMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448801},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"7d353555062cd6f527e9eea835b75eae05712b4d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.2.0_1775556245341_0.9478084144071386","host":"s3://npm-registry-packages-npm-production"}},"5.2.1":{"name":"@chemmangat/msal-next","version":"5.2.1","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.2.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"5fef2ff951f0a38ee2641c611037deefd20a7df4","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.2.1.tgz","fileCount":18,"integrity":"sha512-c7VDQkHrMT4ZjBUH9aUcD4d5d+B2N+97jpx8K9W6oBrBxvVXCVkdMewcyPV1qCuypkf4mENKxfoxZGuGQUAsEQ==","signatures":[{"sig":"MEYCIQC4spX2GW9iLX1PF0bPnYlS9UCyWgkOkrv9e69X0j/idwIhALKP4jxdzZE0VxA0BPmmZX4fcGnnFSsnd1VOw9q7V5wp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462101},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"gitHead":"12f56e0acafafbd69f76bde17a19089416168e7b","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.2.1_1775557766893_0.3039979200807976","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"@chemmangat/msal-next","version":"5.3.0","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.3.0","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"6df3f40869921b11ab2b8dec7dec2ad21ae2ffd5","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.3.0.tgz","fileCount":18,"integrity":"sha512-IP7q7uD/ujz9XyXgGWlmTWmWiwzrlYJmiORgw6RVwvfbmcL+OHWCjD2bj1vjJo627SnXue/ofTkwR0GceE6U9g==","signatures":[{"sig":"MEUCIE9kiOe1nlnZAiyq4490GJKF5vK8Bg6IyZhcd9MYsKwaAiEAr1wZsA4F/58YXE0d7eb93qXD60jZFjmXvuRnGKaO9ec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":468274},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"gitHead":"2a6c12ddf2af79997d48c186f5aaca761e129531","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.3.0_1775573921833_0.6636369048936825","host":"s3://npm-registry-packages-npm-production"}},"5.3.1":{"name":"@chemmangat/msal-next","version":"5.3.1","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.3.1","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"6d04244b740779eee5cb4c0f25af968e8bbf5302","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.3.1.tgz","fileCount":18,"integrity":"sha512-BCCHvcxqpzZgj1gUdYWAWrZW6Z94J6v0ODZ/x7k4LFORvYXiDT2EqhlTFbwmZD+Fn+bLtnnfDKePF65/mRM1EA==","signatures":[{"sig":"MEUCIQDAlJcY8WKWBlyhJsbDyLDWZcJ9R8X+xqNuS8YoadgLUgIgXjtgZt0TnR27Ewk0geuL2/lmzvmkZYYirJgQ8Ggizms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469122},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"gitHead":"e861bd6f7eab3b70074cdc7285c7999fdacb81c6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.3.1_1775625742001_0.9293574306573835","host":"s3://npm-registry-packages-npm-production"}},"5.3.2":{"name":"@chemmangat/msal-next","version":"5.3.2","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.3.2","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"a610f38fbcc1bd468c4d84297a69ebe4300a1079","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.3.2.tgz","fileCount":18,"integrity":"sha512-djmK/Ohe6u4HZvxvhGQguWQxjvSuC6tflD65edWittpVN495vKMY0Wt9cqmFx1X1qNQQwJ43qMyz3V5JtYPszg==","signatures":[{"sig":"MEYCIQDsdypbs6hWrqiB0j4Wyd5D/z8KVgKSlF+nNEZ/OgctsAIhAIC6+WYHl8P7snMObMsCfX5jyG3yy+tSuqiH8/Vlw3Yn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469314},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"gitHead":"61953e321bb03ff5aeb14e600ff95b2623a992ec","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.3.2_1775626198123_0.1628423991435224","host":"s3://npm-registry-packages-npm-production"}},"5.3.3":{"name":"@chemmangat/msal-next","version":"5.3.3","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"url":"chemmangat","name":"Hari Manoj"},"license":"MIT","_id":"@chemmangat/msal-next@5.3.3","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"dist":{"shasum":"387fa3e937d9ca8f48fae20ee5af01a007d6fcb8","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.3.3.tgz","fileCount":18,"integrity":"sha512-B4q5DbMKcBoXtAuxwrX6mI/C1yJFxyxmW4mmNEO3Whk7jSsTqUqfIpzGh5Dwei6RV2Zge1bpQ+T41kntbbyznw==","signatures":[{"sig":"MEYCIQC37PH6y5fT5MuWVVHfP5BimASDAP5REZ+qgDx3rMCIwwIhAIv9LyRzqKsAwk8G28keUV+etvuBibjrjoytgfP1/4MA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469314},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"gitHead":"68b31b17e814bd25e6ebdc2c3aa5a6bb1e6f1721","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"repository":{"url":"git+https://github.com/chemmangat/msal-next.git","type":"git","directory":"packages/core"},"_npmVersion":"10.7.0","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^23.0.0","react":"^18.2.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","@azure/msal-react":"^5.2.1","@azure/msal-browser":"^5.6.3","@vitest/coverage-v8":"^1.0.0","@testing-library/react":"^14.0.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react-hooks":"^8.0.1"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/msal-next_5.3.3_1775626438240_0.9831798867148853","host":"s3://npm-registry-packages-npm-production"}},"5.3.4":{"name":"@chemmangat/msal-next","version":"5.3.4","description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./middleware":{"types":"./dist/middleware.d.ts","import":"./dist/middleware.mjs","require":"./dist/middleware.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"author":{"name":"Hari Manoj","url":"chemmangat"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/chemmangat/msal-next.git","directory":"packages/core"},"homepage":"https://github.com/chemmangat/msal-next#readme","bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"peerDependencies":{"@azure/msal-browser":"^3.11.0 || ^4.0.0 || ^5.0.0","@azure/msal-react":"^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0","next":">=14.0.0","react":">=18.0.0","react-dom":">=18.0.0"},"devDependencies":{"@azure/msal-browser":"^5.6.3","@azure/msal-react":"^5.2.1","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^14.0.0","@testing-library/react-hooks":"^8.0.1","@types/react":"^18.2.0","@vitest/coverage-v8":"^1.0.0","jsdom":"^23.0.0","react":"^18.2.0","tsup":"^8.0.1","typescript":"^5.3.0","vitest":"^1.0.0"},"_id":"@chemmangat/msal-next@5.3.4","gitHead":"46ab97f3cf5e8ab510b2ad6b31a6d60fd4088fb1","_nodeVersion":"22.12.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-mIctkvKrR+ensJOo5A9DRxrcHvvuNz2SkhhLgzBCINWzUQQo2iqYRtFp3YeGIvEJ4xbE3blfWnFgcaV8tk/gwg==","shasum":"e775c631da45381516df62a2d2497a71fef259a5","tarball":"https://registry.npmjs.org/@chemmangat/msal-next/-/msal-next-5.3.4.tgz","fileCount":18,"unpackedSize":470597,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCb/NtrPDalcLy3jHoJn3eDb6qgTy51VXG9iZGhhO7cCAIgR/l71cJ9qAfvgH0HBD1H+Vl3Tive9/UuznInrINRs6Q="}]},"_npmUser":{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"},"directories":{},"maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/msal-next_5.3.4_1778056483365_0.04227322908541642"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-18T09:11:00.964Z","modified":"2026-05-06T08:34:43.657Z","1.0.0":"2026-02-18T09:11:01.215Z","1.1.0":"2026-02-21T07:49:23.214Z","1.2.0":"2026-02-23T09:51:00.154Z","1.2.1":"2026-02-23T09:54:26.319Z","2.0.0":"2026-02-24T09:45:22.078Z","2.1.0":"2026-03-03T05:01:24.279Z","2.1.1":"2026-03-03T05:13:55.137Z","2.0.1":"2026-03-05T01:27:34.784Z","2.1.2":"2026-03-05T01:30:49.076Z","2.3.0":"2026-03-05T01:47:58.301Z","3.0.0":"2026-03-05T03:42:02.433Z","3.0.1":"2026-03-05T05:14:13.520Z","3.0.2":"2026-03-05T05:33:03.579Z","3.0.3":"2026-03-05T05:50:26.274Z","3.0.4":"2026-03-05T06:07:14.680Z","3.0.5":"2026-03-05T06:17:00.850Z","3.0.6":"2026-03-05T06:24:11.607Z","3.0.8":"2026-03-05T06:38:22.480Z","3.1.0":"2026-03-05T06:41:54.869Z","3.1.1":"2026-03-05T06:50:53.765Z","3.1.2":"2026-03-05T06:54:18.654Z","3.1.5":"2026-03-05T07:22:20.695Z","3.1.6":"2026-03-05T07:41:51.197Z","3.1.7":"2026-03-05T08:02:12.122Z","3.1.8":"2026-03-07T07:42:33.190Z","3.1.9":"2026-03-07T07:46:00.178Z","4.0.0":"2026-03-07T08:08:42.538Z","4.0.1":"2026-03-07T08:13:00.015Z","4.0.2":"2026-03-07T16:27:46.537Z","4.1.0":"2026-03-07T17:05:27.914Z","4.1.1":"2026-03-07T17:40:13.417Z","4.2.0":"2026-03-08T13:18:07.967Z","4.2.1":"2026-03-16T12:07:27.594Z","4.2.2":"2026-03-16T12:29:55.983Z","5.0.0":"2026-03-16T13:15:10.442Z","5.0.1":"2026-03-16T13:20:34.300Z","5.1.0":"2026-03-17T07:40:09.716Z","5.2.0":"2026-04-07T10:04:05.533Z","5.2.1":"2026-04-07T10:29:27.038Z","5.3.0":"2026-04-07T14:58:42.038Z","5.3.1":"2026-04-08T05:22:22.195Z","5.3.2":"2026-04-08T05:29:58.261Z","5.3.3":"2026-04-08T05:33:58.416Z","5.3.4":"2026-05-06T08:34:43.513Z"},"bugs":{"url":"https://github.com/chemmangat/msal-next/issues"},"author":{"name":"Hari Manoj","url":"chemmangat"},"license":"MIT","homepage":"https://github.com/chemmangat/msal-next#readme","keywords":["msal","nextjs","next.js","next-js","authentication","auth","azure-ad","azure","microsoft","microsoft-auth","microsoft-login","microsoft-authentication","oauth","oauth2","app-router","typescript","sso","single-sign-on","microsoft-graph","graph-api","multi-account","multi-tenant","azure-authentication","next-auth-alternative","azure-login","entra-id","microsoft-entra","msal-react","msal-browser","zero-config","token-refresh","protected-routes","role-based-access"],"repository":{"type":"git","url":"git+https://github.com/chemmangat/msal-next.git","directory":"packages/core"},"description":"Production-ready Microsoft/Azure AD authentication for Next.js App Router. Zero-config setup, TypeScript-first, multi-account support, auto token refresh. The easiest way to add Microsoft login to your Next.js app.","maintainers":[{"name":"chemmangat-admin","email":"chemmangathari@gmail.com"}],"readme":"# @chemmangat/msal-next\n\nProduction-ready Microsoft / Azure AD (Entra ID) authentication for **Next.js App Router**.  \nZero-config setup · TypeScript-first · Multi-account · Auto token refresh · Edge middleware\n\n[![npm version](https://img.shields.io/npm/v/@chemmangat/msal-next)](https://www.npmjs.com/package/@chemmangat/msal-next)\n[![license](https://img.shields.io/npm/l/@chemmangat/msal-next)](LICENSE)\n[![Next.js](https://img.shields.io/badge/Next.js-14%2B-black)](https://nextjs.org)\n\n---\n\n## Table of Contents\n\n1. [Quick Start](#quick-start)\n2. [Azure AD Setup](#azure-ad-setup)\n3. [Route Protection Strategies](#route-protection-strategies)\n4. [Multi-Tenant Configuration](#multi-tenant-configuration)\n5. [API Reference](#api-reference)\n6. [Role-Based Access Control](#role-based-access-control)\n7. [Server-Side Protection](#server-side-protection)\n8. [Multi-Account Management](#multi-account-management)\n9. [Microsoft Graph API](#microsoft-graph-api)\n10. [Migration Guides](#migration-guides)\n11. [Troubleshooting](#troubleshooting)\n12. [Examples](#examples)\n13. [Deployment Checklist](#deployment-checklist)\n\n---\n\n## Quick Start\n\n### 1. Install\n\n```bash\nnpm install @chemmangat/msal-next @azure/msal-browser @azure/msal-react\n```\n\n### 2. Environment variables\n\nCreate `.env.local`:\n\n```bash\nNEXT_PUBLIC_AZURE_AD_CLIENT_ID=your-application-client-id\nNEXT_PUBLIC_AZURE_AD_TENANT_ID=your-directory-tenant-id\n```\n\n### 3. Add the provider to your layout\n\n```tsx\n// app/layout.tsx  (Server Component — no 'use client' needed here)\nimport { MSALProvider } from '@chemmangat/msal-next';\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <MSALProvider\n          clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n          tenantId={process.env.NEXT_PUBLIC_AZURE_AD_TENANT_ID!}\n        >\n          {children}\n        </MSALProvider>\n      </body>\n    </html>\n  );\n}\n```\n\n### 4. Add a sign-in button\n\n```tsx\n// app/page.tsx\n'use client';\nimport { MicrosoftSignInButton, useMsalAuth } from '@chemmangat/msal-next';\n\nexport default function Home() {\n  const { isAuthenticated, account } = useMsalAuth();\n\n  if (isAuthenticated) {\n    return <p>Welcome, {account?.name}!</p>;\n  }\n\n  return <MicrosoftSignInButton />;\n}\n```\n\nThat's it. Your app now has Microsoft authentication.\n\n---\n\n## Azure AD Setup\n\n### Step 1 — Create an App Registration\n\n1. Go to [portal.azure.com](https://portal.azure.com) → **Azure Active Directory** → **App registrations** → **New registration**\n2. Fill in:\n   - **Name**: Your app name (e.g. \"My Next.js App\")\n   - **Supported account types**: Choose based on your use case (see table below)\n   - **Redirect URI**: Select **Single-page application (SPA)** and enter `http://localhost:3000`\n\n| Account type option | Use case |\n|---|---|\n| Accounts in this organizational directory only | Single-tenant enterprise app |\n| Accounts in any organizational directory | Multi-tenant B2B SaaS |\n| Accounts in any organizational directory + personal Microsoft accounts | Consumer-facing app |\n| Personal Microsoft accounts only | Consumer app (Xbox, Outlook.com) |\n\n### Step 2 — Copy your credentials\n\nAfter registration, copy from the **Overview** page:\n- **Application (client) ID** → `NEXT_PUBLIC_AZURE_AD_CLIENT_ID`\n- **Directory (tenant) ID** → `NEXT_PUBLIC_AZURE_AD_TENANT_ID`\n\n### Step 3 — Add redirect URIs\n\nGo to **Authentication** → **Single-page application** → **Add URI**:\n\n| Environment | URI |\n|---|---|\n| Development | `http://localhost:3000` |\n| Production | `https://yourdomain.com` |\n\n> Important: The redirect URI must match **exactly** — including trailing slashes. A mismatch causes `AADSTS50011`.\n\n### Step 4 — (Optional) Configure API permissions\n\nFor Microsoft Graph access, go to **API permissions** → **Add a permission** → **Microsoft Graph** → **Delegated permissions**:\n\n| Permission | Purpose |\n|---|---|\n| `User.Read` | Basic profile (required) |\n| `User.ReadBasic.All` | Read other users' profiles |\n| `Mail.Read` | Read user's email |\n| `Calendars.Read` | Read user's calendar |\n| `GroupMember.Read.All` | Read group memberships |\n\n### Step 5 — (Optional) Configure app roles\n\nFor RBAC, go to **App roles** → **Create app role**:\n\n```\nDisplay name: Admin\nValue: Admin\nDescription: Full administrative access\nAllowed member types: Users/Groups\n```\n\nAssign roles to users via **Enterprise applications** → your app → **Users and groups**.\n\n---\n\n## Route Protection Strategies\n\nThere are three ways to protect routes. You can mix and match them in the same app.\n\n---\n\n### Strategy 1: Middleware (Edge — Recommended for most apps)\n\nRuns at the edge before any page renders. Best for blanket protection of entire route groups.\n\n```ts\n// middleware.ts  (project root)\nimport { createAuthMiddleware } from '@chemmangat/msal-next';\n\nexport const middleware = createAuthMiddleware({\n  // Routes that require a signed-in user\n  protectedRoutes: ['/dashboard', '/profile', '/settings', '/api/protected'],\n\n  // Routes only accessible when NOT signed in (redirect away if already authed)\n  publicOnlyRoutes: ['/login', '/signup'],\n\n  // Where to send unauthenticated users\n  loginPath: '/login',\n\n  // Where to send authenticated users who hit a publicOnlyRoute\n  redirectAfterLogin: '/dashboard',\n\n  // Enable debug logs in development\n  debug: process.env.NODE_ENV === 'development',\n});\n\n// Apply middleware to all routes except Next.js internals and static files\nexport const config = {\n  matcher: ['/((?!_next/static|_next/image|favicon.ico|.*\\\\.png$).*)'],\n};\n```\n\nThe middleware reads the `msal.account` cookie set after login. To populate that cookie, call `setServerSessionCookie` after successful authentication:\n\n```tsx\n// app/login/page.tsx\n'use client';\nimport { useMsalAuth } from '@chemmangat/msal-next';\nimport { setServerSessionCookie } from '@chemmangat/msal-next/server';\n\nexport default function LoginPage() {\n  const { loginRedirect } = useMsalAuth();\n\n  const handleLogin = async () => {\n    await loginRedirect(['User.Read']);\n    // setServerSessionCookie is called automatically by MsalAuthProvider\n    // after a successful redirect login\n  };\n\n  return <button onClick={handleLogin}>Sign in with Microsoft</button>;\n}\n```\n\n---\n\n### Strategy 2: Per-Page Auth Export (Zero-Config)\n\nExport an `auth` constant from any page file. The library wraps the page automatically — no HOC boilerplate needed.\n\n```tsx\n// app/dashboard/page.tsx\n'use client';\n\n// Export this to enable protection — that's all you need\nexport const auth = { required: true };\n\nexport default function Dashboard() {\n  return <h1>Protected Dashboard</h1>;\n}\n```\n\nWith roles:\n\n```tsx\n// app/admin/page.tsx\n'use client';\n\nexport const auth = {\n  required: true,\n  roles: ['Admin', 'SuperAdmin'],       // user must have at least one\n  redirectTo: '/unauthorized',          // custom redirect on failure\n};\n\nexport default function AdminPage() {\n  return <h1>Admin Only</h1>;\n}\n```\n\nWith a custom validation function:\n\n```tsx\n// app/internal/page.tsx\n'use client';\nimport type { AccountInfo } from '@azure/msal-browser';\n\nexport const auth = {\n  required: true,\n  validate: (account: AccountInfo) =>\n    account.username.endsWith('@contoso.com'),\n  unauthorized: <div>Only Contoso employees can access this page.</div>,\n};\n\nexport default function InternalPage() {\n  return <h1>Internal Tools</h1>;\n}\n```\n\nTo enable the per-page system, pass a `protection` config to `MSALProvider`:\n\n```tsx\n// app/layout.tsx\nimport { MSALProvider } from '@chemmangat/msal-next';\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <MSALProvider\n          clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n          tenantId={process.env.NEXT_PUBLIC_AZURE_AD_TENANT_ID!}\n          protection={{\n            defaultRedirectTo: '/login',\n            defaultLoading: <div>Checking authentication…</div>,\n            debug: process.env.NODE_ENV === 'development',\n          }}\n        >\n          {children}\n        </MSALProvider>\n      </body>\n    </html>\n  );\n}\n```\n\n---\n\n### Strategy 3: Hybrid (Middleware + Per-Page)\n\nUse middleware for coarse-grained protection (entire `/dashboard` subtree) and per-page exports for fine-grained role/tenant checks within those routes.\n\n```ts\n// middleware.ts — protect the whole /dashboard tree\nexport const middleware = createAuthMiddleware({\n  protectedRoutes: ['/dashboard'],\n  loginPath: '/login',\n});\n```\n\n```tsx\n// app/dashboard/admin/page.tsx — additionally require Admin role\n'use client';\n\nexport const auth = {\n  required: true,\n  roles: ['Admin'],\n  redirectTo: '/dashboard',  // redirect non-admins to regular dashboard\n};\n\nexport default function AdminDashboard() {\n  return <h1>Admin Dashboard</h1>;\n}\n```\n\nThis is the most robust approach: middleware handles the redirect loop prevention and per-page handles authorization.\n\n---\n\n### Strategy 4: AuthGuard Component\n\nWrap any component tree to require authentication inline:\n\n```tsx\n'use client';\nimport { AuthGuard } from '@chemmangat/msal-next';\n\nexport default function SensitiveSection() {\n  return (\n    <AuthGuard\n      loadingComponent={<div>Checking auth…</div>}\n      fallbackComponent={<div>Redirecting to login…</div>}\n      scopes={['User.Read']}\n      onAuthRequired={() => console.log('Auth required')}\n    >\n      <div>This content is only visible when signed in.</div>\n    </AuthGuard>\n  );\n}\n```\n\n---\n\n## Multi-Tenant Configuration\n\n### tenantId / authorityType options\n\n| Value | Authority URL | Who can sign in |\n|---|---|---|\n| `common` (default) | `login.microsoftonline.com/common` | Any Azure AD tenant + personal Microsoft accounts |\n| `organizations` | `login.microsoftonline.com/organizations` | Any Azure AD tenant (no personal accounts) |\n| `consumers` | `login.microsoftonline.com/consumers` | Personal Microsoft accounts only |\n| `<your-tenant-id>` | `login.microsoftonline.com/<tenantId>` | Your tenant only (single-tenant) |\n\n### Single-tenant (enterprise app)\n\n```tsx\n<MSALProvider\n  clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n  tenantId={process.env.NEXT_PUBLIC_AZURE_AD_TENANT_ID!}\n  multiTenant={{ type: 'single' }}\n>\n```\n\n### Multi-tenant SaaS with allow-list\n\n```tsx\n<MSALProvider\n  clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n  multiTenant={{\n    type: 'multi',\n    // Accept only these tenants (by domain or tenant ID)\n    allowList: ['contoso.com', 'fabrikam.com', '72f988bf-86f1-41af-91ab-2d7cd011db47'],\n    // Require MFA for all users\n    requireMFA: true,\n    // Block guest accounts\n    requireType: 'Member',\n  }}\n  onTenantDenied={(reason) => {\n    console.warn('Tenant denied:', reason);\n    // redirect or show error\n  }}\n>\n```\n\n### Block specific tenants\n\n```tsx\n<MSALProvider\n  clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n  multiTenant={{\n    type: 'multi',\n    blockList: ['competitor.com'],\n  }}\n>\n```\n\n### Organizations only (no personal accounts)\n\n```tsx\n<MSALProvider\n  clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n  multiTenant={{ type: 'organizations' }}\n>\n```\n\n### Per-page tenant restrictions (v5.1.0)\n\n```tsx\n// app/enterprise/page.tsx\n'use client';\n\nexport const auth = {\n  required: true,\n  tenant: {\n    allowList: ['contoso.com'],\n    requireMFA: true,\n    requireType: 'Member',  // no guests\n  },\n};\n\nexport default function EnterprisePage() {\n  return <h1>Contoso employees only</h1>;\n}\n```\n\n### Middleware tenant validation (v5.1.0)\n\n```ts\n// middleware.ts\nimport { createAuthMiddleware } from '@chemmangat/msal-next';\n\nexport const middleware = createAuthMiddleware({\n  protectedRoutes: ['/dashboard'],\n  loginPath: '/login',\n  tenantConfig: {\n    type: 'multi',\n    allowList: ['contoso.com', 'fabrikam.com'],\n  },\n  tenantDeniedPath: '/unauthorized',\n});\n```\n\n### Reading tenant info in components\n\n```tsx\n'use client';\nimport { useTenant } from '@chemmangat/msal-next';\n\nexport default function TenantBadge() {\n  const { tenantDomain, isGuestUser, tenantId, homeTenantId } = useTenant();\n\n  return (\n    <div>\n      <span>Tenant: {tenantDomain}</span>\n      {isGuestUser && (\n        <span className=\"badge\">\n          Guest (home: {homeTenantId})\n        </span>\n      )}\n    </div>\n  );\n}\n```\n\n### Acquiring tokens for a different tenant (cross-tenant)\n\n```tsx\n'use client';\nimport { useMsalAuth } from '@chemmangat/msal-next';\n\nexport default function CrossTenantExample() {\n  const { acquireTokenForTenant } = useMsalAuth();\n\n  const fetchCrossTenantData = async () => {\n    // Get a token scoped to a specific tenant\n    const token = await acquireTokenForTenant(\n      'target-tenant-id',\n      ['https://graph.microsoft.com/.default']\n    );\n    // Use token with target tenant's API\n  };\n\n  return <button onClick={fetchCrossTenantData}>Fetch Cross-Tenant Data</button>;\n}\n```\n\n---\n\n## API Reference\n\n### MSALProvider props\n\n`MSALProvider` is the top-level provider. It is already marked `'use client'` internally, so you can import it in Server Component layouts.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `clientId` | `string` | **required** | Azure AD Application (client) ID |\n| `tenantId` | `string` | — | Azure AD Directory (tenant) ID. Required for single-tenant apps. |\n| `authorityType` | `'common' \\| 'organizations' \\| 'consumers' \\| 'tenant'` | `'common'` | Legacy authority selector. Prefer `multiTenant.type`. |\n| `redirectUri` | `string` | `window.location.origin` | Redirect URI after authentication. Must match Azure AD registration. |\n| `postLogoutRedirectUri` | `string` | `redirectUri` | Where to redirect after logout. |\n| `scopes` | `string[]` | `['User.Read']` | Default OAuth scopes. |\n| `cacheLocation` | `'sessionStorage' \\| 'localStorage' \\| 'memoryStorage'` | `'sessionStorage'` | Where to store tokens. |\n| `storeAuthStateInCookie` | `boolean` | `false` | Enable for IE11/Edge legacy support. |\n| `navigateToLoginRequestUrl` | `boolean` | `true` | Redirect back to the originating page after login. |\n| `enableLogging` | `boolean` | `false` | Log MSAL events to the console. |\n| `loggerCallback` | `(level, message, containsPii) => void` | — | Custom MSAL log handler. |\n| `allowedRedirectUris` | `string[]` | — | Whitelist of allowed redirect URIs (security). |\n| `loadingComponent` | `ReactNode` | — | Shown while MSAL initializes. |\n| `onInitialized` | `(instance) => void` | — | Called after MSAL is ready. |\n| `autoRefreshToken` | `boolean` | `false` | Silently refresh tokens before expiry. |\n| `refreshBeforeExpiry` | `number` | `300` | Seconds before expiry to trigger refresh. |\n| `multiTenant` | `MultiTenantConfig` | — | Multi-tenant configuration (v5.1.0). |\n| `protection` | `AuthProtectionConfig` | — | Global config for per-page auth exports. |\n| `onTenantDenied` | `(reason: string) => void` | — | Called when a user's tenant is denied (v5.1.0). |\n| `msalConfig` | `Configuration` | — | Advanced: full MSAL config object (overrides all other props). |\n\n---\n\n### useMsalAuth hook\n\n```tsx\nconst {\n  account,              // AccountInfo | null — current active account\n  accounts,             // AccountInfo[]    — all cached accounts\n  isAuthenticated,      // boolean\n  inProgress,           // boolean — true while MSAL is doing something\n  loginRedirect,        // (scopes?: string[]) => Promise<void>\n  logoutRedirect,       // () => Promise<void>\n  acquireToken,         // (scopes: string[]) => Promise<string>  — silent with redirect fallback\n  acquireTokenSilent,   // (scopes: string[]) => Promise<string>  — silent only\n  acquireTokenRedirect, // (scopes: string[]) => Promise<void>    — redirect flow\n  acquireTokenForTenant,// (tenantId: string, scopes: string[]) => Promise<string>  — cross-tenant\n  clearSession,         // () => Promise<void> — clear local session without MS logout\n} = useMsalAuth(defaultScopes?: string[]);\n```\n\nExample — login and get a token:\n\n```tsx\n'use client';\nimport { useMsalAuth } from '@chemmangat/msal-next';\n\nexport default function MyComponent() {\n  const { isAuthenticated, account, loginRedirect, acquireToken } = useMsalAuth();\n\n  const handleCallApi = async () => {\n    const token = await acquireToken(['User.Read', 'Mail.Read']);\n    const res = await fetch('https://graph.microsoft.com/v1.0/me/messages', {\n      headers: { Authorization: `Bearer ${token}` },\n    });\n    const data = await res.json();\n    console.log(data);\n  };\n\n  if (!isAuthenticated) {\n    return <button onClick={() => loginRedirect()}>Sign in</button>;\n  }\n\n  return (\n    <div>\n      <p>Hello, {account?.name}</p>\n      <button onClick={handleCallApi}>Read my email</button>\n    </div>\n  );\n}\n```\n\n---\n\n### PageAuthConfig (per-page export)\n\nExport `auth` from any `'use client'` page:\n\n| Field | Type | Description |\n|---|---|---|\n| `required` | `boolean` | Whether auth is required. |\n| `roles` | `string[]` | User must have at least one of these Azure AD app roles. |\n| `redirectTo` | `string` | Custom redirect path on auth failure. |\n| `loading` | `ReactNode` | Custom loading UI while checking auth. |\n| `unauthorized` | `ReactNode` | Shown instead of redirecting when access is denied. |\n| `validate` | `(account: AccountInfo) => boolean \\| Promise<boolean>` | Custom validation function. |\n| `tenant` | `TenantAuthConfig` | Per-page tenant restrictions (v5.1.0). |\n\n---\n\n### AuthProtectionConfig (global protection config)\n\nPassed to `MSALProvider`'s `protection` prop:\n\n| Field | Type | Description |\n|---|---|---|\n| `defaultRedirectTo` | `string` | Default redirect for unauthenticated users. Default: `'/login'` |\n| `defaultLoading` | `ReactNode` | Default loading component. |\n| `defaultUnauthorized` | `ReactNode` | Default unauthorized component. |\n| `debug` | `boolean` | Enable debug logging for protection checks. |\n\n---\n\n### AuthMiddlewareConfig\n\nPassed to `createAuthMiddleware()`:\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `protectedRoutes` | `string[]` | `[]` | Routes requiring authentication. |\n| `publicOnlyRoutes` | `string[]` | `[]` | Routes only for unauthenticated users. |\n| `loginPath` | `string` | `'/login'` | Login page path. |\n| `redirectAfterLogin` | `string` | `'/'` | Where to send users after login. |\n| `sessionCookie` | `string` | `'msal.account'` | Cookie name for session data. |\n| `isAuthenticated` | `(req) => boolean \\| Promise<boolean>` | — | Custom auth check function. |\n| `tenantConfig` | `MultiTenantConfig` | — | Tenant validation at the edge (v5.1.0). |\n| `tenantDeniedPath` | `string` | `'/unauthorized'` | Redirect when tenant is denied. |\n| `debug` | `boolean` | `false` | Log middleware decisions. |\n\n---\n\n### MultiTenantConfig\n\n| Field | Type | Description |\n|---|---|---|\n| `type` | `'single' \\| 'multi' \\| 'organizations' \\| 'consumers' \\| 'common'` | Tenant mode. |\n| `allowList` | `string[]` | Tenant IDs or domains that are allowed. |\n| `blockList` | `string[]` | Tenant IDs or domains that are blocked (takes precedence over allowList). |\n| `requireType` | `'Member' \\| 'Guest'` | Require a specific account type. |\n| `requireMFA` | `boolean` | Require MFA claim in the token. |\n\n---\n\n### TenantAuthConfig (per-page tenant config)\n\n| Field | Type | Description |\n|---|---|---|\n| `allowList` | `string[]` | Only users from these tenant IDs or domains are permitted. |\n| `blockList` | `string[]` | Users from these tenants are denied (takes precedence). |\n| `requireType` | `'Member' \\| 'Guest'` | Require a specific account type. |\n| `requireMFA` | `boolean` | Require MFA claim (`amr` must contain `'mfa'`). |\n\n---\n\n## Role-Based Access Control\n\n### Using the `useRoles` hook\n\n```tsx\n'use client';\nimport { useRoles } from '@chemmangat/msal-next';\n\nexport default function AdminPanel() {\n  const { roles, groups, hasRole, hasAnyRole, hasAllRoles, loading } = useRoles();\n\n  if (loading) return <div>Loading permissions…</div>;\n\n  return (\n    <div>\n      {/* Single role check */}\n      {hasRole('Admin') && <button>Delete User</button>}\n\n      {/* Any of these roles */}\n      {hasAnyRole(['Admin', 'Editor']) && <button>Edit Content</button>}\n\n      {/* All roles required */}\n      {hasAllRoles(['Admin', 'Billing']) && <button>Manage Billing</button>}\n\n      {/* Group membership */}\n      {groups.includes('00000000-0000-0000-0000-000000000000') && (\n        <div>You are in the Finance group</div>\n      )}\n\n      <pre>Your roles: {roles.join(', ')}</pre>\n    </div>\n  );\n}\n```\n\n`useRoles` return values:\n\n| Field | Type | Description |\n|---|---|---|\n| `roles` | `string[]` | Azure AD app roles from `idTokenClaims.roles`. |\n| `groups` | `string[]` | Azure AD group IDs from Graph API. |\n| `loading` | `boolean` | True while fetching groups. |\n| `error` | `Error \\| null` | Error if fetch failed. |\n| `hasRole` | `(role: string) => boolean` | Check single role. |\n| `hasGroup` | `(groupId: string) => boolean` | Check group membership. |\n| `hasAnyRole` | `(roles: string[]) => boolean` | Check if user has at least one role. |\n| `hasAllRoles` | `(roles: string[]) => boolean` | Check if user has all roles. |\n| `refetch` | `() => Promise<void>` | Re-fetch roles and groups. |\n\n---\n\n### Role arrays in per-page auth\n\n```tsx\n// app/reports/page.tsx\n'use client';\n\nexport const auth = {\n  required: true,\n  // User needs at least one of these roles\n  roles: ['Admin', 'ReportViewer', 'Manager'],\n  redirectTo: '/access-denied',\n};\n\nexport default function ReportsPage() {\n  return <h1>Reports</h1>;\n}\n```\n\n---\n\n### Custom validation function\n\n```tsx\n// app/premium/page.tsx\n'use client';\nimport type { AccountInfo } from '@azure/msal-browser';\n\nexport const auth = {\n  required: true,\n  validate: async (account: AccountInfo): Promise<boolean> => {\n    // Check custom claim from token\n    const claims = account.idTokenClaims as any;\n\n    // Must be a premium subscriber AND from an allowed domain\n    return (\n      claims?.subscription === 'premium' &&\n      account.username.endsWith('@contoso.com')\n    );\n  },\n  unauthorized: (\n    <div>\n      <h2>Premium Required</h2>\n      <p>Upgrade your subscription to access this page.</p>\n    </div>\n  ),\n};\n\nexport default function PremiumPage() {\n  return <h1>Premium Content</h1>;\n}\n```\n\n---\n\n### withPageAuth HOC (manual usage)\n\n```tsx\n// app/settings/page.tsx\n'use client';\nimport { withPageAuth } from '@chemmangat/msal-next';\n\nfunction SettingsPage() {\n  return <h1>Settings</h1>;\n}\n\n// Wrap manually instead of using the auth export\nexport default withPageAuth(SettingsPage, {\n  required: true,\n  roles: ['Admin'],\n  redirectTo: '/login',\n});\n```\n\n---\n\n## Server-Side Protection\n\n### getServerSession in Server Components\n\n```tsx\n// app/dashboard/page.tsx  (Server Component)\nimport { getServerSession } from '@chemmangat/msal-next/server';\nimport { redirect } from 'next/navigation';\n\nexport default async function DashboardPage() {\n  const session = await getServerSession();\n\n  if (!session.isAuthenticated) {\n    redirect('/login');\n  }\n\n  return (\n    <div>\n      <h1>Welcome, {session.username}</h1>\n    </div>\n  );\n}\n```\n\n`ServerSession` fields:\n\n| Field | Type | Description |\n|---|---|---|\n| `isAuthenticated` | `boolean` | Whether a valid session cookie exists. |\n| `accountId` | `string \\| undefined` | MSAL home account ID. |\n| `username` | `string \\| undefined` | User's email / UPN. |\n\n> Note: `getServerSession` reads from the `msal.account` cookie. This cookie is set by `setServerSessionCookie` after a successful login. For production apps, consider a proper server-side session store (Redis, database) for more robust session management.\n\n---\n\n### Protecting API Route Handlers\n\n```ts\n// app/api/data/route.ts\nimport { getServerSession } from '@chemmangat/msal-next/server';\nimport { NextResponse } from 'next/server';\n\nexport async function GET() {\n  const session = await getServerSession();\n\n  if (!session.isAuthenticated) {\n    return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });\n  }\n\n  // Proceed with authenticated request\n  const data = await fetchSomeData(session.username!);\n  return NextResponse.json(data);\n}\n```\n\n---\n\n### Setting the session cookie after login\n\nThe `MsalAuthProvider` handles this automatically after a redirect login. For manual control:\n\n```tsx\n'use client';\nimport { useMsalAuth } from '@chemmangat/msal-next';\nimport { setServerSessionCookie } from '@chemmangat/msal-next/server';\n\nexport default function LoginPage() {\n  const { loginRedirect, account } = useMsalAuth();\n\n  const handleLogin = async () => {\n    await loginRedirect(['User.Read']);\n    // After redirect completes, set the cookie\n    if (account) {\n      await setServerSessionCookie(account);\n    }\n  };\n\n  return <button onClick={handleLogin}>Sign in</button>;\n}\n```\n\n---\n\n### Middleware-based API protection\n\n```ts\n// middleware.ts\nimport { createAuthMiddleware } from '@chemmangat/msal-next';\n\nexport const middleware = createAuthMiddleware({\n  protectedRoutes: [\n    '/dashboard',\n    '/api/protected',   // protect entire API namespace\n    '/api/admin',\n  ],\n  publicOnlyRoutes: ['/login'],\n  loginPath: '/login',\n});\n\nexport const config = {\n  matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],\n};\n```\n\n---\n\n## Multi-Account Management\n\n### useMultiAccount hook\n\n```tsx\n'use client';\nimport { useMultiAccount } from '@chemmangat/msal-next';\n\nexport default function AccountManager() {\n  const {\n    accounts,             // All signed-in accounts\n    activeAccount,        // Currently active account\n    hasMultipleAccounts,  // boolean\n    accountCount,         // number\n    switchAccount,        // (account: AccountInfo) => void\n    addAccount,           // (scopes?: string[]) => Promise<void>\n    removeAccount,        // (account: AccountInfo) => Promise<void>\n    signOutAccount,       // (account: AccountInfo) => Promise<void>\n    signOutAll,           // () => Promise<void>\n    getAccountByUsername, // (username: string) => AccountInfo | undefined\n    isActiveAccount,      // (account: AccountInfo) => boolean\n  } = useMultiAccount();\n\n  return (\n    <div>\n      <p>Active: {activeAccount?.name}</p>\n      <p>Total accounts: {accountCount}</p>\n\n      {accounts.map((account) => (\n        <div key={account.homeAccountId}>\n          <span>{account.name} ({account.username})</span>\n          {!isActiveAccount(account) && (\n            <button onClick={() => switchAccount(account)}>Switch</button>\n          )}\n          <button onClick={() => removeAccount(account)}>Remove</button>\n        </div>\n      ))}\n\n      <button onClick={() => addAccount(['User.Read'])}>\n        Add Another Account\n      </button>\n\n      {hasMultipleAccounts && (\n        <button onClick={signOutAll}>Sign Out All</button>\n      )}\n    </div>\n  );\n}\n```\n\n---\n\n### AccountSwitcher component\n\nDrop-in dropdown for headers and nav bars:\n\n```tsx\n'use client';\nimport { AccountSwitcher } from '@chemmangat/msal-next';\n\nexport default function AppHeader() {\n  return (\n    <header>\n      <h1>My App</h1>\n      <AccountSwitcher\n        showAvatars={true}\n        maxAccounts={5}\n        variant=\"default\"          // 'default' | 'compact' | 'minimal'\n        showAddButton={true}\n        showRemoveButton={true}\n        onSwitch={(account) => console.log('Switched to', account.name)}\n        onAdd={() => console.log('Adding account')}\n        onRemove={(account) => console.log('Removed', account.name)}\n      />\n    </header>\n  );\n}\n```\n\n`AccountSwitcher` props:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `showAvatars` | `boolean` | `true` | Show MS Graph profile photos. |\n| `maxAccounts` | `number` | `5` | Maximum accounts allowed. |\n| `variant` | `'default' \\| 'compact' \\| 'minimal'` | `'default'` | Visual style. |\n| `showAddButton` | `boolean` | `true` | Show \"Add Account\" button. |\n| `showRemoveButton` | `boolean` | `true` | Show remove button per account. |\n| `onSwitch` | `(account: AccountInfo) => void` | — | Called when account is switched. |\n| `onAdd` | `() => void` | — | Called when add is clicked. |\n| `onRemove` | `(account: AccountInfo) => void` | — | Called when account is removed. |\n| `renderAccount` | `(account, isActive) => ReactNode` | — | Custom account row renderer. |\n\n---\n\n### AccountList component\n\n```tsx\n'use client';\nimport { AccountList } from '@chemmangat/msal-next';\n\nexport default function AccountsPage() {\n  return (\n    <AccountList\n      showAvatars={true}\n      showDetails={true}\n      showActiveIndicator={true}\n      clickToSwitch={true}\n      orientation=\"vertical\"   // 'vertical' | 'horizontal'\n      onAccountClick={(account) => console.log('Clicked', account.name)}\n    />\n  );\n}\n```\n\n---\n\n## Microsoft Graph API\n\n### useGraphApi hook\n\n```tsx\n'use client';\nimport { useGraphApi } from '@chemmangat/msal-next';\n\nexport default function GraphExample() {\n  const graph = useGraphApi();\n\n  const fetchProfile = async () => {\n    // GET /me\n    const me = await graph.get('/me');\n    console.log(me.displayName);\n\n    // GET with custom scopes\n    const messages = await graph.get('/me/messages', {\n      scopes: ['Mail.Read'],\n      version: 'v1.0',\n    });\n\n    // POST\n    const event = await graph.post('/me/events', {\n      subject: 'Team Meeting',\n      start: { dateTime: '2026-04-01T10:00:00', timeZone: 'UTC' },\n      end: { dateTime: '2026-04-01T11:00:00', timeZone: 'UTC' },\n    }, { scopes: ['Calendars.ReadWrite'] });\n\n    // PATCH\n    await graph.patch('/me', { displayName: 'New Name' });\n\n    // DELETE\n    await graph.delete(`/me/messages/${messages.value[0].id}`, {\n      scopes: ['Mail.ReadWrite'],\n    });\n  };\n\n  return <button onClick={fetchProfile}>Fetch from Graph</button>;\n}\n```\n\n`useGraphApi` methods all accept `GraphApiOptions`:\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `scopes` | `string[]` | `['User.Read']` | Scopes for this request. |\n| `version` | `'v1.0' \\| 'beta'` | `'v1.0'` | Graph API version. |\n| `debug` | `boolean` | `false` | Log request/response. |\n\n---\n\n### useUserProfile hook\n\n```tsx\n'use client';\nimport { useUserProfile } from '@chemmangat/msal-next';\n\nexport default function ProfileCard() {\n  const { profile, loading, error, refetch } = useUserProfile();\n\n  if (loading) return <div>Loading profile…</div>;\n  if (error) return <div>Error: {error.message}</div>;\n  if (!profile) return null;\n\n  return (\n    <div>\n      {profile.photo && <img src={profile.photo} alt={profile.displayName} />}\n      <h2>{profile.displayName}</h2>\n      <p>{profile.jobTitle} · {profile.department}</p>\n      <p>{profile.mail}</p>\n      <p>{profile.officeLocation}</p>\n      <button onClick={refetch}>Refresh</button>\n    </div>\n  );\n}\n```\n\nWith custom profile fields:\n\n```tsx\ninterface MyProfile extends UserProfile {\n  extension_customAttribute: string;\n}\n\nconst { profile } = useUserProfile<MyProfile>();\nconsole.log(profile?.extension_customAttribute);\n```\n\n`UserProfile` includes 40+ fields: `id`, `displayName`, `givenName`, `surname`, `userPrincipalName`, `mail`, `jobTitle`, `department`, `companyName`, `officeLocation`, `mobilePhone`, `businessPhones`, `preferredLanguage`, `employeeId`, `employeeHireDate`, `employeeType`, `country`, `city`, `state`, `streetAddress`, `postalCode`, `usageLocation`, `manager`, `aboutMe`, `birthday`, `interests`, `skills`, `schools`, `pastProjects`, `responsibilities`, `mySite`, `faxNumber`, `accountEnabled`, `ageGroup`, `userType`, `photo` (blob URL).\n\n---\n\n### UserAvatar component\n\n```tsx\n'use client';\nimport { UserAvatar } from '@chemmangat/msal-next';\n\nexport default function Nav() {\n  return (\n    <UserAvatar\n      size={40}              // pixels, default 40\n      showTooltip={true}     // hover tooltip with name\n      fallbackImage=\"/default-avatar.png\"\n    />\n  );\n}\n```\n\n---\n\n## Token Refresh\n\n### Automatic refresh via MSALProvider\n\n```tsx\n<MSALProvider\n  clientId={process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!}\n  tenantId={process.env.NEXT_PUBLIC_AZURE_AD_TENANT_ID!}\n  autoRefreshToken={true}\n  refreshBeforeExpiry={300}   // refresh 5 minutes before expiry\n  scopes={['User.Read']}\n>\n  {children}\n</MSALProvider>\n```\n\n### useTokenRefresh hook\n\n```tsx\n'use client';\nimport { useTokenRefresh } from '@chemmangat/msal-next';\n\nexport default function SessionWarning() {\n  const { expiresIn, isExpiringSoon, refresh, lastRefresh } = useTokenRefresh({\n    enabled: true,\n    refreshBeforeExpiry: 300,\n    scopes: ['User.Read'],\n    onRefresh: (expiresIn) => console.log(`Token refreshed, expires in ${expiresIn}s`),\n    onError: (error) => console.error('Refresh failed:', error),\n  });\n\n  if (isExpiringSoon) {\n    return (\n      <div className=\"warning-banner\">\n        Session expires in {Math.floor((expiresIn ?? 0) / 60)} minutes.\n        <button onClick={refresh}>Extend Session</button>\n      </div>\n    );\n  }\n\n  return null;\n}\n```\n\n`useTokenRefresh` return values:\n\n| Field | Type | Description |\n|---|---|---|\n| `expiresIn` | `number \\| null` | Seconds until token expires. |\n| `isExpiringSoon` | `boolean` | True when within `refreshBeforeExpiry` seconds. |\n| `refresh` | `() => Promise<void>` | Manually trigger a refresh. |\n| `lastRefresh` | `Date \\| null` | Timestamp of last successful refresh. |\n\n---\n\n## UI Components Reference\n\n### MicrosoftSignInButton\n\n```tsx\n<MicrosoftSignInButton\n  text=\"Sign in with Microsoft\"\n  variant=\"dark\"          // 'dark' | 'light'\n  size=\"medium\"           // 'small' | 'medium' | 'large'\n  scopes={['User.Read']}\n  onSuccess={() => router.push('/dashboard')}\n  onError={(error) => console.error(error)}\n/>\n```\n\n### SignOutButton\n\n```tsx\n<SignOutButton\n  text=\"Sign out\"\n  variant=\"light\"\n  size=\"medium\"\n  onSuccess={() => router.push('/')}\n  onError={(error) => console.error(error)}\n/>\n```\n\n### AuthStatus\n\n```tsx\n<AuthStatus\n  showDetails={true}\n  renderLoading={() => <span>Checking…</span>}\n  renderAuthenticated={(username) => <span>Signed in as {username}</span>}\n  renderUnauthenticated={() => <span>Not signed in</span>}\n/>\n```\n\n### ErrorBoundary\n\n```tsx\n<ErrorBoundary\n  fallback={(error, reset) => (\n    <div>\n      <p>Authentication error: {error.message}</p>\n      <button onClick={reset}>Try Again</button>\n    </div>\n  )}\n  onError={(error, info) => logToSentry(error, info)}\n  debug={process.env.NODE_ENV === 'development'}\n>\n  <MSALProvider clientId=\"...\">\n    <App />\n  </MSALProvider>\n</ErrorBoundary>\n```\n\n---\n\n## Migration Guides\n\n### Migrating from v4.x to v5.1.x\n\nv5.1.0 is fully backward-compatible with v4.x. No breaking changes.\n\n**New features you can opt into:**\n\n```bash\nnpm install @chemmangat/msal-next@^5.1.0\n```\n\n1. Replace `authorityType` with `multiTenant.type`:\n\n```tsx\n// Before (v4)\n<MSALProvider authorityType=\"common\" />\n\n// After (v5.1) — preferred\n<MSALProvider multiTenant={{ type: 'multi' }} />\n```\n\n2. Add tenant allow/block lists:\n\n```tsx\n<MSALProvider\n  multiTenant={{\n    type: 'multi',\n    allowList: ['contoso.com'],\n    requireMFA: true,\n  }}\n  onTenantDenied={(reason) => router.push('/unauthorized')}\n/>\n```\n\n3. Use `useTenant()` for tenant context:\n\n```tsx\nconst { tenantDomain, isGuestUser } = useTenant();\n```\n\n4. Add per-page tenant restrictions:\n\n```tsx\nexport const auth = {\n  required: true,\n  tenant: { allowList: ['contoso.com'] },\n};\n```\n\n---\n\n### Migrating from v3.x to v4.x\n\nv4.0 introduced Zero-Config Protected Routes. No breaking changes from v3.\n\n```bash\nnpm install @chemmangat/msal-next@^4.0.0\n```\n\nNew in v4:\n- `export const auth = { required: true }` per-page protection\n- `protection` prop on `MSALProvider`\n- `withPageAuth` HOC\n\n---\n\n### Migrating from v2.x to v3.x\n\nv3.0 had breaking changes:\n\n1. **Node.js 18+ required**\n2. **`ServerSession.accessToken` removed** — use client-side `acquireToken()` instead:\n\n```tsx\n// Before (v2)\nconst session = await getServerSession();\nconst token = session.accessToken; // ❌ removed\n\n// After (v3+)\n'use client';\nconst { acquireToken } = useMsalAuth();\nconst token = await acquireToken(['User.Read']); // ✅\n```\n\n3. **MSAL packages updated**:\n\n```bash\nnpm install @azure/msal-browser@^4.0.0 @azure/msal-react@^3.0.0\n```\n\n---\n\n## Troubleshooting\n\n### Redirect loop on protected pages\n\n**Symptom**: Browser keeps redirecting between `/login` and `/dashboard`.\n\n**Cause**: The middleware is protecting `/login` itself, or the session cookie isn't being set.\n\n**Fix**:\n1. Make sure `/login` is in `publicOnlyRoutes`, not `protectedRoutes`.\n2. Ensure the `msal.account` cookie is set after login (the provider does this automatically on redirect completion).\n3. Check your `matcher` pattern excludes `_next/static` and `_next/image`.\n\n```ts\n// middleware.ts — correct setup\nexport const middleware = createAuthMiddleware({\n  protectedRoutes: ['/dashboard'],\n  publicOnlyRoutes: ['/login'],  // ← must be here\n  loginPath: '/login',\n});\n\nexport const config = {\n  matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],\n};\n```\n\n---\n\n### AADSTS50011 — Redirect URI mismatch\n\n**Symptom**: `AADSTS50011: The redirect URI specified in the request does not match the redirect URIs configured for the application.`\n\n**Fix**:\n1. Go to Azure Portal → App registrations → your app → **Authentication**\n2. Under **Single-page application**, add the exact URI your app uses\n3. Common URIs to add: `http://localhost:3000`, `https://yourdomain.com`\n4. The URI must match **exactly** — no trailing slash differences\n\n---\n\n### AADSTS65001 — Admin consent required\n\n**Symptom**: `AADSTS65001: The user or administrator has not consented to use the application.`\n\n**Fix**:\n1. Go to Azure Portal → App registrations → your app → **API permissions**\n2. Click **Grant admin consent for [your tenant]**\n3. Or add `prompt: 'consent'` to force the consent dialog:\n\n```tsx\nconst { loginRedirect } = useMsalAuth();\nawait loginRedirect(['User.Read']); // consent dialog shown on first login\n```\n\n---\n\n### AADSTS700016 — Application not found in directory\n\n**Symptom**: `AADSTS700016: Application with identifier '...' was not found in the directory.`\n\n**Fix**: Your `clientId` or `tenantId` is wrong. Double-check them in Azure Portal → App registrations → Overview.\n\n---\n\n### CORS errors on Graph API calls\n\n**Symptom**: `Access to fetch at 'https://graph.microsoft.com/...' has been blocked by CORS policy.`\n\n**Fix**: CORS errors on Graph API calls are almost always caused by an expired or missing token. Make sure you're passing the `Authorization` header:\n\n```tsx\nconst token = await acquireToken(['User.Read']);\nconst res = await fetch('https://graph.microsoft.com/v1.0/me', {\n  headers: { Authorization: `Bearer ${token}` },  // ← required\n});\n```\n\nOr use `useGraphApi()` which handles this automatically.\n\n---\n\n### Token expiration / silent token failure\n\n**Symptom**: API calls fail after ~1 hour with `interaction_required` error.\n\n**Fix**: Enable `autoRefreshToken` on the provider:\n\n```tsx\n<MSALProvider\n  clientId=\"...\"\n  autoRefreshToken={true}\n  refreshBeforeExpiry={300}\n>\n```\n\nOr use `acquireToken()` (not `acquireTokenSilent()`) — it automatically falls back to a redirect if silent acquisition fails.\n\n---\n\n### \"inProgress\" is always true\n\n**Symptom**: `inProgress` from `useMsalAuth()` never becomes `false`.\n\n**Fix**: This usually means MSAL is stuck handling a redirect response. Make sure `MSALProvider` (or `MsalAuthProvider`) is at the root of your app and wraps all pages. Also check that your redirect URI is registered in Azure AD.\n\n---\n\n### Environment variables not loading\n\n**Symptom**: `clientId is required` error even though `.env.local` is set.\n\n**Fix**:\n1. Variables exposed to the browser **must** be prefixed with `NEXT_PUBLIC_`\n2. Restart the dev server after changing `.env.local`\n3. Never commit `.env.local` to git\n\n```bash\n# .env.local\nNEXT_PUBLIC_AZURE_AD_CLIENT_ID=12345678-1234-1234-1234-123456789012\nNEXT_PUBLIC_AZURE_AD_TENANT_ID=87654321-4321-4321-4321-210987654321\n```\n\n---\n\n### Development config validation\n\nThe library automatically validates your config in development mode and prints helpful warnings to the console. Look for `[MSAL-Next]` messages when you start your dev server.\n\nYou can also run validation manually:\n\n```tsx\nimport { validateConfig, displayValidationResults } from '@chemmangat/msal-next';\n\nconst result = validateConfig({\n  clientId: process.env.NEXT_PUBLIC_AZURE_AD_CLIENT_ID!,\n  tenantId: process.env.NEXT_PUBLIC_AZURE_AD_TENANT_ID,\n});\n\ndisplayValidationResults(result);\n```\n\n---\n\n## Examples\n\nSee the [`examples/`](./examples/) folder for complete, runnable examples:\n\n| Example | Description |\n|---|---|\n| [`basic/`](./examples/basic/) | Minimal setup with sign-in/sign-out |\n| [`multi-tenant/`](./examples/multi-tenant/) | Multi-tenant SaaS with allow-list |\n| [`rbac/`](./examples/rbac/) | Role-based access control |\n| [`middleware-only/`](./examples/middleware-only/) | Edge middleware protection |\n| [`per-page-only/`](./examples/per-page-only/) | Per-page auth exports |\n| [`hybrid/`](./examples/hybrid/) | Middleware + per-page combined |\n| [`b2c/`](./examples/b2c/) | Azure AD B2C custom policies |\n| [`edge-runtime/`](./examples/edge-runtime/) | Edge runtime compatibility |\n\n---\n\n## Deployment Checklist\n\n### Azure AD settings for production\n\n- [ ] Add your production domain to **Redirect URIs** (e.g. `https://yourdomain.com`)\n- [ ] Add your production domain to **Front-channel logout URL** if using logout\n- [ ] Set **Supported account types** correctly for your use case\n- [ ] Grant **admin consent** for all required API permissions\n- [ ] Configure **App roles** if using RBAC\n- [ ] Set **Token lifetime policies** if you need custom expiry\n- [ ] Enable **Conditional Access** policies if required (MFA, compliant devices)\n- [ ] Review **Authentication** → **Implicit grant** — ensure it is disabled for SPAs (use auth code flow)\n\n### Environment variables\n\n- [ ] Set `NEXT_PUBLIC_AZURE_AD_CLIENT_ID` in your hosting platform\n- [ ] Set `NEXT_PUBLIC_AZURE_AD_TENANT_ID` in your hosting platform\n- [ ] Never commit `.env.local` to source control\n- [ ] Use separate Azure AD app registrations for dev/staging/production\n\n### Security settings\n\n- [ ] Use `cacheLocation: 'sessionStorage'` (default) — not `localStorage` unless you need persistence\n- [ ] Set `allowedRedirectUris` to prevent open redirect attacks:\n\n```tsx\n<MSALProvider\n  clientId=\"...\"\n  allowedRedirectUris={[\n    'https://yourdomain.com',\n    'https://staging.yourdomain.com',\n  ]}\n>\n```\n\n- [ ] Enable `autoRefreshToken` to prevent session interruptions\n- [ ] Use HTTPS in production — HTTP will cause `AADSTS50011`\n- [ ] Set `storeAuthStateInCookie: false` unless you need IE11 support\n\n### Next.js settings\n\n- [ ] Ensure `middleware.ts` matcher excludes `_next/static`, `_next/image`, and `favicon.ico`\n- [ ] Set `navigateToLoginRequestUrl: true` to return users to their original page after login\n- [ ] Test the full auth flow in a production build (`next build && next start`) before deploying\n\n### Monitoring\n\n- [ ] Enable `enableLogging: true` in staging to catch auth issues early\n- [ ] Set up error tracking (Sentry, Datadog) with the `ErrorBoundary` component's `onError` callback\n- [ ] Monitor token refresh failures with `useTokenRefresh`'s `onError` callback\n\n---\n\n## Advanced Utilities\n\n### Debug logger\n\n```tsx\nimport { getDebugLogger } from '@chemmangat/msal-next';\n\nconst logger = getDebugLogger({\n  enabled: process.env.NODE_ENV === 'development',\n  level: 'debug',\n  enablePerformance: true,\n  enableNetworkLogs: true,\n});\n\nlogger.info('User logged in', { username: 'user@example.com' });\n\n// Performance tracking\nlogger.startTiming('token-acquisition');\nconst token = await acquireToken(['User.Read']);\nlogger.endTiming('token-acquisition');\n\n// Export logs for debugging\nlogger.downloadLogs('debug-logs.json');\n```\n\n### Retry with exponential backoff\n\n```tsx\nimport { retryWithBackoff } from '@chemmangat/msal-next';\n\nconst token = await retryWithBackoff(\n  () => acquireToken(['User.Read']),\n  { maxRetries: 3, initialDelay: 1000 }\n);\n```\n\n### Error handling\n\n```tsx\nimport { wrapMsalError } from '@chemmangat/msal-next';\n\ntry {\n  await loginRedirect();\n} catch (error) {\n  const msalError = wrapMsalError(error);\n\n  if (msalError.isUserCancellation()) {\n    return; // user closed the popup — not a real error\n  }\n\n  if (msalError.requiresInteraction()) {\n    await loginRedirect(); // retry with interaction\n    return;\n  }\n\n  console.error(msalError.toConsoleString()); // actionable message with fix steps\n  throw msalError;\n}\n```\n\n### getMsalInstance (advanced)\n\nAccess the underlying MSAL `PublicClientApplication` instance directly:\n\n```tsx\nimport { getMsalInstance } from '@chemmangat/msal-next';\n\nconst instance = getMsalInstance();\nif (instance) {\n  const accounts = instance.getAllAccounts();\n  console.log('All accounts:', accounts);\n}\n```\n\n---\n\n## Peer Dependencies\n\n| Package | Version |\n|---|---|\n| `next` | `>=14.0.0` |\n| `react` | `>=18.0.0` |\n| `react-dom` | `>=18.0.0` |\n| `@azure/msal-browser` | `^3.11.0 \\|\\| ^4.0.0` |\n| `@azure/msal-react` | `^2.0.0 \\|\\| ^3.0.0` |\n\n---\n\n## License\n\nMIT © [Hari Manoj (chemmangat)](https://github.com/chemmangat)\n\n---\n\n## Links\n\n- [npm package](https://www.npmjs.com/package/@chemmangat/msal-next)\n- [GitHub repository](https://github.com/chemmangat/msal-next)\n- [Issue tracker](https://github.com/chemmangat/msal-next/issues)\n- [Discussions](https://github.com/chemmangat/msal-next/discussions)\n- [Changelog](./CHANGELOG.md)\n- [Security policy](./SECURITY.md)\n","readmeFilename":"README.md"}