@connorbritain/mssql-mcp-server 0.3.6 → 0.4.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 (99) hide show
  1. package/dist/index.js +6 -751
  2. package/dist/index.js.map +1 -1
  3. package/package.json +2 -5
  4. package/dist/audit/AuditLogger.d.ts +0 -37
  5. package/dist/audit/AuditLogger.d.ts.map +0 -1
  6. package/dist/audit/AuditLogger.js +0 -145
  7. package/dist/audit/AuditLogger.js.map +0 -1
  8. package/dist/config/EnvironmentManager.d.ts +0 -75
  9. package/dist/config/EnvironmentManager.d.ts.map +0 -1
  10. package/dist/config/EnvironmentManager.js +0 -305
  11. package/dist/config/EnvironmentManager.js.map +0 -1
  12. package/dist/config/ScriptManager.d.ts +0 -69
  13. package/dist/config/ScriptManager.d.ts.map +0 -1
  14. package/dist/config/ScriptManager.js +0 -166
  15. package/dist/config/ScriptManager.js.map +0 -1
  16. package/dist/config/SecretResolver.d.ts +0 -66
  17. package/dist/config/SecretResolver.d.ts.map +0 -1
  18. package/dist/config/SecretResolver.js +0 -230
  19. package/dist/config/SecretResolver.js.map +0 -1
  20. package/dist/tools/CreateIndexTool.d.ts +0 -24
  21. package/dist/tools/CreateIndexTool.d.ts.map +0 -1
  22. package/dist/tools/CreateIndexTool.js +0 -64
  23. package/dist/tools/CreateIndexTool.js.map +0 -1
  24. package/dist/tools/CreateTableTool.d.ts +0 -12
  25. package/dist/tools/CreateTableTool.d.ts.map +0 -1
  26. package/dist/tools/CreateTableTool.js +0 -49
  27. package/dist/tools/CreateTableTool.js.map +0 -1
  28. package/dist/tools/DeleteDataTool.d.ts +0 -56
  29. package/dist/tools/DeleteDataTool.d.ts.map +0 -1
  30. package/dist/tools/DeleteDataTool.js +0 -103
  31. package/dist/tools/DeleteDataTool.js.map +0 -1
  32. package/dist/tools/DescribeTableTool.d.ts +0 -32
  33. package/dist/tools/DescribeTableTool.d.ts.map +0 -1
  34. package/dist/tools/DescribeTableTool.js +0 -108
  35. package/dist/tools/DescribeTableTool.js.map +0 -1
  36. package/dist/tools/DropTableTool.d.ts +0 -12
  37. package/dist/tools/DropTableTool.d.ts.map +0 -1
  38. package/dist/tools/DropTableTool.js +0 -37
  39. package/dist/tools/DropTableTool.js.map +0 -1
  40. package/dist/tools/ExplainQueryTool.d.ts +0 -24
  41. package/dist/tools/ExplainQueryTool.d.ts.map +0 -1
  42. package/dist/tools/ExplainQueryTool.js +0 -98
  43. package/dist/tools/ExplainQueryTool.js.map +0 -1
  44. package/dist/tools/InsertDataTool.d.ts +0 -17
  45. package/dist/tools/InsertDataTool.d.ts.map +0 -1
  46. package/dist/tools/InsertDataTool.js +0 -102
  47. package/dist/tools/InsertDataTool.js.map +0 -1
  48. package/dist/tools/InspectDependenciesTool.d.ts +0 -45
  49. package/dist/tools/InspectDependenciesTool.d.ts.map +0 -1
  50. package/dist/tools/InspectDependenciesTool.js +0 -215
  51. package/dist/tools/InspectDependenciesTool.js.map +0 -1
  52. package/dist/tools/ListDatabasesTool.d.ts +0 -27
  53. package/dist/tools/ListDatabasesTool.d.ts.map +0 -1
  54. package/dist/tools/ListDatabasesTool.js +0 -107
  55. package/dist/tools/ListDatabasesTool.js.map +0 -1
  56. package/dist/tools/ListEnvironmentsTool.d.ts +0 -49
  57. package/dist/tools/ListEnvironmentsTool.d.ts.map +0 -1
  58. package/dist/tools/ListEnvironmentsTool.js +0 -73
  59. package/dist/tools/ListEnvironmentsTool.js.map +0 -1
  60. package/dist/tools/ListScriptsTool.d.ts +0 -41
  61. package/dist/tools/ListScriptsTool.d.ts.map +0 -1
  62. package/dist/tools/ListScriptsTool.js +0 -86
  63. package/dist/tools/ListScriptsTool.js.map +0 -1
  64. package/dist/tools/ListTableTool.d.ts +0 -24
  65. package/dist/tools/ListTableTool.d.ts.map +0 -1
  66. package/dist/tools/ListTableTool.js +0 -85
  67. package/dist/tools/ListTableTool.js.map +0 -1
  68. package/dist/tools/ProfileTableTool.d.ts +0 -78
  69. package/dist/tools/ProfileTableTool.d.ts.map +0 -1
  70. package/dist/tools/ProfileTableTool.js +0 -373
  71. package/dist/tools/ProfileTableTool.js.map +0 -1
  72. package/dist/tools/ReadDataTool.d.ts +0 -61
  73. package/dist/tools/ReadDataTool.d.ts.map +0 -1
  74. package/dist/tools/ReadDataTool.js +0 -299
  75. package/dist/tools/ReadDataTool.js.map +0 -1
  76. package/dist/tools/RelationshipInspectorTool.d.ts +0 -46
  77. package/dist/tools/RelationshipInspectorTool.d.ts.map +0 -1
  78. package/dist/tools/RelationshipInspectorTool.js +0 -156
  79. package/dist/tools/RelationshipInspectorTool.js.map +0 -1
  80. package/dist/tools/RunScriptTool.d.ts +0 -215
  81. package/dist/tools/RunScriptTool.d.ts.map +0 -1
  82. package/dist/tools/RunScriptTool.js +0 -177
  83. package/dist/tools/RunScriptTool.js.map +0 -1
  84. package/dist/tools/SearchSchemaTool.d.ts +0 -88
  85. package/dist/tools/SearchSchemaTool.d.ts.map +0 -1
  86. package/dist/tools/SearchSchemaTool.js +0 -237
  87. package/dist/tools/SearchSchemaTool.js.map +0 -1
  88. package/dist/tools/TestConnectionTool.d.ts +0 -38
  89. package/dist/tools/TestConnectionTool.d.ts.map +0 -1
  90. package/dist/tools/TestConnectionTool.js +0 -156
  91. package/dist/tools/TestConnectionTool.js.map +0 -1
  92. package/dist/tools/UpdateDataTool.d.ts +0 -61
  93. package/dist/tools/UpdateDataTool.d.ts.map +0 -1
  94. package/dist/tools/UpdateDataTool.js +0 -117
  95. package/dist/tools/UpdateDataTool.js.map +0 -1
  96. package/dist/tools/ValidateEnvironmentConfigTool.d.ts +0 -51
  97. package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +0 -1
  98. package/dist/tools/ValidateEnvironmentConfigTool.js +0 -320
  99. package/dist/tools/ValidateEnvironmentConfigTool.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,qFAAqF;AACrF,oFAAoF;AACpF,IAAI,CAAE,UAAkB,CAAC,UAAU,EAAE,CAAC;IACnC,UAAkB,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAY,OAAO,CAAC,iBAAiB,CAAS,CAAC,OAAO,IAAI,SAAS,CAAC;AAExF,wDAAwD;AACxD,8EAA8E;AAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AA4DvC,MAAM,YAAY;IAKhB,YAAY,OAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,+BAA+B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,qCAAqC;gBAC9C,KAAK,EAAE,gBAAgB;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAE9C,2DAA2D;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAClF,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;QAC1C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7E,MAAM,UAAU,GAAG,aAAa;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,CAAC,CACzF;aACA,MAAM,CAAC,CAAC,SAAS,EAAiC,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;aAChG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EACL,qLAAqL;gBACvL,KAAK,EAAE,eAAe;aACvB,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;gBACrC,OAAO,EAAE,kBAAkB,aAAa,CAAC,MAAM,CAAC,IAAI,2BAA2B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;gBAC/I,KAAK,EAAE,mBAAmB;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,oBAAoB,GACxB,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB;YACxC,aAAa,CAAC,MAAM,CAAC,WAAW;YAChC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;YACpC,IAAI,CAAC,+BAA+B,CAAC;QAEvC,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;gBACrC,OAAO,EACL,qFAAqF;gBACvF,KAAK,EAAE,uBAAuB;aAC/B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;gBACrC,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,aAAa,CAAC,OAAO;gBAChC,UAAU,EAAE,MAAM;gBAClB,mBAAmB,EAAE,WAAW;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;gBACrC,OAAO,EAAE,gBAAgB,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,KAAK,EAAE;gBACtE,KAAK,EAAE,oBAAoB;gBAC3B,mBAAmB,EAAE,WAAW;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACrC,8CAA8C;QAC9C,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAEnD,2CAA2C;QAC3C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG;gBACf,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC;gBACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,0BAA0B;aACtF,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,OAAO,GAAG,CAAC,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,WAAW,GAA6B;YAC5C,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC;YACpC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;YACpC,GAAG,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;SACrC,CAAC;QAEF,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,8CAA8C;oBAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzC,CAAC;oBACF,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,WAAW,CAAC,IAAI,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,IAAS;QAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,IAAuB;QAC5C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,aAAkC;QACpE,MAAM,SAAS,GAA0D;YACvE;gBACE,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC;aACvF;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;aAC/E;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC;aACzE;YACD;gBACE,MAAM,EAAE,kBAAkB;gBAC1B,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACpF;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;aAClE;SACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrE,OAAO,eAAe,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,aAAa,EAAE,YAAY,IAAI,aAAa,EAAE,aAAa,EAAE,CAAC;YAChE,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,iBAAiB,CAAC,IAAyB;QACjD,MAAM,YAAY,GAChB,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACjG,OAAO,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC;IACpD,CAAC;IAEO,SAAS,CACf,MAAyB,EACzB,MAAc,EACd,aAAkC,EAClC,cAA8B,EAC9B,iBAA0B;QAE1B,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;QACpC,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,KAAK,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,cAAc,GAAG,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,iBAAiB,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC3D,KAAK,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,KAAK,IAAI,CAAC,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;oBACzC,KAAK,IAAI,CAAC,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxE,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAEO,WAAW,CAAC,IAAyB,EAAE,GAAW;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,MAAyB,EAAE,IAAyB;QAC9E,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,gFAAgF;AAEhF,iCAAiC;AACjC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;AAEnD,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACxC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AACxD,MAAM,6BAA6B,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAC1E,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAC9D,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAChD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAChD,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAClE,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEhD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,YAAY,GAAwB;IACxC;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;QACzD,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,SAAS,EAAE,CAAC;KACb;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC7B,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC;QAClD,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,iBAAiB,CAAC,IAAI;QAC5B,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC;QAC9C,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB,CAAC,IAAI;QAC3B,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;QACvC,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB,CAAC,IAAI;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC;QAC/C,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,yBAAyB,CAAC,IAAI;QACpC,OAAO,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACzC,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,CAAC;QACxD,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC;QAC5C,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;QACvC,YAAY,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QAC1C,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC;QACrD,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;QACvC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACtC,YAAY,EAAE,IAAI;KACnB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;QACvC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;QACnD,YAAY,EAAE,IAAI;KACnB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;QACxD,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;QAClD,SAAS,EAAE,CAAC;KACb;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB,CAAC,IAAI;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;QACrD,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,SAAS,EAAE,CAAC;KACb;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,iBAAiB,CAAC,IAAI;QAC5B,OAAO,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;QACzC,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,CAAC;QAClE,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,oBAAoB,CAAC,IAAI;QAC/B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC;QACzE,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,6BAA6B,CAAC,IAAI;QACxC,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC;QACpE,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC;QACnE,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;QACpC,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACtD,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,SAAS,EAAE,GAAG;KACf;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,uBAAuB,CAAC,IAAI;QAClC,OAAO,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;QACzC,QAAQ,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC1E,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,SAAS,EAAE,GAAG;KACf;CACF,CAAC;AAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,6BAA6B;AAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AACnD,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,OAAO,CAAC;AAE1F,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;IACpC,KAAK,EAAE,YAAY;IACnB,cAAc,EAAE,CAAC,UAAU;IAC3B,+BAA+B,EAAE,2BAA2B;CAC7D,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG;IACvB,aAAa;IACb,oBAAoB;IACpB,6BAA6B;IAC7B,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,yBAAyB;IACzB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;CACjB,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,eAAe;IACf,aAAa;IACb,aAAa;IACb,iBAAiB;IACjB,oBAAoB;IACpB,6BAA6B;IAC7B,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,yBAAyB;IACzB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;CACjB,CAAC;AAEF,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;AAElE,mBAAmB;AACnB,0CAA0C;AAC1C,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,YAAY;CACpB,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,cAAc,CAAC,IAAI;gBACtB,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,cAAc,CAAC,IAAI;gBACtB,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,YAAY,CAAC,IAAI;gBACpB,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,cAAc,CAAC,IAAI;gBACtB,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,aAAa,CAAC,IAAI;gBACrB,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,iBAAiB,CAAC,IAAI;gBACzB,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,oBAAoB,CAAC,IAAI;gBAC5B,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,6BAA6B,CAAC,IAAI;gBACrC,MAAM,GAAG,MAAM,6BAA6B,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,aAAa,CAAC,IAAI;gBACrB,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,uBAAuB,CAAC,IAAI;gBAC/B,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,aAAa,CAAC,IAAI;gBACrB,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,gBAAgB,CAAC,IAAI;gBACxB,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,iBAAiB,CAAC,IAAI;gBACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC;wBACrG,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAA6B,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,gBAAgB,CAAC,IAAI;gBACxB,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,gBAAgB,CAAC,IAAI;gBACxB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iEAAiE,EAAE,CAAC;wBACpG,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,yBAAyB,CAAC,IAAI;gBACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAyE,EAAE,CAAC;wBAC5G,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,MAAM,yBAAyB,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;oBAC1D,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,KAAK,EAAE,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAEH,0FAA0F;AAC1F,SAAS,WAAW,CAAC,IAA6D;IAChF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,GAAG,KAAK,WAAW,GAAG,IAAW;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAwB,CAAC;QACvD,MAAM,oBAAoB,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAE1E,8CAA8C;QAC9C,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,KAAK;YACrC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,KAAK;YACnD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,OAAO;SAC5C,CAAC;QAEF,+CAA+C;QAC/C,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClG,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,0CAA0C,MAAM,CAAC,IAAI,IAAI;gBACpF,KAAK,EAAE,aAAa;aACrB,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtG,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,sCAAsC,MAAM,CAAC,IAAI,qBAAqB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAClI,KAAK,EAAE,kBAAkB;aAC1B,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,IAAI,MAAM,CAAC,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,gBAAgB,MAAM,CAAC,IAAI,yBAAyB,IAAI,CAAC,IAAI,uBAAuB;gBAC7F,KAAK,EAAE,sBAAsB;aAC9B,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;YACjD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE,gBAAgB,MAAM,CAAC,IAAI,qCAAqC,IAAI,CAAC,IAAI,mEAAmE;oBACrJ,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,MAAM,CAAC,IAAI;oBACxB,iBAAiB,EAAE,OAAO;oBAC1B,IAAI,EAAE,uEAAuE;iBAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjE,iEAAiE;QACjE,MAAM,QAAQ,GAAG;YACf,GAAG,OAAO;YACV,WAAW,EAAE,MAAM,CAAC,IAAI;YACxB,iBAAiB,EAAE,MAAM;YACzB,IAAI;YACJ,gBAAgB,EAAE,cAAc;SACjC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,4EAA4E;YAC5E,WAAW,CAAC,iBAAiB,CAC3B,IAAI,CAAC,IAAI,EACT,QAAQ,EACR,MAAM,EACN,UAAU,EACV;gBACE,SAAS,EAAE,UAAU;gBACrB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,UAAU,EAAE,MAAM,CAAC,UAAiB;aACrC,CACF,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,kCAAkC;YAClC,WAAW,CAAC,iBAAiB,CAC3B,IAAI,CAAC,IAAI,EACT,QAAQ,EACR,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EACxC,UAAU,EACV;gBACE,SAAS,EAAE,UAAU;gBACrB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,UAAU,EAAE,MAAM,CAAC,UAAiB;aACrC,CACF,CAAC;YAEF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,eAAe,EAAE,aAAa,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,cAAc,CAAC;IACb,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;CACd,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@connorbritain/mssql-mcp-server",
