@blokjs/runner 0.6.21 → 0.7.0

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 (167) hide show
  1. package/dist/Blok.d.ts +2 -0
  2. package/dist/Blok.js +42 -110
  3. package/dist/Blok.js.map +1 -1
  4. package/dist/DefaultLogger.d.ts +13 -0
  5. package/dist/DefaultLogger.js +25 -0
  6. package/dist/DefaultLogger.js.map +1 -1
  7. package/dist/RunnerSteps.d.ts +23 -0
  8. package/dist/RunnerSteps.js +128 -87
  9. package/dist/RunnerSteps.js.map +1 -1
  10. package/dist/SubworkflowNode.js +19 -0
  11. package/dist/SubworkflowNode.js.map +1 -1
  12. package/dist/TriggerBase.d.ts +12 -0
  13. package/dist/TriggerBase.js +216 -181
  14. package/dist/TriggerBase.js.map +1 -1
  15. package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +9 -0
  16. package/dist/adapters/grpc/GrpcRuntimeAdapter.js +76 -6
  17. package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -1
  18. package/dist/index.d.ts +4 -39
  19. package/dist/index.js +7 -32
  20. package/dist/index.js.map +1 -1
  21. package/dist/monitoring/JanitorMetrics.d.ts +3 -0
  22. package/dist/monitoring/JanitorMetrics.js +11 -0
  23. package/dist/monitoring/JanitorMetrics.js.map +1 -1
  24. package/dist/monitoring/ProcessErrorMetrics.d.ts +32 -0
  25. package/dist/monitoring/ProcessErrorMetrics.js +43 -0
  26. package/dist/monitoring/ProcessErrorMetrics.js.map +1 -0
  27. package/dist/monitoring/PrometheusMetricsBridge.d.ts +7 -0
  28. package/dist/monitoring/PrometheusMetricsBridge.js +8 -2
  29. package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -1
  30. package/dist/monitoring/SubworkflowMetrics.d.ts +25 -0
  31. package/dist/monitoring/SubworkflowMetrics.js +38 -0
  32. package/dist/monitoring/SubworkflowMetrics.js.map +1 -0
  33. package/dist/observability/ErrorSink.d.ts +23 -0
  34. package/dist/observability/ErrorSink.js +32 -0
  35. package/dist/observability/ErrorSink.js.map +1 -0
  36. package/dist/observability/SentryIntegration.d.ts +9 -0
  37. package/dist/observability/SentryIntegration.js +31 -0
  38. package/dist/observability/SentryIntegration.js.map +1 -0
  39. package/dist/scheduling/DebounceCoordinator.d.ts +7 -53
  40. package/dist/scheduling/DebounceCoordinator.js +8 -207
  41. package/dist/scheduling/DebounceCoordinator.js.map +1 -1
  42. package/dist/tracing/InMemoryRunStore.d.ts +5 -1
  43. package/dist/tracing/InMemoryRunStore.js +14 -0
  44. package/dist/tracing/InMemoryRunStore.js.map +1 -1
  45. package/dist/tracing/Janitor.js +3 -0
  46. package/dist/tracing/Janitor.js.map +1 -1
  47. package/dist/tracing/PostgresRunStore.d.ts +4 -1
  48. package/dist/tracing/PostgresRunStore.js +73 -3
  49. package/dist/tracing/PostgresRunStore.js.map +1 -1
  50. package/dist/tracing/RunStore.d.ts +17 -1
  51. package/dist/tracing/RunTracker.d.ts +13 -34
  52. package/dist/tracing/RunTracker.js +62 -32
  53. package/dist/tracing/RunTracker.js.map +1 -1
  54. package/dist/tracing/SqliteRunStore.d.ts +4 -1
  55. package/dist/tracing/SqliteRunStore.js +60 -0
  56. package/dist/tracing/SqliteRunStore.js.map +1 -1
  57. package/dist/tracing/TraceRouter.d.ts +13 -0
  58. package/dist/tracing/TraceRouter.js +43 -11
  59. package/dist/tracing/TraceRouter.js.map +1 -1
  60. package/dist/tracing/TracingLogger.js +22 -0
  61. package/dist/tracing/TracingLogger.js.map +1 -1
  62. package/dist/tracing/createStore.js +51 -22
  63. package/dist/tracing/createStore.js.map +1 -1
  64. package/dist/tracing/types.d.ts +22 -0
  65. package/dist/types/GlobalOptions.d.ts +5 -7
  66. package/dist/workflow/WorkflowNormalizer.js +63 -0
  67. package/dist/workflow/WorkflowNormalizer.js.map +1 -1
  68. package/package.json +7 -4
  69. package/dist/cache/NodeResultCache.d.ts +0 -286
  70. package/dist/cache/NodeResultCache.js +0 -506
  71. package/dist/cache/NodeResultCache.js.map +0 -1
  72. package/dist/cache/index.d.ts +0 -1
  73. package/dist/cache/index.js +0 -2
  74. package/dist/cache/index.js.map +0 -1
  75. package/dist/concurrency/ConcurrencyBackend.d.ts +0 -61
  76. package/dist/concurrency/ConcurrencyBackend.js +0 -20
  77. package/dist/concurrency/ConcurrencyBackend.js.map +0 -1
  78. package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +0 -64
  79. package/dist/concurrency/NatsKvConcurrencyBackend.js +0 -310
  80. package/dist/concurrency/NatsKvConcurrencyBackend.js.map +0 -1
  81. package/dist/concurrency/RedisConcurrencyBackend.d.ts +0 -64
  82. package/dist/concurrency/RedisConcurrencyBackend.js +0 -374
  83. package/dist/concurrency/RedisConcurrencyBackend.js.map +0 -1
  84. package/dist/concurrency/createConcurrencyBackend.d.ts +0 -24
  85. package/dist/concurrency/createConcurrencyBackend.js +0 -38
  86. package/dist/concurrency/createConcurrencyBackend.js.map +0 -1
  87. package/dist/graphql/GraphQLSchemaGenerator.d.ts +0 -129
  88. package/dist/graphql/GraphQLSchemaGenerator.js +0 -425
  89. package/dist/graphql/GraphQLSchemaGenerator.js.map +0 -1
  90. package/dist/integrations/APMIntegration.d.ts +0 -141
  91. package/dist/integrations/APMIntegration.js +0 -212
  92. package/dist/integrations/APMIntegration.js.map +0 -1
  93. package/dist/integrations/AzureMonitorIntegration.d.ts +0 -118
  94. package/dist/integrations/AzureMonitorIntegration.js +0 -254
  95. package/dist/integrations/AzureMonitorIntegration.js.map +0 -1
  96. package/dist/integrations/CloudWatchIntegration.d.ts +0 -135
  97. package/dist/integrations/CloudWatchIntegration.js +0 -293
  98. package/dist/integrations/CloudWatchIntegration.js.map +0 -1
  99. package/dist/integrations/SentryIntegration.d.ts +0 -153
  100. package/dist/integrations/SentryIntegration.js +0 -200
  101. package/dist/integrations/SentryIntegration.js.map +0 -1
  102. package/dist/integrations/index.d.ts +0 -19
  103. package/dist/integrations/index.js +0 -16
  104. package/dist/integrations/index.js.map +0 -1
  105. package/dist/marketplace/RuntimeAutoScaler.d.ts +0 -148
  106. package/dist/marketplace/RuntimeAutoScaler.js +0 -366
  107. package/dist/marketplace/RuntimeAutoScaler.js.map +0 -1
  108. package/dist/marketplace/RuntimeCatalog.d.ts +0 -180
  109. package/dist/marketplace/RuntimeCatalog.js +0 -339
  110. package/dist/marketplace/RuntimeCatalog.js.map +0 -1
  111. package/dist/marketplace/RuntimeDiscovery.d.ts +0 -86
  112. package/dist/marketplace/RuntimeDiscovery.js +0 -231
  113. package/dist/marketplace/RuntimeDiscovery.js.map +0 -1
  114. package/dist/marketplace/RuntimeHealthMonitor.d.ts +0 -100
  115. package/dist/marketplace/RuntimeHealthMonitor.js +0 -241
  116. package/dist/marketplace/RuntimeHealthMonitor.js.map +0 -1
  117. package/dist/marketplace/RuntimeMetricsDashboard.d.ts +0 -113
  118. package/dist/marketplace/RuntimeMetricsDashboard.js +0 -293
  119. package/dist/marketplace/RuntimeMetricsDashboard.js.map +0 -1
  120. package/dist/openapi/OpenAPIGenerator.d.ts +0 -192
  121. package/dist/openapi/OpenAPIGenerator.js +0 -378
  122. package/dist/openapi/OpenAPIGenerator.js.map +0 -1
  123. package/dist/openapi/index.d.ts +0 -20
  124. package/dist/openapi/index.js +0 -20
  125. package/dist/openapi/index.js.map +0 -1
  126. package/dist/scheduling/DebounceBackend.d.ts +0 -108
  127. package/dist/scheduling/DebounceBackend.js +0 -23
  128. package/dist/scheduling/DebounceBackend.js.map +0 -1
  129. package/dist/scheduling/NatsKvDebounceBackend.d.ts +0 -53
  130. package/dist/scheduling/NatsKvDebounceBackend.js +0 -334
  131. package/dist/scheduling/NatsKvDebounceBackend.js.map +0 -1
  132. package/dist/scheduling/RedisDebounceBackend.d.ts +0 -49
  133. package/dist/scheduling/RedisDebounceBackend.js +0 -356
  134. package/dist/scheduling/RedisDebounceBackend.js.map +0 -1
  135. package/dist/scheduling/createDebounceBackend.d.ts +0 -25
  136. package/dist/scheduling/createDebounceBackend.js +0 -39
  137. package/dist/scheduling/createDebounceBackend.js.map +0 -1
  138. package/dist/security/ABAC.d.ts +0 -224
  139. package/dist/security/ABAC.js +0 -380
  140. package/dist/security/ABAC.js.map +0 -1
  141. package/dist/security/AuditLogger.d.ts +0 -242
  142. package/dist/security/AuditLogger.js +0 -317
  143. package/dist/security/AuditLogger.js.map +0 -1
  144. package/dist/security/AuthMiddleware.d.ts +0 -162
  145. package/dist/security/AuthMiddleware.js +0 -289
  146. package/dist/security/AuthMiddleware.js.map +0 -1
  147. package/dist/security/EncryptionAtRest.d.ts +0 -206
  148. package/dist/security/EncryptionAtRest.js +0 -236
  149. package/dist/security/EncryptionAtRest.js.map +0 -1
  150. package/dist/security/OAuthProvider.d.ts +0 -334
  151. package/dist/security/OAuthProvider.js +0 -719
  152. package/dist/security/OAuthProvider.js.map +0 -1
  153. package/dist/security/PIIDetector.d.ts +0 -233
  154. package/dist/security/PIIDetector.js +0 -354
  155. package/dist/security/PIIDetector.js.map +0 -1
  156. package/dist/security/RBAC.d.ts +0 -143
  157. package/dist/security/RBAC.js +0 -285
  158. package/dist/security/RBAC.js.map +0 -1
  159. package/dist/security/SecretManager.d.ts +0 -652
  160. package/dist/security/SecretManager.js +0 -1147
  161. package/dist/security/SecretManager.js.map +0 -1
  162. package/dist/security/TLSConfig.d.ts +0 -305
  163. package/dist/security/TLSConfig.js +0 -550
  164. package/dist/security/TLSConfig.js.map +0 -1
  165. package/dist/security/index.d.ts +0 -81
  166. package/dist/security/index.js +0 -82
  167. package/dist/security/index.js.map +0 -1
