@dolittle/sdk.projections
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
33 lines • 3.52 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.getOnDecoratedMethods = exports.on = void 0;
const sdk_artifacts_1 = require("@dolittle/sdk.artifacts");
const sdk_common_1 = require("@dolittle/sdk.common");
const KeySelectorBuilder_1 = require("./KeySelectorBuilder");
const OnDecoratedProjectionMethod_1 = require("./OnDecoratedProjectionMethod");
const [decorator, getMetadata] = sdk_common_1.Decorators.createMetadataDecorator('projection-on-methods', 'on', sdk_common_1.Decorators.DecoratorTarget.Method);
function on(typeOrId, keySelectorCallbackOrGeneration, maybeKeySelectorCallback) {
return decorator((target, type, propertyKey, descriptorOrIndex, onDecoratedMethods) => {
const methods = onDecoratedMethods || [];
const generation = maybeKeySelectorCallback !== undefined ? sdk_artifacts_1.Generation.from(keySelectorCallbackOrGeneration) : undefined;
const keySelectorCallback = maybeKeySelectorCallback !== undefined ? maybeKeySelectorCallback : keySelectorCallbackOrGeneration;
const keySelector = keySelectorCallback(new KeySelectorBuilder_1.KeySelectorBuilder());
const methodName = propertyKey;
const method = descriptorOrIndex.value;
methods.push(new OnDecoratedProjectionMethod_1.OnDecoratedProjectionMethod(type, typeOrId, generation, keySelector, method, methodName));
return methods;
});
}
exports.on = on;
/**
* Gets the decorated projection on methods of the specified class.
* @param {Constructor<any>} type - The class to get the decorated projection on methods for.
* @returns {OnDecoratedProjectionMethod[]} The decorated projection on methods.
*/
function getOnDecoratedMethods(type) {
return getMetadata(type) || [];
}
exports.getOnDecoratedMethods = getOnDecoratedMethods;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25EZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJCdWlsZGVycy9vbkRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBSXJHLDJEQUFxRTtBQUNyRSxxREFBa0Q7QUFHbEQsNkRBQTBEO0FBRTFELCtFQUE0RTtBQUc1RSxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHLHVCQUFVLENBQUMsdUJBQXVCLENBQWdDLHVCQUF1QixFQUFFLElBQUksRUFBRSx1QkFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQXlCckssU0FBZ0IsRUFBRSxDQUFDLFFBQTRDLEVBQUUsK0JBQTRFLEVBQUUsd0JBQXFEO0lBQ2hNLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtRQUNsRixNQUFNLE9BQU8sR0FBRyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQywwQkFBVSxDQUFDLElBQUksQ0FBQywrQkFBaUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0ksTUFBTSxtQkFBbUIsR0FBRyx3QkFBd0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQywrQkFBNkQsQ0FBQztRQUM5SixNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLHVDQUFrQixFQUFFLENBQUMsQ0FBQztRQUVsRSxNQUFNLFVBQVUsR0FBRyxXQUFxQixDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFJLGlCQUF3QyxDQUFDLEtBQWdDLENBQUM7UUFFMUYsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLHlEQUEyQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUUzRyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFmRCxnQkFlQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFzQjtJQUN4RCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUZELHNEQUVDIn0=