UNPKG

workflow-4-node

Version:

Workflow 4 Node is a .NET Workflow Foundation like framework for Node.js. The goal is to reach feature equivalence and beyond.

108 lines (97 loc) 3.53 kB
"use strict"; var constants = require("./constants"); var _ = require("lodash"); var guidLength = constants.markers.activityInstance.length; function makeSpecString(guid, str) { return guid + ":" + str; } function isSpecString(specString) { if (_.isString(specString) && specString.length > guidLength + 1 && specString[guidLength] === ":") { var il = constants.identity.length; for (var i = 0; i < il; i++) { if (constants.identity[i] !== specString[i]) { return false; } } return true; } return false; } function getGuid(specString) { if (!isSpecString(specString)) { return null; } return specString.substr(0, guidLength); } function getString(specString) { if (!isSpecString(specString)) { return null; } return specString.substr(guidLength + 1); } function splitSpecString(specString) { if (!isSpecString(specString)) { return null; } return { guid: specString.substr(0, guidLength), str: specString.substr(guidLength + 1) }; } function makSpecForActivity(guid, activityId) { if (!_.isString(activityId)) { throw new TypeError("Activity id '" + activityId + "' is not a string."); } return makeSpecString(guid, activityId); } var specStrings = { is: isSpecString, getGuid: getGuid, getString: getString, split: splitSpecString, activities: { createCollectingCompletedBMName: function createCollectingCompletedBMName(activityId) { return makSpecForActivity(constants.markers.collectingCompletedBookmark, activityId); }, createValueCollectedBMName: function createValueCollectedBMName(activityId) { return makSpecForActivity(constants.markers.valueCollectedBookmark, activityId); } }, hosting: { createBeginMethodBMName: function createBeginMethodBMName(methodName) { return makeSpecString(constants.markers.beginMethodBookmark, methodName); }, createDelayToMethodName: function createDelayToMethodName(id) { return makeSpecString(constants.markers.delayToMethodNamePrefix, id); }, createActivityPropertyPart: function createActivityPropertyPart(methodName) { return makeSpecString(constants.markers.activityProperty, methodName); }, createActivityInstancePart: function createActivityInstancePart(activityId) { return constants.markers.activityInstance + ":" + activityId; }, getActivityPropertyName: function getActivityPropertyName(obj) { var parts = splitSpecString(obj); if (parts && parts.guid === constants.markers.activityProperty) { return parts.str; } return null; }, getInstanceId: function getInstanceId(obj) { var parts = splitSpecString(obj); if (parts && parts.guid === constants.markers.activityInstance) { return parts.str; } return null; }, isDelayToMethodName: function isDelayToMethodName(obj) { var parts = splitSpecString(obj); return parts && parts.guid === constants.markers.delayToMethodNamePrefix; }, doubleKeys: function doubleKeys(key1, key2) { return key1 + constants.markers.keySeparator + key2; } } }; module.exports = specStrings; //# sourceMappingURL=specStrings.js.map