@@ -1,317 +0,0 @@
1
- /**
2
- * Audit Logger for Blok Framework
3
- *
4
- * Provides comprehensive audit logging for security and compliance:
5
- * - All authentication attempts (success and failure)
6
- * - Authorization decisions
7
- * - Workflow executions
8
- * - Node executions
9
- * - Configuration changes
10
- * - System events
11
- *
12
- * Supports multiple output destinations via AuditSink interface.
13
- *
14
- * @example
15
- * ```typescript
16
- * const audit = new AuditLogger({
17
- * sinks: [
18
- * new ConsoleAuditSink(),
19
- * new FileAuditSink({ path: "./audit.log" }),
20
- * ],
21
- * includeTimestamp: true,
22
- * includeRequestId: true,
23
- * });
24
- *
25
- * audit.logAuth({
26
- * action: "login",
27
- * success: true,
28
- * identity: { sub: "user-123", provider: "jwt" },
29
- * ip: "192.168.1.1",
30
- * });
31
- * ```
32
- */
33
- import { appendFile, mkdir } from "node:fs/promises";
34
- import { dirname } from "node:path";
35
- const SEVERITY_ORDER = {
36
- info: 0,
37
- warn: 1,
38
- error: 2,
39
- critical: 3,
40
- };
41
- export class AuditLogger {
42
- config;
43
- buffer = [];
44
- flushTimer = null;
45
- entryCounter = 0;
46
- pendingFlush = null;
47
- constructor(config) {
48
- this.config = {
49
- includeRequestId: true,
50
- minSeverity: "info",
51
- bufferSize: 100,
52
- flushIntervalMs: 5000,
53
- serviceName: "blok",
54
- ...config,
55
- };
56
- // Start auto-flush timer
57
- if (this.config.flushIntervalMs > 0) {
58
- this.flushTimer = setInterval(() => this.flush(), this.config.flushIntervalMs);
59
- // Don't block Node.js from exiting
60
- if (this.flushTimer.unref) {
61
- this.flushTimer.unref();
62
- }
63
- }
64
- }
65
- /**
66
- * Log an authentication event
67
- */
68
- logAuth(params) {
69
- this.log({
70
- category: "auth",
71
- severity: params.success ? "info" : "warn",
72
- action: params.action,
73
- success: params.success,
74
- actor: params.identity
75
- ? {
76
- sub: params.identity.sub,
77
- name: params.identity.name,
78
- ip: params.ip,
79
- userAgent: params.userAgent,
80
- provider: params.identity.provider,
81
- }
82
- : undefined,
83
- error: params.error ? { message: params.error } : undefined,
84
- requestId: params.requestId,
85
- });
86
- }
87
- /**
88
- * Log an authorization event
89
- */
90
- logAuthz(params) {
91
- this.log({
92
- category: "authz",
93
- severity: params.allowed ? "info" : "warn",
94
- action: params.action,
95
- success: params.allowed,
96
- actor: params.actor,
97
- resource: params.resource,
98
- details: { roles: params.roles },
99
- requestId: params.requestId,
100
- });
101
- }
102
- /**
103
- * Log a workflow execution event
104
- */
105
- logWorkflowExecution(params) {
106
- this.log({
107
- category: "workflow",
108
- severity: params.success ? "info" : "error",
109
- action: "execute",
110
- success: params.success,
111
- actor: params.actor,
112
- resource: {
113
- type: "workflow",
114
- id: params.workflowPath,
115
- name: params.workflowName,
116
- },
117
- durationMs: params.durationMs,
118
- error: params.error ? { message: params.error } : undefined,
119
- requestId: params.requestId,
120
- });
121
- }
122
- /**
123
- * Log a configuration change event
124
- */
125
- logConfigChange(params) {
126
- this.log({
127
- category: "config",
128
- severity: "warn",
129
- action: `config.${params.action}`,
130
- success: true,
131
- actor: params.actor,
132
- resource: {
133
- type: params.resourceType,
134
- id: params.resourceId,
135
- },
136
- details: params.details,
137
- });
138
- }
139
- /**
140
- * Log a security event
141
- */
142
- logSecurityEvent(params) {
143
- this.log({
144
- category: "security",
145
- severity: params.severity,
146
- action: params.action,
147
- success: false,
148
- actor: params.actor,
149
- details: params.details,
150
- requestId: params.requestId,
151
- });
152
- }
153
- /**
154
- * Core logging method
155
- */
156
- log(params) {
157
- // Check severity threshold
158
- if (SEVERITY_ORDER[params.severity] < SEVERITY_ORDER[this.config.minSeverity]) {
159
- return;
160
- }
161
- const entry = {
162
- id: `${this.config.serviceName}-${Date.now()}-${++this.entryCounter}`,
163
- timestamp: new Date().toISOString(),
164
- ...params,
165
- };
166
- this.buffer.push(entry);
167
- // Flush if buffer is full
168
- if (this.buffer.length >= this.config.bufferSize) {
169
- this.pendingFlush = this.flush();
170
- }
171
- }
172
- /**
173
- * Flush buffered entries to all sinks
174
- */
175
- async flush() {
176
- // Wait for any auto-triggered flush to complete
177
- if (this.pendingFlush) {
178
- const pending = this.pendingFlush;
179
- this.pendingFlush = null;
180
- await pending;
181
- }
182
- if (this.buffer.length === 0)
183
- return;
184
- const entries = [...this.buffer];
185
- this.buffer = [];
186
- for (const sink of this.config.sinks) {
187
- for (const entry of entries) {
188
- try {
189
- await sink.write(entry);
190
- }
191
- catch {
192
- // Don't let sink errors break the audit log
193
- }
194
- }
195
- try {
196
- await sink.flush?.();
197
- }
198
- catch {
199
- // Silent
200
- }
201
- }
202
- }
203
- /**
204
- * Close the audit logger and flush remaining entries
205
- */
206
- async close() {
207
- if (this.flushTimer) {
208
- clearInterval(this.flushTimer);
209
- this.flushTimer = null;
210
- }
211
- await this.flush();
212
- for (const sink of this.config.sinks) {
213
- try {
214
- await sink.close?.();
215
- }
216
- catch {
217
- // Silent
218
- }
219
- }
220
- }
221
- /**
222
- * Get entry count since creation
223
- */
224
- getEntryCount() {
225
- return this.entryCounter;
226
- }
227
- }
228
- /**
229
- * Console audit sink - outputs audit entries to stdout as JSON
230
- */
231
- export class ConsoleAuditSink {
232
- name = "console";
233
- write(entry) {
234
- const output = JSON.stringify(entry);
235
- if (entry.severity === "error" || entry.severity === "critical") {
236
- console.error(`[AUDIT] ${output}`);
237
- }
238
- else if (entry.severity === "warn") {
239
- console.warn(`[AUDIT] ${output}`);
240
- }
241
- else {
242
- console.log(`[AUDIT] ${output}`);
243
- }
244
- }
245
- }
246
- /**
247
- * File audit sink - appends audit entries as JSONL to a file
248
- */
249
- export class FileAuditSink {
250
- name = "file";
251
- filePath;
252
- buffer = [];
253
- initialized = false;
254
- constructor(config) {
255
- this.filePath = config.path;
256
- }
257
- async write(entry) {
258
- this.buffer.push(JSON.stringify(entry));
259
- }
260
- async flush() {
261
- if (this.buffer.length === 0)
262
- return;
263
- if (!this.initialized) {
264
- await mkdir(dirname(this.filePath), { recursive: true });
265
- this.initialized = true;
266
- }
267
- const data = `${this.buffer.join("\n")}\n`;
268
- this.buffer = [];
269
- await appendFile(this.filePath, data, "utf-8");
270
- }
271
- async close() {
272
- await this.flush();
273
- }
274
- }
275
- /**
276
- * In-memory audit sink - stores entries in memory (useful for testing)
277
- */
278
- export class InMemoryAuditSink {
279
- name = "memory";
280
- entries = [];
281
- maxEntries;
282
- constructor(maxEntries = 10000) {
283
- this.maxEntries = maxEntries;
284
- }
285
- write(entry) {
286
- this.entries.push(entry);
287
- // Ring buffer behavior
288
- if (this.entries.length > this.maxEntries) {
289
- this.entries.shift();
290
- }
291
- }
292
- getEntries() {
293
- return [...this.entries];
294
- }
295
- query(filter) {
296
- let results = this.entries;
297
- if (filter.category)
298
- results = results.filter((e) => e.category === filter.category);
299
- if (filter.severity)
300
- results = results.filter((e) => e.severity === filter.severity);
301
- if (filter.actorSub)
302
- results = results.filter((e) => e.actor?.sub === filter.actorSub);
303
- if (filter.action)
304
- results = results.filter((e) => e.action === filter.action);
305
- if (filter.since) {
306
- const since = filter.since;
307
- results = results.filter((e) => e.timestamp >= since);
308
- }
309
- if (filter.limit)
310
- results = results.slice(-filter.limit);
311
- return results;
312
- }
313
- clear() {
314
- this.entries = [];
315
- }
316
- }
317
- //# sourceMappingURL=AuditLogger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuditLogger.js","sourceRoot":"","sources":["../../src/security/AuditLogger.ts"],"names":[],"mappings":"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"}
@@ -1,162 +0,0 @@
1
- /**
2
- * Authentication Middleware for Blok Triggers
3
- *
4
- * @deprecated Since v0.4.1. Will be removed in v0.5. This class ships as
5
- * example-grade code (HS256-only JWT verification, no JWKS, no key
6
- * rotation, non-constant-time API-key lookup) and is not wired into any
7
- * trigger. Production deployments should compose auth from a hardened
8
- * library (`jose`, `hono/jwt`, `node-jsonwebtoken`) at the trigger or
9
- * workflow layer instead. See `docs/d/security/cookbook.mdx` for the
10
- * recommended patterns.
11
- *
12
- * @example
13
- * ```typescript
14
- * // Recommended (jose):
15
- * import { jwtVerify } from "jose";
16
- * const { payload } = await jwtVerify(token, secret, { issuer, audience });
17
- * ```
18
- */
19
- export interface AuthIdentity {
20
- /** Unique identifier for the authenticated entity */
21
- sub: string;
22
- /** Display name */
23
- name?: string;
24
- /** Email address */
25
- email?: string;
26
- /** Assigned roles */
27
- roles: string[];
28
- /** Additional claims/metadata */
29
- claims: Record<string, unknown>;
30
- /** Authentication provider that verified this identity */
31
- provider: string;
32
- /** When the token/key was issued */
33
- issuedAt?: number;
34
- /** When the token/key expires */
35
- expiresAt?: number;
36
- }
37
- export interface AuthRequest {
38
- headers: Record<string, string | string[] | undefined>;
39
- query?: Record<string, string | string[] | undefined>;
40
- path?: string;
41
- method?: string;
42
- }
43
- export interface AuthResult {
44
- authenticated: boolean;
45
- identity?: AuthIdentity;
46
- error?: string;
47
- statusCode?: number;
48
- }
49
- /**
50
- * Base interface for authentication providers
51
- */
52
- export interface AuthProvider {
53
- /** Unique name for this provider */
54
- readonly name: string;
55
- /** Try to authenticate the request */
56
- authenticate(request: AuthRequest): Promise<AuthResult>;
57
- }
58
- export interface AuthMiddlewareConfig {
59
- /** Authentication providers to use (tried in order) */
60
- providers: AuthProvider[];
61
- /** Paths to exclude from authentication (e.g., ["/health-check", "/metrics"]) */
62
- excludePaths?: string[];
63
- /** Whether authentication is required (default: true) */
64
- required?: boolean;
65
- /** Custom error handler */
66
- onAuthFailure?: (result: AuthResult, request: AuthRequest) => void;
67
- }
68
- /**
69
- * @deprecated Since v0.4.1. See file-level JSDoc; will be removed in v0.5.
70
- */
71
- export declare class AuthMiddleware {
72
- private config;
73
- constructor(config: AuthMiddlewareConfig);
74
- /**
75
- * Authenticate a request against all registered providers.
76
- * Returns the first successful authentication result.
77
- */
78
- authenticate(request: AuthRequest): Promise<AuthResult>;
79
- /**
80
- * Express-compatible middleware function
81
- */
82
- expressMiddleware(): (req: {
83
- headers: Record<string, string>;
84
- query: Record<string, string>;
85
- path: string;
86
- method: string;
87
- auth?: AuthIdentity;
88
- }, res: {
89
- status: (code: number) => {
90
- json: (body: unknown) => void;
91
- };
92
- }, next: () => void) => Promise<void>;
93
- private isExcludedPath;
94
- }
95
- /**
96
- * JWT Authentication Provider
97
- *
98
- * Verifies JWT tokens from the Authorization: Bearer header.
99
- * Supports HS256 (shared secret) out of the box.
100
- */
101
- export interface JWTAuthProviderConfig {
102
- /** Secret key for HS256 verification */
103
- secret: string;
104
- /** Expected issuer (iss claim) */
105
- issuer?: string;
106
- /** Expected audience (aud claim) */
107
- audience?: string;
108
- /** Header name to read token from (default: "authorization") */
109
- headerName?: string;
110
- /** Clock tolerance in seconds for exp/nbf validation (default: 30) */
111
- clockToleranceSec?: number;
112
- /** Map JWT claims to roles (claim name → role mapping function) */
113
- rolesClaim?: string;
114
- }
115
- /**
116
- * @deprecated Since v0.4.1. See file-level JSDoc; will be removed in v0.5.
117
- */
118
- export declare class JWTAuthProvider implements AuthProvider {
119
- readonly name = "jwt";
120
- private config;
121
- constructor(config: JWTAuthProviderConfig);
122
- authenticate(request: AuthRequest): Promise<AuthResult>;
123
- /**
124
- * Verify JWT token using HS256
125
- */
126
- private verifyToken;
127
- }
128
- /**
129
- * API Key Authentication Provider
130
- *
131
- * Verifies API keys from headers or query parameters.
132
- */
133
- export interface APIKeyInfo {
134
- /** Name/label for this API key */
135
- name: string;
136
- /** Roles assigned to this key */
137
- roles: string[];
138
- /** Additional metadata */
139
- metadata?: Record<string, unknown>;
140
- /** Expiration timestamp (Unix seconds) */
141
- expiresAt?: number;
142
- }
143
- export interface APIKeyAuthProviderConfig {
144
- /** Map of API key → key info */
145
- keys: Map<string, APIKeyInfo>;
146
- /** Header name to read key from (default: "x-api-key") */
147
- headerName?: string;
148
- /** Query parameter name to read key from (default: "api_key") */
149
- queryParam?: string;
150
- /** Custom key validation function (e.g., for database lookups) */
151
- validate?: (key: string) => Promise<APIKeyInfo | null>;
152
- }
153
- /**
154
- * @deprecated Since v0.4.1. See file-level JSDoc; will be removed in v0.5.
155
- */
156
- export declare class APIKeyAuthProvider implements AuthProvider {
157
- readonly name = "api-key";
158
- private config;
159
- constructor(config: APIKeyAuthProviderConfig);
160
- authenticate(request: AuthRequest): Promise<AuthResult>;
161
- private buildResult;
162
- }