UNPKG

@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
"use strict"; // 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=