UNPKG

@stateflows/common

Version:

Common package for Stateflows framework clients

586 lines (551 loc) 23.2 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); var __typeError = (msg) => { throw TypeError(msg); }; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __decoratorStart = (base) => { var _a13; return [, , , __create((_a13 = base == null ? void 0 : base[__knownSymbol("metadata")]) != null ? _a13 : null)]; }; var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); var __runInitializers = (array, flags, self, value) => { for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value); return value; }; var __decorateElement = (array, flags, name, decorators, target, extra) => { var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16); var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5]; var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []); var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() { return __privateGet(this, extra); }, set [name](x) { return __privateSet(this, extra, x); } }, name)); k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name); for (var i = decorators.length - 1; i >= 0; i--) { ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers); if (k) { ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x }; if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name]; if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y; } it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it); else if (typeof it !== "object" || it === null) __typeError("Object expected"); else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn); } return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target; }; var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); // src/index.ts var index_exports = {}; __export(index_exports, { ActivityId: () => ActivityId, BehaviorClass: () => BehaviorClass, BehaviorId: () => BehaviorId, BehaviorInfo: () => BehaviorInfo, BehaviorInfoRequest: () => BehaviorInfoRequest, BehaviorStatus: () => BehaviorStatus, CompoundRequest: () => CompoundRequest, CompoundResponse: () => CompoundResponse, Event: () => Event, EventHeader: () => EventHeader, EventHolder: () => EventHolder, EventStatus: () => EventStatus, Finalize: () => Finalize, Initialize: () => Initialize, JsonUtils: () => JsonUtils, NotificationsRequest: () => NotificationsRequest, NotificationsResponse: () => NotificationsResponse, PlantUmlInfo: () => PlantUmlInfo, PlantUmlInfoRequest: () => PlantUmlInfoRequest, Request: () => Request, RequestResult: () => RequestResult, Reset: () => Reset, SendResult: () => SendResult, StateMachineId: () => StateMachineId, StateMachineInfo: () => StateMachineInfo, StateMachineInfoRequest: () => StateMachineInfoRequest, StateflowsClient: () => StateflowsClient, StateflowsEvent: () => StateflowsEvent }); module.exports = __toCommonJS(index_exports); // src/classes/send-result.ts var SendResult = class { constructor(event, status, validation) { this.event = event; this.status = status; this.validation = validation; } }; // src/classes/request-result.ts var RequestResult = class extends SendResult { constructor(response, event, status, validation) { super(event, status, validation); this.response = response; } }; // src/decorators/stateflows-event.ts function StateflowsEvent(typeName, eventName = null) { return function(target) { const constructor = target.prototype.constructor; constructor.$type = typeName; constructor.eventName = eventName === null ? typeName.split(",")[0] : eventName; }; } // src/events/event.ts var Event = class { get $type() { return this.constructor.$type; } get eventName() { return this.constructor.eventName; } }; // src/events/behavior-info.ts var _BehaviorInfo_decorators, _init, _a; _BehaviorInfo_decorators = [StateflowsEvent("Stateflows.Common.Events.BehaviorInfo, Stateflows.Common")]; var BehaviorInfo = class extends (_a = Event) { constructor() { this.behaviorStatus = void 0; this.expectedEvents = void 0; super(...arguments); } }; _init = __decoratorStart(_a); BehaviorInfo = __decorateElement(_init, 0, "BehaviorInfo", _BehaviorInfo_decorators, BehaviorInfo); __runInitializers(_init, 1, BehaviorInfo); // src/events/request.ts var Request = class extends Event { }; // src/classes/event-holder.ts var EventHolder = class { constructor(payload, headers = []) { this.payload = payload; this.headers = headers; this.$type = "Stateflows.Common.EventHolder<>, Stateflows.Common"; this.$type = this.$type.replace("<>", "`1[[" + payload.$type + "]]"); } }; // src/events/compound.request.ts var _CompoundRequest_decorators, _init2, _a2; _CompoundRequest_decorators = [StateflowsEvent("Stateflows.Common.CompoundRequest, Stateflows.Common")]; var CompoundRequest = class extends (_a2 = Request) { constructor(events) { super(); this.events = []; this.events = events.map((event) => new EventHolder(event)); } }; _init2 = __decoratorStart(_a2); CompoundRequest = __decorateElement(_init2, 0, "CompoundRequest", _CompoundRequest_decorators, CompoundRequest); __runInitializers(_init2, 1, CompoundRequest); // src/events/behavior-info.request.ts var _BehaviorInfoRequest_decorators, _init3, _a3; _BehaviorInfoRequest_decorators = [StateflowsEvent("Stateflows.Common.BehaviorInfoRequest, Stateflows.Common")]; var BehaviorInfoRequest = class extends (_a3 = Request) { }; _init3 = __decoratorStart(_a3); BehaviorInfoRequest = __decorateElement(_init3, 0, "BehaviorInfoRequest", _BehaviorInfoRequest_decorators, BehaviorInfoRequest); __runInitializers(_init3, 1, BehaviorInfoRequest); // src/events/finalize.ts var _Finalize_decorators, _init4, _a4; _Finalize_decorators = [StateflowsEvent("Stateflows.Common.Finalize, Stateflows.Common")]; var Finalize = class extends (_a4 = Event) { }; _init4 = __decoratorStart(_a4); Finalize = __decorateElement(_init4, 0, "Finalize", _Finalize_decorators, Finalize); __runInitializers(_init4, 1, Finalize); // src/events/reset.ts var _Reset_decorators, _init5, _a5; _Reset_decorators = [StateflowsEvent("Stateflows.Common.Reset, Stateflows.Common")]; var Reset = class extends (_a5 = Event) { constructor(mode = 2 /* Full */) { super(); this.mode = mode; } }; _init5 = __decoratorStart(_a5); Reset = __decorateElement(_init5, 0, "Reset", _Reset_decorators, Reset); __runInitializers(_init5, 1, Reset); // src/behaviors/behavior.ts var _transportPromise, _notificationHandlers; var _Behavior = class _Behavior { constructor(transportPromiseOrBehavior, id) { this.id = id; __privateAdd(this, _transportPromise); __privateAdd(this, _notificationHandlers, /* @__PURE__ */ new Map()); __privateSet(this, _transportPromise, transportPromiseOrBehavior instanceof _Behavior ? __privateGet(transportPromiseOrBehavior, _transportPromise) : __privateSet(this, _transportPromise, transportPromiseOrBehavior)); } async send(event, headers = []) { let transport = await __privateGet(this, _transportPromise); let result = await transport.send(this.id, new EventHolder(event, headers)); result.event = result.event.payload; return result; } sendCompound(...events) { return this.request(new CompoundRequest(events)); } async request(request, headers = []) { let sendResult = await this.send(request, headers); request.response = sendResult.event.response; let result = new RequestResult(request.response, request, sendResult.status, sendResult.validation); return result; } finalize() { return this.send(new Finalize()); } reset(resetMode) { return this.send(new Reset(resetMode != null ? resetMode : 2 /* Full */)); } notify(notification) { if (__privateGet(this, _notificationHandlers).has(notification.name)) { notification.payload.eventName = notification.name; let handlers = __privateGet(this, _notificationHandlers).get(notification.name); handlers.forEach((handler) => handler(notification.payload)); } } async watch(notificationName, handler) { let transport = await __privateGet(this, _transportPromise); await transport.watch(this, notificationName); let handlers = __privateGet(this, _notificationHandlers).has(notificationName) ? __privateGet(this, _notificationHandlers).get(notificationName) : []; handlers.push((n) => handler(n)); __privateGet(this, _notificationHandlers).set(notificationName, handlers); } async requestAndWatch(request, notificationName, handler) { let promise = await this.watch(notificationName, handler); let result = await this.request(request); handler(result.response); return promise; } async unwatch(notificationName) { let transport = await __privateGet(this, _transportPromise); await transport.unwatch(this, notificationName); __privateGet(this, _notificationHandlers).delete(notificationName); } getStatus() { return this.request(new BehaviorInfoRequest()); } watchStatus(handler) { return this.watch(BehaviorInfo.eventName, handler); } async requestAndWatchStatus(handler) { let promise = this.watch(BehaviorInfo.eventName, handler); let result = await this.getStatus(); handler(result.response); return promise; } unwatchStatus() { return this.unwatch(BehaviorInfo.eventName); } }; _transportPromise = new WeakMap(); _notificationHandlers = new WeakMap(); var Behavior = _Behavior; // src/locators/behavior.locator.ts var BehaviorLocator = class { constructor(transportPromise) { this.behaviorClasses = []; this.transportPromise = new Promise((resolve, reject) => { transportPromise.then((transport) => { transport.getAvailableClasses().then((result) => { this.behaviorClasses = result; resolve(transport); }); }).catch((reason) => reject(reason)); }); } locateBehavior(behaviorId) { return new Promise((resolve, reject) => { this.transportPromise.then((transport) => { if (this.behaviorClasses.findIndex( (behaviorClass) => behaviorClass.type === behaviorId.behaviorClass.type && behaviorClass.name === behaviorId.behaviorClass.name ) !== -1) { let behavior = new Behavior(this.transportPromise, behaviorId); resolve(behavior); } else { reject("Behavior not found"); } }).catch((reason) => reject(reason)); }); } }; // src/events/state-machine-info.ts var _StateMachineInfo_decorators, _init6, _a6; _StateMachineInfo_decorators = [StateflowsEvent("Stateflows.StateMachines.StateMachineInfo, Stateflows.Common")]; var StateMachineInfo = class extends (_a6 = BehaviorInfo) { constructor() { this.statesTree = void 0; super(...arguments); } }; _init6 = __decoratorStart(_a6); StateMachineInfo = __decorateElement(_init6, 0, "StateMachineInfo", _StateMachineInfo_decorators, StateMachineInfo); __runInitializers(_init6, 1, StateMachineInfo); // src/events/state-machine-info.request.ts var _StateMachineInfoRequest_decorators, _init7, _a7; _StateMachineInfoRequest_decorators = [StateflowsEvent("Stateflows.StateMachines.StateMachineInfoRequest, Stateflows.Common")]; var StateMachineInfoRequest = class extends (_a7 = Request) { }; _init7 = __decoratorStart(_a7); StateMachineInfoRequest = __decorateElement(_init7, 0, "StateMachineInfoRequest", _StateMachineInfoRequest_decorators, StateMachineInfoRequest); __runInitializers(_init7, 1, StateMachineInfoRequest); // src/behaviors/state-machine.ts var StateMachine = class extends Behavior { constructor(behavior) { super(behavior, behavior.id); } async requestAndWatchCurrentState(handler) { let promise = await this.watch(StateMachineInfo.eventName, handler); let result = await this.request(new StateMachineInfoRequest()); handler(result.response); return promise; } getCurrentState() { return this.request(new StateMachineInfoRequest()); } watchCurrentState(handler) { return this.watch(StateMachineInfo.eventName, handler); } unwatchCurrentState() { return this.unwatch(StateMachineInfo.eventName); } }; // src/locators/state-machine.locator.ts var StateMachineLocator = class { constructor(behaviorLocator) { this.behaviorLocator = behaviorLocator; } locateStateMachine(id) { return new Promise((resolve, reject) => { this.behaviorLocator.locateBehavior(id).then((behavior) => resolve(new StateMachine(behavior))).catch((_) => reject("State Machine not found")); }); } }; // src/behaviors/activity.ts var Activity = class extends Behavior { constructor(behavior) { super(behavior, behavior.id); } }; // src/locators/activity.locator.ts var ActivityLocator = class { constructor(behaviorLocator) { this.behaviorLocator = behaviorLocator; } locateActivity(id) { return new Promise((resolve, reject) => { this.behaviorLocator.locateBehavior(id).then((behavior) => resolve(new Activity(behavior))).catch((_) => reject("Activity not found")); }); } }; // src/classes/stateflows-client.ts var _behaviorLocator, _stateMachineLocator, _activityLocator; var StateflowsClient = class { constructor(transportFactory) { this.transportFactory = transportFactory; __privateAdd(this, _behaviorLocator, null); __privateAdd(this, _stateMachineLocator, null); __privateAdd(this, _activityLocator, null); } get behaviorLocator() { var _a13; return (_a13 = __privateGet(this, _behaviorLocator)) != null ? _a13 : __privateSet(this, _behaviorLocator, new BehaviorLocator(this.transportFactory.getTransport())); } get stateMachineLocator() { var _a13; return (_a13 = __privateGet(this, _stateMachineLocator)) != null ? _a13 : __privateSet(this, _stateMachineLocator, new StateMachineLocator(this.behaviorLocator)); } get activityLocator() { var _a13; return (_a13 = __privateGet(this, _activityLocator)) != null ? _a13 : __privateSet(this, _activityLocator, new ActivityLocator(this.behaviorLocator)); } }; _behaviorLocator = new WeakMap(); _stateMachineLocator = new WeakMap(); _activityLocator = new WeakMap(); // src/classes/event-header.ts var EventHeader = class { }; // src/ids/behavior.class.ts var BehaviorClass = class { constructor(type, name) { this.type = type; this.name = name; this.$type = "Stateflows.BehaviorClass, Stateflows.Common"; } }; // src/utils/json.utils.ts var JsonUtils = class _JsonUtils { static stringify(object) { const replacer = (key, value) => value instanceof Object && !(value instanceof Array) ? Object.keys(value).sort().reduce( (sorted, key2) => { sorted[key2] = value[key2]; return sorted; }, {} ) : value; return JSON.stringify(object, replacer); } static parse(json) { return JSON.parse(json); } static deepClone(object) { return _JsonUtils.parse(_JsonUtils.stringify(object)); } }; // src/ids/behavior.id.ts var BehaviorId = class { constructor(behaviorClass, instance) { this.behaviorClass = behaviorClass; this.instance = instance; this.$type = "Stateflows.BehaviorId, Stateflows.Common"; } toString() { return JsonUtils.stringify(this); } }; // src/ids/state-machine.id.ts var StateMachineId = class extends BehaviorId { constructor(name, instance) { super(new BehaviorClass("StateMachine", name), instance); } }; // src/ids/activity.id.ts var ActivityId = class extends BehaviorId { constructor(name, instance) { super(new BehaviorClass("Activity", name), instance); } }; // src/events/compound.response.ts var CompoundResponse = class { constructor(results) { this.results = results; } }; // src/events/initialize.ts var _Initialize_decorators, _init8, _a8; _Initialize_decorators = [StateflowsEvent("Stateflows.Common.Initialize, Stateflows.Common")]; var Initialize = class extends (_a8 = Event) { }; _init8 = __decoratorStart(_a8); Initialize = __decorateElement(_init8, 0, "Initialize", _Initialize_decorators, Initialize); __runInitializers(_init8, 1, Initialize); // src/events/plant-uml-info.request.ts var _PlantUmlInfoRequest_decorators, _init9, _a9; _PlantUmlInfoRequest_decorators = [StateflowsEvent("Stateflows.Extensions.PlantUml.Events.PlantUmlInfoRequest, Stateflows.Extensions.PlantUml")]; var PlantUmlInfoRequest = class extends (_a9 = Request) { }; _init9 = __decoratorStart(_a9); PlantUmlInfoRequest = __decorateElement(_init9, 0, "PlantUmlInfoRequest", _PlantUmlInfoRequest_decorators, PlantUmlInfoRequest); __runInitializers(_init9, 1, PlantUmlInfoRequest); // src/events/plant-uml-info.ts var _PlantUmlInfo_decorators, _init10, _a10; _PlantUmlInfo_decorators = [StateflowsEvent("Stateflows.Extensions.PlantUml.Events.PlantUmlInfo, Stateflows.Extensions.PlantUml")]; var PlantUmlInfo = class extends (_a10 = Event) { constructor() { this.plantUml = void 0; super(...arguments); } }; _init10 = __decoratorStart(_a10); PlantUmlInfo = __decorateElement(_init10, 0, "PlantUmlInfo", _PlantUmlInfo_decorators, PlantUmlInfo); __runInitializers(_init10, 1, PlantUmlInfo); // src/enums/event-status.ts var EventStatus = /* @__PURE__ */ ((EventStatus2) => { EventStatus2[EventStatus2["Initialized"] = 0] = "Initialized"; EventStatus2[EventStatus2["NotInitialized"] = 1] = "NotInitialized"; EventStatus2[EventStatus2["Undelivered"] = 2] = "Undelivered"; EventStatus2[EventStatus2["Rejected"] = 3] = "Rejected"; EventStatus2[EventStatus2["Invalid"] = 4] = "Invalid"; EventStatus2[EventStatus2["Deferred"] = 5] = "Deferred"; EventStatus2[EventStatus2["Consumed"] = 6] = "Consumed"; EventStatus2[EventStatus2["NotConsumed"] = 7] = "NotConsumed"; EventStatus2[EventStatus2["Omitted"] = 8] = "Omitted"; EventStatus2[EventStatus2["Failed"] = 9] = "Failed"; EventStatus2[EventStatus2["Forwarded"] = 10] = "Forwarded"; return EventStatus2; })(EventStatus || {}); // src/enums/behavior-status.ts var BehaviorStatus = /* @__PURE__ */ ((BehaviorStatus2) => { BehaviorStatus2[BehaviorStatus2["Unknown"] = 0] = "Unknown"; BehaviorStatus2[BehaviorStatus2["NotInitialized"] = 1] = "NotInitialized"; BehaviorStatus2[BehaviorStatus2["Initialized"] = 2] = "Initialized"; BehaviorStatus2[BehaviorStatus2["Finalized"] = 3] = "Finalized"; return BehaviorStatus2; })(BehaviorStatus || {}); // src/events/notifications.request.ts var _NotificationsRequest_decorators, _init11, _a11; _NotificationsRequest_decorators = [StateflowsEvent("Stateflows.Common.NotificationsRequest, Stateflows.Common")]; var NotificationsRequest = class extends (_a11 = Request) { }; _init11 = __decoratorStart(_a11); NotificationsRequest = __decorateElement(_init11, 0, "NotificationsRequest", _NotificationsRequest_decorators, NotificationsRequest); __runInitializers(_init11, 1, NotificationsRequest); // src/events/notifications.response.ts var _NotificationsResponse_decorators, _init12, _a12; _NotificationsResponse_decorators = [StateflowsEvent("Stateflows.Common.NotificationsResponse, Stateflows.Common")]; var NotificationsResponse = class extends (_a12 = Event) { }; _init12 = __decoratorStart(_a12); NotificationsResponse = __decorateElement(_init12, 0, "NotificationsResponse", _NotificationsResponse_decorators, NotificationsResponse); __runInitializers(_init12, 1, NotificationsResponse); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ActivityId, BehaviorClass, BehaviorId, BehaviorInfo, BehaviorInfoRequest, BehaviorStatus, CompoundRequest, CompoundResponse, Event, EventHeader, EventHolder, EventStatus, Finalize, Initialize, JsonUtils, NotificationsRequest, NotificationsResponse, PlantUmlInfo, PlantUmlInfoRequest, Request, RequestResult, Reset, SendResult, StateMachineId, StateMachineInfo, StateMachineInfoRequest, StateflowsClient, StateflowsEvent }); //# sourceMappingURL=index.js.map