raffel 0.1.2 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +314 -346
- package/dist/adapters/index.d.ts +3 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/s3db/adapter.d.ts.map +1 -1
- package/dist/adapters/s3db/adapter.js +0 -3
- package/dist/adapters/s3db/adapter.js.map +1 -1
- package/dist/adapters/udp.d.ts +83 -0
- package/dist/adapters/udp.d.ts.map +1 -0
- package/dist/adapters/udp.int.test.d.ts +5 -0
- package/dist/adapters/udp.int.test.d.ts.map +1 -0
- package/dist/adapters/udp.int.test.js +397 -0
- package/dist/adapters/udp.int.test.js.map +1 -0
- package/dist/adapters/udp.js +391 -0
- package/dist/adapters/udp.js.map +1 -0
- package/dist/cache/drivers/file.d.ts.map +1 -1
- package/dist/cache/drivers/file.js +13 -1
- package/dist/cache/drivers/file.js.map +1 -1
- package/dist/cache/drivers/memory.d.ts.map +1 -1
- package/dist/cache/drivers/memory.js +1 -0
- package/dist/cache/drivers/memory.js.map +1 -1
- package/dist/cache/types.d.ts +1 -0
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/docs/generators/http-generator.d.ts.map +1 -1
- package/dist/docs/generators/http-generator.js +0 -1
- package/dist/docs/generators/http-generator.js.map +1 -1
- package/dist/graphql/graphql.int.test.d.ts +10 -0
- package/dist/graphql/graphql.int.test.d.ts.map +1 -0
- package/dist/graphql/graphql.int.test.js +698 -0
- package/dist/graphql/graphql.int.test.js.map +1 -0
- package/dist/graphql/schema-generator.d.ts.map +1 -1
- package/dist/graphql/schema-generator.js +20 -7
- package/dist/graphql/schema-generator.js.map +1 -1
- package/dist/http/auth.d.ts.map +1 -1
- package/dist/http/auth.js +15 -1
- package/dist/http/auth.js.map +1 -1
- package/dist/http/http.int.test.d.ts +7 -0
- package/dist/http/http.int.test.d.ts.map +1 -0
- package/dist/http/http.int.test.js +604 -0
- package/dist/http/http.int.test.js.map +1 -0
- package/dist/http/index.d.ts +2 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +2 -0
- package/dist/http/index.js.map +1 -1
- package/dist/http/oauth2.d.ts.map +1 -1
- package/dist/http/oauth2.js +39 -0
- package/dist/http/oauth2.js.map +1 -1
- package/dist/http/oidc.d.ts.map +1 -1
- package/dist/http/oidc.js +9 -1
- package/dist/http/oidc.js.map +1 -1
- package/dist/http/session-redis.d.ts +187 -0
- package/dist/http/session-redis.d.ts.map +1 -0
- package/dist/http/session-redis.int.test.d.ts +8 -0
- package/dist/http/session-redis.int.test.d.ts.map +1 -0
- package/dist/http/session-redis.int.test.js +492 -0
- package/dist/http/session-redis.int.test.js.map +1 -0
- package/dist/http/session-redis.js +320 -0
- package/dist/http/session-redis.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/cli.js +2 -1
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/docs/adapters.d.ts.map +1 -1
- package/dist/mcp/docs/adapters.js +175 -145
- package/dist/mcp/docs/adapters.js.map +1 -1
- package/dist/mcp/docs/interceptors.d.ts +1 -1
- package/dist/mcp/docs/interceptors.d.ts.map +1 -1
- package/dist/mcp/docs/interceptors.js +231 -305
- package/dist/mcp/docs/interceptors.js.map +1 -1
- package/dist/mcp/docs/patterns.d.ts.map +1 -1
- package/dist/mcp/docs/patterns.js +20 -18
- package/dist/mcp/docs/patterns.js.map +1 -1
- package/dist/mcp/docs/quickstart.d.ts +1 -1
- package/dist/mcp/docs/quickstart.d.ts.map +1 -1
- package/dist/mcp/docs/quickstart.js +48 -46
- package/dist/mcp/docs/quickstart.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +6 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/version.d.ts +7 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +20 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/middleware/auth/oauth2.d.ts +294 -0
- package/dist/middleware/auth/oauth2.d.ts.map +1 -0
- package/dist/middleware/auth/oauth2.int.test.d.ts +2 -0
- package/dist/middleware/auth/oauth2.int.test.d.ts.map +1 -0
- package/dist/middleware/auth/oauth2.int.test.js +714 -0
- package/dist/middleware/auth/oauth2.int.test.js.map +1 -0
- package/dist/middleware/auth/oauth2.js +671 -0
- package/dist/middleware/auth/oauth2.js.map +1 -0
- package/dist/middleware/auth.d.ts +2 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +16 -0
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/index.d.ts +5 -2
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +4 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/interceptors/circuit-breaker.d.ts.map +1 -1
- package/dist/middleware/interceptors/circuit-breaker.js +0 -1
- package/dist/middleware/interceptors/circuit-breaker.js.map +1 -1
- package/dist/middleware/interceptors/envelope.d.ts +176 -0
- package/dist/middleware/interceptors/envelope.d.ts.map +1 -0
- package/dist/middleware/interceptors/envelope.int.test.d.ts +5 -0
- package/dist/middleware/interceptors/envelope.int.test.d.ts.map +1 -0
- package/dist/middleware/interceptors/envelope.int.test.js +409 -0
- package/dist/middleware/interceptors/envelope.int.test.js.map +1 -0
- package/dist/middleware/interceptors/envelope.js +294 -0
- package/dist/middleware/interceptors/envelope.js.map +1 -0
- package/dist/middleware/interceptors/index.d.ts +2 -0
- package/dist/middleware/interceptors/index.d.ts.map +1 -1
- package/dist/middleware/interceptors/index.js +2 -0
- package/dist/middleware/interceptors/index.js.map +1 -1
- package/dist/middleware/types.d.ts +25 -0
- package/dist/middleware/types.d.ts.map +1 -1
- package/dist/rate-limit/drivers/drivers.int.test.d.ts +7 -0
- package/dist/rate-limit/drivers/drivers.int.test.d.ts.map +1 -0
- package/dist/rate-limit/drivers/drivers.int.test.js +466 -0
- package/dist/rate-limit/drivers/drivers.int.test.js.map +1 -0
- package/dist/server/builder.d.ts.map +1 -1
- package/dist/server/builder.int.test.js +41 -0
- package/dist/server/builder.int.test.js.map +1 -1
- package/dist/server/builder.js +72 -15
- package/dist/server/builder.js.map +1 -1
- package/dist/server/channel-utils.d.ts +4 -1
- package/dist/server/channel-utils.d.ts.map +1 -1
- package/dist/server/channel-utils.js +12 -2
- package/dist/server/channel-utils.js.map +1 -1
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/errors.js +0 -22
- package/dist/server/errors.js.map +1 -1
- package/dist/server/fs-routes/watcher.js +1 -1
- package/dist/server/fs-routes/watcher.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/types.d.ts +37 -33
- package/dist/server/types.d.ts.map +1 -1
- package/dist/tracing/interceptor.d.ts.map +1 -1
- package/dist/tracing/interceptor.js +4 -5
- package/dist/tracing/interceptor.js.map +1 -1
- package/dist/types/envelope.d.ts +1 -1
- package/dist/types/envelope.d.ts.map +1 -1
- package/dist/types/envelope.js.map +1 -1
- package/dist/types/handlers.d.ts +8 -0
- package/dist/types/handlers.d.ts.map +1 -1
- package/dist/ui/core/index.d.ts +7 -0
- package/dist/ui/core/index.d.ts.map +1 -0
- package/dist/ui/docs/generators/content-types.d.ts +10 -0
- package/dist/ui/docs/generators/content-types.d.ts.map +1 -0
- package/dist/ui/docs/generators/errors-types.d.ts +409 -0
- package/dist/ui/docs/generators/errors-types.d.ts.map +1 -0
- package/dist/ui/docs/generators/errors.d.ts +88 -0
- package/dist/ui/docs/generators/errors.d.ts.map +1 -0
- package/dist/ui/docs/generators/grpc-generator.d.ts +53 -0
- package/dist/ui/docs/generators/grpc-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/http-generator.d.ts +49 -0
- package/dist/ui/docs/generators/http-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/index.d.ts +17 -0
- package/dist/ui/docs/generators/index.d.ts.map +1 -0
- package/dist/ui/docs/generators/jsonrpc-generator.d.ts +53 -0
- package/dist/ui/docs/generators/jsonrpc-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/schema-converter.d.ts +117 -0
- package/dist/ui/docs/generators/schema-converter.d.ts.map +1 -0
- package/dist/ui/docs/generators/streams-generator.d.ts +85 -0
- package/dist/ui/docs/generators/streams-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/tcp-generator.d.ts +133 -0
- package/dist/ui/docs/generators/tcp-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/udp-generator.d.ts +119 -0
- package/dist/ui/docs/generators/udp-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/usd-generator.d.ts +182 -0
- package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -0
- package/dist/ui/docs/generators/websocket-generator.d.ts +49 -0
- package/dist/ui/docs/generators/websocket-generator.d.ts.map +1 -0
- package/dist/ui/docs/index.d.ts +31 -0
- package/dist/ui/docs/index.d.ts.map +1 -0
- package/dist/ui/docs/usd-middleware.d.ts +157 -0
- package/dist/ui/docs/usd-middleware.d.ts.map +1 -0
- package/dist/ui/errors/factories.d.ts +142 -0
- package/dist/ui/errors/factories.d.ts.map +1 -0
- package/dist/ui/errors/index.d.ts +9 -0
- package/dist/ui/errors/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/index.d.ts +66 -0
- package/dist/ui/server/fs-routes/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/loader.d.ts +28 -0
- package/dist/ui/server/fs-routes/loader.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/middleware-processor.d.ts +19 -0
- package/dist/ui/server/fs-routes/middleware-processor.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/resources/index.d.ts +8 -0
- package/dist/ui/server/fs-routes/resources/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/resources/loader.d.ts +16 -0
- package/dist/ui/server/fs-routes/resources/loader.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/resources/types.d.ts +256 -0
- package/dist/ui/server/fs-routes/resources/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/rest/index.d.ts +8 -0
- package/dist/ui/server/fs-routes/rest/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/rest/loader.d.ts +11 -0
- package/dist/ui/server/fs-routes/rest/loader.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/rest/types.d.ts +288 -0
- package/dist/ui/server/fs-routes/rest/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/tcp/index.d.ts +8 -0
- package/dist/ui/server/fs-routes/tcp/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/tcp/loader.d.ts +15 -0
- package/dist/ui/server/fs-routes/tcp/loader.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/tcp/types.d.ts +215 -0
- package/dist/ui/server/fs-routes/tcp/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/types.d.ts +437 -0
- package/dist/ui/server/fs-routes/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/udp/index.d.ts +8 -0
- package/dist/ui/server/fs-routes/udp/index.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/udp/loader.d.ts +15 -0
- package/dist/ui/server/fs-routes/udp/loader.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/udp/types.d.ts +164 -0
- package/dist/ui/server/fs-routes/udp/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/watcher.d.ts +34 -0
- package/dist/ui/server/fs-routes/watcher.d.ts.map +1 -0
- package/dist/ui/types/envelope.d.ts +1 -1
- package/dist/ui/types/envelope.d.ts.map +1 -1
- package/dist/ui/types/handlers.d.ts +8 -0
- package/dist/ui/types/handlers.d.ts.map +1 -1
- package/dist/ui/usd/builder/document.d.ts.map +1 -1
- package/dist/ui/usd/export/openapi.d.ts.map +1 -1
- package/dist/ui/usd/parser/normalize.d.ts.map +1 -1
- package/dist/ui/usd/spec/types.d.ts +14 -20
- package/dist/ui/usd/spec/types.d.ts.map +1 -1
- package/dist/ui/usd/utils/refs.d.ts.map +1 -1
- package/dist/ui/usd/validator/index.d.ts.map +1 -1
- package/dist/ui/usd/validator/schema.d.ts.map +1 -1
- package/dist/ui/usd/validator/semantic.d.ts.map +1 -1
- package/dist/ui/utils/logger.d.ts +15 -0
- package/dist/ui/utils/logger.d.ts.map +1 -0
- package/dist/usd/builder/document.d.ts.map +1 -1
- package/dist/usd/builder/document.js.map +1 -1
- package/dist/usd/export/openapi.d.ts.map +1 -1
- package/dist/usd/export/openapi.js +2 -4
- package/dist/usd/export/openapi.js.map +1 -1
- package/dist/usd/parser/normalize.d.ts.map +1 -1
- package/dist/usd/parser/normalize.js +0 -1
- package/dist/usd/parser/normalize.js.map +1 -1
- package/dist/usd/usd.int.test.d.ts +10 -0
- package/dist/usd/usd.int.test.d.ts.map +1 -0
- package/dist/usd/usd.int.test.js +719 -0
- package/dist/usd/usd.int.test.js.map +1 -0
- package/dist/usd/utils/refs.d.ts.map +1 -1
- package/dist/usd/validator/index.d.ts.map +1 -1
- package/dist/usd/validator/index.js.map +1 -1
- package/dist/usd/validator/schema.d.ts.map +1 -1
- package/dist/usd/validator/schema.js.map +1 -1
- package/dist/usd/validator/semantic.d.ts.map +1 -1
- package/dist/usd/validator/semantic.js.map +1 -1
- package/package.json +1 -1
- package/dist/middleware/rate-limit.d.ts +0 -105
- package/dist/middleware/rate-limit.d.ts.map +0 -1
- package/dist/middleware/rate-limit.int.test.d.ts +0 -5
- package/dist/middleware/rate-limit.int.test.d.ts.map +0 -1
- package/dist/middleware/rate-limit.int.test.js +0 -350
- package/dist/middleware/rate-limit.int.test.js.map +0 -1
- package/dist/middleware/rate-limit.js +0 -206
- package/dist/middleware/rate-limit.js.map +0 -1
- package/dist/openapi/index.d.ts +0 -9
- package/dist/openapi/index.d.ts.map +0 -1
- package/dist/openapi/index.js +0 -9
- package/dist/openapi/index.js.map +0 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth2/OIDC Authentication Strategies
|
|
3
|
+
*
|
|
4
|
+
* Provides authentication strategies for OAuth2 and OpenID Connect (OIDC) flows.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - OAuth2 authorization code flow
|
|
8
|
+
* - OIDC with auto-discovery (.well-known/openid-configuration)
|
|
9
|
+
* - Provider presets (Google, GitHub, Microsoft)
|
|
10
|
+
* - Token validation (access token and ID token)
|
|
11
|
+
* - Token refresh support
|
|
12
|
+
* - State parameter for CSRF protection
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Using OAuth2 with Google preset
|
|
17
|
+
* const oauth2 = createOAuth2Strategy({
|
|
18
|
+
* provider: 'google',
|
|
19
|
+
* clientId: process.env.GOOGLE_CLIENT_ID!,
|
|
20
|
+
* clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
|
|
21
|
+
* redirectUri: 'https://myapp.com/auth/callback',
|
|
22
|
+
* scopes: ['openid', 'email', 'profile'],
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* server.use(createAuthMiddleware({
|
|
26
|
+
* strategies: [oauth2],
|
|
27
|
+
* }))
|
|
28
|
+
*
|
|
29
|
+
* // OAuth2 flow endpoints
|
|
30
|
+
* server.get('/auth/login', async (_, ctx) => {
|
|
31
|
+
* const url = oauth2.getAuthorizationUrl({ state: generateState() })
|
|
32
|
+
* return { redirect: url }
|
|
33
|
+
* })
|
|
34
|
+
*
|
|
35
|
+
* server.get('/auth/callback', async (input, ctx) => {
|
|
36
|
+
* const { code, state } = input
|
|
37
|
+
* const tokens = await oauth2.exchangeCode(code)
|
|
38
|
+
* // Store tokens in session
|
|
39
|
+
* return { success: true }
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
import type { AuthStrategy } from '../auth.js';
|
|
44
|
+
/**
|
|
45
|
+
* OAuth2 provider presets
|
|
46
|
+
*/
|
|
47
|
+
export type OAuth2Provider = 'google' | 'github' | 'microsoft' | 'apple' | 'facebook' | 'custom';
|
|
48
|
+
/**
|
|
49
|
+
* OAuth2 configuration
|
|
50
|
+
*/
|
|
51
|
+
export interface OAuth2Config {
|
|
52
|
+
/** Provider preset (uses predefined URLs and scopes) */
|
|
53
|
+
provider?: OAuth2Provider;
|
|
54
|
+
/** OAuth2 client ID */
|
|
55
|
+
clientId: string;
|
|
56
|
+
/** OAuth2 client secret */
|
|
57
|
+
clientSecret: string;
|
|
58
|
+
/** Redirect URI after authorization */
|
|
59
|
+
redirectUri: string;
|
|
60
|
+
/** OAuth2 scopes to request */
|
|
61
|
+
scopes?: string[];
|
|
62
|
+
/** Authorization endpoint URL */
|
|
63
|
+
authorizationUrl?: string;
|
|
64
|
+
/** Token endpoint URL */
|
|
65
|
+
tokenUrl?: string;
|
|
66
|
+
/** User info endpoint URL (for validating access tokens) */
|
|
67
|
+
userInfoUrl?: string;
|
|
68
|
+
/** Include client credentials in body instead of header (default: false) */
|
|
69
|
+
clientCredentialsInBody?: boolean;
|
|
70
|
+
/** Token validation method */
|
|
71
|
+
tokenValidation?: 'userinfo' | 'introspection' | 'none';
|
|
72
|
+
/** Introspection endpoint URL (if using introspection validation) */
|
|
73
|
+
introspectionUrl?: string;
|
|
74
|
+
/** Revocation endpoint URL (for revoking tokens) */
|
|
75
|
+
revocationUrl?: string;
|
|
76
|
+
/** Custom headers for token requests */
|
|
77
|
+
tokenRequestHeaders?: Record<string, string>;
|
|
78
|
+
/** Request timeout in ms (default: 10000) */
|
|
79
|
+
timeout?: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* OIDC configuration (extends OAuth2)
|
|
83
|
+
*/
|
|
84
|
+
export interface OIDCConfig extends Omit<OAuth2Config, 'provider'> {
|
|
85
|
+
/** OIDC issuer URL (used for auto-discovery) */
|
|
86
|
+
issuer: string;
|
|
87
|
+
/** Audience for ID token validation (default: clientId) */
|
|
88
|
+
audience?: string;
|
|
89
|
+
/** Whether to validate ID token signature (default: true) */
|
|
90
|
+
validateIdToken?: boolean;
|
|
91
|
+
/** Clock skew tolerance in seconds for token validation (default: 60) */
|
|
92
|
+
clockSkew?: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* OAuth2 tokens returned from token exchange
|
|
96
|
+
*/
|
|
97
|
+
export interface OAuth2Tokens {
|
|
98
|
+
accessToken: string;
|
|
99
|
+
tokenType: string;
|
|
100
|
+
expiresIn?: number;
|
|
101
|
+
refreshToken?: string;
|
|
102
|
+
scope?: string;
|
|
103
|
+
idToken?: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* OIDC discovery document
|
|
107
|
+
*/
|
|
108
|
+
export interface OIDCDiscoveryDocument {
|
|
109
|
+
issuer: string;
|
|
110
|
+
authorization_endpoint: string;
|
|
111
|
+
token_endpoint: string;
|
|
112
|
+
userinfo_endpoint?: string;
|
|
113
|
+
jwks_uri: string;
|
|
114
|
+
scopes_supported?: string[];
|
|
115
|
+
response_types_supported: string[];
|
|
116
|
+
token_endpoint_auth_methods_supported?: string[];
|
|
117
|
+
id_token_signing_alg_values_supported?: string[];
|
|
118
|
+
introspection_endpoint?: string;
|
|
119
|
+
revocation_endpoint?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* User info from OAuth2/OIDC provider
|
|
123
|
+
*/
|
|
124
|
+
export interface OAuth2UserInfo {
|
|
125
|
+
sub: string;
|
|
126
|
+
email?: string;
|
|
127
|
+
email_verified?: boolean;
|
|
128
|
+
name?: string;
|
|
129
|
+
given_name?: string;
|
|
130
|
+
family_name?: string;
|
|
131
|
+
picture?: string;
|
|
132
|
+
locale?: string;
|
|
133
|
+
[key: string]: unknown;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Extended OAuth2 strategy with flow helpers
|
|
137
|
+
*/
|
|
138
|
+
export interface OAuth2StrategyWithFlow extends AuthStrategy {
|
|
139
|
+
/** Get authorization URL for redirect */
|
|
140
|
+
getAuthorizationUrl(options?: {
|
|
141
|
+
state?: string;
|
|
142
|
+
nonce?: string;
|
|
143
|
+
additionalParams?: Record<string, string>;
|
|
144
|
+
}): string;
|
|
145
|
+
/** Exchange authorization code for tokens */
|
|
146
|
+
exchangeCode(code: string): Promise<OAuth2Tokens>;
|
|
147
|
+
/** Refresh access token using refresh token */
|
|
148
|
+
refreshToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
149
|
+
/** Get user info using access token */
|
|
150
|
+
getUserInfo(accessToken: string): Promise<OAuth2UserInfo>;
|
|
151
|
+
/** Revoke a token */
|
|
152
|
+
revokeToken?(token: string, tokenType?: 'access_token' | 'refresh_token'): Promise<void>;
|
|
153
|
+
/** Provider configuration (resolved URLs) */
|
|
154
|
+
readonly config: ResolvedOAuth2Config;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Extended OIDC strategy with discovery
|
|
158
|
+
*/
|
|
159
|
+
export interface OIDCStrategyWithFlow extends OAuth2StrategyWithFlow {
|
|
160
|
+
/** OIDC discovery document */
|
|
161
|
+
readonly discovery: OIDCDiscoveryDocument | null;
|
|
162
|
+
/** Validate ID token */
|
|
163
|
+
validateIdToken(idToken: string): Promise<Record<string, unknown>>;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Resolved OAuth2 configuration with all URLs
|
|
167
|
+
*/
|
|
168
|
+
export interface ResolvedOAuth2Config {
|
|
169
|
+
clientId: string;
|
|
170
|
+
clientSecret: string;
|
|
171
|
+
redirectUri: string;
|
|
172
|
+
scopes: string[];
|
|
173
|
+
authorizationUrl: string;
|
|
174
|
+
tokenUrl: string;
|
|
175
|
+
userInfoUrl?: string;
|
|
176
|
+
introspectionUrl?: string;
|
|
177
|
+
revocationUrl?: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Provider preset configurations
|
|
181
|
+
*/
|
|
182
|
+
export declare const OAuth2Providers: Record<Exclude<OAuth2Provider, 'custom'>, {
|
|
183
|
+
authorizationUrl: string;
|
|
184
|
+
tokenUrl: string;
|
|
185
|
+
userInfoUrl: string;
|
|
186
|
+
defaultScopes: string[];
|
|
187
|
+
revocationUrl?: string;
|
|
188
|
+
}>;
|
|
189
|
+
/**
|
|
190
|
+
* Create an OAuth2 authentication strategy
|
|
191
|
+
*
|
|
192
|
+
* This strategy validates access tokens from the Authorization header by calling
|
|
193
|
+
* the userinfo endpoint. It also provides helper methods for the OAuth2 flow.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const oauth2 = createOAuth2Strategy({
|
|
198
|
+
* provider: 'google',
|
|
199
|
+
* clientId: process.env.GOOGLE_CLIENT_ID!,
|
|
200
|
+
* clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
|
|
201
|
+
* redirectUri: 'https://myapp.com/auth/callback',
|
|
202
|
+
* })
|
|
203
|
+
*
|
|
204
|
+
* // Use as auth strategy
|
|
205
|
+
* server.use(createAuthMiddleware({ strategies: [oauth2] }))
|
|
206
|
+
*
|
|
207
|
+
* // Use flow helpers
|
|
208
|
+
* const authUrl = oauth2.getAuthorizationUrl({ state: 'random-state' })
|
|
209
|
+
* const tokens = await oauth2.exchangeCode(code)
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export declare function createOAuth2Strategy(config: OAuth2Config): OAuth2StrategyWithFlow;
|
|
213
|
+
/**
|
|
214
|
+
* Create an OIDC authentication strategy with auto-discovery
|
|
215
|
+
*
|
|
216
|
+
* This strategy automatically discovers endpoints from the issuer's
|
|
217
|
+
* .well-known/openid-configuration and validates ID tokens.
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const oidc = createOIDCStrategy({
|
|
222
|
+
* issuer: 'https://accounts.google.com',
|
|
223
|
+
* clientId: process.env.GOOGLE_CLIENT_ID!,
|
|
224
|
+
* clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
|
|
225
|
+
* redirectUri: 'https://myapp.com/auth/callback',
|
|
226
|
+
* })
|
|
227
|
+
*
|
|
228
|
+
* server.use(createAuthMiddleware({ strategies: [oidc] }))
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
export declare function createOIDCStrategy(config: OIDCConfig): OIDCStrategyWithFlow;
|
|
232
|
+
/**
|
|
233
|
+
* Create a Google OAuth2 strategy
|
|
234
|
+
*/
|
|
235
|
+
export declare function createGoogleOAuth2Strategy(config: {
|
|
236
|
+
clientId: string;
|
|
237
|
+
clientSecret: string;
|
|
238
|
+
redirectUri: string;
|
|
239
|
+
scopes?: string[];
|
|
240
|
+
}): OAuth2StrategyWithFlow;
|
|
241
|
+
/**
|
|
242
|
+
* Create a GitHub OAuth2 strategy
|
|
243
|
+
*/
|
|
244
|
+
export declare function createGitHubOAuth2Strategy(config: {
|
|
245
|
+
clientId: string;
|
|
246
|
+
clientSecret: string;
|
|
247
|
+
redirectUri: string;
|
|
248
|
+
scopes?: string[];
|
|
249
|
+
}): OAuth2StrategyWithFlow;
|
|
250
|
+
/**
|
|
251
|
+
* Create a Microsoft OAuth2 strategy
|
|
252
|
+
*/
|
|
253
|
+
export declare function createMicrosoftOAuth2Strategy(config: {
|
|
254
|
+
clientId: string;
|
|
255
|
+
clientSecret: string;
|
|
256
|
+
redirectUri: string;
|
|
257
|
+
scopes?: string[];
|
|
258
|
+
tenant?: string;
|
|
259
|
+
}): OAuth2StrategyWithFlow;
|
|
260
|
+
/**
|
|
261
|
+
* Create an Apple OAuth2 strategy
|
|
262
|
+
*
|
|
263
|
+
* Note: Apple requires additional setup including a service ID and private key
|
|
264
|
+
* for generating client secrets. This is a simplified version.
|
|
265
|
+
*/
|
|
266
|
+
export declare function createAppleOAuth2Strategy(config: {
|
|
267
|
+
clientId: string;
|
|
268
|
+
clientSecret: string;
|
|
269
|
+
redirectUri: string;
|
|
270
|
+
scopes?: string[];
|
|
271
|
+
}): OAuth2StrategyWithFlow;
|
|
272
|
+
/**
|
|
273
|
+
* Create a Facebook OAuth2 strategy
|
|
274
|
+
*/
|
|
275
|
+
export declare function createFacebookOAuth2Strategy(config: {
|
|
276
|
+
clientId: string;
|
|
277
|
+
clientSecret: string;
|
|
278
|
+
redirectUri: string;
|
|
279
|
+
scopes?: string[];
|
|
280
|
+
}): OAuth2StrategyWithFlow;
|
|
281
|
+
/**
|
|
282
|
+
* Generate a random state parameter for CSRF protection
|
|
283
|
+
*/
|
|
284
|
+
export declare function generateState(length?: number): string;
|
|
285
|
+
/**
|
|
286
|
+
* Generate a nonce for OIDC
|
|
287
|
+
*/
|
|
288
|
+
export declare function generateNonce(length?: number): string;
|
|
289
|
+
/**
|
|
290
|
+
* Clear the OIDC discovery document cache
|
|
291
|
+
* Useful for testing or forcing a refresh
|
|
292
|
+
*/
|
|
293
|
+
export declare function clearDiscoveryCache(): void;
|
|
294
|
+
//# sourceMappingURL=oauth2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../../../src/middleware/auth/oauth2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,YAAY,CAAA;AAO1D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEhG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAA;IAEhB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAA;IAEpB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAA;IAEnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAIjB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IAIpB,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC,8BAA8B;IAC9B,eAAe,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,MAAM,CAAA;IAEvD,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5C,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;IAChE,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAA;IAEd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,MAAM,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAA;IAClC,qCAAqC,CAAC,EAAE,MAAM,EAAE,CAAA;IAChD,qCAAqC,CAAC,EAAE,MAAM,EAAE,CAAA;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,yCAAyC;IACzC,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC1C,GAAG,MAAM,CAAA;IAEV,6CAA6C;IAC7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEjD,+CAA+C;IAC/C,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEzD,uCAAuC;IACvC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAEzD,qBAAqB;IACrB,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAExF,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAEhD,wBAAwB;IACxB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAMD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE;IACtE,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAgCA,CAAA;AAmED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,sBAAsB,CA0TjF;AA8DD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAqI3E;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,GAAG,sBAAsB,CAKzB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,GAAG,sBAAsB,CAMzB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,sBAAsB,CAWzB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,GAAG,sBAAsB,CAMzB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,GAAG,sBAAsB,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,GAAG,MAAM,CAGjD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.int.test.d.ts","sourceRoot":"","sources":["../../../src/middleware/auth/oauth2.int.test.ts"],"names":[],"mappings":""}
|