@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.
Files changed (307) hide show
  1. package/dist/Blok.d.ts +19 -0
  2. package/dist/Blok.js +184 -0
  3. package/dist/Blok.js.map +1 -0
  4. package/dist/BlokResponse.d.ts +16 -0
  5. package/dist/BlokResponse.js +28 -0
  6. package/dist/BlokResponse.js.map +1 -0
  7. package/dist/Configuration.d.ts +37 -0
  8. package/dist/Configuration.js +248 -0
  9. package/dist/Configuration.js.map +1 -0
  10. package/dist/ConfigurationResolver.d.ts +7 -0
  11. package/dist/ConfigurationResolver.js +15 -0
  12. package/dist/ConfigurationResolver.js.map +1 -0
  13. package/dist/DefaultLogger.d.ts +65 -0
  14. package/dist/DefaultLogger.js +101 -0
  15. package/dist/DefaultLogger.js.map +1 -0
  16. package/dist/LocalStorage.d.ts +7 -0
  17. package/dist/LocalStorage.js +56 -0
  18. package/dist/LocalStorage.js.map +1 -0
  19. package/dist/MemoryUsage.d.ts +22 -0
  20. package/dist/MemoryUsage.js +83 -0
  21. package/dist/MemoryUsage.js.map +1 -0
  22. package/dist/NodeMap.d.ts +7 -0
  23. package/dist/NodeMap.js +13 -0
  24. package/dist/NodeMap.js.map +1 -0
  25. package/dist/ResolverBase.d.ts +8 -0
  26. package/dist/ResolverBase.js +18 -0
  27. package/dist/ResolverBase.js.map +1 -0
  28. package/dist/Runner.d.ts +25 -0
  29. package/dist/Runner.js +32 -0
  30. package/dist/Runner.js.map +1 -0
  31. package/dist/RunnerNode.d.ts +9 -0
  32. package/dist/RunnerNode.js +8 -0
  33. package/dist/RunnerNode.js.map +1 -0
  34. package/dist/RunnerNodeBase.d.ts +4 -0
  35. package/dist/RunnerNodeBase.js +3 -0
  36. package/dist/RunnerNodeBase.js.map +1 -0
  37. package/dist/RunnerSteps.d.ts +14 -0
  38. package/dist/RunnerSteps.js +110 -0
  39. package/dist/RunnerSteps.js.map +1 -0
  40. package/dist/RuntimeAdapterNode.d.ts +19 -0
  41. package/dist/RuntimeAdapterNode.js +87 -0
  42. package/dist/RuntimeAdapterNode.js.map +1 -0
  43. package/dist/RuntimeRegistry.d.ts +61 -0
  44. package/dist/RuntimeRegistry.js +87 -0
  45. package/dist/RuntimeRegistry.js.map +1 -0
  46. package/dist/TriggerBase.d.ts +119 -0
  47. package/dist/TriggerBase.js +413 -0
  48. package/dist/TriggerBase.js.map +1 -0
  49. package/dist/adapters/BunRuntimeAdapter.d.ts +38 -0
  50. package/dist/adapters/BunRuntimeAdapter.js +169 -0
  51. package/dist/adapters/BunRuntimeAdapter.js.map +1 -0
  52. package/dist/adapters/DockerRuntimeAdapter.d.ts +85 -0
  53. package/dist/adapters/DockerRuntimeAdapter.js +298 -0
  54. package/dist/adapters/DockerRuntimeAdapter.js.map +1 -0
  55. package/dist/adapters/HttpRuntimeAdapter.d.ts +58 -0
  56. package/dist/adapters/HttpRuntimeAdapter.js +152 -0
  57. package/dist/adapters/HttpRuntimeAdapter.js.map +1 -0
  58. package/dist/adapters/NodeJsRuntimeAdapter.d.ts +23 -0
  59. package/dist/adapters/NodeJsRuntimeAdapter.js +67 -0
  60. package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -0
  61. package/dist/adapters/RuntimeAdapter.d.ts +42 -0
  62. package/dist/adapters/RuntimeAdapter.js +2 -0
  63. package/dist/adapters/RuntimeAdapter.js.map +1 -0
  64. package/dist/adapters/WasmRuntimeAdapter.d.ts +69 -0
  65. package/dist/adapters/WasmRuntimeAdapter.js +279 -0
  66. package/dist/adapters/WasmRuntimeAdapter.js.map +1 -0
  67. package/dist/cache/NodeResultCache.d.ts +286 -0
  68. package/dist/cache/NodeResultCache.js +499 -0
  69. package/dist/cache/NodeResultCache.js.map +1 -0
  70. package/dist/cache/index.d.ts +1 -0
  71. package/dist/cache/index.js +2 -0
  72. package/dist/cache/index.js.map +1 -0
  73. package/dist/cost/CostEstimator.d.ts +57 -0
  74. package/dist/cost/CostEstimator.js +171 -0
  75. package/dist/cost/CostEstimator.js.map +1 -0
  76. package/dist/cost/index.d.ts +4 -0
  77. package/dist/cost/index.js +3 -0
  78. package/dist/cost/index.js.map +1 -0
  79. package/dist/cost/pricing.d.ts +24 -0
  80. package/dist/cost/pricing.js +169 -0
  81. package/dist/cost/pricing.js.map +1 -0
  82. package/dist/defineNode.d.ts +155 -0
  83. package/dist/defineNode.js +191 -0
  84. package/dist/defineNode.js.map +1 -0
  85. package/dist/graphql/GraphQLSchemaGenerator.d.ts +129 -0
  86. package/dist/graphql/GraphQLSchemaGenerator.js +425 -0
  87. package/dist/graphql/GraphQLSchemaGenerator.js.map +1 -0
  88. package/dist/hmr/FileWatcher.d.ts +62 -0
  89. package/dist/hmr/FileWatcher.js +185 -0
  90. package/dist/hmr/FileWatcher.js.map +1 -0
  91. package/dist/hmr/HmrDevConsole.d.ts +13 -0
  92. package/dist/hmr/HmrDevConsole.js +46 -0
  93. package/dist/hmr/HmrDevConsole.js.map +1 -0
  94. package/dist/hmr/HotReloadManager.d.ts +84 -0
  95. package/dist/hmr/HotReloadManager.js +195 -0
  96. package/dist/hmr/HotReloadManager.js.map +1 -0
  97. package/dist/hmr/index.d.ts +39 -0
  98. package/dist/hmr/index.js +38 -0
  99. package/dist/hmr/index.js.map +1 -0
  100. package/dist/index.d.ts +107 -0
  101. package/dist/index.js +107 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/integrations/APMIntegration.d.ts +141 -0
  104. package/dist/integrations/APMIntegration.js +212 -0
  105. package/dist/integrations/APMIntegration.js.map +1 -0
  106. package/dist/integrations/AzureMonitorIntegration.d.ts +118 -0
  107. package/dist/integrations/AzureMonitorIntegration.js +254 -0
  108. package/dist/integrations/AzureMonitorIntegration.js.map +1 -0
  109. package/dist/integrations/CloudWatchIntegration.d.ts +135 -0
  110. package/dist/integrations/CloudWatchIntegration.js +293 -0
  111. package/dist/integrations/CloudWatchIntegration.js.map +1 -0
  112. package/dist/integrations/SentryIntegration.d.ts +153 -0
  113. package/dist/integrations/SentryIntegration.js +200 -0
  114. package/dist/integrations/SentryIntegration.js.map +1 -0
  115. package/dist/integrations/index.d.ts +19 -0
  116. package/dist/integrations/index.js +16 -0
  117. package/dist/integrations/index.js.map +1 -0
  118. package/dist/marketplace/RuntimeAutoScaler.d.ts +148 -0
  119. package/dist/marketplace/RuntimeAutoScaler.js +366 -0
  120. package/dist/marketplace/RuntimeAutoScaler.js.map +1 -0
  121. package/dist/marketplace/RuntimeCatalog.d.ts +174 -0
  122. package/dist/marketplace/RuntimeCatalog.js +339 -0
  123. package/dist/marketplace/RuntimeCatalog.js.map +1 -0
  124. package/dist/marketplace/RuntimeDiscovery.d.ts +86 -0
  125. package/dist/marketplace/RuntimeDiscovery.js +219 -0
  126. package/dist/marketplace/RuntimeDiscovery.js.map +1 -0
  127. package/dist/marketplace/RuntimeHealthMonitor.d.ts +100 -0
  128. package/dist/marketplace/RuntimeHealthMonitor.js +241 -0
  129. package/dist/marketplace/RuntimeHealthMonitor.js.map +1 -0
  130. package/dist/marketplace/RuntimeMetricsDashboard.d.ts +113 -0
  131. package/dist/marketplace/RuntimeMetricsDashboard.js +293 -0
  132. package/dist/marketplace/RuntimeMetricsDashboard.js.map +1 -0
  133. package/dist/monitoring/CircuitBreaker.d.ts +107 -0
  134. package/dist/monitoring/CircuitBreaker.js +238 -0
  135. package/dist/monitoring/CircuitBreaker.js.map +1 -0
  136. package/dist/monitoring/DistributedTracer.d.ts +125 -0
  137. package/dist/monitoring/DistributedTracer.js +230 -0
  138. package/dist/monitoring/DistributedTracer.js.map +1 -0
  139. package/dist/monitoring/HealthCheck.d.ts +54 -0
  140. package/dist/monitoring/HealthCheck.js +102 -0
  141. package/dist/monitoring/HealthCheck.js.map +1 -0
  142. package/dist/monitoring/PerformanceProfiler.d.ts +63 -0
  143. package/dist/monitoring/PerformanceProfiler.js +229 -0
  144. package/dist/monitoring/PerformanceProfiler.js.map +1 -0
  145. package/dist/monitoring/PrometheusBootstrap.d.ts +30 -0
  146. package/dist/monitoring/PrometheusBootstrap.js +71 -0
  147. package/dist/monitoring/PrometheusBootstrap.js.map +1 -0
  148. package/dist/monitoring/PrometheusMetricsBridge.d.ts +60 -0
  149. package/dist/monitoring/PrometheusMetricsBridge.js +216 -0
  150. package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -0
  151. package/dist/monitoring/RateLimiter.d.ts +58 -0
  152. package/dist/monitoring/RateLimiter.js +128 -0
  153. package/dist/monitoring/RateLimiter.js.map +1 -0
  154. package/dist/monitoring/StructuredLogger.d.ts +131 -0
  155. package/dist/monitoring/StructuredLogger.js +207 -0
  156. package/dist/monitoring/StructuredLogger.js.map +1 -0
  157. package/dist/monitoring/TracingBootstrap.d.ts +69 -0
  158. package/dist/monitoring/TracingBootstrap.js +129 -0
  159. package/dist/monitoring/TracingBootstrap.js.map +1 -0
  160. package/dist/monitoring/TriggerMetricsCollector.d.ts +94 -0
  161. package/dist/monitoring/TriggerMetricsCollector.js +174 -0
  162. package/dist/monitoring/TriggerMetricsCollector.js.map +1 -0
  163. package/dist/monitoring/index.d.ts +9 -0
  164. package/dist/monitoring/index.js +10 -0
  165. package/dist/monitoring/index.js.map +1 -0
  166. package/dist/openapi/OpenAPIGenerator.d.ts +192 -0
  167. package/dist/openapi/OpenAPIGenerator.js +373 -0
  168. package/dist/openapi/OpenAPIGenerator.js.map +1 -0
  169. package/dist/openapi/index.d.ts +20 -0
  170. package/dist/openapi/index.js +20 -0
  171. package/dist/openapi/index.js.map +1 -0
  172. package/dist/security/ABAC.d.ts +224 -0
  173. package/dist/security/ABAC.js +380 -0
  174. package/dist/security/ABAC.js.map +1 -0
  175. package/dist/security/AuditLogger.d.ts +242 -0
  176. package/dist/security/AuditLogger.js +317 -0
  177. package/dist/security/AuditLogger.js.map +1 -0
  178. package/dist/security/AuthMiddleware.d.ts +163 -0
  179. package/dist/security/AuthMiddleware.js +274 -0
  180. package/dist/security/AuthMiddleware.js.map +1 -0
  181. package/dist/security/EncryptionAtRest.d.ts +206 -0
  182. package/dist/security/EncryptionAtRest.js +236 -0
  183. package/dist/security/EncryptionAtRest.js.map +1 -0
  184. package/dist/security/OAuthProvider.d.ts +334 -0
  185. package/dist/security/OAuthProvider.js +719 -0
  186. package/dist/security/OAuthProvider.js.map +1 -0
  187. package/dist/security/PIIDetector.d.ts +233 -0
  188. package/dist/security/PIIDetector.js +354 -0
  189. package/dist/security/PIIDetector.js.map +1 -0
  190. package/dist/security/RBAC.d.ts +143 -0
  191. package/dist/security/RBAC.js +285 -0
  192. package/dist/security/RBAC.js.map +1 -0
  193. package/dist/security/SecretManager.d.ts +652 -0
  194. package/dist/security/SecretManager.js +1146 -0
  195. package/dist/security/SecretManager.js.map +1 -0
  196. package/dist/security/TLSConfig.d.ts +305 -0
  197. package/dist/security/TLSConfig.js +550 -0
  198. package/dist/security/TLSConfig.js.map +1 -0
  199. package/dist/security/index.d.ts +79 -0
  200. package/dist/security/index.js +80 -0
  201. package/dist/security/index.js.map +1 -0
  202. package/dist/testing/TestHarness.d.ts +189 -0
  203. package/dist/testing/TestHarness.js +272 -0
  204. package/dist/testing/TestHarness.js.map +1 -0
  205. package/dist/testing/TestLogger.d.ts +103 -0
  206. package/dist/testing/TestLogger.js +153 -0
  207. package/dist/testing/TestLogger.js.map +1 -0
  208. package/dist/testing/WorkflowTestRunner.d.ts +172 -0
  209. package/dist/testing/WorkflowTestRunner.js +355 -0
  210. package/dist/testing/WorkflowTestRunner.js.map +1 -0
  211. package/dist/testing/index.d.ts +21 -0
  212. package/dist/testing/index.js +22 -0
  213. package/dist/testing/index.js.map +1 -0
  214. package/dist/tracing/InMemoryRunStore.d.ts +44 -0
  215. package/dist/tracing/InMemoryRunStore.js +341 -0
  216. package/dist/tracing/InMemoryRunStore.js.map +1 -0
  217. package/dist/tracing/PostgresRunStore.d.ts +82 -0
  218. package/dist/tracing/PostgresRunStore.js +640 -0
  219. package/dist/tracing/PostgresRunStore.js.map +1 -0
  220. package/dist/tracing/RunStore.d.ts +38 -0
  221. package/dist/tracing/RunStore.js +2 -0
  222. package/dist/tracing/RunStore.js.map +1 -0
  223. package/dist/tracing/RunTracker.d.ts +75 -0
  224. package/dist/tracing/RunTracker.js +374 -0
  225. package/dist/tracing/RunTracker.js.map +1 -0
  226. package/dist/tracing/SqliteRunStore.d.ts +53 -0
  227. package/dist/tracing/SqliteRunStore.js +703 -0
  228. package/dist/tracing/SqliteRunStore.js.map +1 -0
  229. package/dist/tracing/TraceRouter.d.ts +47 -0
  230. package/dist/tracing/TraceRouter.js +904 -0
  231. package/dist/tracing/TraceRouter.js.map +1 -0
  232. package/dist/tracing/TracingLogger.d.ts +21 -0
  233. package/dist/tracing/TracingLogger.js +62 -0
  234. package/dist/tracing/TracingLogger.js.map +1 -0
  235. package/dist/tracing/createStore.d.ts +30 -0
  236. package/dist/tracing/createStore.js +75 -0
  237. package/dist/tracing/createStore.js.map +1 -0
  238. package/dist/tracing/index.d.ts +13 -0
  239. package/dist/tracing/index.js +9 -0
  240. package/dist/tracing/index.js.map +1 -0
  241. package/dist/tracing/sanitize.d.ts +7 -0
  242. package/dist/tracing/sanitize.js +95 -0
  243. package/dist/tracing/sanitize.js.map +1 -0
  244. package/dist/tracing/types.d.ts +178 -0
  245. package/dist/tracing/types.js +3 -0
  246. package/dist/tracing/types.js.map +1 -0
  247. package/dist/types/Average.d.ts +11 -0
  248. package/dist/types/Average.js +2 -0
  249. package/dist/types/Average.js.map +1 -0
  250. package/dist/types/Condition.d.ts +8 -0
  251. package/dist/types/Condition.js +2 -0
  252. package/dist/types/Condition.js.map +1 -0
  253. package/dist/types/Conditions.d.ts +5 -0
  254. package/dist/types/Conditions.js +2 -0
  255. package/dist/types/Conditions.js.map +1 -0
  256. package/dist/types/Config.d.ts +12 -0
  257. package/dist/types/Config.js +2 -0
  258. package/dist/types/Config.js.map +1 -0
  259. package/dist/types/Flow.d.ts +5 -0
  260. package/dist/types/Flow.js +2 -0
  261. package/dist/types/Flow.js.map +1 -0
  262. package/dist/types/GlobalOptions.d.ts +11 -0
  263. package/dist/types/GlobalOptions.js +2 -0
  264. package/dist/types/GlobalOptions.js.map +1 -0
  265. package/dist/types/Inputs.d.ts +5 -0
  266. package/dist/types/Inputs.js +2 -0
  267. package/dist/types/Inputs.js.map +1 -0
  268. package/dist/types/JsonLikeObject.d.ts +3 -0
  269. package/dist/types/JsonLikeObject.js +2 -0
  270. package/dist/types/JsonLikeObject.js.map +1 -0
  271. package/dist/types/Mapper.d.ts +5 -0
  272. package/dist/types/Mapper.js +2 -0
  273. package/dist/types/Mapper.js.map +1 -0
  274. package/dist/types/Node.d.ts +10 -0
  275. package/dist/types/Node.js +2 -0
  276. package/dist/types/Node.js.map +1 -0
  277. package/dist/types/ParamsDictionary.d.ts +3 -0
  278. package/dist/types/ParamsDictionary.js +2 -0
  279. package/dist/types/ParamsDictionary.js.map +1 -0
  280. package/dist/types/Properties.d.ts +5 -0
  281. package/dist/types/Properties.js +2 -0
  282. package/dist/types/Properties.js.map +1 -0
  283. package/dist/types/Targets.d.ts +5 -0
  284. package/dist/types/Targets.js +2 -0
  285. package/dist/types/Targets.js.map +1 -0
  286. package/dist/types/Trigger.d.ts +5 -0
  287. package/dist/types/Trigger.js +2 -0
  288. package/dist/types/Trigger.js.map +1 -0
  289. package/dist/types/TriggerHttp.d.ts +7 -0
  290. package/dist/types/TriggerHttp.js +2 -0
  291. package/dist/types/TriggerHttp.js.map +1 -0
  292. package/dist/types/TriggerResponse.d.ts +6 -0
  293. package/dist/types/TriggerResponse.js +2 -0
  294. package/dist/types/TriggerResponse.js.map +1 -0
  295. package/dist/types/Triggers.d.ts +5 -0
  296. package/dist/types/Triggers.js +2 -0
  297. package/dist/types/Triggers.js.map +1 -0
  298. package/dist/types/TryCatch.d.ts +6 -0
  299. package/dist/types/TryCatch.js +2 -0
  300. package/dist/types/TryCatch.js.map +1 -0
  301. package/dist/visualization/NodeDependencyGraph.d.ts +76 -0
  302. package/dist/visualization/NodeDependencyGraph.js +418 -0
  303. package/dist/visualization/NodeDependencyGraph.js.map +1 -0
  304. package/dist/visualization/WorkflowVisualizer.d.ts +144 -0
  305. package/dist/visualization/WorkflowVisualizer.js +446 -0
  306. package/dist/visualization/WorkflowVisualizer.js.map +1 -0
  307. package/package.json +95 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthProvider.js","sourceRoot":"","sources":["../../src/security/OAuthProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * PII Detection and Masking for Blok Framework
