@nsshunt/stsvueutils 1.0.23 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stsvueutils.mjs +738 -460
- package/dist/stsvueutils.mjs.map +1 -1
- package/dist/stsvueutils.umd.js +955 -1
- package/dist/stsvueutils.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/stsvueutils.umd.js
CHANGED
|
@@ -1,2 +1,956 @@
|
|
|
1
|
-
(function(i,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue"),require("debug"),require("@nsshunt/stspublisherserver"),require("@nsshunt/stsinstrumentation"),require("@nsshunt/stsmodels"),require("pinia"),require("@nsshunt/stsutils")):typeof define=="function"&&define.amd?define(["exports","vue","debug","@nsshunt/stspublisherserver","@nsshunt/stsinstrumentation","@nsshunt/stsmodels","pinia","@nsshunt/stsutils"],l):(i=typeof globalThis<"u"?globalThis:i||self,l(i["@nsshunt/stsvueutils"]={},i.vue,i.debug,i.stspublisherserver,i.stsinstrumentation,i.stsmodels,i.pinia,i.stsutils))})(this,function(i,l,g,m,U,re,ye,ke){var $,P,w,R,z,W,C,N,j,de,V,Y,Q,M,X,v,Z,f,E,b,x,T,K,A,D,ee,te,se;"use strict";var je=Object.defineProperty;var Ee=(i,l,g)=>l in i?je(i,l,{enumerable:!0,configurable:!0,writable:!0,value:g}):i[l]=g;var d=(i,l,g)=>(Ee(i,typeof l!="symbol"?l+"":l,g),g),ue=(i,l,g)=>{if(!l.has(i))throw TypeError("Cannot "+g)};var o=(i,l,g)=>(ue(i,l,"read from private field"),g?g.call(i):l.get(i)),c=(i,l,g)=>{if(l.has(i))throw TypeError("Cannot add the same private member more than once");l instanceof WeakSet?l.add(i):l.set(i,g)},p=(i,l,g,m)=>(ue(i,l,"write to private field"),m?m.call(i,g):l.set(i,g),g),ce=(i,l,g,m)=>({set _(U){p(i,l,U,g)},get _(){return o(i,l,m)}}),ge=(i,l,g)=>(ue(i,l,"access private method"),g);const _=Symbol("storage"),J=Symbol("emitter"),H=Symbol("workerManager");var ne={},Te={get exports(){return ne},set exports(r){ne=r}};function oe(){}oe.prototype={on:function(r,e,t){var s=this.e||(this.e={});return(s[r]||(s[r]=[])).push({fn:e,ctx:t}),this},once:function(r,e,t){var s=this;function n(){s.off(r,n),e.apply(t,arguments)}return n._=e,this.on(r,n,t)},emit:function(r){var e=[].slice.call(arguments,1),t=((this.e||(this.e={}))[r]||[]).slice(),s=0,n=t.length;for(s;s<n;s++)t[s].fn.apply(t[s].ctx,e);return this},off:function(r,e){var t=this.e||(this.e={}),s=t[r],n=[];if(s&&e)for(var a=0,u=s.length;a<u;a++)s[a].fn!==e&&s[a].fn._!==e&&n.push(s[a]);return n.length?t[r]=n:delete t[r],this}},Te.exports=oe;var Pe=ne.TinyEmitter=oe;const Re=()=>l.inject(J),We={install:r=>{const e=new Pe;r.config.globalProperties.$sts||(r.config.globalProperties.$sts={}),r.config.globalProperties.$sts[J]=e,r.provide(J,e)}};/*! js-cookie v3.0.1 | MIT */function L(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var s in t)r[s]=t[s]}return r}var Ce={read:function(r){return r[0]==='"'&&(r=r.slice(1,-1)),r.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(r){return encodeURIComponent(r).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function ie(r,e){function t(n,a,u){if(!(typeof document>"u")){u=L({},e,u),typeof u.expires=="number"&&(u.expires=new Date(Date.now()+u.expires*864e5)),u.expires&&(u.expires=u.expires.toUTCString()),n=encodeURIComponent(n).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var h="";for(var y in u)u[y]&&(h+="; "+y,u[y]!==!0&&(h+="="+u[y].split(";")[0]));return document.cookie=n+"="+r.write(a,n)+h}}function s(n){if(!(typeof document>"u"||arguments.length&&!n)){for(var a=document.cookie?document.cookie.split("; "):[],u={},h=0;h<a.length;h++){var y=a[h].split("="),Ne=y.slice(1).join("=");try{var le=decodeURIComponent(y[0]);if(u[le]=r.read(Ne,le),n===le)break}catch{}}return n?u[n]:u}}return Object.create({set:t,get:s,remove:function(n,a){t(n,"",L({},a,{expires:-1}))},withAttributes:function(n){return ie(this.converter,L({},this.attributes,n))},withConverter:function(n){return ie(L({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(e)},converter:{value:Object.freeze(r)}})}var ae=ie(Ce,{path:"/"});const F=g(`proc:${process.pid}:storage.ts`);let S="_ststra_";var me=(r=>(r.LOCAL_STORAGE="LocalStorage",r.SESSION_STORAGE="SessionStorage",r.COOKIE_STORAGE="CookieStorage",r.MEMORY_STORAGE="MemoryStorage",r))(me||{});class Me{constructor(){d(this,"get",e=>{const t=ae.get(S+e);return t?JSON.parse(t):null});d(this,"set",(e,t,s={})=>{let n={};window.location.protocol==="https:"&&(n={secure:!0,sameSite:"none"}),s&&s.daysUntilExpire?n.expires=s.daysUntilExpire:n.expires=1,F(`CookieStorage.set: key: ${e}, value: [${t}]`),ae.set(S+e,JSON.stringify(t),n)});d(this,"remove",e=>{ae.remove(S+e)})}}class Ie{constructor(){d(this,"get",e=>{const t=sessionStorage.getItem(S+e);return t?JSON.parse(t):null});d(this,"set",(e,t)=>{F(`SessionStorage.set: key: ${e}, value: [${t}]`),sessionStorage.setItem(S+e,JSON.stringify(t))});d(this,"remove",e=>{sessionStorage.removeItem(S+e)})}}class Oe{constructor(){d(this,"get",e=>{const t=localStorage.getItem(S+e);return t?JSON.parse(t):null});d(this,"set",(e,t)=>{F(`LocalStorage.set: key: ${e}, value: [${t}]`),localStorage.setItem(S+e,JSON.stringify(t))});d(this,"remove",e=>{localStorage.removeItem(S+e)})}}class $e{constructor(){c(this,$,{});d(this,"get",e=>{const t=o(this,$)[S+e];return t||null});d(this,"set",(e,t)=>{F(`MemoryStorage.set: key: ${e}, value: [${t}]`),o(this,$)[S+e]=t});d(this,"remove",e=>{delete o(this,$)[S+e]})}}$=new WeakMap;class he{constructor(e){c(this,P,void 0);switch(e.usePrefix===!1&&(S=""),e.clientStorageType){case"SessionStorage":p(this,P,new Ie);break;case"LocalStorage":p(this,P,new Oe);break;case"CookieStorage":p(this,P,new Me);break;case"MemoryStorage":p(this,P,new $e);break;default:throw new Error(`Unknown [${e.clientStorageType}] storage type.`)}}GetStorage(){return o(this,P)}}P=new WeakMap;const we=()=>l.inject(_),ve={install:(r,e)=>{const s=new he({clientStorageType:e.clientStorageType,usePrefix:!0}).GetStorage();r.config.globalProperties.$sts||(r.config.globalProperties.$sts={}),r.config.globalProperties.$sts[_]=s,r.provide(_,s)}},B=ye.defineStore("__sts__TelemetryStore",{state:()=>({workers:{}}),actions:{RemoveWorker(r){delete this.workers[r.id]},RemoveRunner(r,e){const t=this.workers[r.id];t&&t.runners&&delete t.runners[e.id]},Update(r,e){this.workers[r.id]||(this.workers[r.id]={id:r.id,state:r.state,primaryThreadWorkerOptions:{...r.primaryThreadWorkerOptions},workerThreadWorkerOptions:{...r.workerThreadWorkerOptions},runners:{}});const t=this.workers[r.id];if(t.runners)if(t.runners[e.id]){const s=t.runners[e.id];s.instrumentData={...e.instrumentData}}else{const s={id:e.id,asyncRunnerContext:{...e.asyncRunnerContext},options:{...e.options},state:e.state,instrumentData:{...e.instrumentData}};t.runners[s.id]=s}}}});var I=(r=>(r.created="created",r.running="running",r.stopped="stopped",r.paused="paused",r.error="error",r))(I||{}),q=(r=>(r.starting="starting",r.started="started",r.stopped="stopped",r))(q||{});const O=g(`proc:${process.pid}:workerManager`);class pe{constructor(e,t){c(this,j);c(this,w,{});c(this,R,0);c(this,z,0);c(this,W,void 0);c(this,C,void 0);c(this,N,void 0);d(this,"AddWorker",async e=>{let t;e?t=e:t=o(this,W).workerFactory;const s={id:ce(this,z)._++,worker:t.createWorkerThreadWorker(),primaryWorker:t.createPrimaryThreadWorker(o(this,N),t.primaryThreadWorkerOptions),state:q.starting,workerThreadWorkerOptions:t.workerThreadWorkerOptions,primaryThreadWorkerOptions:t.primaryThreadWorkerOptions,runnersEx:{},AddRunner:h=>this.AddRunnerToWorker(s,h),StopRunner:h=>o(this,v).call(this,s,h),Stop:async()=>o(this,Z).call(this,s)};console.log(`Adding worker: [${s.id}]`),s.worker.onmessage=function(h){console.log(h.data)},s.worker.onerror=function(h){console.log(h)};const{port1:n,port2:a}=new MessageChannel,u=n;return console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(s.workerThreadWorkerOptions)}]`),o(this,M).call(this,s,m.PublishMessageCommands.MessagePort,{port:a,options:{...s.workerThreadWorkerOptions}},a),u.onmessage=async h=>{const y=h.data;switch(y.command){case m.PublishMessageCommands.MessagePortResponse:s.state=q.started;break;case m.PublishMessageCommands.InstrumentTelemetry:o(this,Y).call(this,s,y.payload);break;default:s.primaryWorker.ProcessMessageFromWorker(u,y)}},o(this,w)[s.id]=s,console.log(`Added worker: [${s.id}]`),s});d(this,"AddRunnerToWorker",(e,t)=>{const s=o(this,Q).call(this,e,t);return e.runnersEx[s.id]=s,o(this,V).call(this,e,s),s});c(this,V,(e,t)=>{const s={runner:ge(this,j,de).call(this,t)};o(this,M).call(this,e,m.PublishMessageCommands.Add,s)});c(this,Y,(e,t)=>{const s=B(),{runner:n}=t;if(e.runnersEx[n.id]){const a=e.runnersEx[n.id];let u=!1;a.instrumentData.count=n.instrumentData.count,a.instrumentData.velocity=n.instrumentData.velocity,n.instrumentData.message?a.instrumentData.message=[...n.instrumentData.message]:a.instrumentData.message=[],n.instrumentData.message&&(n.instrumentData.message.forEach(h=>{a.publishInstrumentController.LogEx(h)}),u=!0),n.instrumentData.count&&(a.publishInstrumentController.UpdateInstrument(U.Gauge.REQUEST_COUNT_GAUGE,{val:a.instrumentData.count}),a.publishInstrumentController.UpdateInstrument(U.Gauge.VELOCITY_GAUGE,{Inc:a.instrumentData.velocity}),u=!0),u&&s.Update(e,a)}});c(this,Q,(e,t)=>{ce(this,R)._++;const s={nid:`${e.workerThreadWorkerOptions.hostName}${re.ModelDelimeter.COMPONENT_SEPERATOR}${e.workerThreadWorkerOptions.agentId}-${e.workerThreadWorkerOptions.userAgent}${re.ModelDelimeter.NID_SEPERATOR}worker${e.id}${re.ModelDelimeter.SEPERATOR}${o(this,R)}`,id:o(this,R).toString(),hostName:e.workerThreadWorkerOptions.hostName?e.workerThreadWorkerOptions.hostName:"host",agentName:`${e.workerThreadWorkerOptions.agentId}-${e.workerThreadWorkerOptions.userAgent}`,threadId:`worker${e.id}`,asyncRunnerId:o(this,R)},n={id:o(this,R),publishInstrumentController:o(this,C).AddPublishInstrumentController(s),asyncRunnerContext:s,state:I.created,options:t,instrumentData:{count:0,velocity:0,message:[]},Stop:async()=>o(this,v).call(this,e,n)};return n});c(this,M,(e,t,s,n)=>{n?(console.log("#PostMessageToWorker with transfer object"),e.worker.postMessage({command:t,payload:s},[n]),console.log("#PostMessageToWorker with transfer object - done...")):(console.log("#PostMessageToWorker"),e.worker.postMessage({command:t,payload:s}))});c(this,X,e=>{if(e.worker){const t=B();e.worker.terminate(),console.log(`Terminated worker: [${e.id}]`),t.RemoveWorker(e),delete o(this,w)[e.id]}});c(this,v,async(e,t=null)=>{if(t===null){const s=Object.keys(e.runnersEx);if(s.length>0){const n=s[0];t=e.runnersEx[n]}}if(t!==null){o(this,M).call(this,e,m.PublishMessageCommands.Stop,{runner:ge(this,j,de).call(this,t)}),t.publishInstrumentController.LogEx(`Terminating runner: [${t.id}]`);const s=[];s.push((async()=>(await ke.Sleep(100),t.publishInstrumentController.InstrumentTerminate()))()),B().RemoveRunner(e,t),delete e.runnersEx[t.id];const a=await Promise.all(s);console.log(`Removed instrument workers: [${a}]`)}return!0});c(this,Z,async e=>{try{if(e.state!==q.stopped){o(this,M).call(this,e,m.PublishMessageCommands.Stop,null),console.log(`Terminating worker: [${e.id}]`);const t=[];Object.keys(e.runnersEx).forEach(n=>{const a=e.runnersEx[n];t.push(o(this,v).call(this,e,a))}),await Promise.all(t),o(this,X).call(this,e)}return!0}catch(t){return console.log(`Error in STSTestWorker:StopWorker: [${t}]`),!1}});d(this,"GetNextAvailableWorker",()=>{let e=null;for(const[,t]of Object.entries(this.WorkersEx))e?Object.keys(t.runnersEx).length<Object.keys(e.runnersEx).length&&(e=t):e=t;return e});d(this,"GetBusyWorker",()=>{let e=null;for(const[,t]of Object.entries(this.WorkersEx))e?Object.keys(t.runnersEx).length>Object.keys(e.runnersEx).length&&(e=t):e=t;return e});d(this,"StopAllWorkers",async()=>{const e=[];for(const[,t]of Object.entries(this.WorkersEx))e.push(t.Stop());await Promise.all(e)});p(this,N,e),t?p(this,W,t):p(this,W,{}),O(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${Se()}]`),O(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(m.STSInstrumentControllerPluginKey)}]`),p(this,C,m.GetSTSInstrumentController(e)),O(o(this,C)),O("keys within app.config.globalProperties.$sts");for(const[s,n]of Object.entries(e.config.globalProperties.$sts))O(`${s}`);o(this,C)||O(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(m.STSInstrumentControllerPluginKey)}]`)}get WorkersEx(){return o(this,w)}get Options(){return o(this,W)}set Options(e){p(this,W,e)}}w=new WeakMap,R=new WeakMap,z=new WeakMap,W=new WeakMap,C=new WeakMap,N=new WeakMap,j=new WeakSet,de=function(e){return{id:e.id,asyncRunnerContext:{...e.asyncRunnerContext},options:{...e.options},state:e.state,instrumentData:{...e.instrumentData}}},V=new WeakMap,Y=new WeakMap,Q=new WeakMap,M=new WeakMap,X=new WeakMap,v=new WeakMap,Z=new WeakMap;const be=()=>m.STSInstrumentControllerPluginKey,Ae=r=>r===m.STSInstrumentControllerPluginKey,Se=()=>m.STSInstrumentControllerPluginKey===m.GetSTSInstrumentControllerPluginKey(),De=()=>l.inject(H),qe={install:(r,e)=>{const t=new pe(r,e);r.config.globalProperties.$sts||(r.config.globalProperties.$sts={}),r.config.globalProperties.$sts[H]=t,r.provide(H,t)}},G=g(`proc:${process.pid}`);class fe{constructor(e){c(this,f,{});c(this,E,1e4);c(this,b,void 0);d(this,"PostMessage",e=>new Promise((t,s)=>{const{messageId:n}=e.payload;if(n)o(this,f)[n]?s(`RequestResponseHelper: Message with id: [${n}] already exists within the Request/Response record structure`):(o(this,f)[n]={publishMessagePayload:{...e},cb:()=>{const a=o(this,f)[n].publishMessagePayloadResponse;if(clearTimeout(o(this,f)[n].timeout),setTimeout(()=>{delete o(this,f)[n]},0),a)G(`RequestResponseHelper: Resolving response message with id: [${n}] from target worker port. Details: [${JSON.stringify(a)}]`),t(a);else{const u="Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse";G(u),s(u)}},timeout:setTimeout(()=>{setTimeout(()=>{delete o(this,f)[n]},0),G(`RequestResponseHelper: Timeout has occurred after: [${o(this,E)}]ms with message id: [${n}]. Details: [${JSON.stringify(o(this,f)[n].publishMessagePayload)}]`),s("RequestResponseHelper: Did not receive response form parent process.")},o(this,E))},G(`RequestResponseHelper: Sending message with id: [${n}] to target worker port. Details: [${JSON.stringify(o(this,f)[n].publishMessagePayload)}]`),o(this,b).postMessage(e));else{const a="RequestResponseHelper: Response did not include a message id";G(a),s(a)}}));c(this,x,()=>{o(this,b).onmessage=async e=>{const t=e.data;if(t.payload.messageId){const s=t.payload.messageId;if(s&&s!=="")if(o(this,f)[s]){const n=o(this,f)[s];n.publishMessagePayloadResponse={...t},n.cb()}else throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${s}]`)}}});p(this,b,e),o(this,x).call(this)}}f=new WeakMap,E=new WeakMap,b=new WeakMap,x=new WeakMap;const k=g(`proc:${process.pid}:workerInstance`);class Ge{constructor(){c(this,T,null);c(this,K,null);c(this,A,{});c(this,D,null);d(this,"GetRandomInt",e=>(k("WorkerInstance::GetRandomInt"),Math.floor(Math.random()*Math.floor(e))));d(this,"StartWork",async e=>{k("WorkerInstance::StartWork")});d(this,"PostTelemetry",e=>{if(o(this,T)){const t={command:m.PublishMessageCommands.InstrumentTelemetry,payload:{runner:e}};o(this,T).postMessage(t)}});c(this,ee,e=>{k("WorkerInstance::SetMessagePort"),p(this,T,e.port),o(this,T).onmessage=function(s){console.log(`collectorCollectorPort onmessage: ${s.data}`)},p(this,K,new fe(o(this,T)));const t={command:m.PublishMessageCommands.MessagePortResponse,payload:{}};o(this,T).postMessage(t)});d(this,"StartRunner",async e=>{k("WorkerInstance::StartRunner"),console.log(`StartTests: [${JSON.stringify(e)}]`),e.state=I.running,this.StartWork(e)});c(this,te,e=>{k("WorkerInstance::AddAsyncRunner");const{runner:t}=e;o(this,A)[t.id]=t,this.StartRunner(t)});c(this,se,e=>{if(k("WorkerInstance::StopRunners"),e===null)for(const[,t]of Object.entries(o(this,A)))t.state=I.stopped;else{const t=o(this,A)[e.runner.id];t&&(t.state=I.stopped)}});d(this,"ProcessMessage",async e=>{k("WorkerInstance::ProcessMessage");try{const t=e.data;switch(t.command){case m.PublishMessageCommands.MessagePort:o(this,ee).call(this,t.payload),p(this,D,t.payload.options),k(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(o(this,D))}]`);break;case m.PublishMessageCommands.Add:o(this,te).call(this,t.payload);break;case m.PublishMessageCommands.Stop:o(this,se).call(this,t.payload);break;default:k(`Invalid payloadMessage.command: [${t.command}] - Ignoring`)}}catch(t){console.log(t)}});k("WorkerInstance::constructor")}get RequestResponseHelper(){return o(this,K)}get CollectorCollectorPort(){return o(this,T)}get Options(){return o(this,D)}}T=new WeakMap,K=new WeakMap,A=new WeakMap,D=new WeakMap,ee=new WeakMap,te=new WeakMap,se=new WeakMap,i.ClientStorageFactory=he,i.ClientStorageType=me,i.CompareSTSInstrumentControllerPluginKeyWM=Ae,i.CompareSTSInstrumentControllerPluginKeyWMEx=Se,i.GetSTSInstrumentControllerPluginKeyWM=be,i.IRunnerState=I,i.IWorkerState=q,i.RequestResponseHelper=fe,i.STSEmitterPlugin=We,i.STSEmitterPluginKey=J,i.STSStoragePlugin=ve,i.STSStoragePluginKey=_,i.STSWorkerManager=pe,i.STSWorkerManagerPlugin=qe,i.STSWorkerManagerPluginKey=H,i.TelemetryStore=B,i.WorkerInstance=Ge,i.useSTSEmitterPlugin=Re,i.useSTSStoragePlugin=we,i.useSTSWorkerManager=De,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(global, factory) {
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("debug"), require("@nsshunt/stspublisherserver"), require("@nsshunt/stsinstrumentation"), require("@nsshunt/stsmodels"), require("pinia"), require("@nsshunt/stsutils")) : typeof define === "function" && define.amd ? define(["exports", "vue", "debug", "@nsshunt/stspublisherserver", "@nsshunt/stsinstrumentation", "@nsshunt/stsmodels", "pinia", "@nsshunt/stsutils"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["@nsshunt/stsvueutils"] = {}, global.vue, global.debug, global.stspublisherserver, global.stsinstrumentation, global.stsmodels, global.pinia, global.stsutils));
|
|
3
|
+
})(this, function(exports2, vue, debugModule, stspublisherserver, stsinstrumentation, stsmodels, pinia, stsutils) {
|
|
4
|
+
var _store, _storage, _workersEx, _runner, _workerId, _options, _STSInstrumentController, _app, _CreateRunnerCopy, CreateRunnerCopy_fn, _SetRunnerIntoWorker, _ProcessTelemetry, _CreateAsyncRunner, _PostMessageToWorker, _TerminateWorker, _StopRunner, _StopWorker, _requestResponseMessages, _requestResponseMessageTimeout, _port, _SetupListener, _collectorCollectorPort, _requestResponseHelper, _runners, _options2, _SetMessagePort, _AddAsyncRunner, _StopRunners;
|
|
5
|
+
"use strict";var __defProp = Object.defineProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __publicField = (obj, key, value) => {
|
|
8
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
9
|
+
return value;
|
|
10
|
+
};
|
|
11
|
+
var __accessCheck = (obj, member, msg) => {
|
|
12
|
+
if (!member.has(obj))
|
|
13
|
+
throw TypeError("Cannot " + msg);
|
|
14
|
+
};
|
|
15
|
+
var __privateGet = (obj, member, getter) => {
|
|
16
|
+
__accessCheck(obj, member, "read from private field");
|
|
17
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
18
|
+
};
|
|
19
|
+
var __privateAdd = (obj, member, value) => {
|
|
20
|
+
if (member.has(obj))
|
|
21
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
22
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
23
|
+
};
|
|
24
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
25
|
+
__accessCheck(obj, member, "write to private field");
|
|
26
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
var __privateWrapper = (obj, member, setter, getter) => ({
|
|
30
|
+
set _(value) {
|
|
31
|
+
__privateSet(obj, member, value, setter);
|
|
32
|
+
},
|
|
33
|
+
get _() {
|
|
34
|
+
return __privateGet(obj, member, getter);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var __privateMethod = (obj, member, method) => {
|
|
38
|
+
__accessCheck(obj, member, "access private method");
|
|
39
|
+
return method;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const STSStoragePluginKey = Symbol("storage");
|
|
43
|
+
const STSEmitterPluginKey = Symbol("emitter");
|
|
44
|
+
const STSWorkerManagerPluginKey = Symbol("workerManager");
|
|
45
|
+
var tinyEmitterExports = {};
|
|
46
|
+
var tinyEmitter = {
|
|
47
|
+
get exports() {
|
|
48
|
+
return tinyEmitterExports;
|
|
49
|
+
},
|
|
50
|
+
set exports(v) {
|
|
51
|
+
tinyEmitterExports = v;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
function E() {
|
|
55
|
+
}
|
|
56
|
+
E.prototype = {
|
|
57
|
+
on: function(name, callback, ctx) {
|
|
58
|
+
var e = this.e || (this.e = {});
|
|
59
|
+
(e[name] || (e[name] = [])).push({
|
|
60
|
+
fn: callback,
|
|
61
|
+
ctx
|
|
62
|
+
});
|
|
63
|
+
return this;
|
|
64
|
+
},
|
|
65
|
+
once: function(name, callback, ctx) {
|
|
66
|
+
var self2 = this;
|
|
67
|
+
function listener() {
|
|
68
|
+
self2.off(name, listener);
|
|
69
|
+
callback.apply(ctx, arguments);
|
|
70
|
+
}
|
|
71
|
+
listener._ = callback;
|
|
72
|
+
return this.on(name, listener, ctx);
|
|
73
|
+
},
|
|
74
|
+
emit: function(name) {
|
|
75
|
+
var data = [].slice.call(arguments, 1);
|
|
76
|
+
var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
|
|
77
|
+
var i = 0;
|
|
78
|
+
var len = evtArr.length;
|
|
79
|
+
for (i; i < len; i++) {
|
|
80
|
+
evtArr[i].fn.apply(evtArr[i].ctx, data);
|
|
81
|
+
}
|
|
82
|
+
return this;
|
|
83
|
+
},
|
|
84
|
+
off: function(name, callback) {
|
|
85
|
+
var e = this.e || (this.e = {});
|
|
86
|
+
var evts = e[name];
|
|
87
|
+
var liveEvents = [];
|
|
88
|
+
if (evts && callback) {
|
|
89
|
+
for (var i = 0, len = evts.length; i < len; i++) {
|
|
90
|
+
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
|
|
91
|
+
liveEvents.push(evts[i]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
liveEvents.length ? e[name] = liveEvents : delete e[name];
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
tinyEmitter.exports = E;
|
|
99
|
+
var TinyEmitter = tinyEmitterExports.TinyEmitter = E;
|
|
100
|
+
const useSTSEmitterPlugin = () => vue.inject(STSEmitterPluginKey);
|
|
101
|
+
const STSEmitterPlugin = {
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
+
install: (app) => {
|
|
104
|
+
const tinyEmitter2 = new TinyEmitter();
|
|
105
|
+
if (!app.config.globalProperties.$sts) {
|
|
106
|
+
app.config.globalProperties.$sts = {};
|
|
107
|
+
}
|
|
108
|
+
app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter2;
|
|
109
|
+
app.provide(STSEmitterPluginKey, tinyEmitter2);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
/*! js-cookie v3.0.1 | MIT */
|
|
113
|
+
function assign(target) {
|
|
114
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
115
|
+
var source = arguments[i];
|
|
116
|
+
for (var key in source) {
|
|
117
|
+
target[key] = source[key];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return target;
|
|
121
|
+
}
|
|
122
|
+
var defaultConverter = {
|
|
123
|
+
read: function(value) {
|
|
124
|
+
if (value[0] === '"') {
|
|
125
|
+
value = value.slice(1, -1);
|
|
126
|
+
}
|
|
127
|
+
return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
|
|
128
|
+
},
|
|
129
|
+
write: function(value) {
|
|
130
|
+
return encodeURIComponent(value).replace(
|
|
131
|
+
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
|
|
132
|
+
decodeURIComponent
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
function init(converter, defaultAttributes) {
|
|
137
|
+
function set(key, value, attributes) {
|
|
138
|
+
if (typeof document === "undefined") {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
attributes = assign({}, defaultAttributes, attributes);
|
|
142
|
+
if (typeof attributes.expires === "number") {
|
|
143
|
+
attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
|
|
144
|
+
}
|
|
145
|
+
if (attributes.expires) {
|
|
146
|
+
attributes.expires = attributes.expires.toUTCString();
|
|
147
|
+
}
|
|
148
|
+
key = encodeURIComponent(key).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
|
|
149
|
+
var stringifiedAttributes = "";
|
|
150
|
+
for (var attributeName in attributes) {
|
|
151
|
+
if (!attributes[attributeName]) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
stringifiedAttributes += "; " + attributeName;
|
|
155
|
+
if (attributes[attributeName] === true) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
stringifiedAttributes += "=" + attributes[attributeName].split(";")[0];
|
|
159
|
+
}
|
|
160
|
+
return document.cookie = key + "=" + converter.write(value, key) + stringifiedAttributes;
|
|
161
|
+
}
|
|
162
|
+
function get(key) {
|
|
163
|
+
if (typeof document === "undefined" || arguments.length && !key) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
var cookies = document.cookie ? document.cookie.split("; ") : [];
|
|
167
|
+
var jar = {};
|
|
168
|
+
for (var i = 0; i < cookies.length; i++) {
|
|
169
|
+
var parts = cookies[i].split("=");
|
|
170
|
+
var value = parts.slice(1).join("=");
|
|
171
|
+
try {
|
|
172
|
+
var foundKey = decodeURIComponent(parts[0]);
|
|
173
|
+
jar[foundKey] = converter.read(value, foundKey);
|
|
174
|
+
if (key === foundKey) {
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
} catch (e) {
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return key ? jar[key] : jar;
|
|
181
|
+
}
|
|
182
|
+
return Object.create(
|
|
183
|
+
{
|
|
184
|
+
set,
|
|
185
|
+
get,
|
|
186
|
+
remove: function(key, attributes) {
|
|
187
|
+
set(
|
|
188
|
+
key,
|
|
189
|
+
"",
|
|
190
|
+
assign({}, attributes, {
|
|
191
|
+
expires: -1
|
|
192
|
+
})
|
|
193
|
+
);
|
|
194
|
+
},
|
|
195
|
+
withAttributes: function(attributes) {
|
|
196
|
+
return init(this.converter, assign({}, this.attributes, attributes));
|
|
197
|
+
},
|
|
198
|
+
withConverter: function(converter2) {
|
|
199
|
+
return init(assign({}, this.converter, converter2), this.attributes);
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
attributes: { value: Object.freeze(defaultAttributes) },
|
|
204
|
+
converter: { value: Object.freeze(converter) }
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
var api = init(defaultConverter, { path: "/" });
|
|
209
|
+
const debug$3 = debugModule(`proc:${process.pid}:storage.ts`);
|
|
210
|
+
let PREFIX = "_ststra_";
|
|
211
|
+
var ClientStorageType = /* @__PURE__ */ ((ClientStorageType2) => {
|
|
212
|
+
ClientStorageType2["LOCAL_STORAGE"] = "LocalStorage";
|
|
213
|
+
ClientStorageType2["SESSION_STORAGE"] = "SessionStorage";
|
|
214
|
+
ClientStorageType2["COOKIE_STORAGE"] = "CookieStorage";
|
|
215
|
+
ClientStorageType2["MEMORY_STORAGE"] = "MemoryStorage";
|
|
216
|
+
return ClientStorageType2;
|
|
217
|
+
})(ClientStorageType || {});
|
|
218
|
+
class CookieStorage {
|
|
219
|
+
constructor() {
|
|
220
|
+
__publicField(this, "get", (key) => {
|
|
221
|
+
const raw = api.get(PREFIX + key);
|
|
222
|
+
if (raw) {
|
|
223
|
+
return JSON.parse(raw);
|
|
224
|
+
} else {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
__publicField(this, "set", (key, value, options = {}) => {
|
|
229
|
+
let cookieAttributes = {};
|
|
230
|
+
if ("https:" === window.location.protocol) {
|
|
231
|
+
cookieAttributes = {
|
|
232
|
+
secure: true,
|
|
233
|
+
sameSite: "none"
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
if (options && options.daysUntilExpire) {
|
|
237
|
+
cookieAttributes.expires = options.daysUntilExpire;
|
|
238
|
+
} else {
|
|
239
|
+
cookieAttributes.expires = 1;
|
|
240
|
+
}
|
|
241
|
+
debug$3(`CookieStorage.set: key: ${key}, value: [${value}]`);
|
|
242
|
+
api.set(PREFIX + key, JSON.stringify(value), cookieAttributes);
|
|
243
|
+
});
|
|
244
|
+
__publicField(this, "remove", (key) => {
|
|
245
|
+
api.remove(PREFIX + key);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
class SessionStorage {
|
|
250
|
+
constructor() {
|
|
251
|
+
__publicField(this, "get", (key) => {
|
|
252
|
+
const value = sessionStorage.getItem(PREFIX + key);
|
|
253
|
+
if (value) {
|
|
254
|
+
return JSON.parse(value);
|
|
255
|
+
} else {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
__publicField(this, "set", (key, value) => {
|
|
260
|
+
debug$3(`SessionStorage.set: key: ${key}, value: [${value}]`);
|
|
261
|
+
sessionStorage.setItem(PREFIX + key, JSON.stringify(value));
|
|
262
|
+
});
|
|
263
|
+
__publicField(this, "remove", (key) => {
|
|
264
|
+
sessionStorage.removeItem(PREFIX + key);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
class LocalStorage {
|
|
269
|
+
constructor() {
|
|
270
|
+
__publicField(this, "get", (key) => {
|
|
271
|
+
const value = localStorage.getItem(PREFIX + key);
|
|
272
|
+
if (value) {
|
|
273
|
+
return JSON.parse(value);
|
|
274
|
+
} else {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
__publicField(this, "set", (key, value) => {
|
|
279
|
+
debug$3(`LocalStorage.set: key: ${key}, value: [${value}]`);
|
|
280
|
+
localStorage.setItem(PREFIX + key, JSON.stringify(value));
|
|
281
|
+
});
|
|
282
|
+
__publicField(this, "remove", (key) => {
|
|
283
|
+
localStorage.removeItem(PREFIX + key);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
class MemoryStorage {
|
|
288
|
+
constructor() {
|
|
289
|
+
__privateAdd(this, _store, {});
|
|
290
|
+
__publicField(this, "get", (key) => {
|
|
291
|
+
const value = __privateGet(this, _store)[PREFIX + key];
|
|
292
|
+
if (value) {
|
|
293
|
+
return value;
|
|
294
|
+
} else {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
__publicField(this, "set", (key, value) => {
|
|
299
|
+
debug$3(`MemoryStorage.set: key: ${key}, value: [${value}]`);
|
|
300
|
+
__privateGet(this, _store)[PREFIX + key] = value;
|
|
301
|
+
});
|
|
302
|
+
__publicField(this, "remove", (key) => {
|
|
303
|
+
delete __privateGet(this, _store)[PREFIX + key];
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
_store = new WeakMap();
|
|
308
|
+
class ClientStorageFactory {
|
|
309
|
+
constructor(options) {
|
|
310
|
+
__privateAdd(this, _storage, void 0);
|
|
311
|
+
if (options.usePrefix === false) {
|
|
312
|
+
PREFIX = "";
|
|
313
|
+
}
|
|
314
|
+
switch (options.clientStorageType) {
|
|
315
|
+
case "SessionStorage":
|
|
316
|
+
__privateSet(this, _storage, new SessionStorage());
|
|
317
|
+
break;
|
|
318
|
+
case "LocalStorage":
|
|
319
|
+
__privateSet(this, _storage, new LocalStorage());
|
|
320
|
+
break;
|
|
321
|
+
case "CookieStorage":
|
|
322
|
+
__privateSet(this, _storage, new CookieStorage());
|
|
323
|
+
break;
|
|
324
|
+
case "MemoryStorage":
|
|
325
|
+
__privateSet(this, _storage, new MemoryStorage());
|
|
326
|
+
break;
|
|
327
|
+
default:
|
|
328
|
+
throw new Error(`Unknown [${options.clientStorageType}] storage type.`);
|
|
329
|
+
}
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
GetStorage() {
|
|
333
|
+
return __privateGet(this, _storage);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
_storage = new WeakMap();
|
|
337
|
+
const useSTSStoragePlugin = () => vue.inject(STSStoragePluginKey);
|
|
338
|
+
const STSStoragePlugin = {
|
|
339
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
340
|
+
install: (app, options) => {
|
|
341
|
+
const cs = new ClientStorageFactory({ clientStorageType: options.clientStorageType, usePrefix: true });
|
|
342
|
+
const pluginInstance = cs.GetStorage();
|
|
343
|
+
if (!app.config.globalProperties.$sts) {
|
|
344
|
+
app.config.globalProperties.$sts = {};
|
|
345
|
+
}
|
|
346
|
+
app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;
|
|
347
|
+
app.provide(STSStoragePluginKey, pluginInstance);
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
const TelemetryStore = pinia.defineStore("__sts__TelemetryStore", {
|
|
351
|
+
// State
|
|
352
|
+
// https://pinia.vuejs.org/core-concepts/state.html
|
|
353
|
+
state: () => {
|
|
354
|
+
return {
|
|
355
|
+
workers: {}
|
|
356
|
+
};
|
|
357
|
+
},
|
|
358
|
+
// Getters
|
|
359
|
+
// https://pinia.vuejs.org/core-concepts/getters.html
|
|
360
|
+
// Actions
|
|
361
|
+
// https://pinia.vuejs.org/core-concepts/actions.html
|
|
362
|
+
actions: {
|
|
363
|
+
RemoveWorker(workerEx) {
|
|
364
|
+
delete this.workers[workerEx.id];
|
|
365
|
+
},
|
|
366
|
+
RemoveRunner(workerEx, runnerEx) {
|
|
367
|
+
const worker = this.workers[workerEx.id];
|
|
368
|
+
if (worker && worker.runners) {
|
|
369
|
+
delete worker.runners[runnerEx.id];
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
Update(workerEx, runnerEx) {
|
|
373
|
+
if (!this.workers[workerEx.id]) {
|
|
374
|
+
this.workers[workerEx.id] = {
|
|
375
|
+
id: workerEx.id,
|
|
376
|
+
state: workerEx.state,
|
|
377
|
+
primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },
|
|
378
|
+
workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },
|
|
379
|
+
runners: {}
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
const worker = this.workers[workerEx.id];
|
|
383
|
+
if (worker.runners) {
|
|
384
|
+
if (!worker.runners[runnerEx.id]) {
|
|
385
|
+
const runner = {
|
|
386
|
+
id: runnerEx.id,
|
|
387
|
+
asyncRunnerContext: { ...runnerEx.asyncRunnerContext },
|
|
388
|
+
options: { ...runnerEx.options },
|
|
389
|
+
state: runnerEx.state,
|
|
390
|
+
instrumentData: { ...runnerEx.instrumentData }
|
|
391
|
+
};
|
|
392
|
+
worker.runners[runner.id] = runner;
|
|
393
|
+
} else {
|
|
394
|
+
const runner = worker.runners[runnerEx.id];
|
|
395
|
+
runner.instrumentData = { ...runnerEx.instrumentData };
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
var IRunnerState = /* @__PURE__ */ ((IRunnerState2) => {
|
|
402
|
+
IRunnerState2["created"] = "created";
|
|
403
|
+
IRunnerState2["running"] = "running";
|
|
404
|
+
IRunnerState2["stopped"] = "stopped";
|
|
405
|
+
IRunnerState2["paused"] = "paused";
|
|
406
|
+
IRunnerState2["error"] = "error";
|
|
407
|
+
return IRunnerState2;
|
|
408
|
+
})(IRunnerState || {});
|
|
409
|
+
var IWorkerState = /* @__PURE__ */ ((IWorkerState2) => {
|
|
410
|
+
IWorkerState2["starting"] = "starting";
|
|
411
|
+
IWorkerState2["started"] = "started";
|
|
412
|
+
IWorkerState2["stopped"] = "stopped";
|
|
413
|
+
return IWorkerState2;
|
|
414
|
+
})(IWorkerState || {});
|
|
415
|
+
const debug$2 = debugModule(`proc:${process.pid}:workerManager`);
|
|
416
|
+
class STSWorkerManager {
|
|
417
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
418
|
+
constructor(app, options) {
|
|
419
|
+
__privateAdd(this, _CreateRunnerCopy);
|
|
420
|
+
//#agentSession: string = null;
|
|
421
|
+
__privateAdd(this, _workersEx, {});
|
|
422
|
+
__privateAdd(this, _runner, 0);
|
|
423
|
+
__privateAdd(this, _workerId, 0);
|
|
424
|
+
__privateAdd(this, _options, void 0);
|
|
425
|
+
__privateAdd(this, _STSInstrumentController, void 0);
|
|
426
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
427
|
+
__privateAdd(this, _app, void 0);
|
|
428
|
+
__publicField(this, "AddWorker", async (useWorkerFactory) => {
|
|
429
|
+
let workerFactory;
|
|
430
|
+
if (useWorkerFactory) {
|
|
431
|
+
workerFactory = useWorkerFactory;
|
|
432
|
+
} else {
|
|
433
|
+
workerFactory = __privateGet(this, _options).workerFactory;
|
|
434
|
+
}
|
|
435
|
+
const stsWorkerEx = {
|
|
436
|
+
id: __privateWrapper(this, _workerId)._++,
|
|
437
|
+
// uuidv4()
|
|
438
|
+
worker: workerFactory.createWorkerThreadWorker(),
|
|
439
|
+
primaryWorker: workerFactory.createPrimaryThreadWorker(__privateGet(this, _app), workerFactory.primaryThreadWorkerOptions),
|
|
440
|
+
state: IWorkerState.starting,
|
|
441
|
+
workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,
|
|
442
|
+
primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,
|
|
443
|
+
runnersEx: {},
|
|
444
|
+
AddRunner: (runnerOptions) => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),
|
|
445
|
+
StopRunner: (runner) => __privateGet(this, _StopRunner).call(this, stsWorkerEx, runner),
|
|
446
|
+
Stop: async () => __privateGet(this, _StopWorker).call(this, stsWorkerEx)
|
|
447
|
+
};
|
|
448
|
+
console.log(`Adding worker: [${stsWorkerEx.id}]`);
|
|
449
|
+
stsWorkerEx.worker.onmessage = function(data) {
|
|
450
|
+
console.log(data.data);
|
|
451
|
+
};
|
|
452
|
+
stsWorkerEx.worker.onerror = function(error) {
|
|
453
|
+
console.log(error);
|
|
454
|
+
};
|
|
455
|
+
const {
|
|
456
|
+
port1,
|
|
457
|
+
// process message port
|
|
458
|
+
port2
|
|
459
|
+
// collector message port
|
|
460
|
+
} = new MessageChannel();
|
|
461
|
+
const workerPort = port1;
|
|
462
|
+
console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);
|
|
463
|
+
__privateGet(this, _PostMessageToWorker).call(this, stsWorkerEx, stspublisherserver.PublishMessageCommands.MessagePort, {
|
|
464
|
+
port: port2,
|
|
465
|
+
//applicationStoreState: stateCopy,
|
|
466
|
+
options: { ...stsWorkerEx.workerThreadWorkerOptions }
|
|
467
|
+
}, port2);
|
|
468
|
+
workerPort.onmessage = async (data) => {
|
|
469
|
+
const publishMessagePayload = data.data;
|
|
470
|
+
switch (publishMessagePayload.command) {
|
|
471
|
+
case stspublisherserver.PublishMessageCommands.MessagePortResponse:
|
|
472
|
+
stsWorkerEx.state = IWorkerState.started;
|
|
473
|
+
break;
|
|
474
|
+
case stspublisherserver.PublishMessageCommands.InstrumentTelemetry:
|
|
475
|
+
__privateGet(this, _ProcessTelemetry).call(this, stsWorkerEx, publishMessagePayload.payload);
|
|
476
|
+
break;
|
|
477
|
+
default:
|
|
478
|
+
stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
__privateGet(this, _workersEx)[stsWorkerEx.id] = stsWorkerEx;
|
|
482
|
+
console.log(`Added worker: [${stsWorkerEx.id}]`);
|
|
483
|
+
return stsWorkerEx;
|
|
484
|
+
});
|
|
485
|
+
__publicField(this, "AddRunnerToWorker", (stsWorkerEx, runnerOptions) => {
|
|
486
|
+
const runnerEx = __privateGet(this, _CreateAsyncRunner).call(this, stsWorkerEx, runnerOptions);
|
|
487
|
+
stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;
|
|
488
|
+
__privateGet(this, _SetRunnerIntoWorker).call(this, stsWorkerEx, runnerEx);
|
|
489
|
+
return runnerEx;
|
|
490
|
+
});
|
|
491
|
+
__privateAdd(this, _SetRunnerIntoWorker, (workerEx, runnerEx) => {
|
|
492
|
+
const payload = {
|
|
493
|
+
runner: __privateMethod(this, _CreateRunnerCopy, CreateRunnerCopy_fn).call(this, runnerEx)
|
|
494
|
+
};
|
|
495
|
+
__privateGet(this, _PostMessageToWorker).call(this, workerEx, stspublisherserver.PublishMessageCommands.Add, payload);
|
|
496
|
+
});
|
|
497
|
+
__privateAdd(this, _ProcessTelemetry, (workerEx, payloadContents) => {
|
|
498
|
+
const store = TelemetryStore();
|
|
499
|
+
const { runner } = payloadContents;
|
|
500
|
+
if (workerEx.runnersEx[runner.id]) {
|
|
501
|
+
const runnerEx = workerEx.runnersEx[runner.id];
|
|
502
|
+
let update = false;
|
|
503
|
+
runnerEx.instrumentData.count = runner.instrumentData.count;
|
|
504
|
+
runnerEx.instrumentData.velocity = runner.instrumentData.velocity;
|
|
505
|
+
if (runner.instrumentData.message) {
|
|
506
|
+
runnerEx.instrumentData.message = [...runner.instrumentData.message];
|
|
507
|
+
} else {
|
|
508
|
+
runnerEx.instrumentData.message = [];
|
|
509
|
+
}
|
|
510
|
+
if (runner.instrumentData.message) {
|
|
511
|
+
runner.instrumentData.message.forEach((message) => {
|
|
512
|
+
runnerEx.publishInstrumentController.LogEx(message);
|
|
513
|
+
});
|
|
514
|
+
update = true;
|
|
515
|
+
}
|
|
516
|
+
if (runner.instrumentData.count) {
|
|
517
|
+
runnerEx.publishInstrumentController.UpdateInstrument(stsinstrumentation.Gauge.REQUEST_COUNT_GAUGE, {
|
|
518
|
+
val: runnerEx.instrumentData.count
|
|
519
|
+
});
|
|
520
|
+
runnerEx.publishInstrumentController.UpdateInstrument(stsinstrumentation.Gauge.VELOCITY_GAUGE, {
|
|
521
|
+
Inc: runnerEx.instrumentData.velocity
|
|
522
|
+
});
|
|
523
|
+
update = true;
|
|
524
|
+
}
|
|
525
|
+
if (update) {
|
|
526
|
+
store.Update(workerEx, runnerEx);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
__privateAdd(this, _CreateAsyncRunner, (workerEx, runnerOptions) => {
|
|
531
|
+
__privateWrapper(this, _runner)._++;
|
|
532
|
+
const asyncRunnerContext = {
|
|
533
|
+
nid: `${workerEx.workerThreadWorkerOptions.hostName}${stsmodels.ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}${stsmodels.ModelDelimeter.NID_SEPERATOR}worker${workerEx.id}${stsmodels.ModelDelimeter.SEPERATOR}${__privateGet(this, _runner)}`,
|
|
534
|
+
id: __privateGet(this, _runner).toString(),
|
|
535
|
+
hostName: workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : "host",
|
|
536
|
+
agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,
|
|
537
|
+
threadId: `worker${workerEx.id}`,
|
|
538
|
+
asyncRunnerId: __privateGet(this, _runner)
|
|
539
|
+
};
|
|
540
|
+
const runnerEx = {
|
|
541
|
+
id: __privateGet(this, _runner),
|
|
542
|
+
publishInstrumentController: __privateGet(this, _STSInstrumentController).AddPublishInstrumentController(asyncRunnerContext),
|
|
543
|
+
asyncRunnerContext,
|
|
544
|
+
state: IRunnerState.created,
|
|
545
|
+
options: runnerOptions,
|
|
546
|
+
instrumentData: {
|
|
547
|
+
count: 0,
|
|
548
|
+
velocity: 0,
|
|
549
|
+
message: []
|
|
550
|
+
},
|
|
551
|
+
Stop: async () => __privateGet(this, _StopRunner).call(this, workerEx, runnerEx)
|
|
552
|
+
};
|
|
553
|
+
return runnerEx;
|
|
554
|
+
});
|
|
555
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
556
|
+
__privateAdd(this, _PostMessageToWorker, (workerEx, command, payload, transferObject) => {
|
|
557
|
+
if (transferObject) {
|
|
558
|
+
console.log(`#PostMessageToWorker with transfer object`);
|
|
559
|
+
workerEx.worker.postMessage({ command, payload }, [transferObject]);
|
|
560
|
+
console.log(`#PostMessageToWorker with transfer object - done...`);
|
|
561
|
+
} else {
|
|
562
|
+
console.log(`#PostMessageToWorker`);
|
|
563
|
+
workerEx.worker.postMessage({ command, payload });
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
__privateAdd(this, _TerminateWorker, (workerEx) => {
|
|
567
|
+
if (workerEx.worker) {
|
|
568
|
+
const store = TelemetryStore();
|
|
569
|
+
workerEx.worker.terminate();
|
|
570
|
+
console.log(`Terminated worker: [${workerEx.id}]`);
|
|
571
|
+
store.RemoveWorker(workerEx);
|
|
572
|
+
delete __privateGet(this, _workersEx)[workerEx.id];
|
|
573
|
+
}
|
|
574
|
+
});
|
|
575
|
+
__privateAdd(this, _StopRunner, async (workerEx, runnerEx = null) => {
|
|
576
|
+
if (runnerEx === null) {
|
|
577
|
+
const ids = Object.keys(workerEx.runnersEx);
|
|
578
|
+
if (ids.length > 0) {
|
|
579
|
+
const id = ids[0];
|
|
580
|
+
runnerEx = workerEx.runnersEx[id];
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (runnerEx !== null) {
|
|
584
|
+
__privateGet(this, _PostMessageToWorker).call(this, workerEx, stspublisherserver.PublishMessageCommands.Stop, {
|
|
585
|
+
runner: __privateMethod(this, _CreateRunnerCopy, CreateRunnerCopy_fn).call(this, runnerEx)
|
|
586
|
+
});
|
|
587
|
+
runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);
|
|
588
|
+
const promArray = [];
|
|
589
|
+
promArray.push((async () => {
|
|
590
|
+
await stsutils.Sleep(100);
|
|
591
|
+
return runnerEx.publishInstrumentController.InstrumentTerminate();
|
|
592
|
+
})());
|
|
593
|
+
const store = TelemetryStore();
|
|
594
|
+
store.RemoveRunner(workerEx, runnerEx);
|
|
595
|
+
delete workerEx.runnersEx[runnerEx.id];
|
|
596
|
+
const retVal = await Promise.all(promArray);
|
|
597
|
+
console.log(`Removed instrument workers: [${retVal}]`);
|
|
598
|
+
}
|
|
599
|
+
return true;
|
|
600
|
+
});
|
|
601
|
+
__privateAdd(this, _StopWorker, async (workerEx) => {
|
|
602
|
+
try {
|
|
603
|
+
if (workerEx.state !== IWorkerState.stopped) {
|
|
604
|
+
__privateGet(this, _PostMessageToWorker).call(this, workerEx, stspublisherserver.PublishMessageCommands.Stop, null);
|
|
605
|
+
console.log(`Terminating worker: [${workerEx.id}]`);
|
|
606
|
+
const promArray = [];
|
|
607
|
+
const ids = Object.keys(workerEx.runnersEx);
|
|
608
|
+
ids.forEach((id) => {
|
|
609
|
+
const runnerEx = workerEx.runnersEx[id];
|
|
610
|
+
promArray.push(__privateGet(this, _StopRunner).call(this, workerEx, runnerEx));
|
|
611
|
+
});
|
|
612
|
+
await Promise.all(promArray);
|
|
613
|
+
__privateGet(this, _TerminateWorker).call(this, workerEx);
|
|
614
|
+
}
|
|
615
|
+
return true;
|
|
616
|
+
} catch (error) {
|
|
617
|
+
console.log(`Error in STSTestWorker:StopWorker: [${error}]`);
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
__publicField(this, "GetNextAvailableWorker", () => {
|
|
622
|
+
let leastRunnerWorker = null;
|
|
623
|
+
for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
|
|
624
|
+
if (leastRunnerWorker) {
|
|
625
|
+
if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {
|
|
626
|
+
leastRunnerWorker = stsWorker;
|
|
627
|
+
}
|
|
628
|
+
} else {
|
|
629
|
+
leastRunnerWorker = stsWorker;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
return leastRunnerWorker;
|
|
633
|
+
});
|
|
634
|
+
__publicField(this, "GetBusyWorker", () => {
|
|
635
|
+
let busyWorker = null;
|
|
636
|
+
for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
|
|
637
|
+
if (busyWorker) {
|
|
638
|
+
if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {
|
|
639
|
+
busyWorker = stsWorker;
|
|
640
|
+
}
|
|
641
|
+
} else {
|
|
642
|
+
busyWorker = stsWorker;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return busyWorker;
|
|
646
|
+
});
|
|
647
|
+
/*
|
|
648
|
+
StopRunner = async () => {
|
|
649
|
+
// Calculate the worker with the most runners
|
|
650
|
+
let largestRunnerWorker: IWorkerEx | null = null;
|
|
651
|
+
for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
|
|
652
|
+
if (largestRunnerWorker) {
|
|
653
|
+
if (Object.keys(stsWorker.runnersEx).length > Object.keys(largestRunnerWorker.runnersEx).length) {
|
|
654
|
+
largestRunnerWorker = stsWorker;
|
|
655
|
+
}
|
|
656
|
+
} else {
|
|
657
|
+
largestRunnerWorker = stsWorker;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
if (largestRunnerWorker) largestRunnerWorker.StopRunner();
|
|
661
|
+
}
|
|
662
|
+
*/
|
|
663
|
+
/*
|
|
664
|
+
StopWorker = async () => {
|
|
665
|
+
// Calculate the worker with the least runners
|
|
666
|
+
let largestRunnerWorker: IWorkerEx | null = null;
|
|
667
|
+
for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
|
|
668
|
+
if (largestRunnerWorker) {
|
|
669
|
+
if (Object.keys(stsWorker.runnersEx).length < Object.keys(largestRunnerWorker.runnersEx).length) {
|
|
670
|
+
largestRunnerWorker = stsWorker;
|
|
671
|
+
}
|
|
672
|
+
} else {
|
|
673
|
+
largestRunnerWorker = stsWorker;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
if (largestRunnerWorker) largestRunnerWorker.Stop();
|
|
677
|
+
}
|
|
678
|
+
*/
|
|
679
|
+
__publicField(this, "StopAllWorkers", async () => {
|
|
680
|
+
const promArray = [];
|
|
681
|
+
for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
|
|
682
|
+
promArray.push(stsWorker.Stop());
|
|
683
|
+
}
|
|
684
|
+
await Promise.all(promArray);
|
|
685
|
+
});
|
|
686
|
+
__privateSet(this, _app, app);
|
|
687
|
+
if (options) {
|
|
688
|
+
__privateSet(this, _options, options);
|
|
689
|
+
} else {
|
|
690
|
+
__privateSet(this, _options, {});
|
|
691
|
+
}
|
|
692
|
+
debug$2(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${CompareSTSInstrumentControllerPluginKeyWMEx()}]`);
|
|
693
|
+
debug$2(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(stspublisherserver.STSInstrumentControllerPluginKey)}]`);
|
|
694
|
+
__privateSet(this, _STSInstrumentController, stspublisherserver.GetSTSInstrumentController(app));
|
|
695
|
+
debug$2(__privateGet(this, _STSInstrumentController));
|
|
696
|
+
debug$2("keys within app.config.globalProperties.$sts");
|
|
697
|
+
for (const [key, value] of Object.entries(app.config.globalProperties.$sts)) {
|
|
698
|
+
debug$2(`${key}`);
|
|
699
|
+
}
|
|
700
|
+
if (!__privateGet(this, _STSInstrumentController)) {
|
|
701
|
+
debug$2(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(stspublisherserver.STSInstrumentControllerPluginKey)}]`);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
get WorkersEx() {
|
|
705
|
+
return __privateGet(this, _workersEx);
|
|
706
|
+
}
|
|
707
|
+
get Options() {
|
|
708
|
+
return __privateGet(this, _options);
|
|
709
|
+
}
|
|
710
|
+
set Options(options) {
|
|
711
|
+
__privateSet(this, _options, options);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
_workersEx = new WeakMap();
|
|
715
|
+
_runner = new WeakMap();
|
|
716
|
+
_workerId = new WeakMap();
|
|
717
|
+
_options = new WeakMap();
|
|
718
|
+
_STSInstrumentController = new WeakMap();
|
|
719
|
+
_app = new WeakMap();
|
|
720
|
+
_CreateRunnerCopy = new WeakSet();
|
|
721
|
+
CreateRunnerCopy_fn = function(runnerEx) {
|
|
722
|
+
return {
|
|
723
|
+
id: runnerEx.id,
|
|
724
|
+
asyncRunnerContext: { ...runnerEx.asyncRunnerContext },
|
|
725
|
+
options: { ...runnerEx.options },
|
|
726
|
+
state: runnerEx.state,
|
|
727
|
+
instrumentData: { ...runnerEx.instrumentData }
|
|
728
|
+
};
|
|
729
|
+
};
|
|
730
|
+
_SetRunnerIntoWorker = new WeakMap();
|
|
731
|
+
_ProcessTelemetry = new WeakMap();
|
|
732
|
+
_CreateAsyncRunner = new WeakMap();
|
|
733
|
+
_PostMessageToWorker = new WeakMap();
|
|
734
|
+
_TerminateWorker = new WeakMap();
|
|
735
|
+
_StopRunner = new WeakMap();
|
|
736
|
+
_StopWorker = new WeakMap();
|
|
737
|
+
const GetSTSInstrumentControllerPluginKeyWM = () => stspublisherserver.STSInstrumentControllerPluginKey;
|
|
738
|
+
const CompareSTSInstrumentControllerPluginKeyWM = (val) => val === stspublisherserver.STSInstrumentControllerPluginKey;
|
|
739
|
+
const CompareSTSInstrumentControllerPluginKeyWMEx = () => stspublisherserver.STSInstrumentControllerPluginKey === stspublisherserver.GetSTSInstrumentControllerPluginKey();
|
|
740
|
+
const useSTSWorkerManager = () => vue.inject(STSWorkerManagerPluginKey);
|
|
741
|
+
const STSWorkerManagerPlugin = {
|
|
742
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
743
|
+
install: (app, options) => {
|
|
744
|
+
const wm = new STSWorkerManager(app, options);
|
|
745
|
+
if (!app.config.globalProperties.$sts) {
|
|
746
|
+
app.config.globalProperties.$sts = {};
|
|
747
|
+
}
|
|
748
|
+
app.config.globalProperties.$sts[STSWorkerManagerPluginKey] = wm;
|
|
749
|
+
app.provide(STSWorkerManagerPluginKey, wm);
|
|
750
|
+
}
|
|
751
|
+
};
|
|
752
|
+
const debug$1 = debugModule(`proc:${process.pid}`);
|
|
753
|
+
class RequestResponseHelper {
|
|
754
|
+
constructor(port) {
|
|
755
|
+
__privateAdd(this, _requestResponseMessages, {});
|
|
756
|
+
__privateAdd(this, _requestResponseMessageTimeout, 1e4);
|
|
757
|
+
//@@ config
|
|
758
|
+
__privateAdd(this, _port, void 0);
|
|
759
|
+
__publicField(this, "PostMessage", (message) => {
|
|
760
|
+
return new Promise((resolve, reject) => {
|
|
761
|
+
const { messageId } = message.payload;
|
|
762
|
+
if (messageId) {
|
|
763
|
+
if (__privateGet(this, _requestResponseMessages)[messageId]) {
|
|
764
|
+
reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);
|
|
765
|
+
} else {
|
|
766
|
+
__privateGet(this, _requestResponseMessages)[messageId] = {
|
|
767
|
+
publishMessagePayload: { ...message },
|
|
768
|
+
cb: () => {
|
|
769
|
+
const detail = __privateGet(this, _requestResponseMessages)[messageId].publishMessagePayloadResponse;
|
|
770
|
+
clearTimeout(__privateGet(this, _requestResponseMessages)[messageId].timeout);
|
|
771
|
+
setTimeout(() => {
|
|
772
|
+
delete __privateGet(this, _requestResponseMessages)[messageId];
|
|
773
|
+
}, 0);
|
|
774
|
+
if (detail) {
|
|
775
|
+
debug$1(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);
|
|
776
|
+
resolve(detail);
|
|
777
|
+
} else {
|
|
778
|
+
const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;
|
|
779
|
+
debug$1(msg);
|
|
780
|
+
reject(msg);
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
timeout: setTimeout(() => {
|
|
784
|
+
setTimeout(() => {
|
|
785
|
+
delete __privateGet(this, _requestResponseMessages)[messageId];
|
|
786
|
+
}, 0);
|
|
787
|
+
debug$1(`RequestResponseHelper: Timeout has occurred after: [${__privateGet(this, _requestResponseMessageTimeout)}]ms with message id: [${messageId}]. Details: [${JSON.stringify(__privateGet(this, _requestResponseMessages)[messageId].publishMessagePayload)}]`);
|
|
788
|
+
reject("RequestResponseHelper: Did not receive response form parent process.");
|
|
789
|
+
}, __privateGet(this, _requestResponseMessageTimeout))
|
|
790
|
+
// max message timeout allowed
|
|
791
|
+
};
|
|
792
|
+
debug$1(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(__privateGet(this, _requestResponseMessages)[messageId].publishMessagePayload)}]`);
|
|
793
|
+
__privateGet(this, _port).postMessage(message);
|
|
794
|
+
}
|
|
795
|
+
} else {
|
|
796
|
+
const msg = `RequestResponseHelper: Response did not include a message id`;
|
|
797
|
+
debug$1(msg);
|
|
798
|
+
reject(msg);
|
|
799
|
+
}
|
|
800
|
+
});
|
|
801
|
+
});
|
|
802
|
+
__privateAdd(this, _SetupListener, () => {
|
|
803
|
+
__privateGet(this, _port).onmessage = async (msg) => {
|
|
804
|
+
const publishMessagePayload = msg.data;
|
|
805
|
+
if (publishMessagePayload.payload.messageId) {
|
|
806
|
+
const messageId = publishMessagePayload.payload.messageId;
|
|
807
|
+
if (messageId && messageId !== "") {
|
|
808
|
+
if (__privateGet(this, _requestResponseMessages)[messageId]) {
|
|
809
|
+
const requestResponseMessage = __privateGet(this, _requestResponseMessages)[messageId];
|
|
810
|
+
requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };
|
|
811
|
+
requestResponseMessage.cb();
|
|
812
|
+
} else {
|
|
813
|
+
throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
};
|
|
818
|
+
});
|
|
819
|
+
__privateSet(this, _port, port);
|
|
820
|
+
__privateGet(this, _SetupListener).call(this);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
_requestResponseMessages = new WeakMap();
|
|
824
|
+
_requestResponseMessageTimeout = new WeakMap();
|
|
825
|
+
_port = new WeakMap();
|
|
826
|
+
_SetupListener = new WeakMap();
|
|
827
|
+
const debug = debugModule(`proc:${process.pid}:workerInstance`);
|
|
828
|
+
class WorkerInstance {
|
|
829
|
+
constructor() {
|
|
830
|
+
__privateAdd(this, _collectorCollectorPort, null);
|
|
831
|
+
__privateAdd(this, _requestResponseHelper, null);
|
|
832
|
+
__privateAdd(this, _runners, {});
|
|
833
|
+
__privateAdd(this, _options2, null);
|
|
834
|
+
__publicField(this, "GetRandomInt", (max) => {
|
|
835
|
+
debug(`WorkerInstance::GetRandomInt`);
|
|
836
|
+
return Math.floor(Math.random() * Math.floor(max));
|
|
837
|
+
});
|
|
838
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
839
|
+
__publicField(this, "StartWork", async (runner) => {
|
|
840
|
+
debug(`WorkerInstance::StartWork`);
|
|
841
|
+
return;
|
|
842
|
+
});
|
|
843
|
+
__publicField(this, "PostTelemetry", (runner) => {
|
|
844
|
+
if (__privateGet(this, _collectorCollectorPort)) {
|
|
845
|
+
const message = {
|
|
846
|
+
command: stspublisherserver.PublishMessageCommands.InstrumentTelemetry,
|
|
847
|
+
payload: {
|
|
848
|
+
runner
|
|
849
|
+
}
|
|
850
|
+
};
|
|
851
|
+
__privateGet(this, _collectorCollectorPort).postMessage(message);
|
|
852
|
+
}
|
|
853
|
+
});
|
|
854
|
+
__privateAdd(this, _SetMessagePort, (workerMessagePort) => {
|
|
855
|
+
debug(`WorkerInstance::SetMessagePort`);
|
|
856
|
+
__privateSet(this, _collectorCollectorPort, workerMessagePort.port);
|
|
857
|
+
__privateGet(this, _collectorCollectorPort).onmessage = function(data) {
|
|
858
|
+
console.log(`collectorCollectorPort onmessage: ${data.data}`);
|
|
859
|
+
};
|
|
860
|
+
__privateSet(this, _requestResponseHelper, new RequestResponseHelper(__privateGet(this, _collectorCollectorPort)));
|
|
861
|
+
const response = {
|
|
862
|
+
command: stspublisherserver.PublishMessageCommands.MessagePortResponse,
|
|
863
|
+
payload: {}
|
|
864
|
+
};
|
|
865
|
+
__privateGet(this, _collectorCollectorPort).postMessage(response);
|
|
866
|
+
});
|
|
867
|
+
__publicField(this, "StartRunner", async (runner) => {
|
|
868
|
+
debug(`WorkerInstance::StartRunner`);
|
|
869
|
+
console.log(`StartTests: [${JSON.stringify(runner)}]`);
|
|
870
|
+
runner.state = IRunnerState.running;
|
|
871
|
+
this.StartWork(runner);
|
|
872
|
+
});
|
|
873
|
+
__privateAdd(this, _AddAsyncRunner, (testRunnerTelemetryPayload) => {
|
|
874
|
+
debug(`WorkerInstance::AddAsyncRunner`);
|
|
875
|
+
const { runner } = testRunnerTelemetryPayload;
|
|
876
|
+
__privateGet(this, _runners)[runner.id] = runner;
|
|
877
|
+
this.StartRunner(runner);
|
|
878
|
+
});
|
|
879
|
+
__privateAdd(this, _StopRunners, (testRunnerTelemetryPayload) => {
|
|
880
|
+
debug(`WorkerInstance::StopRunners`);
|
|
881
|
+
if (testRunnerTelemetryPayload === null) {
|
|
882
|
+
for (const [, testRunner] of Object.entries(__privateGet(this, _runners))) {
|
|
883
|
+
testRunner.state = IRunnerState.stopped;
|
|
884
|
+
}
|
|
885
|
+
} else {
|
|
886
|
+
const runner = __privateGet(this, _runners)[testRunnerTelemetryPayload.runner.id];
|
|
887
|
+
if (runner) {
|
|
888
|
+
runner.state = IRunnerState.stopped;
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
});
|
|
892
|
+
__publicField(this, "ProcessMessage", async (data) => {
|
|
893
|
+
debug(`WorkerInstance::ProcessMessage`);
|
|
894
|
+
try {
|
|
895
|
+
const payloadMessage = data.data;
|
|
896
|
+
switch (payloadMessage.command) {
|
|
897
|
+
case stspublisherserver.PublishMessageCommands.MessagePort:
|
|
898
|
+
__privateGet(this, _SetMessagePort).call(this, payloadMessage.payload);
|
|
899
|
+
__privateSet(this, _options2, payloadMessage.payload.options);
|
|
900
|
+
debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(__privateGet(this, _options2))}]`);
|
|
901
|
+
break;
|
|
902
|
+
case stspublisherserver.PublishMessageCommands.Add:
|
|
903
|
+
__privateGet(this, _AddAsyncRunner).call(this, payloadMessage.payload);
|
|
904
|
+
break;
|
|
905
|
+
case stspublisherserver.PublishMessageCommands.Stop:
|
|
906
|
+
__privateGet(this, _StopRunners).call(this, payloadMessage.payload);
|
|
907
|
+
break;
|
|
908
|
+
default:
|
|
909
|
+
debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
|
|
910
|
+
}
|
|
911
|
+
} catch (error) {
|
|
912
|
+
console.log(error);
|
|
913
|
+
}
|
|
914
|
+
});
|
|
915
|
+
debug(`WorkerInstance::constructor`);
|
|
916
|
+
}
|
|
917
|
+
get RequestResponseHelper() {
|
|
918
|
+
return __privateGet(this, _requestResponseHelper);
|
|
919
|
+
}
|
|
920
|
+
get CollectorCollectorPort() {
|
|
921
|
+
return __privateGet(this, _collectorCollectorPort);
|
|
922
|
+
}
|
|
923
|
+
get Options() {
|
|
924
|
+
return __privateGet(this, _options2);
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
_collectorCollectorPort = new WeakMap();
|
|
928
|
+
_requestResponseHelper = new WeakMap();
|
|
929
|
+
_runners = new WeakMap();
|
|
930
|
+
_options2 = new WeakMap();
|
|
931
|
+
_SetMessagePort = new WeakMap();
|
|
932
|
+
_AddAsyncRunner = new WeakMap();
|
|
933
|
+
_StopRunners = new WeakMap();
|
|
934
|
+
exports2.ClientStorageFactory = ClientStorageFactory;
|
|
935
|
+
exports2.ClientStorageType = ClientStorageType;
|
|
936
|
+
exports2.CompareSTSInstrumentControllerPluginKeyWM = CompareSTSInstrumentControllerPluginKeyWM;
|
|
937
|
+
exports2.CompareSTSInstrumentControllerPluginKeyWMEx = CompareSTSInstrumentControllerPluginKeyWMEx;
|
|
938
|
+
exports2.GetSTSInstrumentControllerPluginKeyWM = GetSTSInstrumentControllerPluginKeyWM;
|
|
939
|
+
exports2.IRunnerState = IRunnerState;
|
|
940
|
+
exports2.IWorkerState = IWorkerState;
|
|
941
|
+
exports2.RequestResponseHelper = RequestResponseHelper;
|
|
942
|
+
exports2.STSEmitterPlugin = STSEmitterPlugin;
|
|
943
|
+
exports2.STSEmitterPluginKey = STSEmitterPluginKey;
|
|
944
|
+
exports2.STSStoragePlugin = STSStoragePlugin;
|
|
945
|
+
exports2.STSStoragePluginKey = STSStoragePluginKey;
|
|
946
|
+
exports2.STSWorkerManager = STSWorkerManager;
|
|
947
|
+
exports2.STSWorkerManagerPlugin = STSWorkerManagerPlugin;
|
|
948
|
+
exports2.STSWorkerManagerPluginKey = STSWorkerManagerPluginKey;
|
|
949
|
+
exports2.TelemetryStore = TelemetryStore;
|
|
950
|
+
exports2.WorkerInstance = WorkerInstance;
|
|
951
|
+
exports2.useSTSEmitterPlugin = useSTSEmitterPlugin;
|
|
952
|
+
exports2.useSTSStoragePlugin = useSTSStoragePlugin;
|
|
953
|
+
exports2.useSTSWorkerManager = useSTSWorkerManager;
|
|
954
|
+
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
|
955
|
+
});
|
|
2
956
|
//# sourceMappingURL=stsvueutils.umd.js.map
|