@babelfhir-ts/smart-auth
v0.2.3
Published
SMART on FHIR v2 authorization with PKCE — discovery, token management, authenticated fetch. Zero dependencies.
Downloads
1,552
Maintainers
Readme
@babelfhir-ts/smart-auth
SMART on FHIR v2 authorization with PKCE — discovery, token management, authenticated fetch. Zero dependencies.
Installation
npm install @babelfhir-ts/smart-authNo runtime dependencies.
Usage
Standalone Launch
import { SmartAuth } from '@babelfhir-ts/smart-auth';
const auth = new SmartAuth({
clientId: 'my-app',
redirectUri: 'http://localhost:3000/callback',
scope: 'openid fhirUser patient/*.read',
fhirBaseUrl: 'https://launch.smarthealthit.org/v/r4/fhir',
});
// Start authorization (redirects to auth server)
await auth.authorize();
// Handle callback
if (auth.isCallback()) {
await auth.handleCallback();
}
// Get authenticated fetch function
const authenticatedFetch = auth.createAuthenticatedFetch();
const response = await authenticatedFetch('/Patient/example');Endpoint Discovery
import { discoverEndpoints } from '@babelfhir-ts/smart-auth';
const endpoints = await discoverEndpoints('https://launch.smarthealthit.org/v/r4/fhir');
// { authorizationEndpoint, tokenEndpoint, ... }Token Management
// Check authentication status
auth.isAuthenticated(); // boolean
// Get current token
const token = auth.getToken(); // SmartToken | null
// Refresh expired token
await auth.refreshAccessToken();
// Get valid token (auto-refreshes if expired)
const validToken = await auth.getValidToken();
// Logout
auth.logout();EHR Launch
const auth = new SmartAuth({ clientId: 'my-app', redirectUri: '...' });
const mode = auth.detectLaunchMode(); // 'standalone' | 'ehr'
if (mode === 'ehr') {
await auth.startEhrLaunch();
} else {
await auth.startStandaloneLaunch('https://my-fhir-server.com/fhir');
}API
| Export | Description |
|---|---|
| SmartAuth | Full SMART v2 lifecycle with PKCE |
| discoverEndpoints | Auto-discover SMART endpoints from FHIR server |
| SmartConfig | Configuration type |
| SmartToken | Token response type |
| SmartConfiguration | Well-known configuration type |
| LaunchMode | 'standalone' \| 'ehr' |
Part of BabelFHIR-TS
This package provides SMART on FHIR authentication for @babelfhir-ts/client-r4 and @babelfhir-ts/client-r4b. It can also be used standalone for any SMART on FHIR integration.
License
MIT
