{"_id":"@glubean/oauth-code","_rev":"27-1fe3ce6ac1de410c28b4b0ac72aabe1f","name":"@glubean/oauth-code","dist-tags":{"latest":"0.14.0"},"versions":{"0.1.0":{"name":"@glubean/oauth-code","version":"0.1.0","_id":"@glubean/oauth-code@0.1.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"5aa998a9f0a1f77349a42e27f6b303b0d83b6340","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.1.0.tgz","fileCount":6,"integrity":"sha512-2evCLA+HJ/Ok/ygM6kTjp4Q3kRMFcidlkaLuSenlkFlUvgC4YgSaq13mdv+H0a65WAf6oO02ni36dQ+KCE2AXw==","signatures":[{"sig":"MEQCIBWAbPLCQ3NOlKxcucJILyGpDxayTQx2fNSKscCO/1QWAiBj5V9RHsq0ctWmJFZzePGPL9r+AsT+SJD2XNk0uQLBww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38696},"type":"module","_from":"file:glubean-oauth-code-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/564fe5e44a012bb78a0f81b2960bd406/glubean-oauth-code-0.1.0.tgz","_integrity":"sha512-2evCLA+HJ/Ok/ygM6kTjp4Q3kRMFcidlkaLuSenlkFlUvgC4YgSaq13mdv+H0a65WAf6oO02ni36dQ+KCE2AXw==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.4","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@glubean/sdk":"0.1.25"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.1.0_1774668522250_0.7667954754152089","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@glubean/oauth-code","version":"0.1.1","_id":"@glubean/oauth-code@0.1.1","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"b19a2746140b0cb35a9a13c242e64dacfdf3ecdc","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.1.1.tgz","fileCount":6,"integrity":"sha512-DCDjOIJ3nKLhplHu8DLHpIi1to564mR0TGJMI/WjN1sJqhluBmLP+Nc1SZU8uiKQSkOEMr0mVq/S76npOYwuPg==","signatures":[{"sig":"MEUCIAveeiz7nRPM6ZtUJYD2V6jbiBKo9ihfiHeds4MSBz2NAiEAzz/dGx1rsK//Oo1+2wIrAdatAUTvR43ONmNbGi96RiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49548},"type":"module","_from":"file:glubean-oauth-code-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/b7880868547bbffad860c54b9f00085c/glubean-oauth-code-0.1.1.tgz","_integrity":"sha512-DCDjOIJ3nKLhplHu8DLHpIi1to564mR0TGJMI/WjN1sJqhluBmLP+Nc1SZU8uiKQSkOEMr0mVq/S76npOYwuPg==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.7","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@glubean/sdk":"0.1.31"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.1.1_1775814289032_0.17827669045418437","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@glubean/oauth-code","version":"0.1.2","_id":"@glubean/oauth-code@0.1.2","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"eaa24bbd515cfa8d73539a7527ef42a440b02311","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.1.2.tgz","fileCount":6,"integrity":"sha512-qGFmOJHOVI1tYTPv6nABXXuCP3Prqlo/J4MSFog4au60AFWR9h1mmb/SAiv62VOZyPfIPZZNV7rnBakzsGWI9A==","signatures":[{"sig":"MEYCIQCs4luGD4VrA3roW/KofFNgzsheaJX3s2CcBArdGgaF4AIhAJ7pYJCsw2E67j4xSrKjb1v+oqDdchOPPruenO6pUW81","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49547},"type":"module","_from":"file:glubean-oauth-code-0.1.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/private/tmp/claude-501/b7e0a37a717181b719dc302d82c0163a/glubean-oauth-code-0.1.2.tgz","_integrity":"sha512-qGFmOJHOVI1tYTPv6nABXXuCP3Prqlo/J4MSFog4au60AFWR9h1mmb/SAiv62VOZyPfIPZZNV7rnBakzsGWI9A==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"11.11.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@glubean/sdk":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.1.2_1780622221710_0.7677391830019409","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@glubean/oauth-code","version":"0.5.0","_id":"@glubean/oauth-code@0.5.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"81734e042dde2731b677b471d1e3e31f2e8abb5b","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.5.0.tgz","fileCount":6,"integrity":"sha512-u2P2eMuO1GE1UjoSq9erYEpx0OHQxHkv/Y4dFQlluGJX62v/bRAJASgd7jOOFQh2nhmv2he4vhW3vUNiPFZ/Zg==","signatures":[{"sig":"MEYCIQD3tiVSg5RAFgSSbLjS93Ci4cQle+H2ysS53EjXsB1hiAIhAMPcvU/84zATY23uVjkm/J4er35UeNNLgmVLhNVkIg2p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49547},"type":"module","_from":"file:glubean-oauth-code-0.5.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/private/var/folders/zn/65yn1ht53lq0_9z8xdlg_4bm0000gn/T/380974f77e5a247b811890cf440af723/glubean-oauth-code-0.5.0.tgz","_integrity":"sha512-u2P2eMuO1GE1UjoSq9erYEpx0OHQxHkv/Y4dFQlluGJX62v/bRAJASgd7jOOFQh2nhmv2he4vhW3vUNiPFZ/Zg==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"11.11.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@glubean/sdk":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.5.0_1780804183854_0.20481199670808192","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@glubean/oauth-code","version":"0.7.0","_id":"@glubean/oauth-code@0.7.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"805cec99e530666000c432693bef532deca7bb0f","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.7.0.tgz","fileCount":6,"integrity":"sha512-QqZl8wA2UsxJp1pVzId7W38B4KV6Djqa7zdpGDM+WU73uCqriBwREgFhAXpABtR2Lwq0FiYqcze0LbQU2tvc9A==","signatures":[{"sig":"MEUCIQDsCLqNMLoMzraaEA3r9O6qvgEJq5JBPTqqUl/BhqpOiAIgVGAzAbwBAWtOi9gxDuaU5fbL6pe8MkUHuFXLeG9wRz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.7.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/private/var/folders/zn/65yn1ht53lq0_9z8xdlg_4bm0000gn/T/5a978df3386b04695679a97df814cf03/glubean-oauth-code-0.7.0.tgz","_integrity":"sha512-QqZl8wA2UsxJp1pVzId7W38B4KV6Djqa7zdpGDM+WU73uCqriBwREgFhAXpABtR2Lwq0FiYqcze0LbQU2tvc9A==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"11.11.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@glubean/sdk":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.7.0_1781765912645_0.048623649135238756","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@glubean/oauth-code","version":"0.8.0","_id":"@glubean/oauth-code@0.8.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"b5366abe62cc071c71d8a8d3ea873df8a1587b67","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.8.0.tgz","fileCount":6,"integrity":"sha512-hW/7H8hXfxEzuQxvt4IHc4Gx3z1xwqpL/HGTGtez90r9l9vFHuKxP8XO2ftNE6Me0NMyUap9elWsaX+NcPjDfQ==","signatures":[{"sig":"MEYCIQDEUJK5axMWy8IkDp2T31Iic8c1L4uO9uRArNJ2NvCpyAIhAJvxw/5GyUcgSr7Z7vRryGDIK/jMmrk1sgz5H5DqXH4x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.8.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/private/var/folders/zn/65yn1ht53lq0_9z8xdlg_4bm0000gn/T/2f4e592a7874208e016eaa2a927d00d7/glubean-oauth-code-0.8.0.tgz","_integrity":"sha512-hW/7H8hXfxEzuQxvt4IHc4Gx3z1xwqpL/HGTGtez90r9l9vFHuKxP8XO2ftNE6Me0NMyUap9elWsaX+NcPjDfQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"11.11.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@glubean/sdk":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.8.0_1782011809457_0.11074866049122067","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@glubean/oauth-code","version":"0.8.1","_id":"@glubean/oauth-code@0.8.1","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"67fe393c6b7e96bb9affab55b969621bddd923b5","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.8.1.tgz","fileCount":6,"integrity":"sha512-120FS4A6rSD702ptYGEQiirCsx5IVf33TUrd7Sm5o06XOqzCx88sfuGtBLjq1HytpqXtiby1pI1wKXMTZEQasg==","signatures":[{"sig":"MEUCIQChKuTkNQztmyX38U8qbsyfnYa0GtE3fup8fsm1dwIGDQIgDuvOeHYnM6KCLMswTpZxQBcHmPdaCBifEHLu0wORBMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.8.1.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/57afdbd9faadff8abcc26bc035b71b36/glubean-oauth-code-0.8.1.tgz","_integrity":"sha512-120FS4A6rSD702ptYGEQiirCsx5IVf33TUrd7Sm5o06XOqzCx88sfuGtBLjq1HytpqXtiby1pI1wKXMTZEQasg==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@glubean/sdk":"0.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.8.1_1782304442960_0.372355529913194","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@glubean/oauth-code","version":"0.8.4","_id":"@glubean/oauth-code@0.8.4","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c053a0cb124d092b855e8c0f570d912e9c1893da","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.8.4.tgz","fileCount":6,"integrity":"sha512-76xwYy1SGiS3hv48YPHdL40V32+sMYDIAQccnHix3yx5EXk/OZn8LNzQwhYRv6uM5porsLmccM4g0s03l0aIvA==","signatures":[{"sig":"MEUCIQDO/tRULd7D7KDlwFVrEzVX+SkSxfliW4O1494AktbpWQIgAR69aa88dUJx8Qj5doSEuKzR7t9Uc52PFvvFTiZc95I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.8.4.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/f099fef20fc6cea512d39595f4ff6290/glubean-oauth-code-0.8.4.tgz","_integrity":"sha512-76xwYy1SGiS3hv48YPHdL40V32+sMYDIAQccnHix3yx5EXk/OZn8LNzQwhYRv6uM5porsLmccM4g0s03l0aIvA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.8.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.8.4_1782966460877_0.28238169785634404","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@glubean/oauth-code","version":"0.9.0","_id":"@glubean/oauth-code@0.9.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"064ef260bc0dd498da7cebc8227e05f5cf8a37a9","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.0.tgz","fileCount":6,"integrity":"sha512-z27dzL/so0KNv69zGwOueYhOonLGJcZvHnMNwilEq97Px7zoQV0D4xrOrvOXJBQSIlalL9qq9sr0hu0yg0gFPw==","signatures":[{"sig":"MEQCIFGWq+ztS8pRuW9N6uDVNDyyQNqX8DMLSYqL1cQf7kJOAiA5XVGWC6ecVvEYww6H1zbPVxmj32ha/Py0qI9zm0nP7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/46136f7f1a2796436e45f81f406cf510/glubean-oauth-code-0.9.0.tgz","_integrity":"sha512-z27dzL/so0KNv69zGwOueYhOonLGJcZvHnMNwilEq97Px7zoQV0D4xrOrvOXJBQSIlalL9qq9sr0hu0yg0gFPw==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.0_1783032665115_0.2129333564726259","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@glubean/oauth-code","version":"0.9.1","_id":"@glubean/oauth-code@0.9.1","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"6259f068f5f020b43ebea238e9e4e3e0b917fe6b","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.1.tgz","fileCount":6,"integrity":"sha512-ZtTGWLxkzOMBNIWYImOsLj9Ma+XwG+dSUovgQwtLui0CaVO0WHu+ANowE8bQOny6xlaIAGP2XMCkeX0BalUrIQ==","signatures":[{"sig":"MEUCIEPdXjbGmCmOHFJlA0vMqgCiehWLV95t60rz0ts2AFjZAiEAkDTOrMuQn0XsIczD+FysTNph4g0XOKNq3bBKCA2PCOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.1.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/fb8862f333bb59b8a4b74a6243fd7601/glubean-oauth-code-0.9.1.tgz","_integrity":"sha512-ZtTGWLxkzOMBNIWYImOsLj9Ma+XwG+dSUovgQwtLui0CaVO0WHu+ANowE8bQOny6xlaIAGP2XMCkeX0BalUrIQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.1_1783057070956_0.0989389164441119","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@glubean/oauth-code","version":"0.9.2","_id":"@glubean/oauth-code@0.9.2","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c33920fd093ca7cfcdd52a1fa5799b3ef374e2ee","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.2.tgz","fileCount":6,"integrity":"sha512-VffpW5NKIveheYgz0trvAqS+sCx3PqWjoh6CRPhVAX0inA2sC4DiVtJ7tKd+yU6LksClOuxN+AOg2lYoZKW3vA==","signatures":[{"sig":"MEYCIQCr2QXBMpadwvIMUbCoKyDSA0+90QCisio6yj9aLlafPgIhAJIIyh4NCKT5sc1Z/zlZJlwlgrshrAoZzM76SkauZwTe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.2.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/2d627998948da58ffcc14dee582ed359/glubean-oauth-code-0.9.2.tgz","_integrity":"sha512-VffpW5NKIveheYgz0trvAqS+sCx3PqWjoh6CRPhVAX0inA2sC4DiVtJ7tKd+yU6LksClOuxN+AOg2lYoZKW3vA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.2_1783081431358_0.5899742292352317","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@glubean/oauth-code","version":"0.9.3","_id":"@glubean/oauth-code@0.9.3","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"4774aafb01d326a26347b908f002a718f3fa38ee","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.3.tgz","fileCount":6,"integrity":"sha512-4ilNoniJr4OTj/kaN8VaOWQ4y2SDr7Cdjq8DiIogA+wfKiX1WXWOrDs61r8ehcTl4fZ0Wj4VnUUj7u3BrVu4wQ==","signatures":[{"sig":"MEQCIGbW50cR2fj/ikdPUuRM6tK7w5Zfxn76emHWpxUDoNZxAiAJgcq/yS+ZP7KD5aNcUEnCK+sWoAJqcC6WhR+X2s32JA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.3.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/fb97aa654ef17f8d3573dfdff0ed3e48/glubean-oauth-code-0.9.3.tgz","_integrity":"sha512-4ilNoniJr4OTj/kaN8VaOWQ4y2SDr7Cdjq8DiIogA+wfKiX1WXWOrDs61r8ehcTl4fZ0Wj4VnUUj7u3BrVu4wQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.3_1783093031551_0.7958687958113717","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@glubean/oauth-code","version":"0.9.4","_id":"@glubean/oauth-code@0.9.4","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c1df8ffe50bbf5924f056c2743c01e35c35d45ac","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.4.tgz","fileCount":6,"integrity":"sha512-LwOe3Qy61oDuHGEAonizZEOpsrc9+P0gN2v5LSu2lyZuqL0yJCjvqTKsLdZWWmUBH07Yt+6q2XXRF451JzjtMw==","signatures":[{"sig":"MEUCIGEZak4CZnyc03zsiqWmKwf5bQ4d5yQzU9q/tSVmRBF7AiEA3pJFp2QIFLptPL7VgXfmgAHsuYnF3TuSR/Wvp18wqBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.4.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/8deb981023dc7532b0c7ad3c5d4683fb/glubean-oauth-code-0.9.4.tgz","_integrity":"sha512-LwOe3Qy61oDuHGEAonizZEOpsrc9+P0gN2v5LSu2lyZuqL0yJCjvqTKsLdZWWmUBH07Yt+6q2XXRF451JzjtMw==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.4_1783126454356_0.4090056137171083","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@glubean/oauth-code","version":"0.9.5","_id":"@glubean/oauth-code@0.9.5","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"13e0d627700f3c39166d0d974be8acc070627379","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.9.5.tgz","fileCount":6,"integrity":"sha512-KLBAkjw5FTNKsKpovynqXngKmNKYNGJTEbNL3BZ/xY+zrNExfAj1BMRjKQdh5ri6bxVucDA0kn5Rj7XCac9HTw==","signatures":[{"sig":"MEYCIQCh6402uP5splX5nx5dhqwBm7G3l/PwORR/6rItWbL8KAIhAPywSR6kskTMJ1mFJEwcK5u5II6jc9ANfjal7VQFf2MM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49591},"type":"module","_from":"file:glubean-oauth-code-0.9.5.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/7b4e08d5a5d1f04a5becbda0304ee825/glubean-oauth-code-0.9.5.tgz","_integrity":"sha512-KLBAkjw5FTNKsKpovynqXngKmNKYNGJTEbNL3BZ/xY+zrNExfAj1BMRjKQdh5ri6bxVucDA0kn5Rj7XCac9HTw==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.9.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.9.5_1783138034243_0.5156272832786728","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@glubean/oauth-code","version":"0.10.0","_id":"@glubean/oauth-code@0.10.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"520528adf50587e311344f9f7c090780c5b7233c","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.0.tgz","fileCount":6,"integrity":"sha512-noj4/StoAryRiUDdW/qCmDUh3dcRzSsIWcxXHaUhaI8ViPSb/RH4p38N7ppA9uq9x3hk/ejAsYmjrdghONZ5hA==","signatures":[{"sig":"MEUCIQD8NwRjdOnQMJeLl8Lvbb6ulKuUSJz+YFa+dbwCBqIgQgIgWcxnnKs16/e1gVjlZ+Rwd1wyJJv7ETZVEaW2MoJRERE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49593},"type":"module","_from":"file:glubean-oauth-code-0.10.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/dc66c6935c079a6f62c480e903f7ce40/glubean-oauth-code-0.10.0.tgz","_integrity":"sha512-noj4/StoAryRiUDdW/qCmDUh3dcRzSsIWcxXHaUhaI8ViPSb/RH4p38N7ppA9uq9x3hk/ejAsYmjrdghONZ5hA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.0_1783395391839_0.7478826702768224","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@glubean/oauth-code","version":"0.10.1","_id":"@glubean/oauth-code@0.10.1","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c1cf19432ec7e9cc15c8dd6a12f7363caadeca31","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.1.tgz","fileCount":6,"integrity":"sha512-sv8Cxx2j8tMo7ZUko5QOzXLpStwRxRDIc9K509Y4yuYVymcE3lfi4tuDOY17X5VzN6+4zcka4iZqp/5TQg36Zg==","signatures":[{"sig":"MEUCIQDUM6MLGHflYOnPG5DvxgRqRccIvmNPikO7tFi5sjctwAIgV35hedlJSvNFu87SNXeNruxojHDrM4xoAdhUJe5EOl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49593},"type":"module","_from":"file:glubean-oauth-code-0.10.1.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/d1e916bdaf68e96dc03740b0ee649f45/glubean-oauth-code-0.10.1.tgz","_integrity":"sha512-sv8Cxx2j8tMo7ZUko5QOzXLpStwRxRDIc9K509Y4yuYVymcE3lfi4tuDOY17X5VzN6+4zcka4iZqp/5TQg36Zg==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.1_1783570592342_0.27861654139584235","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@glubean/oauth-code","version":"0.10.2","_id":"@glubean/oauth-code@0.10.2","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"1cb60cd3ac67f78711e01aacf88cceb89363a49c","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.2.tgz","fileCount":6,"integrity":"sha512-VE7doA5slJN4+Me68NdrIWZgaZif7WLVJGNjn05Qkf9FtUqf8YTpvzp/V18NZlVG74/jgkSvxfZrsBD+pKQ0iA==","signatures":[{"sig":"MEQCIHygo5O4mK/Mea2sluEDywxT2sGOJu7wy0PDq/v2HrWBAiBjr2giW6fFs2CXxPwIYatiA8tdVzluSiM6+BY3iA+8/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49593},"type":"module","_from":"file:glubean-oauth-code-0.10.2.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/private/var/folders/zn/65yn1ht53lq0_9z8xdlg_4bm0000gn/T/01b56d9616e9ddda1d78bac295f9c1c2/glubean-oauth-code-0.10.2.tgz","_integrity":"sha512-VE7doA5slJN4+Me68NdrIWZgaZif7WLVJGNjn05Qkf9FtUqf8YTpvzp/V18NZlVG74/jgkSvxfZrsBD+pKQ0iA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"11.11.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@glubean/sdk":"0.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.2_1783678181024_0.8067251008734","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"@glubean/oauth-code","version":"0.10.3","_id":"@glubean/oauth-code@0.10.3","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"91ca2ad7862d6ac0b7d92ca4296ce8d852831235","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.3.tgz","fileCount":6,"integrity":"sha512-mYSFzG2BDXB1DhD/nednvuRwQF0TJw5rggip6wCRpxTIDWntPj9uDlyexRRm1RSrCe5wisB6+rdISqmlxCjQ0Q==","signatures":[{"sig":"MEUCIQC3nXrc5Nz+0weVxhIpb1ab7Kq9xgU/x9toI5G2xiJUZgIgEUODTTwPJhWPWu6gnU8tjs//xu0QK0aOGF5zGHy+OXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49593},"type":"module","_from":"file:glubean-oauth-code-0.10.3.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/a4d1ea681ee0aa69bc90b7f641b0cda2/glubean-oauth-code-0.10.3.tgz","_integrity":"sha512-mYSFzG2BDXB1DhD/nednvuRwQF0TJw5rggip6wCRpxTIDWntPj9uDlyexRRm1RSrCe5wisB6+rdISqmlxCjQ0Q==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.3_1783729419255_0.36597941880121243","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"@glubean/oauth-code","version":"0.10.4","_id":"@glubean/oauth-code@0.10.4","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"87f33aeb8cbd7c53aebb236f36889b4b2266054e","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.4.tgz","fileCount":6,"integrity":"sha512-NzaDpZcZoqisGxzyH8gFjju4pWpmk1Boi/Lol5wZuxYTreluiiNVc2Y1qNnn4+ABAYTg3XRpm1L92MxIHgL2cQ==","signatures":[{"sig":"MEQCIBg/7ITXEkMzBBm0Cg0gCgw2dFbHbVR+OcLU2JowZfgtAiB7ivogwItd2Jo28Rp/QWEEbK8TD9TJ636RVh93RrWvAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49598},"type":"module","_from":"file:glubean-oauth-code-0.10.4.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/f0438ac29eca52956db0ea9b54b2f157/glubean-oauth-code-0.10.4.tgz","_integrity":"sha512-NzaDpZcZoqisGxzyH8gFjju4pWpmk1Boi/Lol5wZuxYTreluiiNVc2Y1qNnn4+ABAYTg3XRpm1L92MxIHgL2cQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.4_1784281409834_0.44839399627312004","host":"s3://npm-registry-packages-npm-production"}},"0.10.5":{"name":"@glubean/oauth-code","version":"0.10.5","_id":"@glubean/oauth-code@0.10.5","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"4368bc5ed0593b0130d31a44a69fe80ae7daa66a","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.5.tgz","fileCount":6,"integrity":"sha512-yJOk9pRvbQOTSCnaGK8TVORkvhcl5BSVzliXUGDMRzVIg3sLrQFN4FrCjt5n3f137HLcSB18oPxijj0BTBpETA==","signatures":[{"sig":"MEUCIE40TZyF6IZIMBRp+qNYumBZ29mzNMbp27WuxaNp2TUyAiEA8xlfJUgK2VQY2G3GkfsKWkCn+tWAFJJDFfZdwuuJ1dM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49598},"type":"module","_from":"file:glubean-oauth-code-0.10.5.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/c68b29e3884793236395505c0f29f8d0/glubean-oauth-code-0.10.5.tgz","_integrity":"sha512-yJOk9pRvbQOTSCnaGK8TVORkvhcl5BSVzliXUGDMRzVIg3sLrQFN4FrCjt5n3f137HLcSB18oPxijj0BTBpETA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.5_1784287378219_0.024210599439567382","host":"s3://npm-registry-packages-npm-production"}},"0.10.6":{"name":"@glubean/oauth-code","version":"0.10.6","_id":"@glubean/oauth-code@0.10.6","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"67a306531818d05158f22c0e465f6f082efaada9","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.6.tgz","fileCount":6,"integrity":"sha512-fIF/jpCvGZ5H1nYxqZAVRe5Gg8qk1cGTMtENrwWTTwE7oYdktvBu/+Y02WzQVyKcd2OvNEnENDvIofPhXrXNyA==","signatures":[{"sig":"MEQCICfh9t4D+394y99LfptCCSE77NaUH5bQOBwoKxKcdmzyAiB9pzNDrjO8S7NMGqMSPt6Sb2x3oqOAqPAwyTOteamcCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49598},"type":"module","_from":"file:glubean-oauth-code-0.10.6.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/88b84bb34815309ee867877281cb15da/glubean-oauth-code-0.10.6.tgz","_integrity":"sha512-fIF/jpCvGZ5H1nYxqZAVRe5Gg8qk1cGTMtENrwWTTwE7oYdktvBu/+Y02WzQVyKcd2OvNEnENDvIofPhXrXNyA==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.6_1784294201791_0.6864069583539516","host":"s3://npm-registry-packages-npm-production"}},"0.10.7":{"name":"@glubean/oauth-code","version":"0.10.7","_id":"@glubean/oauth-code@0.10.7","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c4c61dd6d0cb07dbe15e0d1993994a005a587050","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.7.tgz","fileCount":6,"integrity":"sha512-Zsbs/PN3GkOqF8z1oLXsvqQ0pN3K98hBf7DEAqCYtTOR7cJTSl1Amhtr5D/8p9prwXxG3eE6HRz3s/Wk3KsRSg==","signatures":[{"sig":"MEUCIB4pseJ063UdsvLGgbsiOLpD8f0zPIBPPXjMZQlc12SCAiEA2h2C9TGpwB6efEnojW4XNET5X+p61BxYgsqT/EJb0NY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49598},"type":"module","_from":"file:glubean-oauth-code-0.10.7.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/7e4f9ad338ba3318c51a85654fb1b985/glubean-oauth-code-0.10.7.tgz","_integrity":"sha512-Zsbs/PN3GkOqF8z1oLXsvqQ0pN3K98hBf7DEAqCYtTOR7cJTSl1Amhtr5D/8p9prwXxG3eE6HRz3s/Wk3KsRSg==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.7_1784331919943_0.41791552619285754","host":"s3://npm-registry-packages-npm-production"}},"0.10.8":{"name":"@glubean/oauth-code","version":"0.10.8","_id":"@glubean/oauth-code@0.10.8","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"eb94eee8490c65501e2b9b246307ae3ba47e75b9","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.10.8.tgz","fileCount":6,"integrity":"sha512-3QZIIibHtPFpDQweZxXf9mfwbYBMLuqLisMWGE55hVVdG7WjdNxs8j+yY8PDEWhgANw1CHZRERifvNDnjRWFBQ==","signatures":[{"sig":"MEUCIDmN5ZnfPVoeYQdyoZOYzVj4pKFZtdAXmaqO8Dxia1cHAiEAxOaRYV7lt1xhJMj0yASI672ScuKJh0e8SXrquil8utE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49598},"type":"module","_from":"file:glubean-oauth-code-0.10.8.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/455c51b8c391662edafd1f1e2eb7a677/glubean-oauth-code-0.10.8.tgz","_integrity":"sha512-3QZIIibHtPFpDQweZxXf9mfwbYBMLuqLisMWGE55hVVdG7WjdNxs8j+yY8PDEWhgANw1CHZRERifvNDnjRWFBQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.10.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.10.8_1784332870442_0.03746130242732382","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@glubean/oauth-code","version":"0.11.0","license":"Apache-2.0","_id":"@glubean/oauth-code@0.11.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"f090123f024c7911079da6ad20319de5a09ba38a","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.11.0.tgz","fileCount":8,"integrity":"sha512-80AVXrA2H6WeiIOtMl3Q8FAbDoLwYrlmyCEdwj0ELBi6IecOIimZc7q1noq5nMtPLl7ZCVTEoZ0vschNq1zWVQ==","signatures":[{"sig":"MEUCIQDBhqLj9eDKmwB3FVmw7x0fncVfkAZczQQe0SH5qefc/AIgD2vPys/YCfdfFbojrZJaCvDnBWrSv6A4Kbqu1xTK6zM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61127},"type":"module","_from":"file:glubean-oauth-code-0.11.0.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/2699b90dbe1ec3da698689e86c23f945/glubean-oauth-code-0.11.0.tgz","_integrity":"sha512-80AVXrA2H6WeiIOtMl3Q8FAbDoLwYrlmyCEdwj0ELBi6IecOIimZc7q1noq5nMtPLl7ZCVTEoZ0vschNq1zWVQ==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.11.0_1785828296022_0.34170427302330175","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@glubean/oauth-code","version":"0.12.0","license":"Apache-2.0","_id":"@glubean/oauth-code@0.12.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"c785365af8f2f48a91909d20244c5e4bbc172b23","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.12.0.tgz","fileCount":8,"integrity":"sha512-FhCDe0mbUoBa5Z8wvWTGVgaiyVNujbuszTJ31kHt0JfM5IuPuun3nEDB0G/F+h7HAcldnb9Psuspvbk0TlIdvw==","signatures":[{"sig":"MEYCIQC28JttEVT4cs7aoBgtcbyOyO3yW295a3YSnEKpEsdACgIhAKpWRBRgoc0p/A54fEE1HHziotUuh3olG2roRCdgarX9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61127},"type":"module","_from":"file:glubean-oauth-code-0.12.0.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/803cd18e38ca8193bca3a3676cbedf04/glubean-oauth-code-0.12.0.tgz","_integrity":"sha512-FhCDe0mbUoBa5Z8wvWTGVgaiyVNujbuszTJ31kHt0JfM5IuPuun3nEDB0G/F+h7HAcldnb9Psuspvbk0TlIdvw==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.12.0_1785848683724_0.13889472339605624","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@glubean/oauth-code","version":"0.13.0","license":"Apache-2.0","_id":"@glubean/oauth-code@0.13.0","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"homepage":"https://github.com/glubean/glubean#readme","bugs":{"url":"https://github.com/glubean/glubean/issues"},"dist":{"shasum":"8806dc1af26f1edcc1041335d0bcf59d2cc9d318","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.13.0.tgz","fileCount":8,"integrity":"sha512-F8D0pV/MZYMZT79May3jbj1SXeocsDVnldnmnZ2KZm0lsf2CJZYZ9eC4bq5+YFj0b110aywNFvsZhL7nq6byig==","signatures":[{"sig":"MEQCIH9ff+ney1ANNz7xN7g9Q6nOzvntVWmLapMwOR7FZXwNAiALZXw8gIlxCRBmzsmif20eMZwHeZ3JKlX6SKLBCfmUhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61127},"type":"module","_from":"file:glubean-oauth-code-0.13.0.tgz","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"_resolved":"/tmp/336428102e3949c5b26889ad4263a834/glubean-oauth-code-0.13.0.tgz","_integrity":"sha512-F8D0pV/MZYMZT79May3jbj1SXeocsDVnldnmnZ2KZm0lsf2CJZYZ9eC4bq5+YFj0b110aywNFvsZhL7nq6byig==","repository":{"url":"git+https://github.com/glubean/glubean.git","type":"git","directory":"packages/oauth-code"},"_npmVersion":"10.9.8","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@glubean/sdk":"0.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oauth-code_0.13.0_1786672352941_0.9886829665881782","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@glubean/oauth-code","version":"0.14.0","license":"Apache-2.0","engines":{"node":">=22.19.0"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"dependencies":{"@glubean/sdk":"0.14.0"},"devDependencies":{"@types/node":"^22.0.0","vitest":"^3.2.6","typescript":"^5.8.3"},"repository":{"type":"git","url":"git+https://github.com/glubean/glubean.git","directory":"packages/oauth-code"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run"},"_id":"@glubean/oauth-code@0.14.0","description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","bugs":{"url":"https://github.com/glubean/glubean/issues"},"homepage":"https://github.com/glubean/glubean#readme","_integrity":"sha512-O+1A7DDu9D1cPnIeWE6TH7QmLVQsUadWJiD5+HOoKLjyfZ+G473ttCf2LJkreggxXXw3UdyZ0BYQ3SJUBT5rtw==","_resolved":"/tmp/991794ce4092204a89e1941193c3c8e6/glubean-oauth-code-0.14.0.tgz","_from":"file:glubean-oauth-code-0.14.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-O+1A7DDu9D1cPnIeWE6TH7QmLVQsUadWJiD5+HOoKLjyfZ+G473ttCf2LJkreggxXXw3UdyZ0BYQ3SJUBT5rtw==","shasum":"7844b21c4f9cab4958f3d3d8ee045482bbe66705","tarball":"https://registry.npmjs.org/@glubean/oauth-code/-/oauth-code-0.14.0.tgz","fileCount":8,"unpackedSize":61127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCIAVvP0SzyPTAF9cvu+sP2t74KI/YPJUXAEkFPQMFDyAIgbY0w3WFbD2gS+G3N9wuEfCN4Z2cGI7XmYxUKRnAy6Yk="}]},"_npmUser":{"name":"peisong","email":"peisong@outlook.sg"},"directories":{},"maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oauth-code_0.14.0_1786688735635_0.8429914028443439"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-28T03:28:42.146Z","modified":"2026-08-14T06:25:35.911Z","0.1.0":"2026-03-28T03:28:42.388Z","0.1.1":"2026-04-10T09:44:49.184Z","0.1.2":"2026-06-05T01:17:01.925Z","0.5.0":"2026-06-07T03:49:43.988Z","0.7.0":"2026-06-18T06:58:32.784Z","0.8.0":"2026-06-21T03:16:49.595Z","0.8.1":"2026-06-24T12:34:03.114Z","0.8.4":"2026-07-02T04:27:41.010Z","0.9.0":"2026-07-02T22:51:05.234Z","0.9.1":"2026-07-03T05:37:51.128Z","0.9.2":"2026-07-03T12:23:51.506Z","0.9.3":"2026-07-03T15:37:11.703Z","0.9.4":"2026-07-04T00:54:14.494Z","0.9.5":"2026-07-04T04:07:14.386Z","0.10.0":"2026-07-07T03:36:31.978Z","0.10.1":"2026-07-09T04:16:32.480Z","0.10.2":"2026-07-10T10:09:41.175Z","0.10.3":"2026-07-11T00:23:39.412Z","0.10.4":"2026-07-17T09:43:29.973Z","0.10.5":"2026-07-17T11:22:58.362Z","0.10.6":"2026-07-17T13:16:41.941Z","0.10.7":"2026-07-17T23:45:20.072Z","0.10.8":"2026-07-18T00:01:10.639Z","0.11.0":"2026-08-04T07:24:56.176Z","0.12.0":"2026-08-04T13:04:43.875Z","0.13.0":"2026-08-14T01:52:33.093Z","0.14.0":"2026-08-14T06:25:35.766Z"},"bugs":{"url":"https://github.com/glubean/glubean/issues"},"license":"Apache-2.0","homepage":"https://github.com/glubean/glubean#readme","repository":{"type":"git","url":"git+https://github.com/glubean/glubean.git","directory":"packages/oauth-code"},"description":"OAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.","maintainers":[{"name":"peisong","email":"peisong@outlook.sg"}],"readme":"# @glubean/oauth-code\n\nOAuth Authorization Code flow plugin for [Glubean](https://glubean.dev) — interactive token acquisition for explore mode.\n\nOn first HTTP request, opens the system browser for OAuth login, starts a local callback server on `127.0.0.1`, exchanges the authorization code for tokens, and caches them to disk. Subsequent requests use the cached token, refreshing automatically when expired.\n\n## Install\n\n```bash\nnpm install @glubean/oauth-code\n```\n\n## Quick Start\n\n```ts\nimport { test, configure } from \"@glubean/sdk\";\nimport { oauthCode } from \"@glubean/oauth-code\";\n\nconst { http } = configure({\n  http: oauthCode({\n    prefixUrl: \"https://api.github.com\",\n    authorizeUrl: \"https://github.com/login/oauth/authorize\",\n    tokenUrl: \"https://github.com/login/oauth/access_token\",\n    clientId: \"{{GITHUB_CLIENT_ID}}\",\n    clientSecret: \"{{GITHUB_CLIENT_SECRET}}\",\n    scopes: [\"repo\", \"read:user\"],\n  }),\n});\n\nexport const me = test(\"github-me\", async (ctx) => {\n  const res = await http.get(\"user\").json<{ login: string }>();\n  ctx.assert(res.login, \"got user login\");\n});\n```\n\nFirst run opens the browser for login. Subsequent runs use the cached token.\n\n## How It Works\n\n```\n1. Test calls http.get(\"/some-endpoint\")\n2. beforeRequest hook checks for cached token\n   ├─ Memory cache valid?     → use it\n   ├─ Disk cache valid?       → use it\n   ├─ Has refresh_token?      → refresh automatically\n   └─ Nothing cached?         → start browser flow:\n      a. Start local HTTP server on 127.0.0.1 (random port)\n      b. Open system browser with authorize URL\n      c. User logs in and authorizes\n      d. Provider redirects to 127.0.0.1/callback?code=xxx\n      e. Exchange code for access_token + refresh_token\n      f. Cache to .glubean/tokens/, close server\n3. Set Authorization: Bearer <token> header\n4. Request proceeds\n```\n\n## API\n\n### `oauthCode(options)` — ConfigureHttpOptions factory\n\nReturns `ConfigureHttpOptions` for use with `configure({ http })`. All string options support `{{template}}` placeholders resolved from Glubean vars and secrets.\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `prefixUrl` | `string` | — | Base URL for API requests |\n| `authorizeUrl` | `string` | — | OAuth authorization endpoint |\n| `tokenUrl` | `string` | — | OAuth token endpoint |\n| `clientId` | `string` | — | Client ID |\n| `clientSecret` | `string?` | — | Client secret (optional for public clients with PKCE) |\n| `scopes` | `string[]?` | — | OAuth scopes |\n| `pkce` | `boolean` | `true` | Enable PKCE with S256 challenge |\n| `cacheDir` | `string` | `\".glubean/tokens\"` | Token cache directory |\n| `redirectUri` | `string?` | — | Override redirect URI (for tunnel setups, see below) |\n| `port` | `number?` | random | Fixed port for callback server (required with `redirectUri`) |\n| `authorizeParams` | `Record<string, string>?` | — | Extra query parameters for authorize URL |\n| `openBrowser` | `(url: string) => void` | system default | Custom browser opener |\n\n## Token Caching\n\nTokens are cached to `{cacheDir}/{hash}.json` (default: `.glubean/tokens/`). The hash is derived from `clientId + authorizeUrl + scopes` to avoid collisions between providers or different scope sets.\n\nCache files are written with `0600` permissions (owner read/write only).\n\nAdd `.glubean/tokens/` to your `.gitignore`.\n\n## PKCE\n\nPKCE (S256) is enabled by default. This is required by some providers (e.g., Twitter/X) and recommended by RFC 7636 for all public clients. Set `pkce: false` to disable for providers that don't support it.\n\n## Provider Compatibility\n\n| Provider | Localhost redirect | Tunnel needed | Notes |\n|----------|-------------------|---------------|-------|\n| GitHub | `127.0.0.1` ✅ | No | Port-flexible |\n| Google | `127.0.0.1` ✅ | No | Port > 1024 |\n| Microsoft | `127.0.0.1` ✅ | No | Port ignored in matching |\n| Spotify | `127.0.0.1` ✅ | No | Port-flexible |\n| Twitter/X | ❌ | Yes | No loopback redirect support |\n| Slack | ❌ | Yes | Requires HTTPS for all redirect URIs |\n\n### Providers that require a tunnel (Twitter/X, Slack)\n\nThese providers reject `http://127.0.0.1` as a redirect URI. Use an HTTPS tunnel like [ngrok](https://ngrok.com) to forward traffic to the local callback server:\n\n```bash\n# 1. Start a tunnel on a fixed port\nngrok http 9876\n# → https://abc123.ngrok-free.app\n```\n\n```ts\n// 2. Register the ngrok URL as a redirect URI with the provider, then:\nconst { http } = configure({\n  http: oauthCode({\n    prefixUrl: \"https://api.x.com/2\",\n    authorizeUrl: \"https://twitter.com/i/oauth2/authorize\",\n    tokenUrl: \"https://api.x.com/2/oauth2/token\",\n    clientId: \"{{TWITTER_CLIENT_ID}}\",\n    scopes: [\"tweet.read\", \"users.read\"],\n    redirectUri: \"https://abc123.ngrok-free.app/callback\",\n    port: 9876,\n  }),\n});\n```\n\nThe local server still listens on `127.0.0.1:9876`; ngrok tunnels the HTTPS callback back to it.\n\n> **Note:** Postman solves this differently — it hosts its own cloud relay at `oauth.pstmn.io/callback` so users never need a tunnel. A similar Glubean Cloud relay might be added in the future, though this introduces a security trade-off: the relay becomes a credential intermediary that handles authorization codes on behalf of users, significantly expanding the trust boundary.\n\n## Promoting to CI\n\nThis plugin is designed for **explore mode** (interactive local development). When promoting tests to CI:\n\n1. Replace `oauthCode()` with a non-interactive auth method from `@glubean/auth`:\n   - `oauth2.clientCredentials()` — if the provider supports it\n   - `oauth2.refreshToken()` — with a pre-provisioned refresh token\n   - `bearer()` — with a pre-provisioned access token\n2. Test logic stays the same — only the `configure({ http })` line changes.\n\n## Scope\n\nThis is a v1 focused on the authorization code flow for explore mode. Not included:\n\n- Device code flow (RFC 8628)\n- Implicit grant (deprecated)\n- Token revocation\n- Multi-account support\n- Custom TLS / proxy configuration\n\n## License\n\n[Apache-2.0](./LICENSE)\n","readmeFilename":"README.md"}