UNPKG

@dolittle/sdk.projections

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

43 lines 3.77 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.getDecoratedProjectionType = exports.isDecoratedProjectionType = exports.projection = void 0; const sdk_common_1 = require("@dolittle/sdk.common"); const sdk_events_1 = require("@dolittle/sdk.events"); const ProjectionId_1 = require("../ProjectionId"); const ProjectionDecoratedType_1 = require("./ProjectionDecoratedType"); const ProjectionAlias_1 = require("../ProjectionAlias"); const [decorator, getMetadata] = sdk_common_1.Decorators.createMetadataDecorator('projection', 'projection', sdk_common_1.Decorators.DecoratorTarget.Class); /** * Decorator to mark a class as an Projection. * @param {ProjectionId | Guid | string} projectionId - The id to associate with this Projection. * @param {ProjectionOptions} [options={}] - Options to give to the Projection. * @returns {Decorators.Decorator} The decorator. */ function projection(projectionId, options = {}) { return decorator((target, type) => { var _a; return new ProjectionDecoratedType_1.ProjectionDecoratedType(ProjectionId_1.ProjectionId.from(projectionId), options.inScope ? sdk_events_1.ScopeId.from(options.inScope) : sdk_events_1.ScopeId.default, ProjectionAlias_1.ProjectionAlias.from((_a = options.alias) !== null && _a !== void 0 ? _a : type.name), type); }); } exports.projection = projection; /** * Checks whether the specified class is decorated with an projection type. * @param {Constructor<any>} type - The class to check the decorated projection type for. * @returns {boolean} True if the decorator is applied, false if not. */ function isDecoratedProjectionType(type) { return getMetadata(type, false, false) !== undefined; } exports.isDecoratedProjectionType = isDecoratedProjectionType; /** * Gets the {@link ProjectionDecoratedType} of the specified class. * @param {Constructor<any>} type - The class to get the decorated projection type for. * @returns {ProjectionDecoratedType} The decorated projection type. */ function getDecoratedProjectionType(type) { return getMetadata(type, true, 'Classes used as projections must be decorated'); } exports.getDecoratedProjectionType = getDecoratedProjectionType; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbkRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkJ1aWxkZXJzL3Byb2plY3Rpb25EZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQUtyRyxxREFBa0Q7QUFDbEQscURBQStDO0FBRS9DLGtEQUErQztBQUMvQyx1RUFBb0U7QUFFcEUsd0RBQXFEO0FBRXJELE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQUcsdUJBQVUsQ0FBQyx1QkFBdUIsQ0FBMEIsWUFBWSxFQUFFLFlBQVksRUFBRSx1QkFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUUzSjs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxZQUEwQyxFQUFFLFVBQTZCLEVBQUU7SUFDbEcsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7O1FBQzlCLE9BQU8sSUFBSSxpREFBdUIsQ0FDOUIsMkJBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQU8sQ0FBQyxPQUFPLEVBQ2pFLGlDQUFlLENBQUMsSUFBSSxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNoRCxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVJELGdDQVFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLElBQXNCO0lBQzVELE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQ3pELENBQUM7QUFGRCw4REFFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxJQUFzQjtJQUM3RCxPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLCtDQUErQyxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUZELGdFQUVDIn0=