@dolittle/sdk.common
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
62 lines • 4.75 kB
JavaScript
;
// Copyright (c) Dolittle. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidDecoratorTarget = void 0;
const DecoratorTarget_1 = require("./DecoratorTarget");
/**
* Exception that gets thrown when a decorator is used on an invalid target.
*/
class InvalidDecoratorTarget extends Error {
/**
* Initialises a new instance of the {@link InvalidDecorator} class.
* @param {string} name - The name of the decorator that was used.
* @param {DecoratorTarget} decoratedTarget - The target that was decorated.
* @param {DecoratorTarget} validTargets - The valid targets for the decorator.
*/
constructor(name, decoratedTarget, validTargets) {
super(`The @${name} decorator cannot be used on ${InvalidDecoratorTarget.getTargetNames(decoratedTarget)}. It is only valid for ${InvalidDecoratorTarget.getTargetNames(validTargets)}`);
}
/**
* Gets target names formatted as a human readable string.
* @param {DecoratorTarget} target - The decorator target(s).
* @returns {string} A human readable string.
*/
static getTargetNames(target) {
const names = [];
if ((target & DecoratorTarget_1.DecoratorTarget.Class) !== 0) {
names.push('class');
}
if ((target & DecoratorTarget_1.DecoratorTarget.ConstructorParameter) !== 0) {
names.push('constructor parameter');
}
if ((target & DecoratorTarget_1.DecoratorTarget.Method) !== 0) {
names.push('method');
}
if ((target & DecoratorTarget_1.DecoratorTarget.MethodParameter) !== 0) {
names.push('method parameter');
}
if ((target & DecoratorTarget_1.DecoratorTarget.Property) !== 0) {
names.push('property');
}
if ((target & DecoratorTarget_1.DecoratorTarget.Getter) !== 0) {
names.push('getter');
}
if ((target & DecoratorTarget_1.DecoratorTarget.Setter) !== 0) {
names.push('setter');
}
switch (names.length) {
case 0:
return '';
case 1:
return names[0];
case 2:
return names.join(' or ');
default:
return names.slice(0, -1).join(', ') + ' or ' + names.slice(-1)[0];
}
}
;
}
exports.InvalidDecoratorTarget = InvalidDecoratorTarget;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZERlY29yYXRvclRhcmdldC5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkRlY29yYXRvcnMvSW52YWxpZERlY29yYXRvclRhcmdldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBRXJHLHVEQUFvRDtBQUVwRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsS0FBSztJQUM3Qzs7Ozs7T0FLRztJQUNILFlBQVksSUFBWSxFQUFFLGVBQWdDLEVBQUUsWUFBNkI7UUFDckYsS0FBSyxDQUFDLFFBQVEsSUFBSSxnQ0FBZ0Msc0JBQXNCLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsc0JBQXNCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3TCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBdUI7UUFDekMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxNQUFNLEdBQUcsaUNBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsaUNBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLGlDQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEI7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLGlDQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsaUNBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsaUNBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsaUNBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QjtRQUVELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNsQixLQUFLLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsS0FBSyxDQUFDO2dCQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QjtnQkFDSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUU7SUFDTCxDQUFDO0lBQUEsQ0FBQztDQUNMO0FBcERELHdEQW9EQyJ9