3
+ *
4
+ * Detects and masks personally identifiable information (PII) in text and
5
+ * structured data:
6
+ * - Built-in patterns for email, phone, SSN, credit card, IP address, etc.
7
+ * - Luhn-algorithm-aware credit card detection
8
+ * - Configurable masking characters and length preservation
9
+ * - Deep object scanning with recursive string masking
10
+ * - Custom pattern support for domain-specific PII
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { PIIDetector, PIIType } from "@blokjs/runner";
15
+ *
16
+ * const detector = new PIIDetector({
17
+ * types: [PIIType.EMAIL, PIIType.PHONE, PIIType.SSN, PIIType.CREDIT_CARD],
18
+ * maskChar: "*",
19
+ * preserveLength: true,
20
+ * });
21
+ *
22
+ * // Detect PII in text
23
+ * const matches = detector.detect("Contact john@example.com or 555-123-4567");
24
+ *
25
+ * // Mask PII in text
26
+ * const masked = detector.mask("SSN: 123-45-6789");
27
+ * // => "SSN: ***-**-****"
28
+ *
29
+ * // Deep scan an object
30
+ * const result = detector.scan({ name: "John", email: "john@example.com" });
31
+ * console.log(result.totalMatches); // 1
32
+ * ```
33
+ */
34
+ /**
35
+ * Categories of personally identifiable information that can be detected.
36
+ */
37
+ export declare enum PIIType {
38
+ /** Email addresses (RFC 5322 simplified) */
39
+ EMAIL = "EMAIL",
40
+ /** Phone numbers (US and international formats) */
41
+ PHONE = "PHONE",
42
+ /** US Social Security Numbers */
43
+ SSN = "SSN",
44
+ /** Credit/debit card numbers (Luhn-validated) */
45
+ CREDIT_CARD = "CREDIT_CARD",
46
+ /** IPv4 and IPv6 addresses */
47
+ IP_ADDRESS = "IP_ADDRESS",
48
+ /** Dates of birth in common formats */
49
+ DATE_OF_BIRTH = "DATE_OF_BIRTH",
50
+ /** Person names (basic heuristic) */
51
+ NAME = "NAME",
52
+ /** Physical / mailing addresses (basic heuristic) */
53
+ ADDRESS = "ADDRESS",
54
+ /** Passport numbers (basic patterns) */
55
+ PASSPORT = "PASSPORT",
56
+ /** User-defined custom pattern */
57
+ CUSTOM = "CUSTOM"
58
+ }
59
+ /**
60
+ * A custom PII pattern definition.
61
+ */
62
+ export interface PIIPattern {
63
+ /** Identifier for this pattern (used as type label) */
64
+ type: string;
65
+ /** Regular expression to match the PII */
66
+ pattern: RegExp;
67
+ /** Function to produce the masked replacement for a match */
68
+ mask: (match: string) => string;
69
+ }
70
+ /**
71
+ * A single PII match found in text.
72
+ */
73
+ export interface PIIMatch {
74
+ /** The category of PII detected */
75
+ type: PIIType;
76
+ /** The original matched value */
77
+ value: string;
78
+ /** The masked replacement value */
79
+ masked: string;
80
+ /** Start index (inclusive) in the source string */
81
+ start: number;
82
+ /** End index (exclusive) in the source string */
83
+ end: number;
84
+ }
85
+ /**
86
+ * Result of a full PII scan.
87
+ */
88
+ export interface PIIScanResult {
89
+ /** Total number of PII matches found */
90
+ totalMatches: number;
91
+ /** Count of matches grouped by PII type */
92
+ matchesByType: Record<string, number>;
93
+ /** Whether any PII was detected */
94
+ hasPII: boolean;
95
+ /** Detailed list of every match */
96
+ details: PIIMatch[];
97
+ }
98
+ /**
99
+ * Configuration for the {@link PIIDetector} class.
100
+ */
101
+ export interface PIIDetectorConfig {
102
+ /**
103
+ * Built-in PII types to detect.
104
+ * @default All built-in types
105
+ */
106
+ types?: PIIType[];
107
+ /**
108
+ * Additional custom patterns to detect.
109
+ */
110
+ customPatterns?: PIIPattern[];
111
+ /**
112
+ * Character used for masking.
113
+ * @default "*"
114
+ */
115
+ maskChar?: string;
116
+ /**
117
+ * Whether the masked output should preserve the original length.
118
+ * When false, a fixed-length mask is used.
119
+ * @default true
120
+ */
121
+ preserveLength?: boolean;
122
+ }
123
+ /**
124
+ * Detects and masks personally identifiable information (PII) in text and
125
+ * structured data.
126
+ *
127
+ * The detector ships with built-in patterns for common PII categories and
128
+ * supports custom user-defined patterns. Credit card detection includes
129
+ * Luhn algorithm validation to reduce false positives.
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const detector = new PIIDetector();
134
+ * const matches = detector.detect("Email me at test@example.com");
135
+ * console.log(matches[0].type); // PIIType.EMAIL
136
+ * ```
137
+ */
138
+ export declare class PIIDetector {
139
+ private readonly types;
140
+ private readonly customPatterns;
141
+ private readonly maskChar;
142
+ private readonly preserveLength;
143
+ /**
144
+ * Create a new PIIDetector instance.
145
+ *
146
+ * @param config - Optional configuration overrides
147
+ */
148
+ constructor(config?: PIIDetectorConfig);
149
+ /**
150
+ * Detect all PII occurrences in a text string.
151
+ *
152
+ * Returns an array of {@link PIIMatch} objects describing every match,
153
+ * including position information and masked values.
154
+ *
155
+ * @param text - The text to scan for PII
156
+ * @returns Array of PII matches sorted by start position
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const matches = detector.detect("SSN: 123-45-6789, email: a@b.com");
161
+ * // matches.length === 2
162
+ * ```
163
+ */
164
+ detect(text: string): PIIMatch[];
165
+ /**
166
+ * Mask all detected PII in a text string.
167
+ *
168
+ * Replaces every detected PII occurrence with its masked equivalent.
169
+ * Non-overlapping replacements are applied from right to left to preserve
170
+ * string positions.
171
+ *
172
+ * @param text - The text containing PII to mask
173
+ * @returns The text with all PII replaced by masked values
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * const masked = detector.mask("Call 555-123-4567");
178
+ * // => "Call ************"
179
+ * ```
180
+ */
181
+ mask(text: string): string;
182
+ /**
183
+ * Deep-clone an object and mask all PII found in string values.
184
+ *
185
+ * Recursively traverses the object tree. Every string property is run
186
+ * through {@link mask}. Non-string primitives, arrays, and nested objects
187
+ * are handled transparently.
188
+ *
189
+ * @typeParam T - Type of the input object
190
+ * @param obj - The object to scan and mask
191
+ * @returns A deep clone with all string values masked
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * const safe = detector.maskObject({ email: "john@example.com", age: 30 });
196
+ * // safe.email === "****************"
197
+ * ```
198
+ */
199
+ maskObject<T>(obj: T): T;
200
+ /**
201
+ * Perform a full PII scan on arbitrary data and return a summary report.
202
+ *
203
+ * Accepts strings, objects, arrays, or any JSON-compatible value.
204
+ * Strings are scanned directly; objects are serialized and scanned.
205
+ *
206
+ * @param data - The data to scan (string, object, array, or primitive)
207
+ * @returns A {@link PIIScanResult} with totals, type breakdown, and details
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * const report = detector.scan({
212
+ * user: { email: "a@b.com", phone: "555-123-4567" },
213
+ * });
214
+ * console.log(report.hasPII); // true
215
+ * console.log(report.totalMatches); // 2
216
+ * ```
217
+ */
218
+ scan(data: unknown): PIIScanResult;
219
+ /**
220
+ * Produce a masked string for a PII value.
221
+ *
222
+ * @param value - The original PII string
223
+ * @returns Masked string using the configured mask character
224
+ */
225
+ private maskValue;
226
+ /**
227
+ * Recursively deep-clone and mask all string values in a value.
228
+ *
229
+ * @param value - Any JSON-compatible value
230
+ * @returns Deep-cloned value with strings masked
231
+ */
232
+ private deepMask;
233
+ }
@@ -0,0 +1,354 @@
1
+ /**
2
+ * PII Detection and Masking for Blok Framework
3
+ *
4
+ * Detects and masks personally identifiable information (PII) in text and
5
+ * structured data:
6
+ * - Built-in patterns for email, phone, SSN, credit card, IP address, etc.
7
+ * - Luhn-algorithm-aware credit card detection
8
+ * - Configurable masking characters and length preservation
9
+ * - Deep object scanning with recursive string masking
10
+ * - Custom pattern support for domain-specific PII
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { PIIDetector, PIIType } from "@blokjs/runner";
15
+ *
16
+ * const detector = new PIIDetector({
17
+ * types: [PIIType.EMAIL, PIIType.PHONE, PIIType.SSN, PIIType.CREDIT_CARD],
18
+ * maskChar: "*",
19
+ * preserveLength: true,
20
+ * });
21
+ *
22
+ * // Detect PII in text
23
+ * const matches = detector.detect("Contact john@example.com or 555-123-4567");
24
+ *
25
+ * // Mask PII in text
26
+ * const masked = detector.mask("SSN: 123-45-6789");
27
+ * // => "SSN: ***-**-****"
28
+ *
29
+ * // Deep scan an object
30
+ * const result = detector.scan({ name: "John", email: "john@example.com" });
31
+ * console.log(result.totalMatches); // 1
32
+ * ```
33
+ */
34
+ // ---------------------------------------------------------------------------
35
+ // Types & Enums
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * Categories of personally identifiable information that can be detected.
39
+ */
40
+ export var PIIType;
41
+ (function (PIIType) {
42
+ /** Email addresses (RFC 5322 simplified) */
43
+ PIIType["EMAIL"] = "EMAIL";
44
+ /** Phone numbers (US and international formats) */
45
+ PIIType["PHONE"] = "PHONE";
46
+ /** US Social Security Numbers */
47
+ PIIType["SSN"] = "SSN";
48
+ /** Credit/debit card numbers (Luhn-validated) */
49
+ PIIType["CREDIT_CARD"] = "CREDIT_CARD";
50
+ /** IPv4 and IPv6 addresses */
51
+ PIIType["IP_ADDRESS"] = "IP_ADDRESS";
52
+ /** Dates of birth in common formats */
53
+ PIIType["DATE_OF_BIRTH"] = "DATE_OF_BIRTH";
54
+ /** Person names (basic heuristic) */
55
+ PIIType["NAME"] = "NAME";
56
+ /** Physical / mailing addresses (basic heuristic) */
57
+ PIIType["ADDRESS"] = "ADDRESS";
58
+ /** Passport numbers (basic patterns) */
59
+ PIIType["PASSPORT"] = "PASSPORT";
60
+ /** User-defined custom pattern */
61
+ PIIType["CUSTOM"] = "CUSTOM";
62
+ })(PIIType || (PIIType = {}));
63
+ /**
64
+ * Luhn algorithm check for credit card number validation.
65
+ *
66
+ * @param digits - String of digits (spaces/dashes stripped)
67
+ * @returns True if the number passes the Luhn check
68
+ */
69
+ function luhnCheck(digits) {
70
+ const nums = digits.replace(/\D/g, "");
71
+ if (nums.length < 13 || nums.length > 19)
72
+ return false;
73
+ let sum = 0;
74
+ let alternate = false;
75
+ for (let i = nums.length - 1; i >= 0; i--) {
76
+ let n = Number.parseInt(nums[i], 10);
77
+ if (alternate) {
78
+ n *= 2;
79
+ if (n > 9)
80
+ n -= 9;
81
+ }
82
+ sum += n;
83
+ alternate = !alternate;
84
+ }
85
+ return sum % 10 === 0;
86
+ }
87
+ const BUILT_IN_RULES = [
88
+ {
89
+ type: PIIType.EMAIL,
90
+ // Simplified RFC 5322 email pattern
91
+ pattern: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
92
+ },
93
+ {
94
+ type: PIIType.PHONE,
95
+ // US formats: (555) 123-4567, 555-123-4567, +1-555-123-4567
96
+ // International: +44 20 7946 0958, +49 30 1234567
97
+ pattern: /(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,4}\)?[-.\s]?\d{3,4}[-.\s]?\d{4}/g,
98
+ },
99
+ {
100
+ type: PIIType.SSN,
101
+ // US SSN: 123-45-6789 or 123456789
102
+ pattern: /\b\d{3}-\d{2}-\d{4}\b|\b\d{9}\b/g,
103
+ },
104
+ {
105
+ type: PIIType.CREDIT_CARD,
106
+ // 13-19 digit numbers, optionally separated by spaces or dashes
107
+ pattern: /\b(?:\d[ -]*?){13,19}\b/g,
108
+ validate: (match) => luhnCheck(match),
109
+ },
110
+ {
111
+ type: PIIType.IP_ADDRESS,
112
+ // IPv4
113
+ pattern: /\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b|(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}/g,
114
+ },
115
+ {
116
+ type: PIIType.DATE_OF_BIRTH,
117
+ // Common DOB formats: MM/DD/YYYY, DD-MM-YYYY, YYYY-MM-DD
118
+ pattern: /\b(?:\d{1,2}[/-]\d{1,2}[/-]\d{2,4}|\d{4}[/-]\d{1,2}[/-]\d{1,2})\b/g,
119
+ },
120
+ {
121
+ type: PIIType.PASSPORT,
122
+ // Simple passport patterns (US: 9 digits; UK: 9 digits; generic alphanumeric 6-9)
123
+ pattern: /\b[A-Z]{1,2}\d{6,9}\b/g,
124
+ },
125
+ ];
126
+ // ---------------------------------------------------------------------------
127
+ // Implementation
128
+ // ---------------------------------------------------------------------------
129
+ /**
130
+ * Detects and masks personally identifiable information (PII) in text and
131
+ * structured data.
132
+ *
133
+ * The detector ships with built-in patterns for common PII categories and
134
+ * supports custom user-defined patterns. Credit card detection includes
135
+ * Luhn algorithm validation to reduce false positives.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const detector = new PIIDetector();
140
+ * const matches = detector.detect("Email me at test@example.com");
141
+ * console.log(matches[0].type); // PIIType.EMAIL
142
+ * ```
143
+ */
144
+ export class PIIDetector {
145
+ types;
146
+ customPatterns;
147
+ maskChar;
148
+ preserveLength;
149
+ /**
150
+ * Create a new PIIDetector instance.
151
+ *
152
+ * @param config - Optional configuration overrides
153
+ */
154
+ constructor(config) {
155
+ this.types = new Set(config?.types ?? [
156
+ PIIType.EMAIL,
157
+ PIIType.PHONE,
158
+ PIIType.SSN,
159
+ PIIType.CREDIT_CARD,
160
+ PIIType.IP_ADDRESS,
161
+ PIIType.DATE_OF_BIRTH,
162
+ PIIType.PASSPORT,
163
+ ]);
164
+ this.customPatterns = config?.customPatterns ?? [];
165
+ this.maskChar = config?.maskChar ?? "*";
166
+ this.preserveLength = config?.preserveLength ?? true;
167
+ }
168
+ // -----------------------------------------------------------------------
169
+ // Public API
170
+ // -----------------------------------------------------------------------
171
+ /**
172
+ * Detect all PII occurrences in a text string.
173
+ *
174
+ * Returns an array of {@link PIIMatch} objects describing every match,
175
+ * including position information and masked values.
176
+ *
177
+ * @param text - The text to scan for PII
178
+ * @returns Array of PII matches sorted by start position
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const matches = detector.detect("SSN: 123-45-6789, email: a@b.com");
183
+ * // matches.length === 2
184
+ * ```
185
+ */
186
+ detect(text) {
187
+ const matches = [];
188
+ // Run built-in rules
189
+ for (const rule of BUILT_IN_RULES) {
190
+ if (!this.types.has(rule.type))
191
+ continue;
192
+ // Reset lastIndex for global regexes
193
+ const regex = new RegExp(rule.pattern.source, rule.pattern.flags);
194
+ let match = regex.exec(text);
195
+ while (match !== null) {
196
+ const value = match[0];
197
+ // Apply optional validator (e.g. Luhn for credit cards)
198
+ if (rule.validate && !rule.validate(value)) {
199
+ match = regex.exec(text);
200
+ continue;
201
+ }
202
+ matches.push({
203
+ type: rule.type,
204
+ value,
205
+ masked: this.maskValue(value),
206
+ start: match.index,
207
+ end: match.index + value.length,
208
+ });
209
+ match = regex.exec(text);
210
+ }
211
+ }
212
+ // Run custom patterns
213
+ for (const custom of this.customPatterns) {
214
+ const regex = new RegExp(custom.pattern.source, custom.pattern.flags);
215
+ let match = regex.exec(text);
216
+ while (match !== null) {
217
+ const value = match[0];
218
+ matches.push({
219
+ type: PIIType.CUSTOM,
220
+ value,
221
+ masked: custom.mask(value),
222
+ start: match.index,
223
+ end: match.index + value.length,
224
+ });
225
+ match = regex.exec(text);
226
+ }
227
+ }
228
+ // Sort by position in text
229
+ matches.sort((a, b) => a.start - b.start);
230
+ return matches;
231
+ }
232
+ /**
233
+ * Mask all detected PII in a text string.
234
+ *
235
+ * Replaces every detected PII occurrence with its masked equivalent.
236
+ * Non-overlapping replacements are applied from right to left to preserve
237
+ * string positions.
238
+ *
239
+ * @param text - The text containing PII to mask
240
+ * @returns The text with all PII replaced by masked values
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * const masked = detector.mask("Call 555-123-4567");
245
+ * // => "Call ************"
246
+ * ```
247
+ */
248
+ mask(text) {
249
+ const matches = this.detect(text);
250
+ if (matches.length === 0)
251
+ return text;
252
+ // Apply replacements from right to left to preserve indices
253
+ let result = text;
254
+ for (let i = matches.length - 1; i >= 0; i--) {
255
+ const m = matches[i];
256
+ result = result.slice(0, m.start) + m.masked + result.slice(m.end);
257
+ }
258
+ return result;
259
+ }
260
+ /**
261
+ * Deep-clone an object and mask all PII found in string values.
262
+ *
263
+ * Recursively traverses the object tree. Every string property is run
264
+ * through {@link mask}. Non-string primitives, arrays, and nested objects
265
+ * are handled transparently.
266
+ *
267
+ * @typeParam T - Type of the input object
268
+ * @param obj - The object to scan and mask
269
+ * @returns A deep clone with all string values masked
270
+ *
271
+ * @example
272
+ * ```typescript
273
+ * const safe = detector.maskObject({ email: "john@example.com", age: 30 });
274
+ * // safe.email === "****************"
275
+ * ```
276
+ */
277
+ maskObject(obj) {
278
+ return this.deepMask(obj);
279
+ }
280
+ /**
281
+ * Perform a full PII scan on arbitrary data and return a summary report.
282
+ *
283
+ * Accepts strings, objects, arrays, or any JSON-compatible value.
284
+ * Strings are scanned directly; objects are serialized and scanned.
285
+ *
286
+ * @param data - The data to scan (string, object, array, or primitive)
287
+ * @returns A {@link PIIScanResult} with totals, type breakdown, and details
288
+ *
289
+ * @example
290
+ * ```typescript
291
+ * const report = detector.scan({
292
+ * user: { email: "a@b.com", phone: "555-123-4567" },
293
+ * });
294
+ * console.log(report.hasPII); // true
295
+ * console.log(report.totalMatches); // 2
296
+ * ```
297
+ */
298
+ scan(data) {
299
+ const text = typeof data === "string" ? data : JSON.stringify(data);
300
+ const details = this.detect(text);
301
+ const matchesByType = {};
302
+ for (const match of details) {
303
+ matchesByType[match.type] = (matchesByType[match.type] ?? 0) + 1;
304
+ }
305
+ return {
306
+ totalMatches: details.length,
307
+ matchesByType,
308
+ hasPII: details.length > 0,
309
+ details,
310
+ };
311
+ }
312
+ // -----------------------------------------------------------------------
313
+ // Private helpers
314
+ // -----------------------------------------------------------------------
315
+ /**
316
+ * Produce a masked string for a PII value.
317
+ *
318
+ * @param value - The original PII string
319
+ * @returns Masked string using the configured mask character
320
+ */
321
+ maskValue(value) {
322
+ if (this.preserveLength) {
323
+ return value.replace(/[^\s\-/]/g, this.maskChar);
324
+ }
325
+ // Fixed-length mask (8 characters)
326
+ return this.maskChar.repeat(8);
327
+ }
328
+ /**
329
+ * Recursively deep-clone and mask all string values in a value.
330
+ *
331
+ * @param value - Any JSON-compatible value
332
+ * @returns Deep-cloned value with strings masked
333
+ */
334
+ deepMask(value) {
335
+ if (value === null || value === undefined)
336
+ return value;
337
+ if (typeof value === "string") {
338
+ return this.mask(value);
339
+ }
340
+ if (Array.isArray(value)) {
341
+ return value.map((item) => this.deepMask(item));
342
+ }
343
+ if (typeof value === "object") {
344
+ const result = {};
345
+ for (const [key, val] of Object.entries(value)) {
346
+ result[key] = this.deepMask(val);
347
+ }
348
+ return result;
349
+ }
350
+ // Primitives (number, boolean) pass through
351
+ return value;
352
+ }
353
+ }
354
+ //# sourceMappingURL=PIIDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PIIDetector.js","sourceRoot":"","sources":["../../src/security/PIIDetector.ts"],"names":[],"mappings":"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"}