@freshguard/freshguard-core 0.13.2 → 0.15.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 (196) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +74 -1
  3. package/SKILL.md +229 -0
  4. package/dist/cli/index.d.ts +13 -0
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +74 -1
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/connectors/azure-sql.d.ts +121 -0
  9. package/dist/connectors/azure-sql.d.ts.map +1 -0
  10. package/dist/connectors/azure-sql.js +489 -0
  11. package/dist/connectors/azure-sql.js.map +1 -0
  12. package/dist/connectors/base-connector.d.ts +139 -0
  13. package/dist/connectors/base-connector.d.ts.map +1 -1
  14. package/dist/connectors/base-connector.js +160 -3
  15. package/dist/connectors/base-connector.js.map +1 -1
  16. package/dist/connectors/bigquery.d.ts +100 -0
  17. package/dist/connectors/bigquery.d.ts.map +1 -1
  18. package/dist/connectors/bigquery.js +143 -2
  19. package/dist/connectors/bigquery.js.map +1 -1
  20. package/dist/connectors/duckdb.d.ts +96 -0
  21. package/dist/connectors/duckdb.d.ts.map +1 -1
  22. package/dist/connectors/duckdb.js +144 -7
  23. package/dist/connectors/duckdb.js.map +1 -1
  24. package/dist/connectors/index.d.ts +28 -0
  25. package/dist/connectors/index.d.ts.map +1 -1
  26. package/dist/connectors/index.js +28 -0
  27. package/dist/connectors/index.js.map +1 -1
  28. package/dist/connectors/mssql.d.ts +119 -0
  29. package/dist/connectors/mssql.d.ts.map +1 -0
  30. package/dist/connectors/mssql.js +483 -0
  31. package/dist/connectors/mssql.js.map +1 -0
  32. package/dist/connectors/mysql.d.ts +85 -0
  33. package/dist/connectors/mysql.d.ts.map +1 -1
  34. package/dist/connectors/mysql.js +118 -3
  35. package/dist/connectors/mysql.js.map +1 -1
  36. package/dist/connectors/postgres.d.ts +85 -0
  37. package/dist/connectors/postgres.d.ts.map +1 -1
  38. package/dist/connectors/postgres.js +113 -6
  39. package/dist/connectors/postgres.js.map +1 -1
  40. package/dist/connectors/redshift.d.ts +90 -0
  41. package/dist/connectors/redshift.d.ts.map +1 -1
  42. package/dist/connectors/redshift.js +131 -7
  43. package/dist/connectors/redshift.js.map +1 -1
  44. package/dist/connectors/snowflake.d.ts +108 -0
  45. package/dist/connectors/snowflake.d.ts.map +1 -1
  46. package/dist/connectors/snowflake.js +137 -3
  47. package/dist/connectors/snowflake.js.map +1 -1
  48. package/dist/connectors/synapse.d.ts +123 -0
  49. package/dist/connectors/synapse.d.ts.map +1 -0
  50. package/dist/connectors/synapse.js +495 -0
  51. package/dist/connectors/synapse.js.map +1 -0
  52. package/dist/db/index.d.ts +25 -0
  53. package/dist/db/index.d.ts.map +1 -1
  54. package/dist/db/index.js +23 -0
  55. package/dist/db/index.js.map +1 -1
  56. package/dist/db/migrate.d.ts +23 -0
  57. package/dist/db/migrate.d.ts.map +1 -1
  58. package/dist/db/migrate.js +38 -0
  59. package/dist/db/migrate.js.map +1 -1
  60. package/dist/db/schema.d.ts +11 -0
  61. package/dist/db/schema.d.ts.map +1 -1
  62. package/dist/db/schema.js +70 -0
  63. package/dist/db/schema.js.map +1 -1
  64. package/dist/errors/debug-factory.d.ts +38 -0
  65. package/dist/errors/debug-factory.d.ts.map +1 -1
  66. package/dist/errors/debug-factory.js +40 -0
  67. package/dist/errors/debug-factory.js.map +1 -1
  68. package/dist/errors/index.d.ts +59 -0
  69. package/dist/errors/index.d.ts.map +1 -1
  70. package/dist/errors/index.js +110 -7
  71. package/dist/errors/index.js.map +1 -1
  72. package/dist/index.d.ts +32 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +37 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/metadata/duckdb-storage.d.ts +3 -0
  77. package/dist/metadata/duckdb-storage.d.ts.map +1 -1
  78. package/dist/metadata/duckdb-storage.js +6 -0
  79. package/dist/metadata/duckdb-storage.js.map +1 -1
  80. package/dist/metadata/factory.d.ts +30 -0
  81. package/dist/metadata/factory.d.ts.map +1 -1
  82. package/dist/metadata/factory.js +31 -0
  83. package/dist/metadata/factory.js.map +1 -1
  84. package/dist/metadata/index.d.ts +26 -0
  85. package/dist/metadata/index.d.ts.map +1 -1
  86. package/dist/metadata/index.js +26 -0
  87. package/dist/metadata/index.js.map +1 -1
  88. package/dist/metadata/interface.d.ts +33 -0
  89. package/dist/metadata/interface.d.ts.map +1 -1
  90. package/dist/metadata/interface.js +3 -0
  91. package/dist/metadata/interface.js.map +1 -1
  92. package/dist/metadata/postgresql-storage.d.ts +3 -0
  93. package/dist/metadata/postgresql-storage.d.ts.map +1 -1
  94. package/dist/metadata/postgresql-storage.js +12 -2
  95. package/dist/metadata/postgresql-storage.js.map +1 -1
  96. package/dist/metadata/schema-config.d.ts +53 -0
  97. package/dist/metadata/schema-config.d.ts.map +1 -1
  98. package/dist/metadata/schema-config.js +64 -0
  99. package/dist/metadata/schema-config.js.map +1 -1
  100. package/dist/metadata/types.d.ts +3 -0
  101. package/dist/metadata/types.d.ts.map +1 -1
  102. package/dist/metadata/types.js +3 -0
  103. package/dist/metadata/types.js.map +1 -1
  104. package/dist/monitor/baseline-calculator.d.ts +56 -0
  105. package/dist/monitor/baseline-calculator.d.ts.map +1 -1
  106. package/dist/monitor/baseline-calculator.js +72 -0
  107. package/dist/monitor/baseline-calculator.js.map +1 -1
  108. package/dist/monitor/baseline-config.d.ts +77 -0
  109. package/dist/monitor/baseline-config.d.ts.map +1 -1
  110. package/dist/monitor/baseline-config.js +79 -1
  111. package/dist/monitor/baseline-config.js.map +1 -1
  112. package/dist/monitor/freshness.d.ts +40 -0
  113. package/dist/monitor/freshness.d.ts.map +1 -1
  114. package/dist/monitor/freshness.js +82 -3
  115. package/dist/monitor/freshness.js.map +1 -1
  116. package/dist/monitor/index.d.ts +29 -0
  117. package/dist/monitor/index.d.ts.map +1 -1
  118. package/dist/monitor/index.js +29 -0
  119. package/dist/monitor/index.js.map +1 -1
  120. package/dist/monitor/schema-baseline.d.ts +45 -0
  121. package/dist/monitor/schema-baseline.d.ts.map +1 -1
  122. package/dist/monitor/schema-baseline.js +63 -5
  123. package/dist/monitor/schema-baseline.js.map +1 -1
  124. package/dist/monitor/schema-changes.d.ts +45 -0
  125. package/dist/monitor/schema-changes.d.ts.map +1 -1
  126. package/dist/monitor/schema-changes.js +85 -0
  127. package/dist/monitor/schema-changes.js.map +1 -1
  128. package/dist/monitor/volume.d.ts +43 -0
  129. package/dist/monitor/volume.d.ts.map +1 -1
  130. package/dist/monitor/volume.js +89 -0
  131. package/dist/monitor/volume.js.map +1 -1
  132. package/dist/observability/logger.d.ts +91 -0
  133. package/dist/observability/logger.d.ts.map +1 -1
  134. package/dist/observability/logger.js +108 -0
  135. package/dist/observability/logger.js.map +1 -1
  136. package/dist/observability/metrics.d.ts +140 -0
  137. package/dist/observability/metrics.d.ts.map +1 -1
  138. package/dist/observability/metrics.js +184 -7
  139. package/dist/observability/metrics.js.map +1 -1
  140. package/dist/resilience/circuit-breaker.d.ts +112 -2
  141. package/dist/resilience/circuit-breaker.d.ts.map +1 -1
  142. package/dist/resilience/circuit-breaker.js +140 -6
  143. package/dist/resilience/circuit-breaker.js.map +1 -1
  144. package/dist/resilience/index.d.ts +9 -0
  145. package/dist/resilience/index.d.ts.map +1 -1
  146. package/dist/resilience/index.js +13 -0
  147. package/dist/resilience/index.js.map +1 -1
  148. package/dist/resilience/retry-policy.d.ts +105 -0
  149. package/dist/resilience/retry-policy.d.ts.map +1 -1
  150. package/dist/resilience/retry-policy.js +158 -7
  151. package/dist/resilience/retry-policy.js.map +1 -1
  152. package/dist/resilience/timeout-manager.d.ts +137 -0
  153. package/dist/resilience/timeout-manager.d.ts.map +1 -1
  154. package/dist/resilience/timeout-manager.js +151 -4
  155. package/dist/resilience/timeout-manager.js.map +1 -1
  156. package/dist/security/query-analyzer.d.ts +124 -0
  157. package/dist/security/query-analyzer.d.ts.map +1 -1
  158. package/dist/security/query-analyzer.js +150 -9
  159. package/dist/security/query-analyzer.js.map +1 -1
  160. package/dist/security/schema-cache.d.ts +152 -0
  161. package/dist/security/schema-cache.d.ts.map +1 -1
  162. package/dist/security/schema-cache.js +144 -12
  163. package/dist/security/schema-cache.js.map +1 -1
  164. package/dist/types/connector.d.ts +68 -1
  165. package/dist/types/connector.d.ts.map +1 -1
  166. package/dist/types/connector.js +38 -15
  167. package/dist/types/connector.js.map +1 -1
  168. package/dist/types/driver-results.d.ts +28 -0
  169. package/dist/types/driver-results.d.ts.map +1 -1
  170. package/dist/types/driver-results.js +12 -0
  171. package/dist/types/driver-results.js.map +1 -1
  172. package/dist/types.d.ts +113 -1
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +8 -0
  175. package/dist/types.js.map +1 -1
  176. package/dist/validation/index.d.ts +8 -0
  177. package/dist/validation/index.d.ts.map +1 -1
  178. package/dist/validation/index.js +12 -0
  179. package/dist/validation/index.js.map +1 -1
  180. package/dist/validation/runtime-validator.d.ts +98 -0
  181. package/dist/validation/runtime-validator.d.ts.map +1 -1
  182. package/dist/validation/runtime-validator.js +114 -1
  183. package/dist/validation/runtime-validator.js.map +1 -1
  184. package/dist/validation/sanitizers.d.ts +59 -0
  185. package/dist/validation/sanitizers.d.ts.map +1 -1
  186. package/dist/validation/sanitizers.js +104 -20
  187. package/dist/validation/sanitizers.js.map +1 -1
  188. package/dist/validation/schemas.d.ts +73 -0
  189. package/dist/validation/schemas.d.ts.map +1 -1
  190. package/dist/validation/schemas.js +132 -5
  191. package/dist/validation/schemas.js.map +1 -1
  192. package/dist/validators/index.d.ts +54 -0
  193. package/dist/validators/index.d.ts.map +1 -1
  194. package/dist/validators/index.js +93 -2
  195. package/dist/validators/index.js.map +1 -1
  196. package/package.json +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAG5C,MAAM,mBAAmB,GAAG;IAC1B,OAAO,CAAC,GAAG,EAAE;IACb,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAStD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAGD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM;gBACT,MAAM,UAAU,EAAE,CAAC;gBACnB,MAAM;YAER,KAAK,MAAM;gBACT,MAAM,UAAU,EAAE,CAAC;gBACnB,MAAM;YAER,KAAK,KAAK;gBACR,MAAM,SAAS,EAAE,CAAC;gBAClB,MAAM;YAER,KAAK,SAAS,CAAC;YACf,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBACd,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,MAAM;YAER,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACX,SAAS,EAAE,CAAC;gBACZ,MAAM;YAER;gBACE,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;QAGzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAKD,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpG,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAKD,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAGvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,OAAO,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,0DAA0D,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,UAAU;IACvB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAGpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAClD,IAAI,MAAM,GAAkB,UAAU,CAAC;IAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAGD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAErB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAG7D,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAE3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAGD,MAAM,aAAa,GAAc;YAC/B,WAAW,EAAE;gBACX,OAAO,EAAE;oBACP,GAAG,MAAM;oBACT,IAAI,EAAE,MAAM;iBACb;aACF;YACD,iBAAiB,EAAE,SAAS;YAC5B,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE,QAAQ;SACvB,CAAC;QAEF,MAAM,cAAc,CAClB,kBAAkB,CAAC,mBAAmB,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CACvC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,4BAA4B,mBAAmB,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAEvD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,sEAAsE,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,UAAU;IACvB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,iBAAiB,IAAI,SAAS,CAAC;IAExF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,kBAAkB,CAAC,eAAe,cAAc,8BAA8B,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC;IAEd,IAAI,CAAC;QAEH,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE/D,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,IAAI,gBAAgB,CAAC,CAAC;QAG3D,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAGxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;gBAEhD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,SAAS;IACtB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,kBAAkB,CAAC,wDAAwD,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,kBAAkB,CAAC,eAAe,MAAM,CAAC,iBAAiB,8BAA8B,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAErE,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,CAAC,IAAI,aAAa,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;IAGpE,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;IACrD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAGvC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAGH,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAI3C,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAGxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAGhF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAKD,SAAS,2BAA2B,CAAC,gBAAwB;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAGtC,IAAI,IAAmB,CAAC;QACxB,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,aAAa,CAAC;YACnB,KAAK,WAAW;gBACd,IAAI,GAAG,UAAU,CAAC;gBAClB,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,GAAG,UAAU,CAAC;gBAClB,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,GAAG,WAAW,CAAC;gBACnB,MAAM;YACR;gBACE,MAAM,IAAI,kBAAkB,CAAC,kCAAkC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,CAAC;QAGD,MAAM,MAAM,GAA8C;YACxD,IAAI;YACJ,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,WAAW;YACjC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;YAC9D,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;YAC9D,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;YAClE,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO;SAC9F,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAKD,SAAS,cAAc,CAAC,IAAmB;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC;QAC7B,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,UAAU,CAAC,CAAC,OAAO,GAAG,CAAC;QAC5B,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC;QAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAKD,SAAS,qBAAqB,CAAC,IAAmB,EAAE,MAAuB;IACzE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,UAAU;YACb,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC;YACE,MAAM,IAAI,kBAAkB,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAG3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kBAAkB,CAAC,oDAAoD,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAc,CAAC;QAGnD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,kBAAkB,CAAC,2BAA2B,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,mCAAmC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAKD,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Secure Azure SQL Database connector for FreshGuard Core