3
3
  "mcpName": "io.github.ConnorBritain/mssql",
4
- "version": "0.3.6",
4
+ "version": "0.4.0",
5
5
  "description": "Model Context Protocol (MCP) server for Microsoft SQL Server - enterprise-ready schema discovery, profiling, and safe data operations",
6
6
  "keywords": [
7
7
  "mcp",
@@ -43,10 +43,7 @@
43
43
  "typescript": "^5.4.5"
44
44
  },
45
45
  "dependencies": {
46
- "@azure/identity": "^4.4.0",
47
- "@modelcontextprotocol/sdk": "^1.23.0",
48
- "dotenv": "^16.4.5",
49
- "mssql": "^10.0.1"
46
+ "@connorbritain/mssql-mcp-core": "^0.1.0"
50
47
  },
51
48
  "type": "module"
52
49
  }
@@ -1,37 +0,0 @@
1
- export type AuditLevel = "none" | "basic" | "verbose";
2
- export interface AuditLogEntry {
3
- timestamp: string;
4
- toolName: string;
5
- environment?: string;
6
- arguments?: Record<string, any>;
7
- result?: {
8
- success: boolean;
9
- recordCount?: number;
10
- error?: string;
11
- data?: any;
12
- };
13
- durationMs?: number;
14
- sessionId?: string;
15
- userId?: string;
16
- }
17
- export declare class AuditLogger {
18
- private readonly logFilePath;
19
- private readonly enabled;
20
- private readonly redactSensitiveData;
21
- constructor();
22
- private ensureLogDirectory;
23
- private redactArguments;
24
- log(entry: AuditLogEntry): void;
25
- logToolInvocation(toolName: string, args: any, result: any, durationMs: number, options?: {
26
- sessionId?: string;
27
- userId?: string;
28
- environment?: string;
29
- auditLevel?: AuditLevel;
30
- }): void;
31
- /**
32
- * Truncate result data for verbose logging to prevent huge log entries
33
- */
34
- private truncateResultData;
35
- }
36
- export declare const auditLogger: AuditLogger;
37
- //# sourceMappingURL=AuditLogger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuditLogger.d.ts","sourceRoot":"","sources":["../../src/audit/AuditLogger.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;;IAoB9C,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IA6BvB,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkB/B,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GACA,IAAI;IA+CP;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA2B3B;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -1,145 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- export class AuditLogger {
4
- constructor() {
5
- // Read config from env vars
6
- const logPath = process.env.AUDIT_LOG_PATH;
7
- this.enabled = process.env.AUDIT_LOGGING !== "false"; // Enabled by default
8
- this.redactSensitiveData = process.env.AUDIT_REDACT_SENSITIVE !== "false"; // Redact by default
9
- if (this.enabled && logPath) {
10
- this.logFilePath = path.resolve(logPath);
11
- this.ensureLogDirectory();
12
- }
13
- else if (this.enabled) {
14
- // Default to logs/audit.jsonl in the project root
15
- this.logFilePath = path.resolve(process.cwd(), "logs", "audit.jsonl");
16
- this.ensureLogDirectory();
17
- }
18
- else {
19
- this.logFilePath = "";
20
- }
21
- }
22
- ensureLogDirectory() {
23
- if (!this.logFilePath)
24
- return;
25
- const dir = path.dirname(this.logFilePath);
26
- if (!fs.existsSync(dir)) {
27
- fs.mkdirSync(dir, { recursive: true });
28
- }
29
- }
30
- redactArguments(args) {
31
- if (!this.redactSensitiveData) {
32
- return args;
33
- }
34
- const redacted = { ...args };
35
- const sensitiveKeys = [
36
- "password",
37
- "secret",
38
- "token",
39
- "key",
40
- "authorization",
41
- "auth",
42
- "credential",
43
- ];
44
- for (const [key, value] of Object.entries(redacted)) {
45
- const lowerKey = key.toLowerCase();
46
- if (sensitiveKeys.some((sensitive) => lowerKey.includes(sensitive))) {
47
- redacted[key] = "[REDACTED]";
48
- }
49
- else if (typeof value === "string" && value.length > 500) {
50
- // Truncate very long strings (likely large query results)
51
- redacted[key] = value.substring(0, 500) + "... [TRUNCATED]";
52
- }
53
- }
54
- return redacted;
55
- }
56
- log(entry) {
57
- if (!this.enabled || !this.logFilePath) {
58
- return;
59
- }
60
- try {
61
- const logEntry = {
62
- ...entry,
63
- arguments: entry.arguments ? this.redactArguments(entry.arguments) : undefined,
64
- };
65
- const logLine = JSON.stringify(logEntry) + "\n";
66
- fs.appendFileSync(this.logFilePath, logLine, { encoding: "utf-8" });
67
- }
68
- catch (error) {
69
- console.error("Failed to write audit log:", error);
70
- }
71
- }
72
- logToolInvocation(toolName, args, result, durationMs, options) {
73
- const auditLevel = options?.auditLevel ?? "basic";
74
- // Skip logging entirely for 'none' level
75
- if (auditLevel === "none") {
76
- return;
77
- }
78
- // Basic level: minimal info (tool name, success, timing, environment)
79
- if (auditLevel === "basic") {
80
- const entry = {
81
- timestamp: new Date().toISOString(),
82
- toolName,
83
- environment: options?.environment,
84
- result: {
85
- success: result?.success ?? false,
86
- recordCount: result?.recordCount ?? result?.rowsAffected,
87
- error: result?.error,
88
- },
89
- durationMs: Math.round(durationMs),
90
- sessionId: options?.sessionId,
91
- userId: options?.userId,
92
- };
93
- this.log(entry);
94
- return;
95
- }
96
- // Verbose level: full arguments and result data
97
- const entry = {
98
- timestamp: new Date().toISOString(),
99
- toolName,
100
- environment: options?.environment,
101
- arguments: args || {},
102
- result: {
103
- success: result?.success ?? false,
104
- recordCount: result?.recordCount ?? result?.rowsAffected,
105
- error: result?.error,
106
- data: this.truncateResultData(result?.data),
107
- },
108
- durationMs: Math.round(durationMs),
109
- sessionId: options?.sessionId,
110
- userId: options?.userId,
111
- };
112
- this.log(entry);
113
- }
114
- /**
115
- * Truncate result data for verbose logging to prevent huge log entries
116
- */
117
- truncateResultData(data) {
118
- if (!data)
119
- return undefined;
120
- // If it's an array, limit to first 10 items
121
- if (Array.isArray(data)) {
122
- if (data.length > 10) {
123
- return {
124
- _truncated: true,
125
- _totalCount: data.length,
126
- items: data.slice(0, 10),
127
- };
128
- }
129
- return data;
130
- }
131
- // If it's a large object (stringified > 10KB), truncate
132
- const stringified = JSON.stringify(data);
133
- if (stringified.length > 10000) {
134
- return {
135
- _truncated: true,
136
- _originalSize: stringified.length,
137
- preview: stringified.substring(0, 1000) + "...",
138
- };
139
- }
140
- return data;
141
- }
142
- }
143
- // Singleton instance
144
- export const auditLogger = new AuditLogger();
145
- //# sourceMappingURL=AuditLogger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuditLogger.js","sourceRoot":"","sources":["../../src/audit/AuditLogger.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- import sql from "mssql";
2
- import { SecretResolver, SecretsConfig } from "./SecretResolver.js";
3
- export type AccessLevel = "server" | "database";
4
- export type TierLevel = "reader" | "writer" | "admin";
5
- export type AuditLevel = "none" | "basic" | "verbose";
6
- export interface EnvironmentConfig {
7
- name: string;
8
- description?: string;
9
- server: string;
10
- database: string;
11
- port?: number;
12
- authMode: "sql" | "windows" | "aad";
13
- username?: string;
14
- password?: string;
15
- domain?: string;
16
- trustServerCertificate?: boolean;
17
- connectionTimeout?: number;
18
- requestTimeout?: number;
19
- readonly?: boolean;
20
- allowedTools?: string[];
21
- deniedTools?: string[];
22
- maxRowsDefault?: number;
23
- requireApproval?: boolean;
24
- auditLevel?: AuditLevel;
25
- accessLevel?: AccessLevel;
26
- allowedDatabases?: string[] | "*";
27
- deniedDatabases?: string[];
28
- allowedSchemas?: string[];
29
- deniedSchemas?: string[];
30
- tier?: TierLevel;
31
- }
32
- export interface EnvironmentsConfig {
33
- defaultEnvironment?: string;
34
- environments: EnvironmentConfig[];
35
- scriptsPath?: string;
36
- secrets?: SecretsConfig;
37
- }
38
- export declare class EnvironmentManager {
39
- private readonly environments;
40
- private defaultEnvironment?;
41
- private readonly connections;
42
- private secretResolver;
43
- constructor(configPath?: string);
44
- getSecretResolver(): SecretResolver;
45
- private loadFromFile;
46
- private loadFromEnvVars;
47
- getEnvironment(name?: string): EnvironmentConfig;
48
- listEnvironments(): EnvironmentConfig[];
49
- /**
50
- * Check if the environment allows access to a specific database.
51
- * For database-level access, only the configured database is allowed.
52
- * For server-level access, checks allowedDatabases/deniedDatabases.
53
- */
54
- isDatabaseAllowed(environmentName: string | undefined, databaseName: string): {
55
- allowed: boolean;
56
- reason?: string;
57
- };
58
- /**
59
- * Check if a schema.table reference is allowed based on allowedSchemas/deniedSchemas.
60
- * Pattern matching supports wildcards (e.g., "audit.*", "*.sensitive_*")
61
- */
62
- isSchemaAllowed(environmentName: string | undefined, schemaName: string, tableName?: string): {
63
- allowed: boolean;
64
- reason?: string;
65
- };
66
- /**
67
- * Simple wildcard pattern matching (supports * as wildcard)
68
- */
69
- private matchesPattern;
70
- getConnection(environmentName?: string): Promise<sql.ConnectionPool>;
71
- private createSqlConfig;
72
- closeAll(): Promise<void>;
73
- }
74
- export declare function getEnvironmentManager(): EnvironmentManager;
75
- //# sourceMappingURL=EnvironmentManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnvironmentManager.d.ts","sourceRoot":"","sources":["../../src/config/EnvironmentManager.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAE1F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAGzB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8D;IAC1F,OAAO,CAAC,cAAc,CAAiB;gBAE3B,UAAU,CAAC,EAAE,MAAM;IAc/B,iBAAiB,IAAI,cAAc;IAInC,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,eAAe;IA+BvB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAahD,gBAAgB,IAAI,iBAAiB,EAAE;IAIvC;;;;OAIG;IACH,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IA4CnH;;;OAGG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAiCnI;;OAEG;IACH,OAAO,CAAC,cAAc;IAQhB,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YA+B5D,eAAe;IAsGvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAKD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAM1D"}
@@ -1,305 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import { InteractiveBrowserCredential } from "@azure/identity";
4
- import sql from "mssql";
5
- import { createSecretResolver } from "./SecretResolver.js";
6
- export class EnvironmentManager {
7
- constructor(configPath) {
8
- this.environments = new Map();
9
- this.connections = new Map();
10
- this.secretResolver = createSecretResolver(); // default: env-only
11
- // Try to load from config file first
12
- if (configPath) {
13
- this.loadFromFile(configPath);
14
- }
15
- else {
16
- // Fall back to environment variables for single environment
17
- this.loadFromEnvVars();
18
- }
19
- }
20
- getSecretResolver() {
21
- return this.secretResolver;
22
- }
23
- loadFromFile(configPath) {
24
- try {
25
- const resolvedPath = path.resolve(configPath);
26
- if (!fs.existsSync(resolvedPath)) {
27
- console.warn(`Environment config file not found at ${resolvedPath}, falling back to env vars`);
28
- this.loadFromEnvVars();
29
- return;
30
- }
31
- const configContent = fs.readFileSync(resolvedPath, "utf-8");
32
- const config = JSON.parse(configContent);
33
- // Build the secret resolver from config or fallback to DOTENV_PATH
34
- let secretsConfig = config.secrets;
35
- if (!secretsConfig) {
36
- const dotenvPath = process.env.DOTENV_PATH;
37
- if (dotenvPath) {
38
- secretsConfig = { providers: [{ type: "env" }, { type: "dotenv", path: dotenvPath }] };
39
- console.log(`Using DOTENV_PATH fallback: ${dotenvPath}`);
40
- }
41
- }
42
- this.secretResolver = createSecretResolver(secretsConfig);
43
- this.defaultEnvironment = config.defaultEnvironment;
44
- for (const env of config.environments) {
45
- // Resolve any secret placeholders in the config
46
- const resolvedEnv = this.secretResolver.resolveObject(env);
47
- this.environments.set(resolvedEnv.name, resolvedEnv);
48
- }
49
- console.log(`Loaded ${this.environments.size} environment(s) from ${resolvedPath}`);
50
- }
51
- catch (error) {
52
- console.error(`Failed to load environment config: ${error}`);
53
- this.loadFromEnvVars();
54
- }
55
- }
56
- loadFromEnvVars() {
57
- const server = process.env.SERVER_NAME;
58
- const database = process.env.DATABASE_NAME;
59
- if (!server || !database) {
60
- throw new Error("No environment config file provided and SERVER_NAME/DATABASE_NAME env vars not set");
61
- }
62
- const defaultEnv = {
63
- name: "default",
64
- server,
65
- database,
66
- port: process.env.SQL_PORT ? parseInt(process.env.SQL_PORT, 10) : undefined,
67
- authMode: process.env.SQL_AUTH_MODE?.toLowerCase() ?? "aad",
68
- username: process.env.SQL_USERNAME,
69
- password: process.env.SQL_PASSWORD,
70
- domain: process.env.SQL_DOMAIN,
71
- trustServerCertificate: process.env.TRUST_SERVER_CERTIFICATE?.toLowerCase() === "true",
72
- connectionTimeout: process.env.CONNECTION_TIMEOUT
73
- ? parseInt(process.env.CONNECTION_TIMEOUT, 10)
74
- : 30,
75
- readonly: process.env.READONLY === "true",
76
- };
77
- this.environments.set("default", defaultEnv);
78
- this.defaultEnvironment = "default";
79
- console.log("Loaded default environment from environment variables");
80
- }
81
- getEnvironment(name) {
82
- const targetName = name || this.defaultEnvironment || "default";
83
- const env = this.environments.get(targetName);
84
- if (!env) {
85
- throw new Error(`Environment '${targetName}' not found. Available: ${Array.from(this.environments.keys()).join(", ")}`);
86
- }
87
- return env;
88
- }
89
- listEnvironments() {
90
- return Array.from(this.environments.values());
91
- }
92
- /**
93
- * Check if the environment allows access to a specific database.
94
- * For database-level access, only the configured database is allowed.
95
- * For server-level access, checks allowedDatabases/deniedDatabases.
96
- */
97
- isDatabaseAllowed(environmentName, databaseName) {
98
- const env = this.getEnvironment(environmentName);
99
- const accessLevel = env.accessLevel ?? "database";
100
- // Database-level access: only the configured database is allowed
101
- if (accessLevel === "database") {
102
- if (databaseName.toLowerCase() !== env.database.toLowerCase()) {
103
- return {
104
- allowed: false,
105
- reason: `Environment '${env.name}' has database-level access and is restricted to database '${env.database}'. Cannot access '${databaseName}'.`,
106
- };
107
- }
108
- return { allowed: true };
109
- }
110
- // Server-level access: check allow/deny lists
111
- const deniedDatabases = env.deniedDatabases ?? [];
112
- const allowedDatabases = env.allowedDatabases;
113
- // Check denied list first (takes precedence)
114
- if (deniedDatabases.some((db) => db.toLowerCase() === databaseName.toLowerCase())) {
115
- return {
116
- allowed: false,
117
- reason: `Database '${databaseName}' is in the denied list for environment '${env.name}'.`,
118
- };
119
- }
120
- // Check allowed list
121
- if (allowedDatabases === "*") {
122
- return { allowed: true };
123
- }
124
- if (Array.isArray(allowedDatabases) && allowedDatabases.length > 0) {
125
- if (!allowedDatabases.some((db) => db.toLowerCase() === databaseName.toLowerCase())) {
126
- return {
127
- allowed: false,
128
- reason: `Database '${databaseName}' is not in the allowed list for environment '${env.name}'. Allowed: ${allowedDatabases.join(", ")}.`,
129
- };
130
- }
131
- }
132
- return { allowed: true };
133
- }
134
- /**
135
- * Check if a schema.table reference is allowed based on allowedSchemas/deniedSchemas.
136
- * Pattern matching supports wildcards (e.g., "audit.*", "*.sensitive_*")
137
- */
138
- isSchemaAllowed(environmentName, schemaName, tableName) {
139
- const env = this.getEnvironment(environmentName);
140
- const fullRef = tableName ? `${schemaName}.${tableName}` : schemaName;
141
- const deniedSchemas = env.deniedSchemas ?? [];
142
- const allowedSchemas = env.allowedSchemas;
143
- // Check denied patterns first
144
- for (const pattern of deniedSchemas) {
145
- if (this.matchesPattern(fullRef, pattern) || this.matchesPattern(schemaName, pattern)) {
146
- return {
147
- allowed: false,
148
- reason: `Schema/table '${fullRef}' matches denied pattern '${pattern}' in environment '${env.name}'.`,
149
- };
150
- }
151
- }
152
- // If allowedSchemas is specified, check against it
153
- if (allowedSchemas && allowedSchemas.length > 0) {
154
- const isAllowed = allowedSchemas.some((pattern) => this.matchesPattern(fullRef, pattern) || this.matchesPattern(schemaName, pattern));
155
- if (!isAllowed) {
156
- return {
157
- allowed: false,
158
- reason: `Schema/table '${fullRef}' does not match any allowed pattern in environment '${env.name}'. Allowed: ${allowedSchemas.join(", ")}.`,
159
- };
160
- }
161
- }
162
- return { allowed: true };
163
- }
164
- /**
165
- * Simple wildcard pattern matching (supports * as wildcard)
166
- */
167
- matchesPattern(value, pattern) {
168
- const regexPattern = pattern
169
- .replace(/[.+?^${}()|[\]\\]/g, "\\$&") // Escape special regex chars except *
170
- .replace(/\*/g, ".*"); // Convert * to .*
171
- const regex = new RegExp(`^${regexPattern}$`, "i");
172
- return regex.test(value);
173
- }
174
- async getConnection(environmentName) {
175
- const env = this.getEnvironment(environmentName);
176
- const cached = this.connections.get(env.name);
177
- // Check if we have a valid cached connection
178
- if (cached &&
179
- cached.pool.connected &&
180
- (!cached.expiresOn || cached.expiresOn > new Date(Date.now() + 2 * 60 * 1000))) {
181
- return cached.pool;
182
- }
183
- // Create new connection
184
- const { config, expiresOn } = await this.createSqlConfig(env);
185
- // Close old connection if exists
186
- if (cached?.pool && cached.pool.connected) {
187
- await cached.pool.close();
188
- }
189
- const pool = new sql.ConnectionPool(config);
190
- pool.on("error", (err) => {
191
- console.error(`[mssql] Pool error for '${env.name}':`, err.message);
192
- });
193
- await pool.connect();
194
- this.connections.set(env.name, { pool, expiresOn });
195
- return pool;
196
- }
197
- async createSqlConfig(env) {
198
- const baseConfig = {
199
- server: env.server,
200
- database: env.database,
201
- port: env.port,
202
- connectionTimeout: (env.connectionTimeout || 30) * 1000,
203
- requestTimeout: (env.requestTimeout || 120) * 1000,
204
- pool: {
205
- max: 10,
206
- min: 0,
207
- idleTimeoutMillis: 30000,
208
- },
209
- };
210
- if (env.authMode === "sql") {
211
- if (!env.username || !env.password) {
212
- throw new Error(`Environment '${env.name}' requires username and password for SQL auth`);
213
- }
214
- return {
215
- config: {
216
- ...baseConfig,
217
- user: env.username,
218
- password: env.password,
219
- options: {
220
- encrypt: false,
221
- trustServerCertificate: env.trustServerCertificate ?? false,
222
- },
223
- },
224
- };
225
- }
226
- if (env.authMode === "windows") {
227
- if (!env.username || !env.password) {
228
- throw new Error(`Environment '${env.name}' requires username and password for Windows auth`);
229
- }
230
- // Strip DOMAIN\ prefix from username if present — tedious NTLM expects
231
- // the username and domain as separate fields
232
- let ntlmUser = env.username;
233
- let ntlmDomain = env.domain || "";
234
- const backslashIndex = ntlmUser.indexOf("\\");
235
- if (backslashIndex !== -1) {
236
- if (!ntlmDomain) {
237
- ntlmDomain = ntlmUser.substring(0, backslashIndex);
238
- }
239
- ntlmUser = ntlmUser.substring(backslashIndex + 1);
240
- }
241
- return {
242
- config: {
243
- ...baseConfig,
244
- options: {
245
- encrypt: false,
246
- trustServerCertificate: env.trustServerCertificate ?? false,
247
- },
248
- authentication: {
249
- type: "ntlm",
250
- options: {
251
- userName: ntlmUser,
252
- password: env.password,
253
- domain: ntlmDomain,
254
- },
255
- },
256
- },
257
- };
258
- }
259
- // Azure AD auth
260
- const credential = new InteractiveBrowserCredential({
261
- redirectUri: "http://localhost",
262
- });
263
- const accessToken = await credential.getToken("https://database.windows.net/.default");
264
- if (!accessToken?.token) {
265
- throw new Error(`Failed to acquire Azure AD token for environment '${env.name}'`);
266
- }
267
- return {
268
- config: {
269
- ...baseConfig,
270
- options: {
271
- encrypt: true,
272
- trustServerCertificate: env.trustServerCertificate ?? false,
273
- },
274
- authentication: {
275
- type: "azure-active-directory-access-token",
276
- options: {
277
- token: accessToken.token,
278
- },
279
- },
280
- },
281
- expiresOn: accessToken?.expiresOnTimestamp
282
- ? new Date(accessToken.expiresOnTimestamp)
283
- : new Date(Date.now() + 30 * 60 * 1000),
284
- };
285
- }
286
- async closeAll() {
287
- for (const [name, { pool }] of this.connections.entries()) {
288
- if (pool.connected) {
289
- await pool.close();
290
- console.log(`Closed connection for environment '${name}'`);
291
- }
292
- }
293
- this.connections.clear();
294
- }
295
- }
296
- // Singleton instance
297
- let environmentManager;
298
- export function getEnvironmentManager() {
299
- if (!environmentManager) {
300
- const configPath = process.env.ENVIRONMENTS_CONFIG_PATH;
301
- environmentManager = new EnvironmentManager(configPath);
302
- }
303
- return environmentManager;
304
- }
305
- //# sourceMappingURL=EnvironmentManager.js.map