{"_rev":"3-ff3ab5beb3747a0b098ccdaefe49ecf4","time":{"created":"2026-09-01T11:25:38.177Z","modified":"2026-09-01T11:25:38.733Z","2026.901.1":"2026-09-01T11:15:42.672Z","2026.901.2":"2026-09-01T11:25:38.520Z"},"_id":"@duendesoftware/labs-identity-model","name":"@duendesoftware/labs-identity-model","dist-tags":{"latest":"2026.901.2"},"versions":{"2026.901.2":{"name":"@duendesoftware/labs-identity-model","version":"2026.901.2","description":"Modern OAuth 2.0 and OpenID Connect client library for TypeScript","type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core/index.d.ts","import":"./dist/core/index.js","require":"./dist/core/index.cjs"}},"scripts":{"build":"tsup","test":"vitest run","test:coverage":"vitest run --coverage","lint":"eslint src/**/*.ts test/**/*.ts","format:check":"prettier --check src/**/*.ts test/**/*.ts","format":"prettier --write src/**/*.ts test/**/*.ts","typecheck":"tsc --noEmit"},"dependencies":{"jose":"^5.0.0"},"devDependencies":{"@types/node":"^26.1.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@vitest/coverage-v8":"^3.0.0","eslint":"^8.57.0","prettier":"^3.4.0","tsup":"^8.0.0","typescript":"~5.7.0","vitest":"^3.0.0"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"license":"Apache-2.0","_id":"@duendesoftware/labs-identity-model@2026.901.2","_nodeVersion":"22.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-2R8VJ+FFhVsUt4GGEURhEasHHKVR1g02l8gbPhqUba3VePmK+4xegEYjU/zX8P49kVyhpn2Q6dXZ9oXiNxR52Q==","shasum":"bbaff626ffe5b1104193a385bd809c3c6c095c59","tarball":"https://registry.npmjs.org/@duendesoftware/labs-identity-model/-/labs-identity-model-2026.901.2.tgz","fileCount":14,"unpackedSize":1159919,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDZqyRE1tfAzW4+N7vSysMYNx9UVnT4X5s9ACw54mKDBAiEAyU8WvBMkp8jxysFxMq8gipN4taWogZDrcOXTd5qtQSQ="}]},"_npmUser":{"name":"damian-duende","email":"damian@duendesoftware.com"},"directories":{},"maintainers":[{"name":"duende-admin","email":"npm@duendesoftware.com"},{"name":"damian-duende","email":"damian@duendesoftware.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/labs-identity-model_2026.901.2_1788261938334_0.4870656408817702"},"_hasShrinkwrap":false}},"maintainers":[{"name":"duende-admin","email":"npm@duendesoftware.com"},{"name":"damian-duende","email":"damian@duendesoftware.com"}],"description":"Modern OAuth 2.0 and OpenID Connect client library for TypeScript","license":"Apache-2.0","readme":"# @duendesoftware/labs-identity-model\n\nA TypeScript library for OAuth 2.0 and OpenID Connect protocol interactions.\n\n> **Labs:** This is experimental software from [Duende Software](https://duendesoftware.com). It is not production-ready and the API may change without notice.\n\n## Features\n\n- Discovery document, JWK/JWKS, token endpoint (all grant types), introspection, revocation, UserInfo\n- Advanced flows: PAR, JAR, CIBA, DCR, Device Authorization\n- Modern extensions: RAR, DPoP, PKCE, Resource Indicators\n- Result-based error handling (no thrown exceptions for protocol errors)\n- Strictly typed with no `any`, deeply readonly response types\n- Tree-shakeable ESM with CJS compatibility, zero runtime dependencies for core\n\n## Installation\n\n```bash\nnpm install @duendesoftware/labs-identity-model\n```\n\n## Quick Start\n\n### Discover OpenID Configuration\n\n```typescript\nimport { getDiscoveryDocument } from '@duendesoftware/labs-identity-model';\n\nconst result = await getDiscoveryDocument('https://demo.duendesoftware.com');\n\nif (result.success) {\n  console.log(`Token Endpoint: ${result.data.tokenEndpoint}`);\n} else {\n  console.error(`Error: ${result.error.message}`);\n}\n```\n\n### Request a Token (Client Credentials)\n\n```typescript\nimport { requestClientCredentialsToken } from '@duendesoftware/labs-identity-model';\n\nconst result = await requestClientCredentialsToken({\n  address: 'https://demo.duendesoftware.com/connect/token',\n  clientId: 'client',\n  clientSecret: 'secret',\n  scope: 'api',\n});\n\nif (result.success) {\n  console.log(`Access Token: ${result.data.accessToken}`);\n} else {\n  console.error(`${result.error.errorCode}: ${result.error.errorDescription}`);\n}\n```\n\n## Documentation\n\nFull documentation is available on the [Duende R&D site](https://rd.duende-internal.com).\n","readmeFilename":"README.md"}