@decaf-ts/decorator-validation 1.7.3 → 1.7.5

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 (134) hide show
  1. package/LICENSE.md +21 -157
  2. package/dist/decorator-validation.cjs +461 -265
  3. package/dist/decorator-validation.esm.cjs +459 -265
  4. package/lib/constants/errors.cjs +19 -0
  5. package/lib/constants/errors.d.ts +11 -0
  6. package/lib/constants/index.cjs +2 -1
  7. package/lib/constants/index.d.ts +1 -0
  8. package/lib/esm/constants/errors.d.ts +11 -0
  9. package/lib/esm/constants/errors.js +16 -0
  10. package/lib/esm/constants/index.d.ts +1 -0
  11. package/lib/esm/constants/index.js +3 -2
  12. package/lib/esm/index.d.ts +1 -1
  13. package/lib/esm/index.js +6 -6
  14. package/lib/esm/mcp/ModelContextProtocol.d.ts +31 -0
  15. package/lib/esm/mcp/ModelContextProtocol.js +66 -0
  16. package/lib/esm/mcp/mcp1.d.ts +0 -0
  17. package/lib/esm/mcp/mcp1.js +405 -0
  18. package/lib/esm/mcp/tools/createModel.tool.d.ts +0 -0
  19. package/lib/esm/mcp/tools/createModel.tool.js +67 -0
  20. package/lib/esm/mcp/tools/validateModel.tool.d.ts +0 -0
  21. package/lib/esm/mcp/tools/validateModel.tool.js +2 -0
  22. package/lib/esm/mcp/types.d.ts +3 -0
  23. package/lib/esm/mcp/types.js +2 -0
  24. package/lib/esm/model/Builder.d.ts +0 -0
  25. package/lib/esm/model/Builder.js +130 -0
  26. package/lib/esm/model/Model.d.ts +1 -0
  27. package/lib/esm/model/Model.js +19 -9
  28. package/lib/esm/model/construction.js +2 -2
  29. package/lib/esm/model/decorators.d.ts +10 -0
  30. package/lib/esm/model/decorators.js +16 -4
  31. package/lib/esm/model/index.js +9 -9
  32. package/lib/esm/model/utils.js +2 -2
  33. package/lib/esm/model/validation.js +16 -13
  34. package/lib/esm/utils/Decoration.js +2 -2
  35. package/lib/esm/utils/PathProxy.d.ts +43 -0
  36. package/lib/esm/utils/PathProxy.js +89 -0
  37. package/lib/esm/utils/constants.d.ts +1 -0
  38. package/lib/esm/utils/constants.js +2 -1
  39. package/lib/esm/utils/dates.js +3 -3
  40. package/lib/esm/utils/decorators.js +2 -2
  41. package/lib/esm/utils/index.d.ts +1 -0
  42. package/lib/esm/utils/index.js +11 -10
  43. package/lib/esm/utils/serialization.js +4 -4
  44. package/lib/esm/validation/Validation.d.ts +3 -0
  45. package/lib/esm/validation/Validation.js +14 -3
  46. package/lib/esm/validation/Validators/DateValidator.js +4 -4
  47. package/lib/esm/validation/Validators/DiffValidator.d.ts +4 -2
  48. package/lib/esm/validation/Validators/DiffValidator.js +8 -8
  49. package/lib/esm/validation/Validators/EmailValidator.js +4 -4
  50. package/lib/esm/validation/Validators/EqualsValidator.d.ts +4 -2
  51. package/lib/esm/validation/Validators/EqualsValidator.js +8 -8
  52. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
  53. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +9 -8
  54. package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +4 -2
  55. package/lib/esm/validation/Validators/GreaterThanValidator.js +9 -8
  56. package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
  57. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +9 -8
  58. package/lib/esm/validation/Validators/LessThanValidator.d.ts +4 -2
  59. package/lib/esm/validation/Validators/LessThanValidator.js +9 -8
  60. package/lib/esm/validation/Validators/ListValidator.js +4 -4
  61. package/lib/esm/validation/Validators/MaxLengthValidator.js +4 -4
  62. package/lib/esm/validation/Validators/MaxValidator.js +4 -4
  63. package/lib/esm/validation/Validators/MinLengthValidator.js +4 -4
  64. package/lib/esm/validation/Validators/MinValidator.js +4 -4
  65. package/lib/esm/validation/Validators/PasswordValidator.js +4 -4
  66. package/lib/esm/validation/Validators/PatternValidator.js +4 -4
  67. package/lib/esm/validation/Validators/RequiredValidator.js +4 -4
  68. package/lib/esm/validation/Validators/StepValidator.js +4 -4
  69. package/lib/esm/validation/Validators/TypeValidator.js +6 -6
  70. package/lib/esm/validation/Validators/URLValidator.js +4 -4
  71. package/lib/esm/validation/Validators/Validator.d.ts +3 -2
  72. package/lib/esm/validation/Validators/Validator.js +3 -3
  73. package/lib/esm/validation/Validators/ValidatorRegistry.js +2 -2
  74. package/lib/esm/validation/Validators/constants.d.ts +0 -13
  75. package/lib/esm/validation/Validators/constants.js +2 -15
  76. package/lib/esm/validation/Validators/decorators.js +3 -3
  77. package/lib/esm/validation/Validators/index.js +25 -25
  78. package/lib/esm/validation/Validators/utils.d.ts +0 -14
  79. package/lib/esm/validation/Validators/utils.js +69 -56
  80. package/lib/esm/validation/decorators.d.ts +26 -3
  81. package/lib/esm/validation/decorators.js +107 -58
  82. package/lib/esm/validation/index.js +5 -5
  83. package/lib/esm/validation/types.d.ts +11 -5
  84. package/lib/esm/validation/types.js +2 -2
  85. package/lib/index.cjs +1 -1
  86. package/lib/index.d.ts +1 -1
  87. package/lib/mcp/ModelContextProtocol.cjs +70 -0
  88. package/lib/mcp/ModelContextProtocol.d.ts +31 -0
  89. package/lib/mcp/mcp1.cjs +405 -0
  90. package/lib/mcp/mcp1.d.ts +0 -0
  91. package/lib/mcp/tools/createModel.tool.cjs +67 -0
  92. package/lib/mcp/tools/createModel.tool.d.ts +0 -0
  93. package/lib/mcp/tools/validateModel.tool.cjs +2 -0
  94. package/lib/mcp/tools/validateModel.tool.d.ts +0 -0
  95. package/lib/mcp/types.cjs +3 -0
  96. package/lib/mcp/types.d.ts +3 -0
  97. package/lib/model/Builder.cjs +130 -0
  98. package/lib/model/Builder.d.ts +0 -0
  99. package/lib/model/Model.cjs +12 -2
  100. package/lib/model/Model.d.ts +1 -0
  101. package/lib/model/decorators.cjs +14 -1
  102. package/lib/model/decorators.d.ts +10 -0
  103. package/lib/model/validation.cjs +8 -5
  104. package/lib/utils/PathProxy.cjs +93 -0
  105. package/lib/utils/PathProxy.d.ts +43 -0
  106. package/lib/utils/constants.cjs +2 -1
  107. package/lib/utils/constants.d.ts +1 -0
  108. package/lib/utils/index.cjs +2 -1
  109. package/lib/utils/index.d.ts +1 -0
  110. package/lib/validation/Validation.cjs +12 -1
  111. package/lib/validation/Validation.d.ts +3 -0
  112. package/lib/validation/Validators/DiffValidator.cjs +5 -5
  113. package/lib/validation/Validators/DiffValidator.d.ts +4 -2
  114. package/lib/validation/Validators/EqualsValidator.cjs +5 -5
  115. package/lib/validation/Validators/EqualsValidator.d.ts +4 -2
  116. package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +5 -4
  117. package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
  118. package/lib/validation/Validators/GreaterThanValidator.cjs +5 -4
  119. package/lib/validation/Validators/GreaterThanValidator.d.ts +4 -2
  120. package/lib/validation/Validators/LessThanOrEqualValidator.cjs +5 -4
  121. package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
  122. package/lib/validation/Validators/LessThanValidator.cjs +5 -4
  123. package/lib/validation/Validators/LessThanValidator.d.ts +4 -2
  124. package/lib/validation/Validators/Validator.cjs +1 -1
  125. package/lib/validation/Validators/Validator.d.ts +3 -2
  126. package/lib/validation/Validators/constants.cjs +2 -15
  127. package/lib/validation/Validators/constants.d.ts +0 -13
  128. package/lib/validation/Validators/utils.cjs +79 -67
  129. package/lib/validation/Validators/utils.d.ts +0 -14
  130. package/lib/validation/decorators.cjs +102 -52
  131. package/lib/validation/decorators.d.ts +26 -3
  132. package/lib/validation/types.cjs +1 -1
  133. package/lib/validation/types.d.ts +11 -5
  134. package/package.json +16 -5
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMPARISON_ERROR_MESSAGES = void 0;
4
+ exports.COMPARISON_ERROR_MESSAGES = {
5
+ INVALID_PATH: "Invalid path argument. Expected non-empty string but received: '{0}'",
6
+ CONTEXT_NOT_OBJECT_COMPARISON: "Unable to access parent at level {0} for path '{1}': current context is not an object",
7
+ PROPERTY_INVALID: "Failed to resolve path {0}: property '{1}' is invalid or does not exist.",
8
+ PROPERTY_NOT_EXIST: "Failed to resolve path: property '{0}' does not exist.",
9
+ UNSUPPORTED_TYPES_COMPARISON: "Unsupported types for comparison: '{0}' and '{1}'",
10
+ NULL_OR_UNDEFINED_COMPARISON: "Comparison failed due to null or undefined value",
11
+ INVALID_DATE_COMPARISON: "Invalid Date objects are not comparable",
12
+ TYPE_MISMATCH_COMPARISON: "Cannot compare values of different types: {0} and {1}.",
13
+ NAN_COMPARISON: "Comparison not supported for NaN values",
14
+ // NO_PARENT_COMPARISON: "Unable to access parent at level {0} for path '{1}': no parent available",
15
+ // PROPERTY_NOT_FOUND: "Failed to resolve path {0}: property '{1}' does not exist.",
16
+ // PROPERTY_NOT_FOUND_ON_PARENT: "Failed to resolve path {0}: property '{1}' does not exist on parent.",
17
+ // PROPERTY_NOT_FOUND_AFTER_PARENT: "Failed to resolve path {0}: property '{1}' does not exist after {2} parent level(s).",
18
+ };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxZQUFZLEVBQ1Ysc0VBQXNFO0lBQ3hFLDZCQUE2QixFQUMzQix1RkFBdUY7SUFDekYsZ0JBQWdCLEVBQ2QsMEVBQTBFO0lBQzVFLGtCQUFrQixFQUFFLHdEQUF3RDtJQUM1RSw0QkFBNEIsRUFDMUIsbURBQW1EO0lBQ3JELDRCQUE0QixFQUMxQixrREFBa0Q7SUFDcEQsdUJBQXVCLEVBQUUseUNBQXlDO0lBQ2xFLHdCQUF3QixFQUN0Qix3REFBd0Q7SUFDMUQsY0FBYyxFQUFFLHlDQUF5QztJQUN6RCxvR0FBb0c7SUFDcEcsb0ZBQW9GO0lBQ3BGLHdHQUF3RztJQUN4RywySEFBMkg7Q0FDNUgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTID0ge1xuICBJTlZBTElEX1BBVEg6XG4gICAgXCJJbnZhbGlkIHBhdGggYXJndW1lbnQuIEV4cGVjdGVkIG5vbi1lbXB0eSBzdHJpbmcgYnV0IHJlY2VpdmVkOiAnezB9J1wiLFxuICBDT05URVhUX05PVF9PQkpFQ1RfQ09NUEFSSVNPTjpcbiAgICBcIlVuYWJsZSB0byBhY2Nlc3MgcGFyZW50IGF0IGxldmVsIHswfSBmb3IgcGF0aCAnezF9JzogY3VycmVudCBjb250ZXh0IGlzIG5vdCBhbiBvYmplY3RcIixcbiAgUFJPUEVSVFlfSU5WQUxJRDpcbiAgICBcIkZhaWxlZCB0byByZXNvbHZlIHBhdGggezB9OiBwcm9wZXJ0eSAnezF9JyBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGV4aXN0LlwiLFxuICBQUk9QRVJUWV9OT1RfRVhJU1Q6IFwiRmFpbGVkIHRvIHJlc29sdmUgcGF0aDogcHJvcGVydHkgJ3swfScgZG9lcyBub3QgZXhpc3QuXCIsXG4gIFVOU1VQUE9SVEVEX1RZUEVTX0NPTVBBUklTT046XG4gICAgXCJVbnN1cHBvcnRlZCB0eXBlcyBmb3IgY29tcGFyaXNvbjogJ3swfScgYW5kICd7MX0nXCIsXG4gIE5VTExfT1JfVU5ERUZJTkVEX0NPTVBBUklTT046XG4gICAgXCJDb21wYXJpc29uIGZhaWxlZCBkdWUgdG8gbnVsbCBvciB1bmRlZmluZWQgdmFsdWVcIixcbiAgSU5WQUxJRF9EQVRFX0NPTVBBUklTT046IFwiSW52YWxpZCBEYXRlIG9iamVjdHMgYXJlIG5vdCBjb21wYXJhYmxlXCIsXG4gIFRZUEVfTUlTTUFUQ0hfQ09NUEFSSVNPTjpcbiAgICBcIkNhbm5vdCBjb21wYXJlIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXM6IHswfSBhbmQgezF9LlwiLFxuICBOQU5fQ09NUEFSSVNPTjogXCJDb21wYXJpc29uIG5vdCBzdXBwb3J0ZWQgZm9yIE5hTiB2YWx1ZXNcIixcbiAgLy8gTk9fUEFSRU5UX0NPTVBBUklTT046IFwiVW5hYmxlIHRvIGFjY2VzcyBwYXJlbnQgYXQgbGV2ZWwgezB9IGZvciBwYXRoICd7MX0nOiBubyBwYXJlbnQgYXZhaWxhYmxlXCIsXG4gIC8vIFBST1BFUlRZX05PVF9GT1VORDogXCJGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoIHswfTogcHJvcGVydHkgJ3sxfScgZG9lcyBub3QgZXhpc3QuXCIsXG4gIC8vIFBST1BFUlRZX05PVF9GT1VORF9PTl9QQVJFTlQ6IFwiRmFpbGVkIHRvIHJlc29sdmUgcGF0aCB7MH06IHByb3BlcnR5ICd7MX0nIGRvZXMgbm90IGV4aXN0IG9uIHBhcmVudC5cIixcbiAgLy8gUFJPUEVSVFlfTk9UX0ZPVU5EX0FGVEVSX1BBUkVOVDogXCJGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoIHswfTogcHJvcGVydHkgJ3sxfScgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgezJ9IHBhcmVudCBsZXZlbChzKS5cIixcbn07XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export declare const COMPARISON_ERROR_MESSAGES: {
2
+ INVALID_PATH: string;
3
+ CONTEXT_NOT_OBJECT_COMPARISON: string;
4
+ PROPERTY_INVALID: string;
5
+ PROPERTY_NOT_EXIST: string;
6
+ UNSUPPORTED_TYPES_COMPARISON: string;
7
+ NULL_OR_UNDEFINED_COMPARISON: string;
8
+ INVALID_DATE_COMPARISON: string;
9
+ TYPE_MISMATCH_COMPARISON: string;
10
+ NAN_COMPARISON: string;
11
+ };
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./errors.cjs"), exports);
17
18
  __exportStar(require("./validation.cjs"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBeUI7QUFDekIsbURBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG4iXX0=
@@ -1 +1,2 @@
1
+ export * from "./errors";
1
2
  export * from "./validation";
@@ -0,0 +1,11 @@
1
+ export declare const COMPARISON_ERROR_MESSAGES: {
2
+ INVALID_PATH: string;
3
+ CONTEXT_NOT_OBJECT_COMPARISON: string;
4
+ PROPERTY_INVALID: string;
5
+ PROPERTY_NOT_EXIST: string;
6
+ UNSUPPORTED_TYPES_COMPARISON: string;
7
+ NULL_OR_UNDEFINED_COMPARISON: string;
8
+ INVALID_DATE_COMPARISON: string;
9
+ TYPE_MISMATCH_COMPARISON: string;
10
+ NAN_COMPARISON: string;
11
+ };
@@ -0,0 +1,16 @@
1
+ export const COMPARISON_ERROR_MESSAGES = {
2
+ INVALID_PATH: "Invalid path argument. Expected non-empty string but received: '{0}'",
3
+ CONTEXT_NOT_OBJECT_COMPARISON: "Unable to access parent at level {0} for path '{1}': current context is not an object",
4
+ PROPERTY_INVALID: "Failed to resolve path {0}: property '{1}' is invalid or does not exist.",
5
+ PROPERTY_NOT_EXIST: "Failed to resolve path: property '{0}' does not exist.",
6
+ UNSUPPORTED_TYPES_COMPARISON: "Unsupported types for comparison: '{0}' and '{1}'",
7
+ NULL_OR_UNDEFINED_COMPARISON: "Comparison failed due to null or undefined value",
8
+ INVALID_DATE_COMPARISON: "Invalid Date objects are not comparable",
9
+ TYPE_MISMATCH_COMPARISON: "Cannot compare values of different types: {0} and {1}.",
10
+ NAN_COMPARISON: "Comparison not supported for NaN values",
11
+ // NO_PARENT_COMPARISON: "Unable to access parent at level {0} for path '{1}': no parent available",
12
+ // PROPERTY_NOT_FOUND: "Failed to resolve path {0}: property '{1}' does not exist.",
13
+ // PROPERTY_NOT_FOUND_ON_PARENT: "Failed to resolve path {0}: property '{1}' does not exist on parent.",
14
+ // PROPERTY_NOT_FOUND_AFTER_PARENT: "Failed to resolve path {0}: property '{1}' does not exist after {2} parent level(s).",
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN0YW50cy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7SUFDdkMsWUFBWSxFQUNWLHNFQUFzRTtJQUN4RSw2QkFBNkIsRUFDM0IsdUZBQXVGO0lBQ3pGLGdCQUFnQixFQUNkLDBFQUEwRTtJQUM1RSxrQkFBa0IsRUFBRSx3REFBd0Q7SUFDNUUsNEJBQTRCLEVBQzFCLG1EQUFtRDtJQUNyRCw0QkFBNEIsRUFDMUIsa0RBQWtEO0lBQ3BELHVCQUF1QixFQUFFLHlDQUF5QztJQUNsRSx3QkFBd0IsRUFDdEIsd0RBQXdEO0lBQzFELGNBQWMsRUFBRSx5Q0FBeUM7SUFDekQsb0dBQW9HO0lBQ3BHLG9GQUFvRjtJQUNwRix3R0FBd0c7SUFDeEcsMkhBQTJIO0NBQzVILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUyA9IHtcbiAgSU5WQUxJRF9QQVRIOlxuICAgIFwiSW52YWxpZCBwYXRoIGFyZ3VtZW50LiBFeHBlY3RlZCBub24tZW1wdHkgc3RyaW5nIGJ1dCByZWNlaXZlZDogJ3swfSdcIixcbiAgQ09OVEVYVF9OT1RfT0JKRUNUX0NPTVBBUklTT046XG4gICAgXCJVbmFibGUgdG8gYWNjZXNzIHBhcmVudCBhdCBsZXZlbCB7MH0gZm9yIHBhdGggJ3sxfSc6IGN1cnJlbnQgY29udGV4dCBpcyBub3QgYW4gb2JqZWN0XCIsXG4gIFBST1BFUlRZX0lOVkFMSUQ6XG4gICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoIHswfTogcHJvcGVydHkgJ3sxfScgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC5cIixcbiAgUFJPUEVSVFlfTk9UX0VYSVNUOiBcIkZhaWxlZCB0byByZXNvbHZlIHBhdGg6IHByb3BlcnR5ICd7MH0nIGRvZXMgbm90IGV4aXN0LlwiLFxuICBVTlNVUFBPUlRFRF9UWVBFU19DT01QQVJJU09OOlxuICAgIFwiVW5zdXBwb3J0ZWQgdHlwZXMgZm9yIGNvbXBhcmlzb246ICd7MH0nIGFuZCAnezF9J1wiLFxuICBOVUxMX09SX1VOREVGSU5FRF9DT01QQVJJU09OOlxuICAgIFwiQ29tcGFyaXNvbiBmYWlsZWQgZHVlIHRvIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlXCIsXG4gIElOVkFMSURfREFURV9DT01QQVJJU09OOiBcIkludmFsaWQgRGF0ZSBvYmplY3RzIGFyZSBub3QgY29tcGFyYWJsZVwiLFxuICBUWVBFX01JU01BVENIX0NPTVBBUklTT046XG4gICAgXCJDYW5ub3QgY29tcGFyZSB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzOiB7MH0gYW5kIHsxfS5cIixcbiAgTkFOX0NPTVBBUklTT046IFwiQ29tcGFyaXNvbiBub3Qgc3VwcG9ydGVkIGZvciBOYU4gdmFsdWVzXCIsXG4gIC8vIE5PX1BBUkVOVF9DT01QQVJJU09OOiBcIlVuYWJsZSB0byBhY2Nlc3MgcGFyZW50IGF0IGxldmVsIHswfSBmb3IgcGF0aCAnezF9Jzogbm8gcGFyZW50IGF2YWlsYWJsZVwiLFxuICAvLyBQUk9QRVJUWV9OT1RfRk9VTkQ6IFwiRmFpbGVkIHRvIHJlc29sdmUgcGF0aCB7MH06IHByb3BlcnR5ICd7MX0nIGRvZXMgbm90IGV4aXN0LlwiLFxuICAvLyBQUk9QRVJUWV9OT1RfRk9VTkRfT05fUEFSRU5UOiBcIkZhaWxlZCB0byByZXNvbHZlIHBhdGggezB9OiBwcm9wZXJ0eSAnezF9JyBkb2VzIG5vdCBleGlzdCBvbiBwYXJlbnQuXCIsXG4gIC8vIFBST1BFUlRZX05PVF9GT1VORF9BRlRFUl9QQVJFTlQ6IFwiRmFpbGVkIHRvIHJlc29sdmUgcGF0aCB7MH06IHByb3BlcnR5ICd7MX0nIGRvZXMgbm90IGV4aXN0IGFmdGVyIHsyfSBwYXJlbnQgbGV2ZWwocykuXCIsXG59O1xuIl19
@@ -1 +1,2 @@
1
+ export * from "./errors";
1
2
  export * from "./validation";
@@ -1,2 +1,3 @@
1
- export * from "./validation";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuIl19
1
+ export * from "./errors.js";
2
+ export * from "./validation.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUF5QjtBQUN6QixnQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbiJdfQ==
@@ -15,4 +15,4 @@ export * from "./model";
15
15
  * @const VERSION
16
16
  * @memberOf module:decorator-validation
17
17
  */
18
- export declare const VERSION = "1.7.3";
18
+ export declare const VERSION = "1.7.5";
package/lib/esm/index.js CHANGED
@@ -5,15 +5,15 @@
5
5
  * It exposes utility functions, validation decorators, and model-related functionality for
6
6
  * implementing type-safe, declarative validation in TypeScript applications.
7
7
  */
8
- export * from "./constants";
9
- export * from "./utils";
10
- export * from "./validation";
11
- export * from "./model";
8
+ export * from "./constants/index.js";
9
+ export * from "./utils/index.js";
10
+ export * from "./validation/index.js";
11
+ export * from "./model/index.js";
12
12
  /**
13
13
  * @description Current version of the reflection package
14
14
  * @summary Stores the semantic version number of the package
15
15
  * @const VERSION
16
16
  * @memberOf module:decorator-validation
17
17
  */
18
- export const VERSION = "1.7.3";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFFeEI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAZGVzY3JpcHRpb24gVHlwZVNjcmlwdCBkZWNvcmF0b3ItYmFzZWQgdmFsaWRhdGlvbiBsaWJyYXJ5XG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBmcmFtZXdvcmsgdXNpbmcgVHlwZVNjcmlwdCBkZWNvcmF0b3JzLlxuICogSXQgZXhwb3NlcyB1dGlsaXR5IGZ1bmN0aW9ucywgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBhbmQgbW9kZWwtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGZvclxuICogaW1wbGVtZW50aW5nIHR5cGUtc2FmZSwgZGVjbGFyYXRpdmUgdmFsaWRhdGlvbiBpbiBUeXBlU2NyaXB0IGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSByZWZsZWN0aW9uIHBhY2thZ2VcbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
18
+ export const VERSION = "1.7.5";
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gscUNBQTRCO0FBQzVCLGlDQUF3QjtBQUN4QixzQ0FBNkI7QUFDN0IsaUNBQXdCO0FBRXhCOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGRlc2NyaXB0aW9uIFR5cGVTY3JpcHQgZGVjb3JhdG9yLWJhc2VkIHZhbGlkYXRpb24gbGlicmFyeVxuICogQHN1bW1hcnkgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHZhbGlkYXRpb24gZnJhbWV3b3JrIHVzaW5nIFR5cGVTY3JpcHQgZGVjb3JhdG9ycy5cbiAqIEl0IGV4cG9zZXMgdXRpbGl0eSBmdW5jdGlvbnMsIHZhbGlkYXRpb24gZGVjb3JhdG9ycywgYW5kIG1vZGVsLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBmb3JcbiAqIGltcGxlbWVudGluZyB0eXBlLXNhZmUsIGRlY2xhcmF0aXZlIHZhbGlkYXRpb24gaW4gVHlwZVNjcmlwdCBhcHBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcmVmbGVjdGlvbiBwYWNrYWdlXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { FastMCP, Tool } from "fastmcp";
2
+ import { Logger } from "@decaf-ts/logging";
3
+ import { FastMCPSessionAuth } from "./types";
4
+ export declare class ModelContextProtocol<Auth extends FastMCPSessionAuth = undefined> {
5
+ protected readonly mcp: FastMCP<Auth>;
6
+ protected get log(): Logger;
7
+ constructor(mcp: FastMCP<Auth>);
8
+ static readonly Builder: {
9
+ new (): {
10
+ name: string;
11
+ version: `${number}.${number}.${number}`;
12
+ tools: Record<string, Tool<any, any>>;
13
+ log: Logger;
14
+ setName(value: string): /*elided*/ any;
15
+ setVersion(value: string): /*elided*/ any;
16
+ addTool<Auth_1 extends FastMCPSessionAuth = undefined>(config: Tool<Auth_1, any>): /*elided*/ any;
17
+ build<Auth_1 extends FastMCPSessionAuth = undefined>(): ModelContextProtocol<Auth_1>;
18
+ };
19
+ };
20
+ static get builder(): {
21
+ name: string;
22
+ version: `${number}.${number}.${number}`;
23
+ tools: Record<string, Tool<any, any>>;
24
+ log: Logger;
25
+ setName(value: string): /*elided*/ any;
26
+ setVersion(value: string): /*elided*/ any;
27
+ addTool<Auth extends FastMCPSessionAuth = undefined>(config: Tool<Auth, any>): /*elided*/ any;
28
+ build<Auth extends FastMCPSessionAuth = undefined>(): ModelContextProtocol<Auth>;
29
+ };
30
+ private static validateVersion;
31
+ }
@@ -0,0 +1,66 @@
1
+ import { FastMCP } from "fastmcp";
2
+ import { Logging } from "@decaf-ts/logging";
3
+ export class ModelContextProtocol {
4
+ get log() {
5
+ return Logging.for(this);
6
+ }
7
+ constructor(mcp) {
8
+ this.mcp = mcp;
9
+ }
10
+ static { this.Builder = class Builder {
11
+ constructor() {
12
+ this.tools = {};
13
+ this.log = Logging.for("MCP Builder");
14
+ }
15
+ setName(value) {
16
+ this.name = value;
17
+ this.log.debug(`name set to ${value}`);
18
+ return this;
19
+ }
20
+ setVersion(value) {
21
+ this.version = ModelContextProtocol.validateVersion(value);
22
+ this.log.debug(`version set to ${value}`);
23
+ return this;
24
+ }
25
+ addTool(config) {
26
+ const { name } = config;
27
+ if (name in this.tools)
28
+ throw new Error(`tool ${name} already registered`);
29
+ this.tools[name] = config;
30
+ this.log.debug(`tool ${name} added`);
31
+ return this;
32
+ }
33
+ build() {
34
+ if (!this.name)
35
+ throw new Error("name is required");
36
+ if (!this.version)
37
+ throw new Error("version is required");
38
+ const mcp = new FastMCP({
39
+ name: this.name,
40
+ version: this.version,
41
+ });
42
+ Object.values(this.tools).forEach((tool) => {
43
+ try {
44
+ mcp.addTool(tool);
45
+ }
46
+ catch (e) {
47
+ throw new Error(`Failed to add tool ${tool.name}: ${e}`);
48
+ }
49
+ });
50
+ this.log.info(`${this.name} MCP built`);
51
+ this.log.debug(`${this.name} MCP - available tools: ${Object.keys(this.tools).join(", ")}`);
52
+ return new ModelContextProtocol(mcp);
53
+ }
54
+ }; }
55
+ static get builder() {
56
+ return new ModelContextProtocol.Builder();
57
+ }
58
+ static validateVersion(version) {
59
+ const regexp = /(\d+)\.(\d+)\.(\d+)/g;
60
+ const match = regexp.exec(version);
61
+ if (!match)
62
+ throw new Error(`Invalid version string. should obey semantic versioning: ${version}`);
63
+ return `${match[1]}.${match[2]}.${match[3]}`;
64
+ }
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQVEsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFVLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsSUFBYyxHQUFHO1FBQ2YsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUErQixHQUFrQjtRQUFsQixRQUFHLEdBQUgsR0FBRyxDQUFlO0lBQUcsQ0FBQzthQUVyQyxZQUFPLEdBQUcsTUFBTSxPQUFPO1FBT3JDO1lBSkEsVUFBSyxHQUFtQyxFQUFFLENBQUM7WUFFM0MsUUFBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUVoQixPQUFPLENBQUMsS0FBYTtZQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsVUFBVSxDQUFDLEtBQWE7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxDQUNMLE1BQXVCO1lBRXZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLHFCQUFxQixDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELEtBQUs7WUFHSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQU87Z0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQztvQkFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDO2dCQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWixHQUFHLElBQUksQ0FBQyxJQUFJLDJCQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDNUUsQ0FBQztZQUNGLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO0tBQ0YsQ0FBQztJQUVGLE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sTUFBTSxDQUFDLGVBQWUsQ0FDNUIsT0FBZTtRQUVmLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUs7WUFDUixNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxPQUFPLEVBQUUsQ0FDdEUsQ0FBQztRQUNKLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBcUMsQ0FBQztJQUNsRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFzdE1DUCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IEZhc3RNQ1BTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbENvbnRleHRQcm90b2NvbDxBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkPiB7XG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuIExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtY3A6IEZhc3RNQ1A8QXV0aD4pIHt9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEJ1aWxkZXIgPSBjbGFzcyBCdWlsZGVyIHtcbiAgICBuYW1lITogc3RyaW5nO1xuICAgIHZlcnNpb24hOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xuICAgIHRvb2xzOiBSZWNvcmQ8c3RyaW5nLCBUb29sPGFueSwgYW55Pj4gPSB7fTtcblxuICAgIGxvZyA9IExvZ2dpbmcuZm9yKFwiTUNQIEJ1aWxkZXJcIik7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBzZXROYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMubmFtZSA9IHZhbHVlO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYG5hbWUgc2V0IHRvICR7dmFsdWV9YCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzZXRWZXJzaW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMudmVyc2lvbiA9IE1vZGVsQ29udGV4dFByb3RvY29sLnZhbGlkYXRlVmVyc2lvbih2YWx1ZSk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgdmVyc2lvbiBzZXQgdG8gJHt2YWx1ZX1gKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGFkZFRvb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4oXG4gICAgICBjb25maWc6IFRvb2w8QXV0aCwgYW55PlxuICAgICkge1xuICAgICAgY29uc3QgeyBuYW1lIH0gPSBjb25maWc7XG4gICAgICBpZiAobmFtZSBpbiB0aGlzLnRvb2xzKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRvb2wgJHtuYW1lfSBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICAgIHRoaXMudG9vbHNbbmFtZV0gPSBjb25maWc7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgdG9vbCAke25hbWV9IGFkZGVkYCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZDxcbiAgICAgIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggPSB1bmRlZmluZWQsXG4gICAgPigpOiBNb2RlbENvbnRleHRQcm90b2NvbDxBdXRoPiB7XG4gICAgICBpZiAoIXRoaXMubmFtZSkgdGhyb3cgbmV3IEVycm9yKFwibmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICAgIGlmICghdGhpcy52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJ2ZXJzaW9uIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgY29uc3QgbWNwID0gbmV3IEZhc3RNQ1A8QXV0aD4oe1xuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLnRvb2xzKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWNwLmFkZFRvb2wodG9vbCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBhZGQgdG9vbCAke3Rvb2wubmFtZX06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAke3RoaXMubmFtZX0gTUNQIGJ1aWx0YCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgICAgYCR7dGhpcy5uYW1lfSBNQ1AgLSBhdmFpbGFibGUgdG9vbHM6ICR7T2JqZWN0LmtleXModGhpcy50b29scykuam9pbihcIiwgXCIpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbmV3IE1vZGVsQ29udGV4dFByb3RvY29sKG1jcCk7XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXQgYnVpbGRlcigpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsQ29udGV4dFByb3RvY29sLkJ1aWxkZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlVmVyc2lvbihcbiAgICB2ZXJzaW9uOiBzdHJpbmdcbiAgKTogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YCB7XG4gICAgY29uc3QgcmVnZXhwID0gLyhcXGQrKVxcLihcXGQrKVxcLihcXGQrKS9nO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWModmVyc2lvbik7XG4gICAgaWYgKCFtYXRjaClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgdmVyc2lvbiBzdHJpbmcuIHNob3VsZCBvYmV5IHNlbWFudGljIHZlcnNpb25pbmc6ICR7dmVyc2lvbn1gXG4gICAgICApO1xuICAgIHJldHVybiBgJHttYXRjaFsxXX0uJHttYXRjaFsyXX0uJHttYXRjaFszXX1gIGFzIGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWA7XG4gIH1cbn1cbiJdfQ==
File without changes