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.
Files changed (268) hide show
  1. package/README.md +314 -346
  2. package/dist/adapters/index.d.ts +3 -1
  3. package/dist/adapters/index.d.ts.map +1 -1
  4. package/dist/adapters/index.js +3 -1
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/s3db/adapter.d.ts.map +1 -1
  7. package/dist/adapters/s3db/adapter.js +0 -3
  8. package/dist/adapters/s3db/adapter.js.map +1 -1
  9. package/dist/adapters/udp.d.ts +83 -0
  10. package/dist/adapters/udp.d.ts.map +1 -0
  11. package/dist/adapters/udp.int.test.d.ts +5 -0
  12. package/dist/adapters/udp.int.test.d.ts.map +1 -0
  13. package/dist/adapters/udp.int.test.js +397 -0
  14. package/dist/adapters/udp.int.test.js.map +1 -0
  15. package/dist/adapters/udp.js +391 -0
  16. package/dist/adapters/udp.js.map +1 -0
  17. package/dist/cache/drivers/file.d.ts.map +1 -1
  18. package/dist/cache/drivers/file.js +13 -1
  19. package/dist/cache/drivers/file.js.map +1 -1
  20. package/dist/cache/drivers/memory.d.ts.map +1 -1
  21. package/dist/cache/drivers/memory.js +1 -0
  22. package/dist/cache/drivers/memory.js.map +1 -1
  23. package/dist/cache/types.d.ts +1 -0
  24. package/dist/cache/types.d.ts.map +1 -1
  25. package/dist/docs/generators/http-generator.d.ts.map +1 -1
  26. package/dist/docs/generators/http-generator.js +0 -1
  27. package/dist/docs/generators/http-generator.js.map +1 -1
  28. package/dist/graphql/graphql.int.test.d.ts +10 -0
  29. package/dist/graphql/graphql.int.test.d.ts.map +1 -0
  30. package/dist/graphql/graphql.int.test.js +698 -0
  31. package/dist/graphql/graphql.int.test.js.map +1 -0
  32. package/dist/graphql/schema-generator.d.ts.map +1 -1
  33. package/dist/graphql/schema-generator.js +20 -7
  34. package/dist/graphql/schema-generator.js.map +1 -1
  35. package/dist/http/auth.d.ts.map +1 -1
  36. package/dist/http/auth.js +15 -1
  37. package/dist/http/auth.js.map +1 -1
  38. package/dist/http/http.int.test.d.ts +7 -0
  39. package/dist/http/http.int.test.d.ts.map +1 -0
  40. package/dist/http/http.int.test.js +604 -0
  41. package/dist/http/http.int.test.js.map +1 -0
  42. package/dist/http/index.d.ts +2 -0
  43. package/dist/http/index.d.ts.map +1 -1
  44. package/dist/http/index.js +2 -0
  45. package/dist/http/index.js.map +1 -1
  46. package/dist/http/oauth2.d.ts.map +1 -1
  47. package/dist/http/oauth2.js +39 -0
  48. package/dist/http/oauth2.js.map +1 -1
  49. package/dist/http/oidc.d.ts.map +1 -1
  50. package/dist/http/oidc.js +9 -1
  51. package/dist/http/oidc.js.map +1 -1
  52. package/dist/http/session-redis.d.ts +187 -0
  53. package/dist/http/session-redis.d.ts.map +1 -0
  54. package/dist/http/session-redis.int.test.d.ts +8 -0
  55. package/dist/http/session-redis.int.test.d.ts.map +1 -0
  56. package/dist/http/session-redis.int.test.js +492 -0
  57. package/dist/http/session-redis.int.test.js.map +1 -0
  58. package/dist/http/session-redis.js +320 -0
  59. package/dist/http/session-redis.js.map +1 -0
  60. package/dist/index.d.ts +2 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +25 -0
  63. package/dist/index.js.map +1 -1
  64. package/dist/mcp/cli.js +2 -1
  65. package/dist/mcp/cli.js.map +1 -1
  66. package/dist/mcp/docs/adapters.d.ts.map +1 -1
  67. package/dist/mcp/docs/adapters.js +175 -145
  68. package/dist/mcp/docs/adapters.js.map +1 -1
  69. package/dist/mcp/docs/interceptors.d.ts +1 -1
  70. package/dist/mcp/docs/interceptors.d.ts.map +1 -1
  71. package/dist/mcp/docs/interceptors.js +231 -305
  72. package/dist/mcp/docs/interceptors.js.map +1 -1
  73. package/dist/mcp/docs/patterns.d.ts.map +1 -1
  74. package/dist/mcp/docs/patterns.js +20 -18
  75. package/dist/mcp/docs/patterns.js.map +1 -1
  76. package/dist/mcp/docs/quickstart.d.ts +1 -1
  77. package/dist/mcp/docs/quickstart.d.ts.map +1 -1
  78. package/dist/mcp/docs/quickstart.js +48 -46
  79. package/dist/mcp/docs/quickstart.js.map +1 -1
  80. package/dist/mcp/server.d.ts +1 -1
  81. package/dist/mcp/server.d.ts.map +1 -1
  82. package/dist/mcp/server.js +6 -7
  83. package/dist/mcp/server.js.map +1 -1
  84. package/dist/mcp/version.d.ts +7 -0
  85. package/dist/mcp/version.d.ts.map +1 -0
  86. package/dist/mcp/version.js +20 -0
  87. package/dist/mcp/version.js.map +1 -0
  88. package/dist/middleware/auth/oauth2.d.ts +294 -0
  89. package/dist/middleware/auth/oauth2.d.ts.map +1 -0
  90. package/dist/middleware/auth/oauth2.int.test.d.ts +2 -0
  91. package/dist/middleware/auth/oauth2.int.test.d.ts.map +1 -0
  92. package/dist/middleware/auth/oauth2.int.test.js +714 -0
  93. package/dist/middleware/auth/oauth2.int.test.js.map +1 -0
  94. package/dist/middleware/auth/oauth2.js +671 -0
  95. package/dist/middleware/auth/oauth2.js.map +1 -0
  96. package/dist/middleware/auth.d.ts +2 -0
  97. package/dist/middleware/auth.d.ts.map +1 -1
  98. package/dist/middleware/auth.js +16 -0
  99. package/dist/middleware/auth.js.map +1 -1
  100. package/dist/middleware/index.d.ts +5 -2
  101. package/dist/middleware/index.d.ts.map +1 -1
  102. package/dist/middleware/index.js +4 -0
  103. package/dist/middleware/index.js.map +1 -1
  104. package/dist/middleware/interceptors/circuit-breaker.d.ts.map +1 -1
  105. package/dist/middleware/interceptors/circuit-breaker.js +0 -1
  106. package/dist/middleware/interceptors/circuit-breaker.js.map +1 -1
  107. package/dist/middleware/interceptors/envelope.d.ts +176 -0
  108. package/dist/middleware/interceptors/envelope.d.ts.map +1 -0
  109. package/dist/middleware/interceptors/envelope.int.test.d.ts +5 -0
  110. package/dist/middleware/interceptors/envelope.int.test.d.ts.map +1 -0
  111. package/dist/middleware/interceptors/envelope.int.test.js +409 -0
  112. package/dist/middleware/interceptors/envelope.int.test.js.map +1 -0
  113. package/dist/middleware/interceptors/envelope.js +294 -0
  114. package/dist/middleware/interceptors/envelope.js.map +1 -0
  115. package/dist/middleware/interceptors/index.d.ts +2 -0
  116. package/dist/middleware/interceptors/index.d.ts.map +1 -1
  117. package/dist/middleware/interceptors/index.js +2 -0
  118. package/dist/middleware/interceptors/index.js.map +1 -1
  119. package/dist/middleware/types.d.ts +25 -0
  120. package/dist/middleware/types.d.ts.map +1 -1
  121. package/dist/rate-limit/drivers/drivers.int.test.d.ts +7 -0
  122. package/dist/rate-limit/drivers/drivers.int.test.d.ts.map +1 -0
  123. package/dist/rate-limit/drivers/drivers.int.test.js +466 -0
  124. package/dist/rate-limit/drivers/drivers.int.test.js.map +1 -0
  125. package/dist/server/builder.d.ts.map +1 -1
  126. package/dist/server/builder.int.test.js +41 -0
  127. package/dist/server/builder.int.test.js.map +1 -1
  128. package/dist/server/builder.js +72 -15
  129. package/dist/server/builder.js.map +1 -1
  130. package/dist/server/channel-utils.d.ts +4 -1
  131. package/dist/server/channel-utils.d.ts.map +1 -1
  132. package/dist/server/channel-utils.js +12 -2
  133. package/dist/server/channel-utils.js.map +1 -1
  134. package/dist/server/errors.d.ts.map +1 -1
  135. package/dist/server/errors.js +0 -22
  136. package/dist/server/errors.js.map +1 -1
  137. package/dist/server/fs-routes/watcher.js +1 -1
  138. package/dist/server/fs-routes/watcher.js.map +1 -1
  139. package/dist/server/index.d.ts +1 -1
  140. package/dist/server/index.d.ts.map +1 -1
  141. package/dist/server/index.js.map +1 -1
  142. package/dist/server/types.d.ts +37 -33
  143. package/dist/server/types.d.ts.map +1 -1
  144. package/dist/tracing/interceptor.d.ts.map +1 -1
  145. package/dist/tracing/interceptor.js +4 -5
  146. package/dist/tracing/interceptor.js.map +1 -1
  147. package/dist/types/envelope.d.ts +1 -1
  148. package/dist/types/envelope.d.ts.map +1 -1
  149. package/dist/types/envelope.js.map +1 -1
  150. package/dist/types/handlers.d.ts +8 -0
  151. package/dist/types/handlers.d.ts.map +1 -1
  152. package/dist/ui/core/index.d.ts +7 -0
  153. package/dist/ui/core/index.d.ts.map +1 -0
  154. package/dist/ui/docs/generators/content-types.d.ts +10 -0
  155. package/dist/ui/docs/generators/content-types.d.ts.map +1 -0
  156. package/dist/ui/docs/generators/errors-types.d.ts +409 -0
  157. package/dist/ui/docs/generators/errors-types.d.ts.map +1 -0
  158. package/dist/ui/docs/generators/errors.d.ts +88 -0
  159. package/dist/ui/docs/generators/errors.d.ts.map +1 -0
  160. package/dist/ui/docs/generators/grpc-generator.d.ts +53 -0
  161. package/dist/ui/docs/generators/grpc-generator.d.ts.map +1 -0
  162. package/dist/ui/docs/generators/http-generator.d.ts +49 -0
  163. package/dist/ui/docs/generators/http-generator.d.ts.map +1 -0
  164. package/dist/ui/docs/generators/index.d.ts +17 -0
  165. package/dist/ui/docs/generators/index.d.ts.map +1 -0
  166. package/dist/ui/docs/generators/jsonrpc-generator.d.ts +53 -0
  167. package/dist/ui/docs/generators/jsonrpc-generator.d.ts.map +1 -0
  168. package/dist/ui/docs/generators/schema-converter.d.ts +117 -0
  169. package/dist/ui/docs/generators/schema-converter.d.ts.map +1 -0
  170. package/dist/ui/docs/generators/streams-generator.d.ts +85 -0
  171. package/dist/ui/docs/generators/streams-generator.d.ts.map +1 -0
  172. package/dist/ui/docs/generators/tcp-generator.d.ts +133 -0
  173. package/dist/ui/docs/generators/tcp-generator.d.ts.map +1 -0
  174. package/dist/ui/docs/generators/udp-generator.d.ts +119 -0
  175. package/dist/ui/docs/generators/udp-generator.d.ts.map +1 -0
  176. package/dist/ui/docs/generators/usd-generator.d.ts +182 -0
  177. package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -0
  178. package/dist/ui/docs/generators/websocket-generator.d.ts +49 -0
  179. package/dist/ui/docs/generators/websocket-generator.d.ts.map +1 -0
  180. package/dist/ui/docs/index.d.ts +31 -0
  181. package/dist/ui/docs/index.d.ts.map +1 -0
  182. package/dist/ui/docs/usd-middleware.d.ts +157 -0
  183. package/dist/ui/docs/usd-middleware.d.ts.map +1 -0
  184. package/dist/ui/errors/factories.d.ts +142 -0
  185. package/dist/ui/errors/factories.d.ts.map +1 -0
  186. package/dist/ui/errors/index.d.ts +9 -0
  187. package/dist/ui/errors/index.d.ts.map +1 -0
  188. package/dist/ui/server/fs-routes/index.d.ts +66 -0
  189. package/dist/ui/server/fs-routes/index.d.ts.map +1 -0
  190. package/dist/ui/server/fs-routes/loader.d.ts +28 -0
  191. package/dist/ui/server/fs-routes/loader.d.ts.map +1 -0
  192. package/dist/ui/server/fs-routes/middleware-processor.d.ts +19 -0
  193. package/dist/ui/server/fs-routes/middleware-processor.d.ts.map +1 -0
  194. package/dist/ui/server/fs-routes/resources/index.d.ts +8 -0
  195. package/dist/ui/server/fs-routes/resources/index.d.ts.map +1 -0
  196. package/dist/ui/server/fs-routes/resources/loader.d.ts +16 -0
  197. package/dist/ui/server/fs-routes/resources/loader.d.ts.map +1 -0
  198. package/dist/ui/server/fs-routes/resources/types.d.ts +256 -0
  199. package/dist/ui/server/fs-routes/resources/types.d.ts.map +1 -0
  200. package/dist/ui/server/fs-routes/rest/index.d.ts +8 -0
  201. package/dist/ui/server/fs-routes/rest/index.d.ts.map +1 -0
  202. package/dist/ui/server/fs-routes/rest/loader.d.ts +11 -0
  203. package/dist/ui/server/fs-routes/rest/loader.d.ts.map +1 -0
  204. package/dist/ui/server/fs-routes/rest/types.d.ts +288 -0
  205. package/dist/ui/server/fs-routes/rest/types.d.ts.map +1 -0
  206. package/dist/ui/server/fs-routes/tcp/index.d.ts +8 -0
  207. package/dist/ui/server/fs-routes/tcp/index.d.ts.map +1 -0
  208. package/dist/ui/server/fs-routes/tcp/loader.d.ts +15 -0
  209. package/dist/ui/server/fs-routes/tcp/loader.d.ts.map +1 -0
  210. package/dist/ui/server/fs-routes/tcp/types.d.ts +215 -0
  211. package/dist/ui/server/fs-routes/tcp/types.d.ts.map +1 -0
  212. package/dist/ui/server/fs-routes/types.d.ts +437 -0
  213. package/dist/ui/server/fs-routes/types.d.ts.map +1 -0
  214. package/dist/ui/server/fs-routes/udp/index.d.ts +8 -0
  215. package/dist/ui/server/fs-routes/udp/index.d.ts.map +1 -0
  216. package/dist/ui/server/fs-routes/udp/loader.d.ts +15 -0
  217. package/dist/ui/server/fs-routes/udp/loader.d.ts.map +1 -0
  218. package/dist/ui/server/fs-routes/udp/types.d.ts +164 -0
  219. package/dist/ui/server/fs-routes/udp/types.d.ts.map +1 -0
  220. package/dist/ui/server/fs-routes/watcher.d.ts +34 -0
  221. package/dist/ui/server/fs-routes/watcher.d.ts.map +1 -0
  222. package/dist/ui/types/envelope.d.ts +1 -1
  223. package/dist/ui/types/envelope.d.ts.map +1 -1
  224. package/dist/ui/types/handlers.d.ts +8 -0
  225. package/dist/ui/types/handlers.d.ts.map +1 -1
  226. package/dist/ui/usd/builder/document.d.ts.map +1 -1
  227. package/dist/ui/usd/export/openapi.d.ts.map +1 -1
  228. package/dist/ui/usd/parser/normalize.d.ts.map +1 -1
  229. package/dist/ui/usd/spec/types.d.ts +14 -20
  230. package/dist/ui/usd/spec/types.d.ts.map +1 -1
  231. package/dist/ui/usd/utils/refs.d.ts.map +1 -1
  232. package/dist/ui/usd/validator/index.d.ts.map +1 -1
  233. package/dist/ui/usd/validator/schema.d.ts.map +1 -1
  234. package/dist/ui/usd/validator/semantic.d.ts.map +1 -1
  235. package/dist/ui/utils/logger.d.ts +15 -0
  236. package/dist/ui/utils/logger.d.ts.map +1 -0
  237. package/dist/usd/builder/document.d.ts.map +1 -1
  238. package/dist/usd/builder/document.js.map +1 -1
  239. package/dist/usd/export/openapi.d.ts.map +1 -1
  240. package/dist/usd/export/openapi.js +2 -4
  241. package/dist/usd/export/openapi.js.map +1 -1
  242. package/dist/usd/parser/normalize.d.ts.map +1 -1
  243. package/dist/usd/parser/normalize.js +0 -1
  244. package/dist/usd/parser/normalize.js.map +1 -1
  245. package/dist/usd/usd.int.test.d.ts +10 -0
  246. package/dist/usd/usd.int.test.d.ts.map +1 -0
  247. package/dist/usd/usd.int.test.js +719 -0
  248. package/dist/usd/usd.int.test.js.map +1 -0
  249. package/dist/usd/utils/refs.d.ts.map +1 -1
  250. package/dist/usd/validator/index.d.ts.map +1 -1
  251. package/dist/usd/validator/index.js.map +1 -1
  252. package/dist/usd/validator/schema.d.ts.map +1 -1
  253. package/dist/usd/validator/schema.js.map +1 -1
  254. package/dist/usd/validator/semantic.d.ts.map +1 -1
  255. package/dist/usd/validator/semantic.js.map +1 -1
  256. package/package.json +1 -1
  257. package/dist/middleware/rate-limit.d.ts +0 -105
  258. package/dist/middleware/rate-limit.d.ts.map +0 -1
  259. package/dist/middleware/rate-limit.int.test.d.ts +0 -5
  260. package/dist/middleware/rate-limit.int.test.d.ts.map +0 -1
  261. package/dist/middleware/rate-limit.int.test.js +0 -350
  262. package/dist/middleware/rate-limit.int.test.js.map +0 -1
  263. package/dist/middleware/rate-limit.js +0 -206
  264. package/dist/middleware/rate-limit.js.map +0 -1
  265. package/dist/openapi/index.d.ts +0 -9
  266. package/dist/openapi/index.d.ts.map +0 -1
  267. package/dist/openapi/index.js +0 -9
  268. 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":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=oauth2.int.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2.int.test.d.ts","sourceRoot":"","sources":["../../../src/middleware/auth/oauth2.int.test.ts"],"names":[],"mappings":""}