3
+ * Extends BaseConnector with security built-in
4
+ * Uses mssql driver with Azure-specific connection configuration
5
+ *
6
+ * @module @freshguard/freshguard-core/connectors/azure-sql
7
+ */
8
+ import { BaseConnector } from './base-connector.js';
9
+ import type { ConnectorConfig, TableSchema, SecurityConfig } from '../types/connector.js';
10
+ import { type QueryResultRow } from '../types/driver-results.js';
11
+ import type { SourceCredentials } from '../types.js';
12
+ /**
13
+ * Secure Azure SQL Database connector
14
+ *
15
+ * SSL is always enforced (Azure requirement).
16
+ *
17
+ * Features:
18
+ * - SQL injection prevention
19
+ * - Connection timeouts
20
+ * - SSL always enforced (Azure requirement)
21
+ * - Azure AD token-based authentication support
22
+ * - Read-only query patterns
23
+ * - Secure error handling
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { AzureSQLConnector } from '@freshguard/freshguard-core';
28
+ *
29
+ * const connector = new AzureSQLConnector({
30
+ * host: 'myserver.database.windows.net', port: 1433,
31
+ * database: 'analytics',
32
+ * username: 'readonly',
33
+ * password: process.env.AZURE_SQL_PASSWORD!,
34
+ * });
35
+ * ```
36
+ */
37
+ export declare class AzureSQLConnector extends BaseConnector {
38
+ private pool;
39
+ private connected;
40
+ /**
41
+ * @param config - Database connection settings (host, port, database, credentials)
42
+ * @param securityConfig - Optional overrides for query timeouts, max rows, and blocked keywords
43
+ */
44
+ constructor(config: ConnectorConfig, securityConfig?: Partial<SecurityConfig>);
45
+ /**
46
+ * Connect to Azure SQL Database with security validation
47
+ */
48
+ private connect;
49
+ /**
50
+ * Execute a validated SQL query with security measures
51
+ */
52
+ protected executeQuery(sql: string): Promise<QueryResultRow[]>;
53
+ /**
54
+ * Execute a parameterized SQL query using prepared statements
55
+ */
56
+ protected executeParameterizedQuery(sql: string, parameters?: unknown[]): Promise<QueryResultRow[]>;
57
+ /**
58
+ * Test database connection with security validation
59
+ */
60
+ testConnection(debugConfig?: import('../types.js').DebugConfig): Promise<boolean>;
61
+ /**
62
+ * Helper method to merge debug configuration
63
+ */
64
+ private mergeDebugConfig;
65
+ /**
66
+ * Generate connection suggestions based on error (Azure-specific)
67
+ */
68
+ private generateConnectionSuggestion;
69
+ /**
70
+ * List all tables in the database
71
+ */
72
+ listTables(): Promise<string[]>;
73
+ /**
74
+ * Get table schema information securely
75
+ */
76
+ getTableSchema(table: string): Promise<TableSchema>;
77
+ /**
78
+ * Get last modified timestamp using SQL Server-specific methods
79
+ */
80
+ getLastModified(table: string): Promise<Date | null>;
81
+ /**
82
+ * Close the database connection
83
+ */
84
+ close(): Promise<void>;
85
+ /**
86
+ * Map SQL Server/Azure SQL data types to standard types
87
+ */
88
+ private mapMSSQLType;
89
+ /**
90
+ * Override escapeIdentifier for SQL Server bracket notation
91
+ */
92
+ protected escapeIdentifier(identifier: string): string;
93
+ /**
94
+ * Legacy connect method for backward compatibility
95
+ * @deprecated Use constructor with ConnectorConfig instead
96
+ */
97
+ connectLegacy(credentials: SourceCredentials): Promise<void>;
98
+ /**
99
+ * Legacy test connection method for backward compatibility
100
+ * @deprecated Use testConnection() instead
101
+ */
102
+ testConnectionLegacy(): Promise<{
103
+ success: boolean;
104
+ tableCount?: number;
105
+ error?: string;
106
+ }>;
107
+ /**
108
+ * Legacy get table metadata method for backward compatibility
109
+ * @deprecated Use getRowCount() and getMaxTimestamp() instead
110
+ */
111
+ getTableMetadata(tableName: string, timestampColumn?: string): Promise<{
112
+ rowCount: number;
113
+ lastUpdate?: Date;
114
+ }>;
115
+ /**
116
+ * Legacy query method for backward compatibility
117
+ * @deprecated Direct SQL queries are not allowed for security reasons
118
+ */
119
+ query<T = unknown>(_sql: string): Promise<T[]>;
120
+ }
121
+ //# sourceMappingURL=azure-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-sql.d.ts","sourceRoot":"","sources":["../../src/connectors/azure-sql.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,OAAO,CAAC,IAAI,CAAqC;IACjD,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;gBACS,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAM7E;;OAEG;YACW,OAAO;IAyCrB;;OAEG;cACa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIpE;;OAEG;cACa,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoD7G;;OAEG;IACG,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAgEvF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAsCpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BrC;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+CzD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAsC1D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAmDpB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAmBtD;;;OAGG;IACG,aAAa,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlE;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BhG;;;OAGG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,eAAe,SAAe,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC;IAqBnD;;;OAGG;IAEG,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAKrD"}
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Secure Azure SQL Database connector for FreshGuard Core
3
+ * Extends BaseConnector with security built-in
4
+ * Uses mssql driver with Azure-specific connection configuration
5
+ *
6
+ * @module @freshguard/freshguard-core/connectors/azure-sql
7
+ */
8
+ import * as mssql from 'mssql';
9
+ import { BaseConnector } from './base-connector.js';
10
+ import { rowString } from '../types/driver-results.js';
11
+ import { ConnectionError, TimeoutError, QueryError, ErrorHandler } from '../errors/index.js';
12
+ import { validateConnectorConfig } from '../validators/index.js';
13
+ /**
14
+ * Secure Azure SQL Database connector
15
+ *
16
+ * SSL is always enforced (Azure requirement).
17
+ *
18
+ * Features:
19
+ * - SQL injection prevention
20
+ * - Connection timeouts
21
+ * - SSL always enforced (Azure requirement)
22
+ * - Azure AD token-based authentication support
23
+ * - Read-only query patterns
24
+ * - Secure error handling
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * import { AzureSQLConnector } from '@freshguard/freshguard-core';
29
+ *
30
+ * const connector = new AzureSQLConnector({
31
+ * host: 'myserver.database.windows.net', port: 1433,
32
+ * database: 'analytics',
33
+ * username: 'readonly',
34
+ * password: process.env.AZURE_SQL_PASSWORD!,
35
+ * });
36
+ * ```
37
+ */
38
+ export class AzureSQLConnector extends BaseConnector {
39
+ pool = null;
40
+ connected = false;
41
+ /**
42
+ * @param config - Database connection settings (host, port, database, credentials)
43
+ * @param securityConfig - Optional overrides for query timeouts, max rows, and blocked keywords
44
+ */
45
+ constructor(config, securityConfig) {
46
+ // Validate configuration before proceeding
47
+ validateConnectorConfig(config);
48
+ super(config, securityConfig);
49
+ }
50
+ /**
51
+ * Connect to Azure SQL Database with security validation
52
+ */
53
+ async connect() {
54
+ if (this.connected && this.pool) {
55
+ return; // Already connected
56
+ }
57
+ try {
58
+ const poolConfig = {
59
+ server: this.config.host,
60
+ port: this.config.port ?? 1433,
61
+ database: this.config.database,
62
+ user: this.config.username,
63
+ password: this.config.password,
64
+ options: {
65
+ // Azure SQL always requires encryption
66
+ encrypt: true,
67
+ trustServerCertificate: false,
68
+ connectTimeout: this.connectionTimeout,
69
+ requestTimeout: this.queryTimeout,
70
+ appName: this.config.applicationName ?? 'freshguard-core'
71
+ },
72
+ pool: {
73
+ max: 1, // Single connection for monitoring
74
+ min: 0,
75
+ idleTimeoutMillis: 30000
76
+ }
77
+ };
78
+ this.pool = new mssql.ConnectionPool(poolConfig);
79
+ await this.pool.connect();
80
+ this.connected = true;
81
+ }
82
+ catch (error) {
83
+ throw new ConnectionError('Failed to connect to Azure SQL Database', this.config.host, this.config.port, error instanceof Error ? error : undefined);
84
+ }
85
+ }
86
+ /**
87
+ * Execute a validated SQL query with security measures
88
+ */
89
+ async executeQuery(sql) {
90
+ return this.executeParameterizedQuery(sql, []);
91
+ }
92
+ /**
93
+ * Execute a parameterized SQL query using prepared statements
94
+ */
95
+ async executeParameterizedQuery(sql, parameters = []) {
96
+ await this.connect();
97
+ if (!this.pool) {
98
+ throw new ConnectionError('Database connection not available');
99
+ }
100
+ try {
101
+ const result = await this.executeWithTimeout(async () => {
102
+ if (!this.pool)
103
+ throw new ConnectionError('Database connection not available');
104
+ const request = this.pool.request();
105
+ // Bind positional parameters as @p1, @p2, etc.
106
+ for (let i = 0; i < parameters.length; i++) {
107
+ request.input(`p${i + 1}`, parameters[i]);
108
+ }
109
+ // Replace $N placeholders with @pN for MSSQL
110
+ let mssqlSql = sql;
111
+ for (let i = parameters.length; i >= 1; i--) {
112
+ mssqlSql = mssqlSql.replace(new RegExp(`\\$${i}`, 'g'), `@p${i}`);
113
+ }
114
+ // Also replace ? placeholders with @pN
115
+ let paramIndex = 0;
116
+ mssqlSql = mssqlSql.replace(/\?/g, () => `@p${++paramIndex}`);
117
+ const res = await request.query(mssqlSql);
118
+ return (res.recordset ?? []);
119
+ }, this.queryTimeout);
120
+ // Validate result size for security
121
+ this.validateResultSize(result);
122
+ return result;
123
+ }
124
+ catch (error) {
125
+ if (error instanceof TimeoutError) {
126
+ throw error;
127
+ }
128
+ // Sanitize and re-throw as QueryError
129
+ throw new QueryError(ErrorHandler.getUserMessage(error), 'query_execution', undefined, error instanceof Error ? error : undefined);
130
+ }
131
+ }
132
+ /**
133
+ * Test database connection with security validation
134
+ */
135
+ async testConnection(debugConfig) {
136
+ const mergedDebugConfig = this.mergeDebugConfig(debugConfig);
137
+ const debugId = `azuresql-test-${Date.now().toString(36)}-${Math.random().toString(36).substr(2, 5)}`;
138
+ const startTime = performance.now();
139
+ try {
140
+ this.logDebugInfo(mergedDebugConfig, debugId, 'Starting connection test', {
141
+ host: this.config.host,
142
+ port: this.config.port,
143
+ database: this.config.database,
144
+ ssl: this.config.ssl
145
+ });
146
+ await this.connect();
147
+ if (!this.pool) {
148
+ this.logDebugError(mergedDebugConfig, debugId, 'Connection test', {
149
+ error: 'Connection not available after connect',
150
+ duration: performance.now() - startTime
151
+ });
152
+ return false;
153
+ }
154
+ // Test with a simple, safe query (skip validation for connection test)
155
+ const sql = 'SELECT 1 AS test';
156
+ await this.executeWithTimeout(async () => {
157
+ if (!this.pool)
158
+ throw new ConnectionError('Database connection not available');
159
+ const request = this.pool.request();
160
+ return request.query(sql);
161
+ }, this.connectionTimeout);
162
+ const duration = performance.now() - startTime;
163
+ if (mergedDebugConfig?.enabled) {
164
+ console.log(`[DEBUG-${debugId}] Connection test completed:`, {
165
+ success: true,
166
+ duration,
167
+ host: this.config.host,
168
+ database: this.config.database
169
+ });
170
+ }
171
+ return true;
172
+ }
173
+ catch (error) {
174
+ const duration = performance.now() - startTime;
175
+ this.logDebugError(mergedDebugConfig, debugId, 'Connection test', {
176
+ host: this.config.host,
177
+ port: this.config.port,
178
+ database: this.config.database,
179
+ error: mergedDebugConfig?.exposeRawErrors && error instanceof Error ? error.message : 'Connection failed',
180
+ duration,
181
+ suggestion: this.generateConnectionSuggestion(error)
182
+ });
183
+ // Don't throw - this method should return boolean
184
+ return false;
185
+ }
186
+ }
187
+ /**
188
+ * Helper method to merge debug configuration
189
+ */
190
+ mergeDebugConfig(debugConfig) {
191
+ return {
192
+ enabled: debugConfig?.enabled ?? (process.env.NODE_ENV === 'development'),
193
+ exposeQueries: debugConfig?.exposeQueries ?? true,
194
+ exposeRawErrors: debugConfig?.exposeRawErrors ?? true,
195
+ logLevel: debugConfig?.logLevel ?? 'debug'
196
+ };
197
+ }
198
+ /**
199
+ * Generate connection suggestions based on error (Azure-specific)
200
+ */
201
+ generateConnectionSuggestion(error) {
202
+ if (!(error instanceof Error)) {
203
+ return 'Check database connection configuration';
204
+ }
205
+ const message = error.message.toLowerCase();
206
+ if (message.includes('connect econnrefused') || message.includes('connection refused')) {
207
+ return `Azure SQL Database at ${this.config.host}:${this.config.port} is not accepting connections. Verify the server name and check Azure SQL firewall rules.`;
208
+ }
209
+ if (message.includes('timeout') || message.includes('connect timeout')) {
210
+ return `Connection timeout to ${this.config.host}:${this.config.port}. Check Azure SQL firewall rules, network connectivity, and ensure your IP is allowed.`;
211
+ }
212
+ if (message.includes('login failed') || message.includes('authentication failed')) {
213
+ return `Authentication failed for database '${this.config.database}'. Verify username, password, and Azure AD configuration if using AAD auth.`;
214
+ }
215
+ if (message.includes('cannot open database') || (message.includes('database') && message.includes('not exist'))) {
216
+ return `Database '${this.config.database}' not found. Check database name on your Azure SQL server.`;
217
+ }
218
+ if (message.includes('ssl') || message.includes('tls') || message.includes('encrypt')) {
219
+ return `SSL/TLS connection issue. Azure SQL requires encryption - check SSL certificate configuration.`;
220
+ }
221
+ if (message.includes('firewall')) {
222
+ return `Connection blocked by Azure SQL firewall. Add your client IP address to the server's firewall rules in the Azure portal.`;
223
+ }
224
+ if (message.includes('azure active directory') || message.includes('aad')) {
225
+ return `Azure AD authentication issue. Verify Azure AD admin is configured and the user has proper permissions.`;
226
+ }
227
+ return `Connection failed to ${this.config.host}:${this.config.port}. Check host, port, credentials, firewall rules, and network connectivity.`;
228
+ }
229
+ /**
230
+ * List all tables in the database
231
+ */
232
+ async listTables() {
233
+ const sql = `
234
+ SELECT TABLE_NAME as table_name
235
+ FROM INFORMATION_SCHEMA.TABLES
236
+ WHERE TABLE_TYPE = 'BASE TABLE'
237
+ AND TABLE_SCHEMA = 'dbo'
238
+ ORDER BY TABLE_NAME
239
+ `;
240
+ await this.validateQuery(sql);
241
+ try {
242
+ const result = await this.executeQuery(sql);
243
+ return result
244
+ .slice(0, this.maxRows)
245
+ .map((row) => rowString(row.table_name ?? row.TABLE_NAME ?? row.tablename))
246
+ .filter(Boolean);
247
+ }
248
+ catch (error) {
249
+ throw new QueryError('Failed to list tables', 'table_listing', undefined, error instanceof Error ? error : undefined);
250
+ }
251
+ }
252
+ /**
253
+ * Get table schema information securely
254
+ */
255
+ async getTableSchema(table) {
256
+ // Validate table name (identifiers cannot be parameterized)
257
+ this.escapeIdentifier(table);
258
+ const sql = `
259
+ SELECT
260
+ COLUMN_NAME as column_name,
261
+ DATA_TYPE as data_type,
262
+ IS_NULLABLE as is_nullable
263
+ FROM INFORMATION_SCHEMA.COLUMNS
264
+ WHERE TABLE_SCHEMA = 'dbo'
265
+ AND TABLE_NAME = '${table}'
266
+ ORDER BY ORDINAL_POSITION
267
+ `;
268
+ await this.validateQuery(sql);
269
+ try {
270
+ const result = await this.executeQuery(sql);
271
+ const limited = result.slice(0, this.maxRows);
272
+ if (limited.length === 0) {
273
+ throw QueryError.tableNotFound(table);
274
+ }
275
+ return {
276
+ table,
277
+ columns: limited.map(row => ({
278
+ name: rowString(row.column_name ?? row.COLUMN_NAME),
279
+ type: this.mapMSSQLType(rowString(row.data_type ?? row.DATA_TYPE)),
280
+ nullable: (row.is_nullable ?? row.IS_NULLABLE) === 'YES'
281
+ }))
282
+ };
283
+ }
284
+ catch (error) {
285
+ if (error instanceof QueryError) {
286
+ throw error;
287
+ }
288
+ throw new QueryError('Failed to get table schema', 'schema_query', table, error instanceof Error ? error : undefined);
289
+ }
290
+ }
291
+ /**
292
+ * Get last modified timestamp using SQL Server-specific methods
293
+ */
294
+ async getLastModified(table) {
295
+ // Try common timestamp columns
296
+ const timestampColumns = ['updated_at', 'modified_at', 'last_modified', 'timestamp'];
297
+ for (const column of timestampColumns) {
298
+ try {
299
+ const result = await this.getMaxTimestamp(table, column);
300
+ if (result) {
301
+ return result;
302
+ }
303
+ }
304
+ catch {
305
+ // Column doesn't exist, try next one
306
+ continue;
307
+ }
308
+ }
309
+ // Fallback: use SQL Server DMV for index usage stats
310
+ try {
311
+ const sql = `
312
+ SELECT MAX(last_user_update) as last_modified
313
+ FROM sys.dm_db_index_usage_stats
314
+ WHERE database_id = DB_ID()
315
+ AND object_id = OBJECT_ID('dbo.${this.escapeIdentifier(table).replace(/\[|\]/g, '')}')
316
+ `;
317
+ await this.validateQuery(sql);
318
+ const result = await this.executeQuery(sql);
319
+ if (result.length > 0 && result[0]?.last_modified) {
320
+ return new Date(rowString(result[0].last_modified));
321
+ }
322
+ }
323
+ catch {
324
+ // DMV query failed, return null
325
+ }
326
+ return null;
327
+ }
328
+ /**
329
+ * Close the database connection
330
+ */
331
+ async close() {
332
+ if (this.pool) {
333
+ try {
334
+ await this.pool.close();
335
+ }
336
+ catch (error) {
337
+ // Log error but don't throw - closing should be safe
338
+ console.warn('Warning: Error closing Azure SQL connection:', ErrorHandler.getUserMessage(error));
339
+ }
340
+ finally {
341
+ this.pool = null;
342
+ this.connected = false;
343
+ }
344
+ }
345
+ }
346
+ /**
347
+ * Map SQL Server/Azure SQL data types to standard types
348
+ */
349
+ mapMSSQLType(mssqlType) {
350
+ const typeMap = {
351
+ // Numeric types
352
+ 'tinyint': 'integer',
353
+ 'smallint': 'integer',
354
+ 'int': 'integer',
355
+ 'integer': 'integer',
356
+ 'bigint': 'bigint',
357
+ 'decimal': 'decimal',
358
+ 'numeric': 'decimal',
359
+ 'money': 'decimal',
360
+ 'smallmoney': 'decimal',
361
+ 'float': 'float',
362
+ 'real': 'float',
363
+ 'bit': 'boolean',
364
+ // String types
365
+ 'char': 'text',
366
+ 'varchar': 'text',
367
+ 'text': 'text',
368
+ 'nchar': 'text',
369
+ 'nvarchar': 'text',
370
+ 'ntext': 'text',
371
+ // Date/time types
372
+ 'date': 'date',
373
+ 'time': 'time',
374
+ 'datetime': 'timestamp',
375
+ 'datetime2': 'timestamp',
376
+ 'smalldatetime': 'timestamp',
377
+ 'datetimeoffset': 'timestamptz',
378
+ // Binary types
379
+ 'binary': 'text',
380
+ 'varbinary': 'text',
381
+ 'image': 'text',
382
+ // Special types
383
+ 'uniqueidentifier': 'text',
384
+ 'xml': 'text',
385
+ 'sql_variant': 'text',
386
+ 'hierarchyid': 'text',
387
+ 'geometry': 'text',
388
+ 'geography': 'text',
389
+ 'timestamp': 'text',
390
+ 'rowversion': 'text'
391
+ };
392
+ return typeMap[mssqlType.toLowerCase()] ?? 'unknown';
393
+ }
394
+ /**
395
+ * Override escapeIdentifier for SQL Server bracket notation
396
+ */
397
+ escapeIdentifier(identifier) {
398
+ // Only allow alphanumeric, underscore, and dot (for schema.table)
399
+ if (!/^[a-zA-Z0-9_.]+$/.test(identifier)) {
400
+ throw new Error(`Invalid identifier: ${identifier}`);
401
+ }
402
+ // Additional length check
403
+ if (identifier.length > 256) {
404
+ throw new Error('Identifier too long');
405
+ }
406
+ // Return with brackets for SQL Server
407
+ return `[${identifier}]`;
408
+ }
409
+ // ==============================================
410
+ // Legacy API compatibility methods
411
+ // ==============================================
412
+ /**
413
+ * Legacy connect method for backward compatibility
414
+ * @deprecated Use constructor with ConnectorConfig instead
415
+ */
416
+ async connectLegacy(credentials) {
417
+ console.warn('Warning: connectLegacy is deprecated. Use constructor with ConnectorConfig instead.');
418
+ // Convert legacy credentials to new format
419
+ const config = {
420
+ host: credentials.host ?? '',
421
+ port: credentials.port ?? 1433,
422
+ database: credentials.database ?? '',
423
+ username: credentials.username ?? '',
424
+ password: credentials.password ?? '',
425
+ ssl: credentials.sslMode !== 'disable'
426
+ };
427
+ // Validate and reconnect
428
+ validateConnectorConfig(config);
429
+ this.config = { ...this.config, ...config };
430
+ await this.connect();
431
+ }
432
+ /**
433
+ * Legacy test connection method for backward compatibility
434
+ * @deprecated Use testConnection() instead
435
+ */
436
+ async testConnectionLegacy() {
437
+ console.warn('Warning: testConnectionLegacy is deprecated. Use testConnection() instead.');
438
+ try {
439
+ const success = await this.testConnection();
440
+ if (success) {
441
+ // Get table count for legacy compatibility
442
+ const tables = await this.listTables();
443
+ return {
444
+ success: true,
445
+ tableCount: tables.length
446
+ };
447
+ }
448
+ else {
449
+ return {
450
+ success: false,
451
+ error: 'Connection test failed'
452
+ };
453
+ }
454
+ }
455
+ catch (error) {
456
+ return {
457
+ success: false,
458
+ error: ErrorHandler.getUserMessage(error)
459
+ };
460
+ }
461
+ }
462
+ /**
463
+ * Legacy get table metadata method for backward compatibility
464
+ * @deprecated Use getRowCount() and getMaxTimestamp() instead
465
+ */
466
+ async getTableMetadata(tableName, timestampColumn = 'updated_at') {
467
+ console.warn('Warning: getTableMetadata is deprecated. Use getRowCount() and getMaxTimestamp() instead.');
468
+ try {
469
+ const rowCount = await this.getRowCount(tableName);
470
+ const lastUpdate = await this.getMaxTimestamp(tableName, timestampColumn);
471
+ return {
472
+ rowCount,
473
+ lastUpdate: lastUpdate ?? undefined
474
+ };
475
+ }
476
+ catch (error) {
477
+ throw new QueryError('Failed to get table metadata', 'metadata_query', tableName, error instanceof Error ? error : undefined);
478
+ }
479
+ }
480
+ /**
481
+ * Legacy query method for backward compatibility
482
+ * @deprecated Direct SQL queries are not allowed for security reasons
483
+ */
484
+ // eslint-disable-next-line @typescript-eslint/require-await -- deprecated stub that always throws
485
+ async query(_sql) {
486
+ throw new Error('Direct SQL queries are not allowed for security reasons. Use specific methods like getRowCount(), getMaxTimestamp(), etc.');
487
+ }
488
+ }
489
+ //# sourceMappingURL=azure-sql.js.map