@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.
- package/LICENSE.md +21 -157
- package/dist/decorator-validation.cjs +461 -265
- package/dist/decorator-validation.esm.cjs +459 -265
- package/lib/constants/errors.cjs +19 -0
- package/lib/constants/errors.d.ts +11 -0
- package/lib/constants/index.cjs +2 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/esm/constants/errors.d.ts +11 -0
- package/lib/esm/constants/errors.js +16 -0
- package/lib/esm/constants/index.d.ts +1 -0
- package/lib/esm/constants/index.js +3 -2
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +6 -6
- package/lib/esm/mcp/ModelContextProtocol.d.ts +31 -0
- package/lib/esm/mcp/ModelContextProtocol.js +66 -0
- package/lib/esm/mcp/mcp1.d.ts +0 -0
- package/lib/esm/mcp/mcp1.js +405 -0
- package/lib/esm/mcp/tools/createModel.tool.d.ts +0 -0
- package/lib/esm/mcp/tools/createModel.tool.js +67 -0
- package/lib/esm/mcp/tools/validateModel.tool.d.ts +0 -0
- package/lib/esm/mcp/tools/validateModel.tool.js +2 -0
- package/lib/esm/mcp/types.d.ts +3 -0
- package/lib/esm/mcp/types.js +2 -0
- package/lib/esm/model/Builder.d.ts +0 -0
- package/lib/esm/model/Builder.js +130 -0
- package/lib/esm/model/Model.d.ts +1 -0
- package/lib/esm/model/Model.js +19 -9
- package/lib/esm/model/construction.js +2 -2
- package/lib/esm/model/decorators.d.ts +10 -0
- package/lib/esm/model/decorators.js +16 -4
- package/lib/esm/model/index.js +9 -9
- package/lib/esm/model/utils.js +2 -2
- package/lib/esm/model/validation.js +16 -13
- package/lib/esm/utils/Decoration.js +2 -2
- package/lib/esm/utils/PathProxy.d.ts +43 -0
- package/lib/esm/utils/PathProxy.js +89 -0
- package/lib/esm/utils/constants.d.ts +1 -0
- package/lib/esm/utils/constants.js +2 -1
- package/lib/esm/utils/dates.js +3 -3
- package/lib/esm/utils/decorators.js +2 -2
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +11 -10
- package/lib/esm/utils/serialization.js +4 -4
- package/lib/esm/validation/Validation.d.ts +3 -0
- package/lib/esm/validation/Validation.js +14 -3
- package/lib/esm/validation/Validators/DateValidator.js +4 -4
- package/lib/esm/validation/Validators/DiffValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/DiffValidator.js +8 -8
- package/lib/esm/validation/Validators/EmailValidator.js +4 -4
- package/lib/esm/validation/Validators/EqualsValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/EqualsValidator.js +8 -8
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +9 -8
- package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/GreaterThanValidator.js +9 -8
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +9 -8
- package/lib/esm/validation/Validators/LessThanValidator.d.ts +4 -2
- package/lib/esm/validation/Validators/LessThanValidator.js +9 -8
- package/lib/esm/validation/Validators/ListValidator.js +4 -4
- package/lib/esm/validation/Validators/MaxLengthValidator.js +4 -4
- package/lib/esm/validation/Validators/MaxValidator.js +4 -4
- package/lib/esm/validation/Validators/MinLengthValidator.js +4 -4
- package/lib/esm/validation/Validators/MinValidator.js +4 -4
- package/lib/esm/validation/Validators/PasswordValidator.js +4 -4
- package/lib/esm/validation/Validators/PatternValidator.js +4 -4
- package/lib/esm/validation/Validators/RequiredValidator.js +4 -4
- package/lib/esm/validation/Validators/StepValidator.js +4 -4
- package/lib/esm/validation/Validators/TypeValidator.js +6 -6
- package/lib/esm/validation/Validators/URLValidator.js +4 -4
- package/lib/esm/validation/Validators/Validator.d.ts +3 -2
- package/lib/esm/validation/Validators/Validator.js +3 -3
- package/lib/esm/validation/Validators/ValidatorRegistry.js +2 -2
- package/lib/esm/validation/Validators/constants.d.ts +0 -13
- package/lib/esm/validation/Validators/constants.js +2 -15
- package/lib/esm/validation/Validators/decorators.js +3 -3
- package/lib/esm/validation/Validators/index.js +25 -25
- package/lib/esm/validation/Validators/utils.d.ts +0 -14
- package/lib/esm/validation/Validators/utils.js +69 -56
- package/lib/esm/validation/decorators.d.ts +26 -3
- package/lib/esm/validation/decorators.js +107 -58
- package/lib/esm/validation/index.js +5 -5
- package/lib/esm/validation/types.d.ts +11 -5
- package/lib/esm/validation/types.js +2 -2
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/mcp/ModelContextProtocol.cjs +70 -0
- package/lib/mcp/ModelContextProtocol.d.ts +31 -0
- package/lib/mcp/mcp1.cjs +405 -0
- package/lib/mcp/mcp1.d.ts +0 -0
- package/lib/mcp/tools/createModel.tool.cjs +67 -0
- package/lib/mcp/tools/createModel.tool.d.ts +0 -0
- package/lib/mcp/tools/validateModel.tool.cjs +2 -0
- package/lib/mcp/tools/validateModel.tool.d.ts +0 -0
- package/lib/mcp/types.cjs +3 -0
- package/lib/mcp/types.d.ts +3 -0
- package/lib/model/Builder.cjs +130 -0
- package/lib/model/Builder.d.ts +0 -0
- package/lib/model/Model.cjs +12 -2
- package/lib/model/Model.d.ts +1 -0
- package/lib/model/decorators.cjs +14 -1
- package/lib/model/decorators.d.ts +10 -0
- package/lib/model/validation.cjs +8 -5
- package/lib/utils/PathProxy.cjs +93 -0
- package/lib/utils/PathProxy.d.ts +43 -0
- package/lib/utils/constants.cjs +2 -1
- package/lib/utils/constants.d.ts +1 -0
- package/lib/utils/index.cjs +2 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/validation/Validation.cjs +12 -1
- package/lib/validation/Validation.d.ts +3 -0
- package/lib/validation/Validators/DiffValidator.cjs +5 -5
- package/lib/validation/Validators/DiffValidator.d.ts +4 -2
- package/lib/validation/Validators/EqualsValidator.cjs +5 -5
- package/lib/validation/Validators/EqualsValidator.d.ts +4 -2
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +5 -4
- package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
- package/lib/validation/Validators/GreaterThanValidator.cjs +5 -4
- package/lib/validation/Validators/GreaterThanValidator.d.ts +4 -2
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +5 -4
- package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
- package/lib/validation/Validators/LessThanValidator.cjs +5 -4
- package/lib/validation/Validators/LessThanValidator.d.ts +4 -2
- package/lib/validation/Validators/Validator.cjs +1 -1
- package/lib/validation/Validators/Validator.d.ts +3 -2
- package/lib/validation/Validators/constants.cjs +2 -15
- package/lib/validation/Validators/constants.d.ts +0 -13
- package/lib/validation/Validators/utils.cjs +79 -67
- package/lib/validation/Validators/utils.d.ts +0 -14
- package/lib/validation/decorators.cjs +102 -52
- package/lib/validation/decorators.d.ts +26 -3
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +11 -5
- 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
|
+
};
|
package/lib/constants/index.cjs
CHANGED
|
@@ -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,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBeUI7QUFDekIsbURBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG4iXX0=
|
package/lib/constants/index.d.ts
CHANGED
|
@@ -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,2 +1,3 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
|
|
1
|
+
export * from "./errors.js";
|
|
2
|
+
export * from "./validation.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUF5QjtBQUN6QixnQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbiJdfQ==
|
package/lib/esm/index.d.ts
CHANGED
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.
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|