UNPKG

service-model

Version:

An object oriented web service framework inspired by Windows Communication Foundation.

51 lines (50 loc) 1.95 kB
var versionMessageFilter_1 = require("../dispatcher/versionMessageFilter"); var versionMessageInspector_1 = require("../dispatcher/versionMessageInspector"); /** * Contract and endpoint behavior that allows an endpoint to be selected by version number as specified by the client. * The version of the contract must be provided in [semver](http://semver.org/) format. The behavior can be applied to * a contract using the [[Versioning]] decorator or to a specific endpoint by adding an instance of VersioningBehavior * to the list of behaviors for the endpoint. * * <uml> * hide members * hide circle * ContractBehavior <|.. VersioningBehavior * EndpointBehavior <|.. VersioningBehavior * </uml> * * ### Example * * ```typescript *  @Contract("Calculator") *  @Versioning({ version: "1.0.0" }) * export class CalculatorService { *   ... *  } * ``` */ var VersioningBehavior = (function () { /** * Constructs a VersioningBehavior object. * @param options Options for the behvaior. */ function VersioningBehavior(options) { if (!options) { throw new Error("Missing required argument 'options'."); } if (!options.version) { throw new Error("Missing required argument 'options.version'."); } this.version = options.version; this.contract = options.contract; } VersioningBehavior.prototype.applyContractBehavior = function (description, endpoint) { endpoint.filter = new versionMessageFilter_1.VersionMessageFilter(this.version).and(endpoint.filter); endpoint.messageInspectors.push(new versionMessageInspector_1.VersionMessageInspector()); }; VersioningBehavior.prototype.applyEndpointBehavior = function (description, endpoint) { this.applyContractBehavior(description.contract, endpoint); }; return VersioningBehavior; })(); exports.VersioningBehavior = VersioningBehavior;