@blokjs/runner 0.6.20 → 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.
- package/dist/Blok.d.ts +2 -0
- package/dist/Blok.js +42 -110
- package/dist/Blok.js.map +1 -1
- package/dist/DefaultLogger.d.ts +13 -0
- package/dist/DefaultLogger.js +25 -0
- package/dist/DefaultLogger.js.map +1 -1
- package/dist/RunnerSteps.d.ts +23 -0
- package/dist/RunnerSteps.js +128 -87
- package/dist/RunnerSteps.js.map +1 -1
- package/dist/SubworkflowNode.js +19 -0
- package/dist/SubworkflowNode.js.map +1 -1
- package/dist/TriggerBase.d.ts +12 -0
- package/dist/TriggerBase.js +216 -181
- package/dist/TriggerBase.js.map +1 -1
- package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +9 -0
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js +76 -6
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -1
- package/dist/index.d.ts +4 -39
- package/dist/index.js +7 -32
- package/dist/index.js.map +1 -1
- package/dist/monitoring/JanitorMetrics.d.ts +3 -0
- package/dist/monitoring/JanitorMetrics.js +11 -0
- package/dist/monitoring/JanitorMetrics.js.map +1 -1
- package/dist/monitoring/ProcessErrorMetrics.d.ts +32 -0
- package/dist/monitoring/ProcessErrorMetrics.js +43 -0
- package/dist/monitoring/ProcessErrorMetrics.js.map +1 -0
- package/dist/monitoring/PrometheusMetricsBridge.d.ts +7 -0
- package/dist/monitoring/PrometheusMetricsBridge.js +8 -2
- package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -1
- package/dist/monitoring/SubworkflowMetrics.d.ts +25 -0
- package/dist/monitoring/SubworkflowMetrics.js +38 -0
- package/dist/monitoring/SubworkflowMetrics.js.map +1 -0
- package/dist/observability/ErrorSink.d.ts +23 -0
- package/dist/observability/ErrorSink.js +32 -0
- package/dist/observability/ErrorSink.js.map +1 -0
- package/dist/observability/SentryIntegration.d.ts +9 -0
- package/dist/observability/SentryIntegration.js +31 -0
- package/dist/observability/SentryIntegration.js.map +1 -0
- package/dist/scheduling/DebounceCoordinator.d.ts +7 -53
- package/dist/scheduling/DebounceCoordinator.js +8 -207
- package/dist/scheduling/DebounceCoordinator.js.map +1 -1
- package/dist/tracing/InMemoryRunStore.d.ts +5 -1
- package/dist/tracing/InMemoryRunStore.js +14 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -1
- package/dist/tracing/Janitor.js +3 -0
- package/dist/tracing/Janitor.js.map +1 -1
- package/dist/tracing/PostgresRunStore.d.ts +4 -1
- package/dist/tracing/PostgresRunStore.js +73 -3
- package/dist/tracing/PostgresRunStore.js.map +1 -1
- package/dist/tracing/RunStore.d.ts +17 -1
- package/dist/tracing/RunTracker.d.ts +13 -34
- package/dist/tracing/RunTracker.js +62 -32
- package/dist/tracing/RunTracker.js.map +1 -1
- package/dist/tracing/SqliteRunStore.d.ts +4 -1
- package/dist/tracing/SqliteRunStore.js +60 -0
- package/dist/tracing/SqliteRunStore.js.map +1 -1
- package/dist/tracing/TraceRouter.d.ts +13 -0
- package/dist/tracing/TraceRouter.js +43 -11
- package/dist/tracing/TraceRouter.js.map +1 -1
- package/dist/tracing/TracingLogger.js +22 -0
- package/dist/tracing/TracingLogger.js.map +1 -1
- package/dist/tracing/createStore.js +51 -22
- package/dist/tracing/createStore.js.map +1 -1
- package/dist/tracing/types.d.ts +22 -0
- package/dist/types/GlobalOptions.d.ts +5 -7
- package/dist/workflow/WorkflowNormalizer.js +63 -0
- package/dist/workflow/WorkflowNormalizer.js.map +1 -1
- package/package.json +7 -4
- package/dist/cache/NodeResultCache.d.ts +0 -286
- package/dist/cache/NodeResultCache.js +0 -506
- package/dist/cache/NodeResultCache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -1
- package/dist/cache/index.js +0 -2
- package/dist/cache/index.js.map +0 -1
- package/dist/concurrency/ConcurrencyBackend.d.ts +0 -61
- package/dist/concurrency/ConcurrencyBackend.js +0 -20
- package/dist/concurrency/ConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +0 -64
- package/dist/concurrency/NatsKvConcurrencyBackend.js +0 -310
- package/dist/concurrency/NatsKvConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/RedisConcurrencyBackend.d.ts +0 -64
- package/dist/concurrency/RedisConcurrencyBackend.js +0 -374
- package/dist/concurrency/RedisConcurrencyBackend.js.map +0 -1
- package/dist/concurrency/createConcurrencyBackend.d.ts +0 -24
- package/dist/concurrency/createConcurrencyBackend.js +0 -38
- package/dist/concurrency/createConcurrencyBackend.js.map +0 -1
- package/dist/graphql/GraphQLSchemaGenerator.d.ts +0 -129
- package/dist/graphql/GraphQLSchemaGenerator.js +0 -425
- package/dist/graphql/GraphQLSchemaGenerator.js.map +0 -1
- package/dist/integrations/APMIntegration.d.ts +0 -141
- package/dist/integrations/APMIntegration.js +0 -212
- package/dist/integrations/APMIntegration.js.map +0 -1
- package/dist/integrations/AzureMonitorIntegration.d.ts +0 -118
- package/dist/integrations/AzureMonitorIntegration.js +0 -254
- package/dist/integrations/AzureMonitorIntegration.js.map +0 -1
- package/dist/integrations/CloudWatchIntegration.d.ts +0 -135
- package/dist/integrations/CloudWatchIntegration.js +0 -293
- package/dist/integrations/CloudWatchIntegration.js.map +0 -1
- package/dist/integrations/SentryIntegration.d.ts +0 -153
- package/dist/integrations/SentryIntegration.js +0 -200
- package/dist/integrations/SentryIntegration.js.map +0 -1
- package/dist/integrations/index.d.ts +0 -19
- package/dist/integrations/index.js +0 -16
- package/dist/integrations/index.js.map +0 -1
- package/dist/marketplace/RuntimeAutoScaler.d.ts +0 -148
- package/dist/marketplace/RuntimeAutoScaler.js +0 -366
- package/dist/marketplace/RuntimeAutoScaler.js.map +0 -1
- package/dist/marketplace/RuntimeCatalog.d.ts +0 -180
- package/dist/marketplace/RuntimeCatalog.js +0 -339
- package/dist/marketplace/RuntimeCatalog.js.map +0 -1
- package/dist/marketplace/RuntimeDiscovery.d.ts +0 -86
- package/dist/marketplace/RuntimeDiscovery.js +0 -231
- package/dist/marketplace/RuntimeDiscovery.js.map +0 -1
- package/dist/marketplace/RuntimeHealthMonitor.d.ts +0 -100
- package/dist/marketplace/RuntimeHealthMonitor.js +0 -241
- package/dist/marketplace/RuntimeHealthMonitor.js.map +0 -1
- package/dist/marketplace/RuntimeMetricsDashboard.d.ts +0 -113
- package/dist/marketplace/RuntimeMetricsDashboard.js +0 -293
- package/dist/marketplace/RuntimeMetricsDashboard.js.map +0 -1
- package/dist/openapi/OpenAPIGenerator.d.ts +0 -192
- package/dist/openapi/OpenAPIGenerator.js +0 -378
- package/dist/openapi/OpenAPIGenerator.js.map +0 -1
- package/dist/openapi/index.d.ts +0 -20
- package/dist/openapi/index.js +0 -20
- package/dist/openapi/index.js.map +0 -1
- package/dist/scheduling/DebounceBackend.d.ts +0 -108
- package/dist/scheduling/DebounceBackend.js +0 -23
- package/dist/scheduling/DebounceBackend.js.map +0 -1
- package/dist/scheduling/NatsKvDebounceBackend.d.ts +0 -53
- package/dist/scheduling/NatsKvDebounceBackend.js +0 -334
- package/dist/scheduling/NatsKvDebounceBackend.js.map +0 -1
- package/dist/scheduling/RedisDebounceBackend.d.ts +0 -49
- package/dist/scheduling/RedisDebounceBackend.js +0 -356
- package/dist/scheduling/RedisDebounceBackend.js.map +0 -1
- package/dist/scheduling/createDebounceBackend.d.ts +0 -25
- package/dist/scheduling/createDebounceBackend.js +0 -39
- package/dist/scheduling/createDebounceBackend.js.map +0 -1
- package/dist/security/ABAC.d.ts +0 -224
- package/dist/security/ABAC.js +0 -380
- package/dist/security/ABAC.js.map +0 -1
- package/dist/security/AuditLogger.d.ts +0 -242
- package/dist/security/AuditLogger.js +0 -317
- package/dist/security/AuditLogger.js.map +0 -1
- package/dist/security/AuthMiddleware.d.ts +0 -162
- package/dist/security/AuthMiddleware.js +0 -289
- package/dist/security/AuthMiddleware.js.map +0 -1
- package/dist/security/EncryptionAtRest.d.ts +0 -206
- package/dist/security/EncryptionAtRest.js +0 -236
- package/dist/security/EncryptionAtRest.js.map +0 -1
- package/dist/security/OAuthProvider.d.ts +0 -334
- package/dist/security/OAuthProvider.js +0 -719
- package/dist/security/OAuthProvider.js.map +0 -1
- package/dist/security/PIIDetector.d.ts +0 -233
- package/dist/security/PIIDetector.js +0 -354
- package/dist/security/PIIDetector.js.map +0 -1
- package/dist/security/RBAC.d.ts +0 -143
- package/dist/security/RBAC.js +0 -285
- package/dist/security/RBAC.js.map +0 -1
- package/dist/security/SecretManager.d.ts +0 -652
- package/dist/security/SecretManager.js +0 -1147
- package/dist/security/SecretManager.js.map +0 -1
- package/dist/security/TLSConfig.d.ts +0 -305
- package/dist/security/TLSConfig.js +0 -550
- package/dist/security/TLSConfig.js.map +0 -1
- package/dist/security/index.d.ts +0 -81
- package/dist/security/index.js +0 -82
- 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
|
-
}
|