{"_id":"@agdsoftware/sso-sdk","_rev":"12-899553c03dfab80a50aa0c2121753daa","name":"@agdsoftware/sso-sdk","dist-tags":{"latest":"2.7.2"},"versions":{"2.0.0":{"name":"@agdsoftware/sso-sdk","version":"2.0.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.0.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"0f713e6e195aa484b176fa96a8d43ae6b5d7a22f","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.0.0.tgz","fileCount":119,"integrity":"sha512-k3rymXkPWNuO1Ui0jfIe0fPadPVUrU2+cU9cnkJ2k/q1AshInrawQxAcFe/j21Eh4r7DisfPsQqAdmEhtZjLPg==","signatures":[{"sig":"MEQCIEDMP6z7aD0E43acVZcwNca1qgjwEF8ywM5gF2uya09aAiBsZibm1Vi4PQN1bqlfW8kTuTMN3rBxOttY3pM4QF2jUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385545},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:agdsoftware-sso-sdk-2.0.0.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest --passWithNoTests","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/private/var/folders/vn/9292g43j4fz6q1vzh66r4p8h0000gn/T/71f232bc8d4e43d9569ea976c0df23bb/agdsoftware-sso-sdk-2.0.0.tgz","_integrity":"sha512-k3rymXkPWNuO1Ui0jfIe0fPadPVUrU2+cU9cnkJ2k/q1AshInrawQxAcFe/j21Eh4r7DisfPsQqAdmEhtZjLPg==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"10.8.2","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"18.17.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"rxjs":"^7.8.1","react":"^19.2.0","typeorm":"^0.3.28","typescript":"^5.5.4","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.0.0_1786363429156_0.06169525237828766","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@agdsoftware/sso-sdk","version":"2.1.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.1.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"dd9dd1dcb93d892ab88f8e2211931770b36b7130","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.1.0.tgz","fileCount":122,"integrity":"sha512-qZNwrTlK8YjyRxgu1Hko7pdbUJxXfwIC0qmKyhg0hJ2XntgB59ky8irIrjr89pwqsHNYh79j6OsZJyHvqGxYBQ==","signatures":[{"sig":"MEYCIQD0rKgtIW+RW6XetkyX8KksWS8TDsiAvnKqzM4H6H5ePwIhALRXwYxHL5JCMMm5k/mcgSqdC1O1c8VLPgtfi4SqrYz/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399107},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/dist-sdk/agdsoftware-sso-sdk-2.1.0.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest --passWithNoTests","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/dist-sdk/agdsoftware-sso-sdk-2.1.0.tgz","_integrity":"sha512-qZNwrTlK8YjyRxgu1Hko7pdbUJxXfwIC0qmKyhg0hJ2XntgB59ky8irIrjr89pwqsHNYh79j6OsZJyHvqGxYBQ==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"10.8.2","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"18.17.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"rxjs":"^7.8.1","react":"^19.2.0","typeorm":"^0.3.28","typescript":"^5.5.4","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.1.0_1786447127824_0.30393288306834854","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@agdsoftware/sso-sdk","version":"2.1.1","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.1.1","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"07e478dbc68da5c91fe89e01c5c007a9a5d6d0c2","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.1.1.tgz","fileCount":122,"integrity":"sha512-bejpPQ9ug8shbx/pcQuVtnDKSPn0Pw+zcPTDyjhboAibsDo5G1FyJ5gEvWd8+J0cQBd7IEOgmZ5kJFfgzKq8eQ==","signatures":[{"sig":"MEYCIQD2Qqx/vwaZYhUOKY5OAvu+5Am47HbTeWYhjugTw7JeaQIhAMlHvLKhpmU9haWk/4ZVJStvXAo6jr239qXFUAhjEsT/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401673},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/dist-sdk/agdsoftware-sso-sdk-2.1.1.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest --passWithNoTests","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/dist-sdk/agdsoftware-sso-sdk-2.1.1.tgz","_integrity":"sha512-bejpPQ9ug8shbx/pcQuVtnDKSPn0Pw+zcPTDyjhboAibsDo5G1FyJ5gEvWd8+J0cQBd7IEOgmZ5kJFfgzKq8eQ==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"rxjs":"^7.8.1","react":"^19.2.0","typeorm":"^0.3.28","typescript":"^5.5.4","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.1.1_1786454128501_0.7768262468739044","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@agdsoftware/sso-sdk","version":"2.2.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.2.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"923a9a929ecd59cc467872e36bfc085461c19641","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.2.0.tgz","fileCount":125,"integrity":"sha512-eZVhjNqg08cxr+dqpzTjzBrGwlEzHQqKWZ/oWqYSeNSuYruigaL5WLtUz4+/FXy2ZH6ZG2eQXyDN5rhFVs+Wag==","signatures":[{"sig":"MEYCIQCNnVd7iIACW7PrqnSnBy3zK/H0f0+5Ab52/5geYz2kDwIhALK4Q06NrMkTbxznSYeDYXko7L3iguV5vI8OcYaYB+IY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415258},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:agdsoftware-sso-sdk-2.2.0.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/packages/sso-sdk/agdsoftware-sso-sdk-2.2.0.tgz","_integrity":"sha512-eZVhjNqg08cxr+dqpzTjzBrGwlEzHQqKWZ/oWqYSeNSuYruigaL5WLtUz4+/FXy2ZH6ZG2eQXyDN5rhFVs+Wag==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.2.0_1786910406693_0.79573299617457","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@agdsoftware/sso-sdk","version":"2.3.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.3.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"1d52c5924bfac2749c76174c9be70e4712d1c051","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.3.0.tgz","fileCount":125,"integrity":"sha512-BLriViS3Il60RpRPX4eCeW/3KbmnIoqB0x/6g3TEylB9lhv21EZmsWuRvG1CB0lDHA/dEMpotAIF6gbbVK3qaw==","signatures":[{"sig":"MEQCIFo2swLsEIVqyrfW+AkJke/jOjEuvh1gtiRuirtSazxCAiAbrlxx1Z9QQdZnR1QD0o1jAleltHapQkv8Hst+NzvKng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424300},"main":"dist/cjs/core/index.js","type":"commonjs","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"gitHead":"aa5a935040926ba3927e919635054476084fab2d","scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.3.0_1786936240200_0.15967986273361756","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@agdsoftware/sso-sdk","version":"2.4.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.4.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"19c99c80b312563056f724ddb21e4a7ceb3c3595","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.4.0.tgz","fileCount":125,"integrity":"sha512-TnmohorUYZTunHGmTWOfaCYAsVuCL5ylUR/E8oLknDdeRC/YgGKHm/u+volmFbP1EKQXbcG1oxiYTxZOuZiazw==","signatures":[{"sig":"MEQCIDtCYgiETZ0MEyiC+STTo8ie2Qu8f5c6Cm2DPGKNfdeBAiAxUl84em+QPN4dGwv+2tXDRS9yArwkNYvRxQjZ4ggadw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431155},"main":"dist/cjs/core/index.js","type":"commonjs","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"gitHead":"aa5a935040926ba3927e919635054476084fab2d","scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"10.8.2","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"18.17.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.4.0_1787043797135_0.4413621427343084","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@agdsoftware/sso-sdk","version":"2.5.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.5.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"cfd7fc87121c4128224db27993770c452705bbb7","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.5.0.tgz","fileCount":128,"integrity":"sha512-XuKzR4vjQHups5a9E1E/klKJaiy143Fh8+FKc4pBxncJeUZ56MxH5cY/M2dWQQO0BpVyzAZZsMNH3DF07Q3dWg==","signatures":[{"sig":"MEUCIAq2ad29F3w2taSP+rFiGdLiDvWSphh9dAOoynEeLoqzAiEAo3e3RqiZMzV67FfWMAROtV7EQ0nrmcYCKeBUJ3shi1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447012},"main":"dist/cjs/core/index.js","type":"commonjs","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"gitHead":"0829becb18ca4a0fcd794ebe9d2814d3664138e9","scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"10.8.2","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"18.17.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.5.0_1787414601977_0.2354855349389391","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@agdsoftware/sso-sdk","version":"2.5.1","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.5.1","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"31925e3066be56fb29f686dddddcee745f0a2c67","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.5.1.tgz","fileCount":143,"integrity":"sha512-BoPRAH1nYW+WTx/5TWnLuE81G1pZ6fPYHUcn0O1aOvEZacNZ5P2PiUiK8o+LbMkNy4x1wgLoySfKu/Q2JBpixQ==","signatures":[{"sig":"MEQCIH0eOo84XjQsSXpYS8nEuhsKLV0o5s9chLLdh/6MHIw1AiBmAvrTtbcE+CMU1G0g0wWT8zOmCYTVJsdchEtUvjkPww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464441},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:dist-sdk/agdsoftware-sso-sdk-2.5.1.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/Users/karademir/yazilimvebilisimkomisyonu/52.Dönem/projeler/sso-yetkilendirme/dist-sdk/agdsoftware-sso-sdk-2.5.1.tgz","_integrity":"sha512-BoPRAH1nYW+WTx/5TWnLuE81G1pZ6fPYHUcn0O1aOvEZacNZ5P2PiUiK8o+LbMkNy4x1wgLoySfKu/Q2JBpixQ==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.5.1_1788927058611_0.5821809696502231","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@agdsoftware/sso-sdk","version":"2.6.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.6.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"7754c6389f77892bdbcb58676eaf94d93f551674","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.6.0.tgz","fileCount":143,"integrity":"sha512-7JIp/qfSZbbht7+hDfT7fA6GqyEk4+e9aVR9Z7YqBzIpFQjhLKxsLE1zedgq+Gd6sL3FuspczGGSwmRdNExFQQ==","signatures":[{"sig":"MEYCIQCjLuewkzhwfqX+wbboHQIUEuDhFhla5FqSuiCGGR9XfgIhAOCk6/gs18XPwivpLJiNP2CAE0g3rTwfS7ul7TzWyZwT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467249},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:/tmp/agdsoftware-sso-sdk-2.6.0.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/tmp/agdsoftware-sso-sdk-2.6.0.tgz","_integrity":"sha512-7JIp/qfSZbbht7+hDfT7fA6GqyEk4+e9aVR9Z7YqBzIpFQjhLKxsLE1zedgq+Gd6sL3FuspczGGSwmRdNExFQQ==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.6.0_1789070801920_0.8222917916442507","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@agdsoftware/sso-sdk","version":"2.7.0","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.7.0","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"92f0f48254747d5469aae54b02b37b54a68dd5db","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.7.0.tgz","fileCount":143,"integrity":"sha512-FbJaY4RInpMnekxr+Khz18D86mbtRODzB+2kKODS8zKrfADaV/NqTOLPuKT+uw7Yc2KeFOdFD+gMxafnz+Cm/g==","signatures":[{"sig":"MEQCIANjQ4+m7AgUtZHKWHa7ofbZ4uZaIpq0biueOwJUKoBOAiAvsIvciTEeHtfa/lbbm0sb49qaEtQYb30kgEIS2xqvzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469954},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:/tmp/agdsoftware-sso-sdk-2.7.0.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/tmp/agdsoftware-sso-sdk-2.7.0.tgz","_integrity":"sha512-FbJaY4RInpMnekxr+Khz18D86mbtRODzB+2kKODS8zKrfADaV/NqTOLPuKT+uw7Yc2KeFOdFD+gMxafnz+Cm/g==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.7.0_1789099759337_0.579918910781871","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"@agdsoftware/sso-sdk","version":"2.7.1","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"license":"MIT","_id":"@agdsoftware/sso-sdk@2.7.1","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"dist":{"shasum":"42d134a1ad4057bf7abeb539c14ca02753e34fe7","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.7.1.tgz","fileCount":143,"integrity":"sha512-XC0B7W5/dpRWwp2r3yQailA8pHQ2DpUbFWPpfS0vWxbJXcRf95/T37EpUld/DK1IJ2spaiRvWFatZVZk2zaYhA==","signatures":[{"sig":"MEQCIAHoB2yrUGm0wj+5FB/VjlmxOD3i3DhV+naVPNsRSktwAiB7V78Qc1th17Q2NK5Nu8BoRSvi5HVs/1sWMtbdXtTW9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473231},"main":"dist/cjs/core/index.js","type":"commonjs","_from":"file:/tmp/agdsoftware-sso-sdk-2.7.1.tgz","types":"dist/cjs/core/index.d.ts","module":"dist/esm/core/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","default":"./dist/cjs/core/index.js","require":"./dist/cjs/core/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","default":"./dist/cjs/oidc/index.js","require":"./dist/cjs/oidc/index.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","default":"./dist/cjs/react/index.js","require":"./dist/cjs/react/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","default":"./dist/cjs/nestjs/index.js","require":"./dist/cjs/nestjs/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","default":"./dist/cjs/server/index.js","require":"./dist/cjs/server/index.js"},"./package.json":"./package.json","./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js"}},"scripts":{"test":"jest","build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","_resolved":"/tmp/agdsoftware-sso-sdk-2.7.1.tgz","_integrity":"sha512-XC0B7W5/dpRWwp2r3yQailA8pHQ2DpUbFWPpfS0vWxbJXcRf95/T37EpUld/DK1IJ2spaiRvWFatZVZk2zaYhA==","repository":{"url":"git+https://github.com/karademirmustafa/agd-sso.git","type":"git","directory":"packages/sso-sdk"},"_npmVersion":"11.8.0","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"jose":"^5.9.6"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"oidc":["dist/cjs/oidc/index.d.ts"],"react":["dist/cjs/react/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"server":["dist/cjs/server/index.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"]}},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","_hasShrinkwrap":false,"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","devDependencies":{"jest":"^29.7.0","rxjs":"^7.8.1","react":"^19.2.0","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4","@types/jest":"^29.5.14","@types/node":"^20.14.0","@nestjs/core":"^11.0.1","@types/react":"^19.2.5","@nestjs/common":"^11.0.1","@types/express":"^5.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"rxjs":"^7.0.0","react":"^18.0.0 || ^19.0.0","express":"^4.0.0 || ^5.0.0","typeorm":"^0.3.0 || ^1.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","@nestjs/common":"^10.0.0 || ^11.0.0","oidc-client-ts":"^3.1.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependenciesMeta":{"rxjs":{"optional":true},"react":{"optional":true},"express":{"optional":true},"typeorm":{"optional":true},"@nestjs/core":{"optional":true},"@nestjs/common":{"optional":true},"oidc-client-ts":{"optional":true},"reflect-metadata":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sso-sdk_2.7.1_1789105330815_0.701430974034738","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"@agdsoftware/sso-sdk","version":"2.7.2","type":"commonjs","description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","license":"MIT","sideEffects":false,"main":"dist/cjs/core/index.js","module":"dist/esm/core/index.js","types":"dist/cjs/core/index.d.ts","//exports":"Her alt yol KENDİ ortamının ağırlığını taşır. Tek paket olmasına rağmen bir React uygulaması `nestjs` girişinin tiplerini hiç okumaz, bir NestJS API'si `react` girişini hiç çözümlemez — çözümleme import edilen alt yolla sınırlıdır. Paketi bölmek yerine girişleri bölmenin sebebi budur.","exports":{".":{"types":"./dist/cjs/core/index.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js","default":"./dist/cjs/core/index.js"},"./server":{"types":"./dist/cjs/server/index.d.ts","import":"./dist/esm/server/index.js","require":"./dist/cjs/server/index.js","default":"./dist/cjs/server/index.js"},"./oidc":{"types":"./dist/cjs/oidc/index.d.ts","import":"./dist/esm/oidc/index.js","require":"./dist/cjs/oidc/index.js","default":"./dist/cjs/oidc/index.js"},"./nestjs":{"types":"./dist/cjs/nestjs/index.d.ts","import":"./dist/esm/nestjs/index.js","require":"./dist/cjs/nestjs/index.js","default":"./dist/cjs/nestjs/index.js"},"./nestjs/typeorm":{"types":"./dist/cjs/nestjs/typeorm.d.ts","import":"./dist/esm/nestjs/typeorm.js","require":"./dist/cjs/nestjs/typeorm.js","default":"./dist/cjs/nestjs/typeorm.js"},"./nestjs/testing":{"types":"./dist/cjs/nestjs/testing.d.ts","import":"./dist/esm/nestjs/testing.js","require":"./dist/cjs/nestjs/testing.js","default":"./dist/cjs/nestjs/testing.js"},"./react":{"types":"./dist/cjs/react/index.d.ts","import":"./dist/esm/react/index.js","require":"./dist/cjs/react/index.js","default":"./dist/cjs/react/index.js"},"./package.json":"./package.json"},"//typesVersions":"Alt yol tiplerini KLASİK (moduleResolution: node) çözümlemeye de tanıtır. NestJS şablonlarının varsayılanı budur; yalnız `exports` bırakmak, tüketicileri tsconfig değiştirmeye zorlardı.","typesVersions":{"*":{"server":["dist/cjs/server/index.d.ts"],"oidc":["dist/cjs/oidc/index.d.ts"],"nestjs":["dist/cjs/nestjs/index.d.ts"],"nestjs/typeorm":["dist/cjs/nestjs/typeorm.d.ts"],"nestjs/testing":["dist/cjs/nestjs/testing.d.ts"],"react":["dist/cjs/react/index.d.ts"]}},"engines":{"node":">=20"},"scripts":{"build":"tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node ../../scripts/dist-bicim-isareti.mjs .","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit","test":"jest","prepack":"npm run build"},"//dependencies":"jose YALNIZ `/server` girişinde kullanılır ve tek gerçek bağımlılıktır. Peer yapılmadı: token doğrulama bu paketin güvenlik sınırıdır, JWKS davranışının sürümünü tüketicinin serbestçe kaydırmasına bırakmak istemiyoruz. Paket kökü, `/oidc` ve `/react` onu hiç çözümlemez.","dependencies":{"jose":"^5.9.6"},"//peerDependencies":"TAMAMI opsiyoneldir. Tek paket üç ortama hizmet ettiği için zorunlu peer, ötekinin uyarısını yer: NestJS API'si `react` aramamalı, React uygulaması `@nestjs/common` aramamalı. Her alt yol kendi peer'ını çalıştırma anında ister; eksikse import o girişte patlar, ötekiler çalışmaya devam eder.","peerDependencies":{"@nestjs/common":"^10.0.0 || ^11.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","express":"^4.0.0 || ^5.0.0","oidc-client-ts":"^3.1.0","react":"^18.0.0 || ^19.0.0","reflect-metadata":"^0.1.13 || ^0.2.0","rxjs":"^7.0.0","typeorm":"^0.3.0 || ^1.0.0"},"peerDependenciesMeta":{"@nestjs/common":{"optional":true},"@nestjs/core":{"optional":true},"express":{"optional":true},"oidc-client-ts":{"optional":true},"react":{"optional":true},"reflect-metadata":{"optional":true},"rxjs":{"optional":true},"typeorm":{"optional":true}},"devDependencies":{"@nestjs/common":"^11.0.1","@nestjs/core":"^11.0.1","@types/express":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.14.0","@types/react":"^19.2.5","jest":"^29.7.0","oidc-client-ts":"^3.1.0","react":"^19.2.0","reflect-metadata":"^0.2.2","rxjs":"^7.8.1","ts-jest":"^29.2.5","typeorm":"^0.3.28","typescript":"^5.5.4"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/karademirmustafa/agd-sso.git","directory":"packages/sso-sdk"},"homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"_id":"@agdsoftware/sso-sdk@2.7.2","_integrity":"sha512-omN+sz3He0Nz03eLouus9TtKlXM4p6C2FFoMHrl8+tZ0E8Lv+F9QD894bG3kz4lxnp0uqNM+tdv914VH3fLmEw==","_resolved":"/tmp/agdsoftware-sso-sdk-2.7.2.tgz","_from":"file:/tmp/agdsoftware-sso-sdk-2.7.2.tgz","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-omN+sz3He0Nz03eLouus9TtKlXM4p6C2FFoMHrl8+tZ0E8Lv+F9QD894bG3kz4lxnp0uqNM+tdv914VH3fLmEw==","shasum":"70a4fedc8d1c290a2cc1c4e96a0c48bee8c8d510","tarball":"https://registry.npmjs.org/@agdsoftware/sso-sdk/-/sso-sdk-2.7.2.tgz","fileCount":143,"unpackedSize":479056,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAQpkbqESdILheg7J4OBpbbn/2DKTw6V0TdzAzBLYVg/AiB8iQk4LVgtvxBh94rkKnkUsKNGpxVNaT9mHVpTlApkrQ=="}]},"_npmUser":{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"},"directories":{},"maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sso-sdk_2.7.2_1789184276776_0.19440410367280547"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T12:03:48.916Z","modified":"2026-09-12T03:37:57.092Z","2.0.0":"2026-08-10T12:03:49.305Z","2.1.0":"2026-08-11T11:18:47.976Z","2.1.1":"2026-08-11T13:15:28.670Z","2.2.0":"2026-08-16T20:00:06.840Z","2.3.0":"2026-08-17T03:10:40.364Z","2.4.0":"2026-08-18T09:03:17.286Z","2.5.0":"2026-08-22T16:03:22.153Z","2.5.1":"2026-09-09T04:10:58.763Z","2.6.0":"2026-09-10T20:06:42.077Z","2.7.0":"2026-09-11T04:09:19.465Z","2.7.1":"2026-09-11T05:42:10.958Z","2.7.2":"2026-09-12T03:37:56.926Z"},"bugs":{"url":"https://github.com/karademirmustafa/agd-sso/issues"},"license":"MIT","homepage":"https://github.com/karademirmustafa/agd-sso/tree/main/packages/sso-sdk#readme","keywords":["sso","keycloak","oidc","oauth2","authorization","permissions","rbac","pkce","jwt","iam","nestjs","react","sdk"],"repository":{"type":"git","url":"git+https://github.com/karademirmustafa/agd-sso.git","directory":"packages/sso-sdk"},"description":"Keycloak/OIDC tabanlı merkezi yetkilendirme SDK'sı — evrensel izin istemcisi, sunucuda JWT doğrulama, web ve mobil için PKCE, NestJS guard zinciri ve React hook'ları; tek paket, ayrı girişler.","maintainers":[{"name":"agdmgv","email":"yazilimvebilisim@agd.org.tr"}],"readme":"# @agdsoftware/sso-sdk\n\nKimliği **Keycloak/OIDC**'den, yetkiyi **merkezi bir IAM servisinden** alan\nuygulamalar için tek SDK — Node, tarayıcı, React Native.\n\n> **Tek cümle:** token *\"bu kişi kim\"* der, IAM *\"ne yapabilir\"* der.\n> İkisi ayrıdır ve ayrı kalmalıdır.\n\n## Girişler\n\nPaket tektir, girişleri ayrıdır. Her alt yol **yalnız kendi ortamının\nağırlığını** taşır: bir React uygulaması `@nestjs/*` çözümlemez, bir NestJS\nAPI'si `oidc-client-ts` indirmez, mobil hiçbirini görmez.\n\n| Giriş | Ortam | İçerik |\n|---|---|---|\n| `@agdsoftware/sso-sdk` | evrensel | tipler, hatalar, `IamClient`, `AuthzStore`, `SsoSession`, kapsam yardımcıları |\n| `@agdsoftware/sso-sdk/server` | yalnız sunucu | `createTokenVerifier` (jose + JWKS) |\n| `@agdsoftware/sso-sdk/oidc` | tarayıcı + mobil | PKCE, keşif, çıkış adresi — kütüphanesiz |\n| `@agdsoftware/sso-sdk/nestjs` | NestJS API'ler | guard zinciri, dekoratörler, `/sso/me`, sağlık ucu |\n| `@agdsoftware/sso-sdk/nestjs/typeorm` | NestJS + TypeORM | satır kapsamı için query-builder yardımcısı |\n| `@agdsoftware/sso-sdk/nestjs/testing` | testler | sahte `SsoContext` |\n| `@agdsoftware/sso-sdk/react` | React arayüzler | `SsoProvider`, izin hook'ları, HTTP köprüleri |\n\nKök giriş `fetch` dışında hiçbir şeye bağlı değildir. Bölünmenin sebebi tek\ncümle: **token'ı mobil taşır, sunucu doğrular.**\n\n## Kurulum\n\n```bash\nnpm i @agdsoftware/sso-sdk\n```\n\nÇerçeve bağımlılıkları **opsiyonel peer**'dır — kullandığınız girişin\nistediğini siz kurarsınız, ötekiler hiç inmez:\n\n```bash\n# NestJS API\nnpm i @agdsoftware/sso-sdk @nestjs/common @nestjs/core reflect-metadata rxjs\nnpm i typeorm                       # yalnız /nestjs/typeorm kullanacaksanız\n\n# React web\nnpm i @agdsoftware/sso-sdk react oidc-client-ts\n\n# Mobil / saf Node — hiçbir ek paket gerekmez\nnpm i @agdsoftware/sso-sdk\n```\n\nRegistry'siz ortamda: `pnpm sdk:pack` → `npm i ./vendor/agdsoftware-sso-sdk-*.tgz`\n\n---\n\n## Sunucu (Express, Fastify, script)\n\n```ts\nimport { IamClient, bearerToken } from '@agdsoftware/sso-sdk';\n// Token doğrulama SUNUCUYA özgüdür (jose): kök giriş evrensel kalsın,\n// mobil/tarayıcı onu bundle'a almasın diye `/server` altındadır.\nimport { createTokenVerifier } from '@agdsoftware/sso-sdk/server';\n\nconst verify = createTokenVerifier({\n  issuer: process.env.SSO_ISSUER!,      // http://localhost:8080/realms/agd\n  audience: process.env.SSO_AUDIENCE!,  // SSO ekibinin verdiği audience\n});\n\nconst iam = new IamClient({ baseUrl: process.env.IAM_URL! });\n\n// istek başına\nconst token = bearerToken(req.headers.authorization);\nconst claims = await verify(token!);                     // 401 riski burada\nawait iam.assert(token!, groupId, 'ornek:kayit:onayla'); // 403 riski burada\n```\n\n`groupId` kullanıcının **aktif birimidir**; `iam.me(token)` ile listelenir ve\nkullanıcıya seçtirilir (birden fazla birimde görevli olabilir).\n\n<details>\n<summary>Express middleware'i</summary>\n\n```ts\nimport { bearerToken, IamClient, ForbiddenError, SsoTokenError } from '@agdsoftware/sso-sdk';\nimport { createTokenVerifier } from '@agdsoftware/sso-sdk/server';\n\nconst authenticate = async (req, res, next) => {\n  try {\n    const token = bearerToken(req.headers.authorization);\n    if (!token) throw new SsoTokenError('Token yok');\n    req.token = token;\n    req.user = await verify(token);\n    next();\n  } catch (error) {\n    next(error);\n  }\n};\n\nconst requirePermission = (permission: string) => async (req, res, next) => {\n  try {\n    // Bağlam birimi istemciden gelir ama YETKİ IAM'de doğrulanır:\n    // uydurulmuş bir groupId yalnız \"yetkin yok\" cevabı üretir.\n    await iam.assert(req.token, req.header('X-Organization-Group-Id'), permission);\n    next();\n  } catch (error) {\n    next(error);\n  }\n};\n\napp.get('/kayitlar', authenticate, requirePermission('ornek:kayit:goruntule'), handler);\n\napp.use((error, req, res, next) => {\n  if (error instanceof SsoTokenError) return res.status(401).json({ code: 'UNAUTHENTICATED' });\n  if (error instanceof ForbiddenError) return res.status(403).json({ code: 'FORBIDDEN' });\n  next(error);\n});\n```\n</details>\n\n---\n\n## NestJS\n\nKendi guard'ınızı yazmayın; zincir hazır: **kimlik → bağlam → karar.**\n\n**1. Modül**\n\n```ts\nimport { SsoModule } from '@agdsoftware/sso-sdk/nestjs';\n\n@Module({\n  imports: [\n    // SSO_ISSUER · SSO_AUDIENCE · IAM_BASE_URL okunur ve DOĞRULANIR.\n    // Eksik varsa süreç AÇILIŞTA durur — eksik yapılandırmayla ayağa kalkıp\n    // ilk isteğe kadar sağlıklı görünmek, sorunu üretimde bulmaktır.\n    SsoModule.forRootFromEnv({\n      publicMetadataKeys: ['isPublic'],  // var olan @Public() dekoratörünüz\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n`forRoot({ issuer, audience, iamBaseUrl, … })` ve `forRootAsync({ useFactory })`\nde durur.\n\n**2. Controller**\n\n```ts\n@Controller('toplantilar')\nexport class MeetingsController {\n  @Get()\n  @RequirePermission('mgkys:toplanti:goruntule')\n  list(@CurrentContext() ctx: SsoContext) { ... }\n\n  @Get('profilim')\n  @SelfScoped()                       // izin yok, kimlik yeter\n  me(@CurrentSsoUser() user: SsoIdentity) { ... }\n}\n```\n\nDekoratör taşımayan handler **403** alır (fail-closed). Unutulan uç açık kalmaz.\n\n**3. Satır kapsamı**\n\nHer kaydınıza sahibi birimin Keycloak yolunu yazın (`GroupPath` = `/İzmir/Konak`):\n\n```ts\nimport { applyGroupScope } from '@agdsoftware/sso-sdk/nestjs/typeorm';\nimport { ownerGroupPath, assertInScope } from '@agdsoftware/sso-sdk/nestjs';\n\napplyGroupScope(qb, ctx);                 // listeleme: /İzmir → /İzmir ve altı\nmeeting.GroupPath = ownerGroupPath(ctx);  // oluşturma: istemciden gelen birim kabul edilmez\nassertInScope(ctx, meeting.GroupPath);    // güncelleme/silme: okuma filtresi tek başına yetmez\n```\n\n### Dekoratörler\n\n| Dekoratör | Anlamı |\n|---|---|\n| `@RequirePermission(code)` | Bu izin yoksa 403 |\n| `@RequireAnyPermission(a, b)` | Herhangi biri yeter (VEYA) |\n| `@PermissionResource('mgkys:toplanti')` | **Sınıf** seviyesi; devralınan `add/get/getAll/update/delete` için izni metot adından türetir |\n| `@SelfScoped()` | Kimlik yeter; handler **yalnız** `@CurrentSsoUser()` kimliğini kullanmalı |\n| `@AnyAuthenticated()` | Kimlik yeter; yanıt kişiye göre değişmez (referans veriler) |\n| `@SsoPublic()` | Token bile gerekmez |\n| `@CurrentContext()` / `@CurrentSsoUser()` / `@CurrentGroup()` | Parametre dekoratörleri |\n\n`@RequirePermission` **sınıf seviyesinde yasaktır** (TypeError): sınıfa yazılan\nizin sonradan eklenen her handler'a sessizce miras kalır.\n\n### Genişletme noktaları\n\n```ts\n@Global()\n@Module({\n  providers: [\n    { provide: SSO_USER_RESOLVER, useClass: UsersLinkService },  // sub → Users.Id\n    { provide: SSO_CACHE, useClass: RedisSsoCache },             // yoksa süreç içi bellek\n  ],\n  exports: [SSO_USER_RESOLVER, SSO_CACHE],\n})\nexport class SsoBridgeModule {}\n```\n\n- **`SsoUserResolver`** — SSO kullanıcısını kendi tablonuza bağlar. `null`\n  dönerse istek `403 SSO_USER_NOT_LINKED` alır (sessizce yeni kullanıcı sayılmaz).\n- **`SsoCacheAdapter`** — çok instance'lı kurulumda Redis verin.\n\n### Katalog doğrulaması\n\n```ts\n// permissions/catalog.ts (dosyanın sonunda)\nregisterPermissionCatalog((code) => CODE_SET.has(code));\n```\n\nKatalogda olmayan bir kod **açılışta** TypeError verir. Yakalanmazsa o uç\nsessizce herkese kapanır ve 403'ün nedeni aylarca aranır.\n\n### Testler\n\nGuard'ları mock'lamayın — mock'lanmış guard her zaman \"geçti\" der ve testler\nyetki hatalarını göremez. Bağlamı kurgulayın:\n\n```ts\nimport { createTestSsoContext } from '@agdsoftware/sso-sdk/nestjs/testing';\n\nconst ctx = createTestSsoContext({\n  permissions: ['mgkys:toplanti:goruntule'],\n  group: { path: '/İzmir/Konak', unitType: 'ILCE' },\n});\n```\n\n---\n\n## React\n\n> Arayüzde izin kontrolü **görgü kuralıdır, güvenlik sınırı değil**: gizlenen\n> buton isteği elle atmayı engellemez. Gerçek kontrol her zaman API'dedir.\n\n```tsx\nimport { SsoProvider, RequireSso, ssoConfigFromEnv } from '@agdsoftware/sso-sdk/react';\n\n// VITE_SSO_ISSUER · VITE_SSO_CLIENT_ID · VITE_SSO_REDIRECT_URI · VITE_API_BASE_URL\n// (Next.js: ssoConfigFromEnv(process.env, 'NEXT_PUBLIC_'))\n<SsoProvider config={ssoConfigFromEnv(import.meta.env)} fallback={<Splash />}>\n  <RequireSso loading={<Splash />}>\n    <App />\n  </RequireSso>\n</SsoProvider>\n```\n\n`redirectUri` **tam adres** olmalı — joker (`http://localhost:5173/*`) SSO\ntarafında `IAM_CLIENT_WILDCARD_FORBIDDEN` ile reddedilir (açık yönlendirme riski).\n\n### İzinler\n\n```tsx\nconst can = usePermission('mgkys:toplanti:guncelle');\n\nif (can === 'loading') return <Skeleton />;   // ÖNCE bunu yazın\nreturn can ? <EditButton /> : null;\n```\n\n`'loading'` **truthy bir string'tir**: `{can && <EditButton/>}` yazmak butonu\nyükleme sırasında gösterir. Üç durum bilerek var — iki duruma indirmek ilk\nboyamada menüyü zıplatır.\n\n```tsx\n<Can permission=\"mgkys:toplanti:olustur\" loading={<Skeleton/>}>\n  <NewMeetingButton />\n</Can>\n\n// kaynak-kısıtlı yetki\nconst canEdit = useResourcePermission('mgkys:toplanti:guncelle', 'toplanti', meeting.id);\n```\n\n### Aktif birim\n\nKullanıcı birden fazla birimde görevli olabilir; izinler **birime bağlıdır**.\n\n```tsx\nconst { groups, activeGroup, setActiveGroup } = useGroups();\n\n<select value={activeGroup?.id} onChange={(e) => setActiveGroup(e.target.value)}>\n  {groups.map((g) => <option key={g.id} value={g.id}>{g.path}</option>)}\n</select>\n```\n\nBirim değişince izinler otomatik yeniden çekilir.\n\n### Aktif birimin tipli künyesi\n\nYol (`/İzmir/Konak/Medya Komisyonu`) hangi halkanın ne olduğunu söylemez; sunucu\nher grubu tipli döker, hook hazır okur:\n\n```tsx\nconst units = useActiveUnits();\n// { IL: 'İzmir', ILCE: 'Konak', KOMISYON: 'Medya Komisyonu' } | null\n\n<p>{units?.IL} · {units?.ILCE ?? 'tüm il'}</p>\n```\n\nÇekirdek yardımcıları her ortamda çalışır: `unitOf(grup, 'MAHALLE')`,\n`unitsOf(grup)`, `describeUnits(grup)`, `ORG_UNIT_LABELS`.\n\n### İstekler ve çıkış\n\n```tsx\nconst ssoFetch = useSsoFetch();\nawait ssoFetch('/api/toplantilar');\n\nconst { getAuthHeaders, logout } = useSso();\nuseEffect(() => attachSsoToAxios(api, getAuthHeaders), [getAuthHeaders]);\n```\n\nİkisi de `Authorization: Bearer …` ve `X-Organization-Group-Id` ekler. `logout`\nOIDC end-session ucuna `id_token_hint` ile gider: Keycloak oturumu da kapanır.\nYalnız yerel state'i temizlemek, kullanıcının bir sonraki girişte **şifresiz**\ngeri dönmesi demektir — SSO'da \"çıktım\" yanılsamasının klasik kaynağı.\n\n| Hook / Bileşen | İş |\n|---|---|\n| `useSso()` | Durum, kullanıcı, birimler, izinler, `login`/`logout`/`refresh` |\n| `usePermission(code)` | `'loading' \\| true \\| false` |\n| `useAnyPermission(...codes)` | Herhangi biri |\n| `useResourcePermission(code, type, id)` | Kayıt bazlı yetki |\n| `useGroups()` | Birim listesi + aktif birim + değiştirme |\n| `useActiveUnits()` | Aktif birimin tipli künyesi (`{IL, ILCE, MAHALLE, …}`) |\n| `useSsoFetch()` | Başlıkları ekleyen `fetch` |\n| `attachSsoToAxios(instance, getAuthHeaders)` | axios interceptor (axios'a bağımlılık yok) |\n| `<RequireSso>` | Oturum kurulana kadar bekletir, yoksa girişe yollar |\n| `<Can permission>` | İzin varsa çocukları gösterir |\n\n---\n\n## Mobil (React Native / Expo)\n\nMobilde iframe yoktur, yönlendirme özel şemayla döner ve tarayıcı OIDC\nkütüphaneleri ya çalışmaz ya ağır gelir. `/oidc` girişi bunun için var —\nkütüphanesiz, tek ihtiyacı sistem tarayıcısını açacak bir fonksiyon:\n\n```ts\nimport { discover, createPkce, buildAuthorizeUrl, parseCallback, exchangeCode }\n  from '@agdsoftware/sso-sdk/oidc';\n\nconst endpoints = await discover(ISSUER);\nconst pkce = await createPkce();\nconst url = buildAuthorizeUrl({ endpoints, clientId, redirectUri, pkce });\nconst returned = await WebBrowser.openAuthSessionAsync(url, redirectUri); // Expo\nconst tokens = await exchangeCode({\n  endpoints, clientId, redirectUri, code: parseCallback(returned.url).code!, pkce,\n});\n```\n\nParola akışı (direct access grant) **kullanılmaz**: uygulamanın kullanıcı\nparolasını görmesi, MFA'yı ve giriş ekranındaki bot korumasını birlikte devre\ndışı bırakır. Ortam gereksinimi: `crypto.getRandomValues` + `crypto.subtle`\n(`react-native-get-random-values` ve `expo-crypto`).\n\nAyrıntı: [docs/MOBIL.md](../../docs/MOBIL.md)\n\n---\n\n## Ortak kavramlar\n\n### Birden fazla izin bakacaksanız\n\nTek tek `check` yerine bir kez `effectivePermissions` alın — tek gidiş-dönüş:\n\n```ts\nconst effective = await iam.effectivePermissions(token, groupId);\nconst canApprove = effective.permissions.includes('ornek:kayit:onayla');\n```\n\nİstemci 30 sn yerel cache tutar (`cacheTtlMs` ile değiştirilir, `0` kapatır).\n\n### İl / ilçe filtrelemesi\n\n`iam.me(token)` her birim için **türü** ve türetilmiş **il/ilçe yolunu** verir:\n\n```jsonc\n{ \"path\": \"/İzmir/Konak/Eğitim\", \"unitType\": \"KOMISYON\",\n  \"il\": \"/İzmir\", \"ilce\": \"/İzmir/Konak\" }\n```\n\n`ilce` boşsa kullanıcı il seviyesindedir — \"tüm il\" demektir.\n\n### Kaynak (kayıt) bazlı yetki\n\nBir yetki tek tek kayıtlara kısıtlanabilir. Kısıtlı izin **genel sete girmez**:\n\n```ts\nconst allowed = canAccessResource({\n  grants: effective.resourceGrants,\n  permission: 'ornek:kayit:guncelle',\n  resourceType: 'kayit',\n  resourceId: record.id,\n  recordGroupPath: record.groupPath,   // ZORUNLU\n  contextGroupPath: activeGroup.path,\n});\n```\n\n`recordGroupPath` kontrolü zorunludur: kaynaklar IAM için **opaktır**, kaydın\ngerçekten o birime ait olduğunu IAM doğrulayamaz.\n\n## Hata sözleşmesi\n\n| Durum | Kod | Anlamı |\n|---|---|---|\n| 401 | `SSO_TOKEN_MISSING` / `SSO_TOKEN_INVALID` | Kimlik yok/geçersiz |\n| 403 | `SSO_USER_NOT_LINKED` | Kimlik var, uygulamada karşılığı yok |\n| 403 | `SSO_GROUP_NOT_MEMBER` | İstenen birimin üyesi değil |\n| 403 | `IAM_PERMISSION_DENIED` | Yetki yok (hangi izin olduğu **söylenmez**) |\n| 403 | `IAM_SCOPE_DENIED` / `IAM_RESOURCE_DENIED` | Kayıt yetki alanı dışında |\n| 503 | `IAM_UNAVAILABLE` | IAM'e ulaşılamadı — **yetkisizlik değildir** |\n\n503'ü 403'e katlamayın: bir kesintiyi yetki hatası gibi göstermek ekibi günlerce\nyanlış yerde arattırır.\n\n## Sık yapılan hatalar\n\n| Hata | Belirti | Çözüm |\n|---|---|---|\n| `issuer` tam eşleşmiyor | `unexpected \"iss\" claim value` | Token'daki `iss` ne ise birebir onu verin — `localhost` yerine `127.0.0.1` bile yeter |\n| `audience` doğrulanmıyor | Sessiz güvenlik açığı | Başka uygulamanın token'ı kabul edilir; SSO ekibinden audience isteyin |\n| Yetkiyi token'dan okumak | Süresi dolan yetki 5 dk yaşar | Karar daima `iam.check()` / `effectivePermissions()` |\n| Yerel izin cache'i 60 sn'yi aşıyor | Geri alınan yetki o kadar yaşar | TTL'i kısa tutun |\n| `X-Organization-Group-Id`'ye güvenmek | Yetki yükseltme | Paket her istekte kullanıcının IAM'deki birim listesiyle doğrular |\n\n## 1.x'ten geçiş\n\nSDK 2.0.0'da üç paket tek pakette birleşti. Kod değişmedi; **yalnız import\nyolları** değişti:\n\n| 1.x | 2.x |\n|---|---|\n| `@agdsoftware/sso-client` | `@agdsoftware/sso-sdk` |\n| `@agdsoftware/sso-client/server` | `@agdsoftware/sso-sdk/server` |\n| `@agdsoftware/sso-client/oidc` | `@agdsoftware/sso-sdk/oidc` |\n| `@agdsoftware/nestjs-sso` | `@agdsoftware/sso-sdk/nestjs` |\n| `@agdsoftware/nestjs-sso/typeorm` | `@agdsoftware/sso-sdk/nestjs/typeorm` |\n| `@agdsoftware/nestjs-sso/testing` | `@agdsoftware/sso-sdk/nestjs/testing` |\n| `@agdsoftware/react-sso` | `@agdsoftware/sso-sdk/react` |\n\nTek davranış farkı: `oidc-client-ts` artık opsiyonel peer'dır. React web\nkullanıyorsanız onu **kendiniz kurarsınız**; NestJS ve mobil tarafında artık hiç\ninmez.\n\n## Arka plan yetki yenilemesi — 2.7.0\n\nReact `refreshIntervalMs` zamanlayıcısı aynı hazır bağlamı arka planda yeniler;\nbaşarılı aynı bağlam yanıtı form ağacını yükleme ekranıyla değiştirmez.\nÇekirdekte açık kullanım `store.refresh({ background: true })` biçimindedir.\nParametresiz `refresh()` ve birim değişimi eski yükleme davranışını korur.\nToken kaybı veya son hata, eski izinleri, grant'leri ve aktif kapsamı temizler.\n\nTüketici; aktör, yetki sürümü, izinler veya kayıt kapsamı değiştiğinde kendi\nsorgu cache'ini ve korumalı ekran durumunu geçersizleştirmelidir. Aynı hazır\nbağlamın bekleme sırasında korunması API yetkilendirmesinin yerine geçmez.\nYoklama aralığı, sunucu cache süresi ve ağ gecikmesi birlikte değerlendirilir;\nanlık iptal veya belli bir kapasite garantisi verilmez.\n\n## İlgili\n\n- [SDK rehberi](../../docs/SDK.md) — kurulum, dayanıklılık ve terminal yayın yolu\n- [Entegrasyon sözleşmesi](../../docs/INTEGRATION.md)\n- [Token sözleşmesi](../../docs/TOKEN.md) ve [client kaydı](../../docs/CLIENTS.md)\n- [MGSoft](../../app/mgsoft-app/README.md) — API/web/native tüketici\n- [AGD Destek](../../apps/destek/README.md) — API/React tüketici\n\n2.7.1 düzeltmesi: yetki yenilemesinin token alma, HTTP/gövde okuma ve tekrarlar dahil toplam süresi 10 saniyeyle sınırlıdır. Süre dolunca eski yetki temizlenir; abort'u dikkate almayan adaptörün geç yanıtı bağlamı geri getiremez.\n","readmeFilename":"README.md"}