@blokjs/runner 0.2.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 +19 -0
- package/dist/Blok.js +184 -0
- package/dist/Blok.js.map +1 -0
- package/dist/BlokResponse.d.ts +16 -0
- package/dist/BlokResponse.js +28 -0
- package/dist/BlokResponse.js.map +1 -0
- package/dist/Configuration.d.ts +37 -0
- package/dist/Configuration.js +248 -0
- package/dist/Configuration.js.map +1 -0
- package/dist/ConfigurationResolver.d.ts +7 -0
- package/dist/ConfigurationResolver.js +15 -0
- package/dist/ConfigurationResolver.js.map +1 -0
- package/dist/DefaultLogger.d.ts +65 -0
- package/dist/DefaultLogger.js +101 -0
- package/dist/DefaultLogger.js.map +1 -0
- package/dist/LocalStorage.d.ts +7 -0
- package/dist/LocalStorage.js +56 -0
- package/dist/LocalStorage.js.map +1 -0
- package/dist/MemoryUsage.d.ts +22 -0
- package/dist/MemoryUsage.js +83 -0
- package/dist/MemoryUsage.js.map +1 -0
- package/dist/NodeMap.d.ts +7 -0
- package/dist/NodeMap.js +13 -0
- package/dist/NodeMap.js.map +1 -0
- package/dist/ResolverBase.d.ts +8 -0
- package/dist/ResolverBase.js +18 -0
- package/dist/ResolverBase.js.map +1 -0
- package/dist/Runner.d.ts +25 -0
- package/dist/Runner.js +32 -0
- package/dist/Runner.js.map +1 -0
- package/dist/RunnerNode.d.ts +9 -0
- package/dist/RunnerNode.js +8 -0
- package/dist/RunnerNode.js.map +1 -0
- package/dist/RunnerNodeBase.d.ts +4 -0
- package/dist/RunnerNodeBase.js +3 -0
- package/dist/RunnerNodeBase.js.map +1 -0
- package/dist/RunnerSteps.d.ts +14 -0
- package/dist/RunnerSteps.js +110 -0
- package/dist/RunnerSteps.js.map +1 -0
- package/dist/RuntimeAdapterNode.d.ts +19 -0
- package/dist/RuntimeAdapterNode.js +87 -0
- package/dist/RuntimeAdapterNode.js.map +1 -0
- package/dist/RuntimeRegistry.d.ts +61 -0
- package/dist/RuntimeRegistry.js +87 -0
- package/dist/RuntimeRegistry.js.map +1 -0
- package/dist/TriggerBase.d.ts +119 -0
- package/dist/TriggerBase.js +413 -0
- package/dist/TriggerBase.js.map +1 -0
- package/dist/adapters/BunRuntimeAdapter.d.ts +38 -0
- package/dist/adapters/BunRuntimeAdapter.js +169 -0
- package/dist/adapters/BunRuntimeAdapter.js.map +1 -0
- package/dist/adapters/DockerRuntimeAdapter.d.ts +85 -0
- package/dist/adapters/DockerRuntimeAdapter.js +298 -0
- package/dist/adapters/DockerRuntimeAdapter.js.map +1 -0
- package/dist/adapters/HttpRuntimeAdapter.d.ts +58 -0
- package/dist/adapters/HttpRuntimeAdapter.js +152 -0
- package/dist/adapters/HttpRuntimeAdapter.js.map +1 -0
- package/dist/adapters/NodeJsRuntimeAdapter.d.ts +23 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js +67 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -0
- package/dist/adapters/RuntimeAdapter.d.ts +42 -0
- package/dist/adapters/RuntimeAdapter.js +2 -0
- package/dist/adapters/RuntimeAdapter.js.map +1 -0
- package/dist/adapters/WasmRuntimeAdapter.d.ts +69 -0
- package/dist/adapters/WasmRuntimeAdapter.js +279 -0
- package/dist/adapters/WasmRuntimeAdapter.js.map +1 -0
- package/dist/cache/NodeResultCache.d.ts +286 -0
- package/dist/cache/NodeResultCache.js +499 -0
- package/dist/cache/NodeResultCache.js.map +1 -0
- package/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cost/CostEstimator.d.ts +57 -0
- package/dist/cost/CostEstimator.js +171 -0
- package/dist/cost/CostEstimator.js.map +1 -0
- package/dist/cost/index.d.ts +4 -0
- package/dist/cost/index.js +3 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/pricing.d.ts +24 -0
- package/dist/cost/pricing.js +169 -0
- package/dist/cost/pricing.js.map +1 -0
- package/dist/defineNode.d.ts +155 -0
- package/dist/defineNode.js +191 -0
- package/dist/defineNode.js.map +1 -0
- package/dist/graphql/GraphQLSchemaGenerator.d.ts +129 -0
- package/dist/graphql/GraphQLSchemaGenerator.js +425 -0
- package/dist/graphql/GraphQLSchemaGenerator.js.map +1 -0
- package/dist/hmr/FileWatcher.d.ts +62 -0
- package/dist/hmr/FileWatcher.js +185 -0
- package/dist/hmr/FileWatcher.js.map +1 -0
- package/dist/hmr/HmrDevConsole.d.ts +13 -0
- package/dist/hmr/HmrDevConsole.js +46 -0
- package/dist/hmr/HmrDevConsole.js.map +1 -0
- package/dist/hmr/HotReloadManager.d.ts +84 -0
- package/dist/hmr/HotReloadManager.js +195 -0
- package/dist/hmr/HotReloadManager.js.map +1 -0
- package/dist/hmr/index.d.ts +39 -0
- package/dist/hmr/index.js +38 -0
- package/dist/hmr/index.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/APMIntegration.d.ts +141 -0
- package/dist/integrations/APMIntegration.js +212 -0
- package/dist/integrations/APMIntegration.js.map +1 -0
- package/dist/integrations/AzureMonitorIntegration.d.ts +118 -0
- package/dist/integrations/AzureMonitorIntegration.js +254 -0
- package/dist/integrations/AzureMonitorIntegration.js.map +1 -0
- package/dist/integrations/CloudWatchIntegration.d.ts +135 -0
- package/dist/integrations/CloudWatchIntegration.js +293 -0
- package/dist/integrations/CloudWatchIntegration.js.map +1 -0
- package/dist/integrations/SentryIntegration.d.ts +153 -0
- package/dist/integrations/SentryIntegration.js +200 -0
- package/dist/integrations/SentryIntegration.js.map +1 -0
- package/dist/integrations/index.d.ts +19 -0
- package/dist/integrations/index.js +16 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/marketplace/RuntimeAutoScaler.d.ts +148 -0
- package/dist/marketplace/RuntimeAutoScaler.js +366 -0
- package/dist/marketplace/RuntimeAutoScaler.js.map +1 -0
- package/dist/marketplace/RuntimeCatalog.d.ts +174 -0
- package/dist/marketplace/RuntimeCatalog.js +339 -0
- package/dist/marketplace/RuntimeCatalog.js.map +1 -0
- package/dist/marketplace/RuntimeDiscovery.d.ts +86 -0
- package/dist/marketplace/RuntimeDiscovery.js +219 -0
- package/dist/marketplace/RuntimeDiscovery.js.map +1 -0
- package/dist/marketplace/RuntimeHealthMonitor.d.ts +100 -0
- package/dist/marketplace/RuntimeHealthMonitor.js +241 -0
- package/dist/marketplace/RuntimeHealthMonitor.js.map +1 -0
- package/dist/marketplace/RuntimeMetricsDashboard.d.ts +113 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js +293 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js.map +1 -0
- package/dist/monitoring/CircuitBreaker.d.ts +107 -0
- package/dist/monitoring/CircuitBreaker.js +238 -0
- package/dist/monitoring/CircuitBreaker.js.map +1 -0
- package/dist/monitoring/DistributedTracer.d.ts +125 -0
- package/dist/monitoring/DistributedTracer.js +230 -0
- package/dist/monitoring/DistributedTracer.js.map +1 -0
- package/dist/monitoring/HealthCheck.d.ts +54 -0
- package/dist/monitoring/HealthCheck.js +102 -0
- package/dist/monitoring/HealthCheck.js.map +1 -0
- package/dist/monitoring/PerformanceProfiler.d.ts +63 -0
- package/dist/monitoring/PerformanceProfiler.js +229 -0
- package/dist/monitoring/PerformanceProfiler.js.map +1 -0
- package/dist/monitoring/PrometheusBootstrap.d.ts +30 -0
- package/dist/monitoring/PrometheusBootstrap.js +71 -0
- package/dist/monitoring/PrometheusBootstrap.js.map +1 -0
- package/dist/monitoring/PrometheusMetricsBridge.d.ts +60 -0
- package/dist/monitoring/PrometheusMetricsBridge.js +216 -0
- package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -0
- package/dist/monitoring/RateLimiter.d.ts +58 -0
- package/dist/monitoring/RateLimiter.js +128 -0
- package/dist/monitoring/RateLimiter.js.map +1 -0
- package/dist/monitoring/StructuredLogger.d.ts +131 -0
- package/dist/monitoring/StructuredLogger.js +207 -0
- package/dist/monitoring/StructuredLogger.js.map +1 -0
- package/dist/monitoring/TracingBootstrap.d.ts +69 -0
- package/dist/monitoring/TracingBootstrap.js +129 -0
- package/dist/monitoring/TracingBootstrap.js.map +1 -0
- package/dist/monitoring/TriggerMetricsCollector.d.ts +94 -0
- package/dist/monitoring/TriggerMetricsCollector.js +174 -0
- package/dist/monitoring/TriggerMetricsCollector.js.map +1 -0
- package/dist/monitoring/index.d.ts +9 -0
- package/dist/monitoring/index.js +10 -0
- package/dist/monitoring/index.js.map +1 -0
- package/dist/openapi/OpenAPIGenerator.d.ts +192 -0
- package/dist/openapi/OpenAPIGenerator.js +373 -0
- package/dist/openapi/OpenAPIGenerator.js.map +1 -0
- package/dist/openapi/index.d.ts +20 -0
- package/dist/openapi/index.js +20 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/security/ABAC.d.ts +224 -0
- package/dist/security/ABAC.js +380 -0
- package/dist/security/ABAC.js.map +1 -0
- package/dist/security/AuditLogger.d.ts +242 -0
- package/dist/security/AuditLogger.js +317 -0
- package/dist/security/AuditLogger.js.map +1 -0
- package/dist/security/AuthMiddleware.d.ts +163 -0
- package/dist/security/AuthMiddleware.js +274 -0
- package/dist/security/AuthMiddleware.js.map +1 -0
- package/dist/security/EncryptionAtRest.d.ts +206 -0
- package/dist/security/EncryptionAtRest.js +236 -0
- package/dist/security/EncryptionAtRest.js.map +1 -0
- package/dist/security/OAuthProvider.d.ts +334 -0
- package/dist/security/OAuthProvider.js +719 -0
- package/dist/security/OAuthProvider.js.map +1 -0
- package/dist/security/PIIDetector.d.ts +233 -0
- package/dist/security/PIIDetector.js +354 -0
- package/dist/security/PIIDetector.js.map +1 -0
- package/dist/security/RBAC.d.ts +143 -0
- package/dist/security/RBAC.js +285 -0
- package/dist/security/RBAC.js.map +1 -0
- package/dist/security/SecretManager.d.ts +652 -0
- package/dist/security/SecretManager.js +1146 -0
- package/dist/security/SecretManager.js.map +1 -0
- package/dist/security/TLSConfig.d.ts +305 -0
- package/dist/security/TLSConfig.js +550 -0
- package/dist/security/TLSConfig.js.map +1 -0
- package/dist/security/index.d.ts +79 -0
- package/dist/security/index.js +80 -0
- package/dist/security/index.js.map +1 -0
- package/dist/testing/TestHarness.d.ts +189 -0
- package/dist/testing/TestHarness.js +272 -0
- package/dist/testing/TestHarness.js.map +1 -0
- package/dist/testing/TestLogger.d.ts +103 -0
- package/dist/testing/TestLogger.js +153 -0
- package/dist/testing/TestLogger.js.map +1 -0
- package/dist/testing/WorkflowTestRunner.d.ts +172 -0
- package/dist/testing/WorkflowTestRunner.js +355 -0
- package/dist/testing/WorkflowTestRunner.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.js +22 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tracing/InMemoryRunStore.d.ts +44 -0
- package/dist/tracing/InMemoryRunStore.js +341 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -0
- package/dist/tracing/PostgresRunStore.d.ts +82 -0
- package/dist/tracing/PostgresRunStore.js +640 -0
- package/dist/tracing/PostgresRunStore.js.map +1 -0
- package/dist/tracing/RunStore.d.ts +38 -0
- package/dist/tracing/RunStore.js +2 -0
- package/dist/tracing/RunStore.js.map +1 -0
- package/dist/tracing/RunTracker.d.ts +75 -0
- package/dist/tracing/RunTracker.js +374 -0
- package/dist/tracing/RunTracker.js.map +1 -0
- package/dist/tracing/SqliteRunStore.d.ts +53 -0
- package/dist/tracing/SqliteRunStore.js +703 -0
- package/dist/tracing/SqliteRunStore.js.map +1 -0
- package/dist/tracing/TraceRouter.d.ts +47 -0
- package/dist/tracing/TraceRouter.js +904 -0
- package/dist/tracing/TraceRouter.js.map +1 -0
- package/dist/tracing/TracingLogger.d.ts +21 -0
- package/dist/tracing/TracingLogger.js +62 -0
- package/dist/tracing/TracingLogger.js.map +1 -0
- package/dist/tracing/createStore.d.ts +30 -0
- package/dist/tracing/createStore.js +75 -0
- package/dist/tracing/createStore.js.map +1 -0
- package/dist/tracing/index.d.ts +13 -0
- package/dist/tracing/index.js +9 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/sanitize.d.ts +7 -0
- package/dist/tracing/sanitize.js +95 -0
- package/dist/tracing/sanitize.js.map +1 -0
- package/dist/tracing/types.d.ts +178 -0
- package/dist/tracing/types.js +3 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types/Average.d.ts +11 -0
- package/dist/types/Average.js +2 -0
- package/dist/types/Average.js.map +1 -0
- package/dist/types/Condition.d.ts +8 -0
- package/dist/types/Condition.js +2 -0
- package/dist/types/Condition.js.map +1 -0
- package/dist/types/Conditions.d.ts +5 -0
- package/dist/types/Conditions.js +2 -0
- package/dist/types/Conditions.js.map +1 -0
- package/dist/types/Config.d.ts +12 -0
- package/dist/types/Config.js +2 -0
- package/dist/types/Config.js.map +1 -0
- package/dist/types/Flow.d.ts +5 -0
- package/dist/types/Flow.js +2 -0
- package/dist/types/Flow.js.map +1 -0
- package/dist/types/GlobalOptions.d.ts +11 -0
- package/dist/types/GlobalOptions.js +2 -0
- package/dist/types/GlobalOptions.js.map +1 -0
- package/dist/types/Inputs.d.ts +5 -0
- package/dist/types/Inputs.js +2 -0
- package/dist/types/Inputs.js.map +1 -0
- package/dist/types/JsonLikeObject.d.ts +3 -0
- package/dist/types/JsonLikeObject.js +2 -0
- package/dist/types/JsonLikeObject.js.map +1 -0
- package/dist/types/Mapper.d.ts +5 -0
- package/dist/types/Mapper.js +2 -0
- package/dist/types/Mapper.js.map +1 -0
- package/dist/types/Node.d.ts +10 -0
- package/dist/types/Node.js +2 -0
- package/dist/types/Node.js.map +1 -0
- package/dist/types/ParamsDictionary.d.ts +3 -0
- package/dist/types/ParamsDictionary.js +2 -0
- package/dist/types/ParamsDictionary.js.map +1 -0
- package/dist/types/Properties.d.ts +5 -0
- package/dist/types/Properties.js +2 -0
- package/dist/types/Properties.js.map +1 -0
- package/dist/types/Targets.d.ts +5 -0
- package/dist/types/Targets.js +2 -0
- package/dist/types/Targets.js.map +1 -0
- package/dist/types/Trigger.d.ts +5 -0
- package/dist/types/Trigger.js +2 -0
- package/dist/types/Trigger.js.map +1 -0
- package/dist/types/TriggerHttp.d.ts +7 -0
- package/dist/types/TriggerHttp.js +2 -0
- package/dist/types/TriggerHttp.js.map +1 -0
- package/dist/types/TriggerResponse.d.ts +6 -0
- package/dist/types/TriggerResponse.js +2 -0
- package/dist/types/TriggerResponse.js.map +1 -0
- package/dist/types/Triggers.d.ts +5 -0
- package/dist/types/Triggers.js +2 -0
- package/dist/types/Triggers.js.map +1 -0
- package/dist/types/TryCatch.d.ts +6 -0
- package/dist/types/TryCatch.js +2 -0
- package/dist/types/TryCatch.js.map +1 -0
- package/dist/visualization/NodeDependencyGraph.d.ts +76 -0
- package/dist/visualization/NodeDependencyGraph.js +418 -0
- package/dist/visualization/NodeDependencyGraph.js.map +1 -0
- package/dist/visualization/WorkflowVisualizer.d.ts +144 -0
- package/dist/visualization/WorkflowVisualizer.js +446 -0
- package/dist/visualization/WorkflowVisualizer.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TLS/SSL Configuration for Blok Framework
|
|
3
|
+
*
|
|
4
|
+
* Manages TLS certificate and cipher configuration for secure communications:
|
|
5
|
+
* - Server-side TLS options for Node.js HTTPS/TLS servers
|
|
6
|
+
* - Client-side TLS options for outbound connections
|
|
7
|
+
* - Certificate validation (expiry, chain integrity, cipher strength)
|
|
8
|
+
* - Certificate info parsing (subject, issuer, serial, fingerprint)
|
|
9
|
+
* - Mutual TLS (mTLS) support with client certificate verification
|
|
10
|
+
* - Self-signed certificate generation for development and testing
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { TLSConfig } from "@blokjs/runner";
|
|
15
|
+
*
|
|
16
|
+
* // Production TLS setup
|
|
17
|
+
* const tls = new TLSConfig({
|
|
18
|
+
* certPath: "/etc/ssl/certs/server.crt",
|
|
19
|
+
* keyPath: "/etc/ssl/private/server.key",
|
|
20
|
+
* caPath: "/etc/ssl/certs/ca.crt",
|
|
21
|
+
* minVersion: "TLSv1.2",
|
|
22
|
+
* mutualTLS: { enabled: true, caPath: "/etc/ssl/certs/client-ca.crt" },
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Use with Node.js HTTPS server
|
|
26
|
+
* const serverOpts = tls.createServerOptions();
|
|
27
|
+
* const server = https.createServer(serverOpts, app);
|
|
28
|
+
*
|
|
29
|
+
* // Validate certificates
|
|
30
|
+
* const validation = tls.validate();
|
|
31
|
+
* if (!validation.valid) {
|
|
32
|
+
* console.error("TLS validation failed:", validation.errors);
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // Generate self-signed cert for development
|
|
36
|
+
* const { cert, key } = TLSConfig.generateSelfSigned({
|
|
37
|
+
* commonName: "localhost",
|
|
38
|
+
* days: 365,
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
import { X509Certificate, createPrivateKey, createSign, randomBytes as cryptoRandomBytes, generateKeyPairSync, } from "node:crypto";
|
|
43
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Implementation
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
/**
|
|
48
|
+
* Manages TLS/SSL configuration for secure communications.
|
|
49
|
+
*
|
|
50
|
+
* Supports server-side and client-side TLS setup, certificate inspection,
|
|
51
|
+
* validation, mutual TLS, and self-signed certificate generation for
|
|
52
|
+
* development environments.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const tls = new TLSConfig({
|
|
57
|
+
* certPath: "./certs/server.crt",
|
|
58
|
+
* keyPath: "./certs/server.key",
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* if (tls.isExpiringSoon(30)) {
|
|
62
|
+
* console.warn("Certificate expires within 30 days!");
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export class TLSConfig {
|
|
67
|
+
options;
|
|
68
|
+
cachedCert;
|
|
69
|
+
cachedKey;
|
|
70
|
+
cachedCa;
|
|
71
|
+
/**
|
|
72
|
+
* Create a new TLSConfig instance.
|
|
73
|
+
*
|
|
74
|
+
* @param options - TLS configuration options
|
|
75
|
+
*/
|
|
76
|
+
constructor(options) {
|
|
77
|
+
this.options = {
|
|
78
|
+
minVersion: "TLSv1.2",
|
|
79
|
+
maxVersion: "TLSv1.3",
|
|
80
|
+
rejectUnauthorized: true,
|
|
81
|
+
...options,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// -----------------------------------------------------------------------
|
|
85
|
+
// Public API
|
|
86
|
+
// -----------------------------------------------------------------------
|
|
87
|
+
/**
|
|
88
|
+
* Create TLS options suitable for a Node.js HTTPS or TLS server.
|
|
89
|
+
*
|
|
90
|
+
* The returned object can be passed directly to
|
|
91
|
+
* `https.createServer(options)` or `tls.createServer(options)`.
|
|
92
|
+
*
|
|
93
|
+
* @returns TLS options for server-side use
|
|
94
|
+
* @throws {Error} If required certificate or key cannot be loaded
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const serverOpts = tlsConfig.createServerOptions();
|
|
99
|
+
* const server = https.createServer(serverOpts, requestHandler);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
createServerOptions() {
|
|
103
|
+
const cert = this.loadCert();
|
|
104
|
+
const key = this.loadKey();
|
|
105
|
+
const ca = this.loadCA();
|
|
106
|
+
const opts = {
|
|
107
|
+
cert,
|
|
108
|
+
key,
|
|
109
|
+
minVersion: this.options.minVersion,
|
|
110
|
+
maxVersion: this.options.maxVersion,
|
|
111
|
+
};
|
|
112
|
+
if (this.options.keyPassphrase) {
|
|
113
|
+
opts.passphrase = this.options.keyPassphrase;
|
|
114
|
+
}
|
|
115
|
+
if (ca) {
|
|
116
|
+
opts.ca = ca;
|
|
117
|
+
}
|
|
118
|
+
if (this.options.ciphers) {
|
|
119
|
+
opts.ciphers = this.options.ciphers;
|
|
120
|
+
}
|
|
121
|
+
// Mutual TLS: request and verify client certificates
|
|
122
|
+
if (this.options.mutualTLS?.enabled) {
|
|
123
|
+
opts.requestCert = true;
|
|
124
|
+
opts.rejectUnauthorized = this.options.mutualTLS.rejectUnauthorized ?? true;
|
|
125
|
+
const mTlsCa = this.loadMutualTLSCA();
|
|
126
|
+
if (mTlsCa) {
|
|
127
|
+
opts.ca = mTlsCa;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return opts;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create TLS options suitable for outbound client connections.
|
|
134
|
+
*
|
|
135
|
+
* The returned object can be passed to `tls.connect(options)` or used
|
|
136
|
+
* with HTTPS client libraries.
|
|
137
|
+
*
|
|
138
|
+
* @returns TLS connection options for client-side use
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const clientOpts = tlsConfig.createClientOptions();
|
|
143
|
+
* const socket = tls.connect(443, "example.com", clientOpts);
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
createClientOptions() {
|
|
147
|
+
const opts = {
|
|
148
|
+
minVersion: this.options.minVersion,
|
|
149
|
+
maxVersion: this.options.maxVersion,
|
|
150
|
+
rejectUnauthorized: this.options.rejectUnauthorized,
|
|
151
|
+
};
|
|
152
|
+
const ca = this.loadCA();
|
|
153
|
+
if (ca) {
|
|
154
|
+
opts.ca = ca;
|
|
155
|
+
}
|
|
156
|
+
// For mTLS, include client cert and key
|
|
157
|
+
if (this.options.mutualTLS?.enabled) {
|
|
158
|
+
const cert = this.loadCert();
|
|
159
|
+
const key = this.loadKey();
|
|
160
|
+
if (cert)
|
|
161
|
+
opts.cert = cert;
|
|
162
|
+
if (key)
|
|
163
|
+
opts.key = key;
|
|
164
|
+
if (this.options.keyPassphrase) {
|
|
165
|
+
opts.passphrase = this.options.keyPassphrase;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (this.options.ciphers) {
|
|
169
|
+
opts.ciphers = this.options.ciphers;
|
|
170
|
+
}
|
|
171
|
+
return opts;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validate the current TLS configuration.
|
|
175
|
+
*
|
|
176
|
+
* Checks for:
|
|
177
|
+
* - Certificate and key file existence
|
|
178
|
+
* - Certificate parsing validity
|
|
179
|
+
* - Certificate expiry (error if expired, warning if < 30 days)
|
|
180
|
+
* - Key/cert pair consistency
|
|
181
|
+
* - Mutual TLS CA availability
|
|
182
|
+
*
|
|
183
|
+
* @returns A {@link TLSValidationResult} with errors and warnings
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const result = tlsConfig.validate();
|
|
188
|
+
* if (!result.valid) {
|
|
189
|
+
* result.errors.forEach(e => console.error(e));
|
|
190
|
+
* }
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
validate() {
|
|
194
|
+
const errors = [];
|
|
195
|
+
const warnings = [];
|
|
196
|
+
// Check file existence
|
|
197
|
+
if (this.options.certPath && !existsSync(this.options.certPath)) {
|
|
198
|
+
errors.push(`Certificate file not found: ${this.options.certPath}`);
|
|
199
|
+
}
|
|
200
|
+
if (this.options.keyPath && !existsSync(this.options.keyPath)) {
|
|
201
|
+
errors.push(`Private key file not found: ${this.options.keyPath}`);
|
|
202
|
+
}
|
|
203
|
+
if (this.options.caPath && !existsSync(this.options.caPath)) {
|
|
204
|
+
warnings.push(`CA file not found: ${this.options.caPath}`);
|
|
205
|
+
}
|
|
206
|
+
// Validate certificate
|
|
207
|
+
try {
|
|
208
|
+
const certPem = this.loadCert();
|
|
209
|
+
if (certPem) {
|
|
210
|
+
const x509 = new X509Certificate(certPem);
|
|
211
|
+
const now = new Date();
|
|
212
|
+
const validTo = new Date(x509.validTo);
|
|
213
|
+
const validFrom = new Date(x509.validFrom);
|
|
214
|
+
if (now < validFrom) {
|
|
215
|
+
errors.push(`Certificate is not yet valid (validFrom: ${validFrom.toISOString()})`);
|
|
216
|
+
}
|
|
217
|
+
if (now > validTo) {
|
|
218
|
+
errors.push(`Certificate has expired (validTo: ${validTo.toISOString()})`);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const daysUntilExpiry = Math.floor((validTo.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
222
|
+
if (daysUntilExpiry <= 30) {
|
|
223
|
+
warnings.push(`Certificate expires in ${daysUntilExpiry} days (${validTo.toISOString()})`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (!this.options.cert && !this.options.certPath) {
|
|
228
|
+
errors.push("No certificate configured (cert or certPath required)");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
errors.push(`Failed to parse certificate: ${err instanceof Error ? err.message : String(err)}`);
|
|
233
|
+
}
|
|
234
|
+
// Validate private key
|
|
235
|
+
try {
|
|
236
|
+
const keyPem = this.loadKey();
|
|
237
|
+
if (keyPem) {
|
|
238
|
+
createPrivateKey({
|
|
239
|
+
key: keyPem,
|
|
240
|
+
passphrase: this.options.keyPassphrase,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else if (!this.options.key && !this.options.keyPath) {
|
|
244
|
+
errors.push("No private key configured (key or keyPath required)");
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
errors.push(`Failed to parse private key: ${err instanceof Error ? err.message : String(err)}`);
|
|
249
|
+
}
|
|
250
|
+
// Validate mTLS CA
|
|
251
|
+
if (this.options.mutualTLS?.enabled) {
|
|
252
|
+
const mTlsCaPath = this.options.mutualTLS.caPath;
|
|
253
|
+
if (mTlsCaPath && !existsSync(mTlsCaPath) && !this.options.mutualTLS.ca) {
|
|
254
|
+
errors.push(`Mutual TLS CA file not found: ${mTlsCaPath}`);
|
|
255
|
+
}
|
|
256
|
+
if (!mTlsCaPath && !this.options.mutualTLS.ca) {
|
|
257
|
+
warnings.push("Mutual TLS enabled but no client CA configured");
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
valid: errors.length === 0,
|
|
262
|
+
errors,
|
|
263
|
+
warnings,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Parse and return detailed information about the server certificate.
|
|
268
|
+
*
|
|
269
|
+
* @returns Parsed {@link CertificateInfo}
|
|
270
|
+
* @throws {Error} If no certificate is configured or parsing fails
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* ```typescript
|
|
274
|
+
* const info = tlsConfig.getCertificateInfo();
|
|
275
|
+
* console.log(info.subject); // "CN=example.com"
|
|
276
|
+
* console.log(info.validTo); // Date object
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
getCertificateInfo() {
|
|
280
|
+
const certPem = this.loadCert();
|
|
281
|
+
if (!certPem) {
|
|
282
|
+
throw new Error("No certificate configured; cannot retrieve certificate info");
|
|
283
|
+
}
|
|
284
|
+
const x509 = new X509Certificate(certPem);
|
|
285
|
+
return {
|
|
286
|
+
subject: x509.subject,
|
|
287
|
+
issuer: x509.issuer,
|
|
288
|
+
validFrom: new Date(x509.validFrom),
|
|
289
|
+
validTo: new Date(x509.validTo),
|
|
290
|
+
serialNumber: x509.serialNumber,
|
|
291
|
+
fingerprint: x509.fingerprint256,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Check whether the server certificate expires within a given number of
|
|
296
|
+
* days.
|
|
297
|
+
*
|
|
298
|
+
* @param days - Number of days to check against
|
|
299
|
+
* @returns True if the certificate expires within the specified number of days
|
|
300
|
+
* @throws {Error} If no certificate is configured
|
|
301
|
+
*
|
|
302
|
+
* @example
|
|
303
|
+
* ```typescript
|
|
304
|
+
* if (tlsConfig.isExpiringSoon(30)) {
|
|
305
|
+
* console.warn("Certificate expires within 30 days!");
|
|
306
|
+
* }
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
isExpiringSoon(days) {
|
|
310
|
+
const info = this.getCertificateInfo();
|
|
311
|
+
const now = new Date();
|
|
312
|
+
const msUntilExpiry = info.validTo.getTime() - now.getTime();
|
|
313
|
+
const daysUntilExpiry = msUntilExpiry / (1000 * 60 * 60 * 24);
|
|
314
|
+
return daysUntilExpiry <= days;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Generate a self-signed certificate for development and testing.
|
|
318
|
+
*
|
|
319
|
+
* This is a static method that does not require a TLSConfig instance.
|
|
320
|
+
* The generated certificate uses RSA key pair and SHA-256 signing.
|
|
321
|
+
*
|
|
322
|
+
* **WARNING**: Self-signed certificates should NEVER be used in production.
|
|
323
|
+
*
|
|
324
|
+
* @param opts - Self-signed certificate generation options
|
|
325
|
+
* @returns Object containing PEM-encoded certificate and private key
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```typescript
|
|
329
|
+
* const { cert, key } = TLSConfig.generateSelfSigned({
|
|
330
|
+
* commonName: "localhost",
|
|
331
|
+
* days: 30,
|
|
332
|
+
* bits: 2048,
|
|
333
|
+
* });
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
static generateSelfSigned(opts) {
|
|
337
|
+
const bits = opts.bits ?? 2048;
|
|
338
|
+
const days = opts.days ?? 365;
|
|
339
|
+
// Generate RSA key pair
|
|
340
|
+
const { privateKey, publicKey } = generateKeyPairSync("rsa", {
|
|
341
|
+
modulusLength: bits,
|
|
342
|
+
publicKeyEncoding: { type: "spki", format: "pem" },
|
|
343
|
+
privateKeyEncoding: { type: "pkcs8", format: "pem" },
|
|
344
|
+
});
|
|
345
|
+
// Build a minimal self-signed X.509 v3 certificate using Node.js crypto
|
|
346
|
+
// Node.js 20+ supports X509Certificate creation, but for broader
|
|
347
|
+
// compatibility we construct a PEM manually using the crypto module's
|
|
348
|
+
// sign capabilities.
|
|
349
|
+
//
|
|
350
|
+
// For simplicity, we use the `node:crypto` createSign API to produce
|
|
351
|
+
// a DER-encoded self-signed cert. In practice, libraries like
|
|
352
|
+
// `selfsigned` or `node-forge` are often used. This implementation
|
|
353
|
+
// provides a functional placeholder that works with Node.js built-ins.
|
|
354
|
+
// Serial number (20 bytes, positive)
|
|
355
|
+
const serial = cryptoRandomBytes(20);
|
|
356
|
+
serial[0] = serial[0] & 0x7f; // Ensure positive
|
|
357
|
+
const notBefore = new Date();
|
|
358
|
+
const notAfter = new Date(notBefore.getTime() + days * 24 * 60 * 60 * 1000);
|
|
359
|
+
// Construct a simplified ASN.1 DER self-signed certificate
|
|
360
|
+
// This uses a minimal approach; for production, use a proper library.
|
|
361
|
+
const cn = opts.commonName;
|
|
362
|
+
// Encode subject/issuer distinguished name
|
|
363
|
+
const encodeDN = (commonName) => {
|
|
364
|
+
const cnBytes = Buffer.from(commonName, "utf8");
|
|
365
|
+
// OID 2.5.4.3 (CN) = 55 04 03
|
|
366
|
+
const oid = Buffer.from([0x06, 0x03, 0x55, 0x04, 0x03]);
|
|
367
|
+
const cnValue = Buffer.concat([Buffer.from([0x0c, cnBytes.length]), cnBytes]);
|
|
368
|
+
const atv = Buffer.concat([oid, cnValue]);
|
|
369
|
+
const atvSeq = wrapSequence(atv);
|
|
370
|
+
const rdnSet = wrapSet(atvSeq);
|
|
371
|
+
return wrapSequence(rdnSet);
|
|
372
|
+
};
|
|
373
|
+
const encodeTime = (date) => {
|
|
374
|
+
const y = date.getUTCFullYear();
|
|
375
|
+
let timeStr;
|
|
376
|
+
let tag;
|
|
377
|
+
if (y < 2050) {
|
|
378
|
+
// UTCTime YYMMDDHHMMSSZ
|
|
379
|
+
timeStr = `${String(y % 100).padStart(2, "0") +
|
|
380
|
+
String(date.getUTCMonth() + 1).padStart(2, "0") +
|
|
381
|
+
String(date.getUTCDate()).padStart(2, "0") +
|
|
382
|
+
String(date.getUTCHours()).padStart(2, "0") +
|
|
383
|
+
String(date.getUTCMinutes()).padStart(2, "0") +
|
|
384
|
+
String(date.getUTCSeconds()).padStart(2, "0")}Z`;
|
|
385
|
+
tag = 0x17;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
// GeneralizedTime YYYYMMDDHHMMSSZ
|
|
389
|
+
timeStr = `${String(y) +
|
|
390
|
+
String(date.getUTCMonth() + 1).padStart(2, "0") +
|
|
391
|
+
String(date.getUTCDate()).padStart(2, "0") +
|
|
392
|
+
String(date.getUTCHours()).padStart(2, "0") +
|
|
393
|
+
String(date.getUTCMinutes()).padStart(2, "0") +
|
|
394
|
+
String(date.getUTCSeconds()).padStart(2, "0")}Z`;
|
|
395
|
+
tag = 0x18;
|
|
396
|
+
}
|
|
397
|
+
const bytes = Buffer.from(timeStr, "ascii");
|
|
398
|
+
return Buffer.concat([Buffer.from([tag, bytes.length]), bytes]);
|
|
399
|
+
};
|
|
400
|
+
const wrapSequence = (data) => {
|
|
401
|
+
return Buffer.concat([Buffer.from([0x30]), encodeLength(data.length), data]);
|
|
402
|
+
};
|
|
403
|
+
const wrapSet = (data) => {
|
|
404
|
+
return Buffer.concat([Buffer.from([0x31]), encodeLength(data.length), data]);
|
|
405
|
+
};
|
|
406
|
+
const encodeLength = (len) => {
|
|
407
|
+
if (len < 0x80)
|
|
408
|
+
return Buffer.from([len]);
|
|
409
|
+
if (len < 0x100)
|
|
410
|
+
return Buffer.from([0x81, len]);
|
|
411
|
+
return Buffer.from([0x82, (len >> 8) & 0xff, len & 0xff]);
|
|
412
|
+
};
|
|
413
|
+
const encodeInteger = (buf) => {
|
|
414
|
+
// Ensure positive: if high bit set, prepend 0x00
|
|
415
|
+
let data = buf;
|
|
416
|
+
if (data[0] & 0x80) {
|
|
417
|
+
data = Buffer.concat([Buffer.from([0x00]), data]);
|
|
418
|
+
}
|
|
419
|
+
return Buffer.concat([Buffer.from([0x02]), encodeLength(data.length), data]);
|
|
420
|
+
};
|
|
421
|
+
const encodeBitString = (data) => {
|
|
422
|
+
// Bit string: 0x03 <len> 0x00 <data>
|
|
423
|
+
const inner = Buffer.concat([Buffer.from([0x00]), data]);
|
|
424
|
+
return Buffer.concat([Buffer.from([0x03]), encodeLength(inner.length), inner]);
|
|
425
|
+
};
|
|
426
|
+
// Parse the public key from PEM (SPKI format)
|
|
427
|
+
const pubKeyDer = pemToDer(publicKey);
|
|
428
|
+
// Version: v3 (value 2), context-tagged [0] EXPLICIT
|
|
429
|
+
const version = Buffer.concat([Buffer.from([0xa0, 0x03, 0x02, 0x01, 0x02])]);
|
|
430
|
+
const serialNumber = encodeInteger(serial);
|
|
431
|
+
const subject = encodeDN(cn);
|
|
432
|
+
const issuer = encodeDN(cn); // Self-signed: issuer = subject
|
|
433
|
+
// Signature algorithm: sha256WithRSAEncryption (OID 1.2.840.113549.1.1.11)
|
|
434
|
+
const sigAlgOid = Buffer.from([0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b]);
|
|
435
|
+
const sigAlg = wrapSequence(Buffer.concat([sigAlgOid, Buffer.from([0x05, 0x00])]));
|
|
436
|
+
// Validity
|
|
437
|
+
const validity = wrapSequence(Buffer.concat([encodeTime(notBefore), encodeTime(notAfter)]));
|
|
438
|
+
// TBS Certificate
|
|
439
|
+
const tbsCertificate = wrapSequence(Buffer.concat([version, serialNumber, sigAlg, issuer, validity, subject, pubKeyDer]));
|
|
440
|
+
// Sign TBS
|
|
441
|
+
const signer = createSign("SHA256");
|
|
442
|
+
signer.update(tbsCertificate);
|
|
443
|
+
const signature = signer.sign(privateKey);
|
|
444
|
+
// Full certificate: SEQUENCE { tbsCert, sigAlg, signature }
|
|
445
|
+
const certDer = wrapSequence(Buffer.concat([tbsCertificate, sigAlg, encodeBitString(signature)]));
|
|
446
|
+
const certPem = derToPem(certDer, "CERTIFICATE");
|
|
447
|
+
return {
|
|
448
|
+
cert: certPem,
|
|
449
|
+
key: privateKey,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
// -----------------------------------------------------------------------
|
|
453
|
+
// Private helpers
|
|
454
|
+
// -----------------------------------------------------------------------
|
|
455
|
+
/**
|
|
456
|
+
* Load the server certificate from file or inline PEM.
|
|
457
|
+
*
|
|
458
|
+
* @returns PEM string or undefined if not configured
|
|
459
|
+
*/
|
|
460
|
+
loadCert() {
|
|
461
|
+
if (this.cachedCert)
|
|
462
|
+
return this.cachedCert;
|
|
463
|
+
if (this.options.cert) {
|
|
464
|
+
this.cachedCert = this.options.cert;
|
|
465
|
+
}
|
|
466
|
+
else if (this.options.certPath) {
|
|
467
|
+
this.cachedCert = readFileSync(this.options.certPath, "utf8");
|
|
468
|
+
}
|
|
469
|
+
return this.cachedCert;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Load the private key from file or inline PEM.
|
|
473
|
+
*
|
|
474
|
+
* @returns PEM string or undefined if not configured
|
|
475
|
+
*/
|
|
476
|
+
loadKey() {
|
|
477
|
+
if (this.cachedKey)
|
|
478
|
+
return this.cachedKey;
|
|
479
|
+
if (this.options.key) {
|
|
480
|
+
this.cachedKey = this.options.key;
|
|
481
|
+
}
|
|
482
|
+
else if (this.options.keyPath) {
|
|
483
|
+
this.cachedKey = readFileSync(this.options.keyPath, "utf8");
|
|
484
|
+
}
|
|
485
|
+
return this.cachedKey;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Load the CA certificate from file or inline PEM.
|
|
489
|
+
*
|
|
490
|
+
* @returns PEM string or undefined if not configured
|
|
491
|
+
*/
|
|
492
|
+
loadCA() {
|
|
493
|
+
if (this.cachedCa)
|
|
494
|
+
return this.cachedCa;
|
|
495
|
+
if (this.options.ca) {
|
|
496
|
+
this.cachedCa = this.options.ca;
|
|
497
|
+
}
|
|
498
|
+
else if (this.options.caPath) {
|
|
499
|
+
this.cachedCa = readFileSync(this.options.caPath, "utf8");
|
|
500
|
+
}
|
|
501
|
+
return this.cachedCa;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Load the mutual TLS CA certificate.
|
|
505
|
+
*
|
|
506
|
+
* @returns PEM string or undefined
|
|
507
|
+
*/
|
|
508
|
+
loadMutualTLSCA() {
|
|
509
|
+
const mTls = this.options.mutualTLS;
|
|
510
|
+
if (!mTls)
|
|
511
|
+
return undefined;
|
|
512
|
+
if (mTls.ca)
|
|
513
|
+
return mTls.ca;
|
|
514
|
+
if (mTls.caPath)
|
|
515
|
+
return readFileSync(mTls.caPath, "utf8");
|
|
516
|
+
return undefined;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
// ---------------------------------------------------------------------------
|
|
520
|
+
// Utility functions
|
|
521
|
+
// ---------------------------------------------------------------------------
|
|
522
|
+
/**
|
|
523
|
+
* Convert a PEM-encoded string to a DER Buffer.
|
|
524
|
+
*
|
|
525
|
+
* @param pem - PEM string with header/footer
|
|
526
|
+
* @returns Raw DER bytes
|
|
527
|
+
*/
|
|
528
|
+
function pemToDer(pem) {
|
|
529
|
+
const lines = pem
|
|
530
|
+
.split("\n")
|
|
531
|
+
.filter((l) => !l.startsWith("-----"))
|
|
532
|
+
.join("");
|
|
533
|
+
return Buffer.from(lines, "base64");
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Convert a DER Buffer to a PEM-encoded string.
|
|
537
|
+
*
|
|
538
|
+
* @param der - Raw DER bytes
|
|
539
|
+
* @param label - PEM label (e.g. "CERTIFICATE", "PRIVATE KEY")
|
|
540
|
+
* @returns PEM string
|
|
541
|
+
*/
|
|
542
|
+
function derToPem(der, label) {
|
|
543
|
+
const b64 = der.toString("base64");
|
|
544
|
+
const lines = [];
|
|
545
|
+
for (let i = 0; i < b64.length; i += 64) {
|
|
546
|
+
lines.push(b64.slice(i, i + 64));
|
|
547
|
+
}
|
|
548
|
+
return `-----BEGIN ${label}-----\n${lines.join("\n")}\n-----END ${label}-----\n`;
|
|
549
|
+
}
|
|
550
|
+
//# sourceMappingURL=TLSConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TLSConfig.js","sourceRoot":"","sources":["../../src/security/TLSConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Module for Blok Framework
|
|
3
|
+
*
|
|
4
|
+
* Provides authentication, authorization, audit logging, and secret management:
|
|
5
|
+
* - AuthMiddleware: Pluggable auth with JWT and API Key providers
|
|
6
|
+
* - OAuthOIDCProvider: OAuth 2.0 / OIDC authentication with JWKS verification
|
|
7
|
+
* - RBAC: Role-based access control with hierarchical roles
|
|
8
|
+
* - ABAC: Attribute-based access control with policy engine
|
|
9
|
+
* - AuditLogger: Comprehensive audit trail with multiple sinks
|
|
10
|
+
* - SecretManager: Unified secret management across multiple providers
|
|
11
|
+
* - EncryptionAtRest: AES-256-GCM encryption/decryption with key rotation
|
|
12
|
+
* - PIIDetector: PII detection and masking for text and structured data
|
|
13
|
+
* - TLSConfig: TLS/SSL configuration with mTLS and certificate management
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import {
|
|
18
|
+
* AuthMiddleware,
|
|
19
|
+
* JWTAuthProvider,
|
|
20
|
+
* APIKeyAuthProvider,
|
|
21
|
+
* OAuthOIDCProvider,
|
|
22
|
+
* RBAC,
|
|
23
|
+
* createDefaultRBAC,
|
|
24
|
+
* AuditLogger,
|
|
25
|
+
* ConsoleAuditSink,
|
|
26
|
+
* FileAuditSink,
|
|
27
|
+
* SecretManager,
|
|
28
|
+
* EnvironmentSecretProvider,
|
|
29
|
+
* } from "@blokjs/runner";
|
|
30
|
+
*
|
|
31
|
+
* // Set up auth
|
|
32
|
+
* const auth = new AuthMiddleware({
|
|
33
|
+
* providers: [
|
|
34
|
+
* new OAuthOIDCProvider({
|
|
35
|
+
* issuerUrl: "https://auth.example.com",
|
|
36
|
+
* clientId: "my-app",
|
|
37
|
+
* }),
|
|
38
|
+
* new JWTAuthProvider({ secret: process.env.JWT_SECRET! }),
|
|
39
|
+
* new APIKeyAuthProvider({
|
|
40
|
+
* keys: new Map([["my-key", { name: "svc", roles: ["service"] }]]),
|
|
41
|
+
* }),
|
|
42
|
+
* ],
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* // Set up RBAC
|
|
46
|
+
* const rbac = createDefaultRBAC();
|
|
47
|
+
*
|
|
48
|
+
* // Set up audit logging
|
|
49
|
+
* const audit = new AuditLogger({
|
|
50
|
+
* sinks: [new ConsoleAuditSink(), new FileAuditSink({ path: "./audit.log" })],
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* // Set up secret management
|
|
54
|
+
* const secrets = new SecretManager({
|
|
55
|
+
* providers: [
|
|
56
|
+
* { type: "environment", config: { prefix: "BLOK_SECRET_" } },
|
|
57
|
+
* ],
|
|
58
|
+
* cache: { enabled: true, ttlMs: 60_000, maxSize: 100 },
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export { AuthMiddleware, JWTAuthProvider, APIKeyAuthProvider, } from "./AuthMiddleware";
|
|
63
|
+
export type { AuthMiddlewareConfig, AuthProvider, AuthIdentity, AuthRequest, AuthResult, JWTAuthProviderConfig, APIKeyAuthProviderConfig, APIKeyInfo, } from "./AuthMiddleware";
|
|
64
|
+
export { RBAC, createDefaultRBAC } from "./RBAC";
|
|
65
|
+
export type { Action, Permission, RoleDefinition, AccessCheckResult, RBACPolicy, } from "./RBAC";
|
|
66
|
+
export { ABACEngine, createDefaultABAC } from "./ABAC";
|
|
67
|
+
export type { ABACOperator, ABACEffect, ABACCondition, ABACConditionGroup, ABACPolicyTarget, ABACPolicy, SubjectAttributes, ResourceAttributes, EnvironmentAttributes, ABACRequest, ABACResult, } from "./ABAC";
|
|
68
|
+
export { OAuthOIDCProvider, TokenCache } from "./OAuthProvider";
|
|
69
|
+
export type { OAuthOIDCConfig, OIDCDiscoveryDocument, JWK, JWKS, TokenCacheStats, } from "./OAuthProvider";
|
|
70
|
+
export { AuditLogger, ConsoleAuditSink, FileAuditSink, InMemoryAuditSink, } from "./AuditLogger";
|
|
71
|
+
export type { AuditEntry, AuditCategory, AuditSeverity, AuditSink, AuditLoggerConfig, } from "./AuditLogger";
|
|
72
|
+
export { SecretManager, EnvironmentSecretProvider, InMemorySecretProvider, VaultSecretProvider, AWSSecretsProvider, GCPSecretProvider, } from "./SecretManager";
|
|
73
|
+
export type { SecretProvider, SecretMetadata, SecretAccessEvent, SecretManagerConfig, SecretCacheConfig, SecretProviderConfig, EnvironmentProviderConfig, InMemoryProviderConfig, VaultProviderConfig, AWSSecretsProviderConfig, GCPSecretProviderConfig, } from "./SecretManager";
|
|
74
|
+
export { EncryptionAtRest } from "./EncryptionAtRest";
|
|
75
|
+
export type { EncryptedPayload, EncryptionConfig, KeyDerivationConfig, } from "./EncryptionAtRest";
|
|
76
|
+
export { PIIDetector, PIIType } from "./PIIDetector";
|
|
77
|
+
export type { PIIPattern, PIIMatch, PIIScanResult, PIIDetectorConfig, } from "./PIIDetector";
|
|
78
|
+
export { TLSConfig } from "./TLSConfig";
|
|
79
|
+
export type { TLSConfigOptions, TLSValidationResult, CertificateInfo, SelfSignedOptions, MutualTLSOptions, } from "./TLSConfig";
|