@nsshunt/stsvueutils 2.0.43 → 2.0.45

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.
@@ -1 +1 @@
1
- {"version":3,"file":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/emitter.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/storage.ts","../src/commonTypes.ts","../src/stores/TelemetryStore.ts","../src/plugins/stsTestWorkerDefinitions.ts","../node_modules/color-name/index.js","../node_modules/color-convert/conversions.js","../node_modules/color-convert/route.js","../node_modules/color-convert/index.js","../node_modules/ansi-styles/index.js","../node_modules/supports-color/browser.js","../node_modules/chalk/source/util.js","../node_modules/chalk/source/templates.js","../node_modules/chalk/source/index.js","../src/plugins/workerManager.ts","../src/plugins/requestResponseHelper.ts","../src/plugins/workerInstance.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\nexport const STSWorkerManagerPluginKey = Symbol('workerManager')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n","import { IContextBase } from '@nsshunt/stsobservability'\n\nexport const URI_BASE_VUEUTILS: string = '/';\n\nexport interface IAsyncRunnerContext extends IContextBase {\n\tid: string\n\thostName: string\n\tagentName: string\n\tthreadId: string\n\tasyncRunnerId: number\n}\n\n/**\n * Inter-Worker (IW) Payload context base.\n */\nexport interface IIWMessagePayloadContentBase {\n messageId?: string\n}\n\n/**\n * Inter-Worker (IW) message commands.\n */\nexport enum eIWMessageCommands {\n\tInstrumentTelemetry ='__STS__InstrumentTelemetry', // Used to send instrument telemetry\n\tMessagePort = '__STS__MessagePort',\n\tMessagePortResponse = '__STS__MessagePortResponse',\n\tAddAsyncRunner = '__STS__AddAsyncRunner',\n\tStopAllAsyncRunners = '__STS__StopAllAsyncRunners',\n}\n\n/**\n * Inter-Worker (IW) message command.\n */\nexport type IIWMessageCommand = eIWMessageCommands\n\n/**\n * Inter-Worker (IW) message payload.\n */\nexport interface IIWMessagePayload {\n command: IIWMessageCommand\n payload: IIWMessagePayloadContentBase\n}\n\nexport interface IObservabilitySubscriberManagerOptions {\n modelId: string\n consumeInstrumentationMode: string\n instrumentManagerEndpoint: string\n instrumentManagerPort: string\n instrumentManagerAPIRoot: string\n}\n","import { defineStore } from 'pinia'\n\nimport type { IWorker, IWorkerEx, IRunnerEx, IRunner, ITelemetryStore } from './../plugins/stsTestWorkerDefinitions'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TelemetryStore = defineStore('__sts__TelemetryStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): ITelemetryStore => {\n return {\n workers: { }\n }\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n RemoveWorker(workerEx: IWorkerEx) {\n delete this.workers[workerEx.id];\n },\n\n RemoveRunner(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n const worker: IWorker = this.workers[workerEx.id];\n if (worker && worker.runners) {\n delete worker.runners[runnerEx.id];\n }\n },\n\n Update(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n if (!this.workers[workerEx.id]) {\n // Create a new telemetry record\n this.workers[workerEx.id] = {\n id: workerEx.id,\n state: workerEx.state,\n primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },\n workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },\n runners: { }\n } as IWorker\n }\n const worker: IWorker = this.workers[workerEx.id];\n // Now check for the async runner\n if (worker.runners) {\n if (!worker.runners[runnerEx.id]) {\n // Create a new asyncRunnerInstance telemetry record\n const runner: IRunner = {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData },\n }\n worker.runners[runner.id] = runner;\n } else {\n const runner: IRunner = worker.runners[runnerEx.id];\n runner.instrumentData = { ...runnerEx.instrumentData }\n }\n }\n }\n }\n});\n","import type { PublishInstrumentController } from '@nsshunt/stsobservability'\n\nimport type { IIWMessagePayloadContentBase, \n IIWMessagePayload, IAsyncRunnerContext } from './../commonTypes'\n\t\nexport interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {\n port: MessagePort\n options: IWorkerOptions\n}\n\nexport enum IRunnerState {\n\tcreated = 'created',\n\trunning = 'running',\n\tstopped = 'stopped',\n\tpaused = 'paused',\n\terror = 'error',\n}\n\nexport interface IRunnerTelemetry {\n\trequestCount: number // requestCount\n\terrorCount: number\n\tretryCount: number\n\tauthenticationCount: number\n\tauthenticationErrorCount: number\n\tauthenticationRetryCount: number\n\tvelocity: number\n\tcoreCount: number\n\ttimer: number\n\tduration: number\n\tlatency: number\n\tactiveRequestCount: number\n\tmessage: string[]\n\tchildCount: number\n\trx: number\n\ttx: number\n}\n\nexport interface IRunner {\n\tid: number\n\tasyncRunnerContext: IAsyncRunnerContext\n\toptions: IRunnerOptions\n\tstate: IRunnerState\n\tinstrumentData: IRunnerTelemetry\n}\n\nexport interface IRunnerEx extends IRunner {\n publishInstrumentController: PublishInstrumentController\n Stop: () => Promise<boolean>\n}\n\nexport enum IWorkerState {\n\tstarting = 'starting',\n\tstarted = 'started',\n\tstopped = 'stopped'\n}\n\n \nexport interface IWorkerOptions {\n hostName: string\n agentId: string\n userAgent: string\n}\n\nexport type Runners = Record<string, IRunner>\n\nexport interface IWorker {\n\tid: number\n\tstate: IWorkerState\n primaryThreadWorkerOptions: IWorkerOptions\n\tworkerThreadWorkerOptions: IWorkerOptions\n\trunners?: Runners // Will be created by utility helper\n}\n\nexport type Workers = Record<string, IWorker>\n\nexport interface IPrimaryWorker {\n ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface IRunnerOptions {\n\n}\n\nexport interface IWorkerEx extends IWorker {\n\tworker: Worker\n primaryWorker: IPrimaryWorker\n\trunnersEx: Record<string, IRunnerEx>\n\tAddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx\n\tStopRunner: (runner: IRunnerEx) => Promise<boolean>\n\tStop: () => Promise<boolean>\n}\n\nexport interface ISTSTestWorkerOptions {\n messageMod: number\n iterations: number\n}\n\nexport interface ITelemetryStore {\n\tworkers: Workers\n}\n\nexport interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {\n\trunner: IRunner\n}\n\nexport interface IWorkerFactory {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker\n\tcreateWorkerThreadWorker: () => Worker // | wt.Worker\n get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n}\n\nexport interface IWorkerManagerOptions {\n workerFactory: IWorkerFactory\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","//import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers\nimport { type IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase, \n type IIWMessageCommand, eIWMessageCommands } from './../commonTypes'\n \nimport { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsobservability'\n\nimport { ModelDelimeter } from '@nsshunt/stsutils'\n\nimport { TelemetryStore } from './../stores/TelemetryStore'\n//import { ApplicationStore } from './../stores/applicationStore'\n\nimport type { ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,\n ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,\n IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions'\n\nimport { IWorkerState, IRunnerState } from './stsTestWorkerDefinitions'\nimport { Sleep } from '@nsshunt/stsutils';\nimport { inject } from 'vue';\n\n \nimport { STSInstrumentControllerPluginKey, GetSTSInstrumentControllerPluginKey, GetSTSInstrumentController, \n PublishInstrumentController } from '@nsshunt/stsobservability'\nimport { STSWorkerManagerPluginKey } from './stsPluginKeys';\n\nimport chalk from 'chalk';\nchalk.level = 3;\n\nexport class STSWorkerManager {\n //#agentSession: string = null;\n #workersEx: Record<string, IWorkerEx> = { };\n #runner = 0;\n #workerId = 0;\n #options: IWorkerManagerOptions;\n #STSInstrumentController?: PublishInstrumentController\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #app: any\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(app: any, options?: IWorkerManagerOptions) {\n this.#app = app;\n if (options) {\n this.#options = options;\n } else {\n this.#options = { } as IWorkerManagerOptions;\n }\n\n // Note: ** Important **\n // The module stsobservability must me made external in the vite config otherwise when the module\n // is inlcuded directly within this module, the imported symbol will be a new object. By making the module\n // external and only included in the final vue applicatrion, the symbol will be globally unique. This is\n // only an issue becuase this module uses the STSInstrumentController plugin from stsobservability.\n console.log(chalk.yellow(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${CompareSTSInstrumentControllerPluginKeyWMEx()}]`));\n\n console.log(chalk.yellow(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`));\n //this.#STSInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]\n //this.#STSInstrumentController = app.config.globalProperties.$sts[GetSTSInstrumentControllerPluginKey()]\n\n this.#STSInstrumentController = GetSTSInstrumentController(app);\n //this.#STSInstrumentController = app.config.globalProperties.$sts.aic;\n\n console.log(chalk.yellow('keys within app.config.globalProperties.$sts'));\n for (const [key, ] of Object.entries(app.config.globalProperties.$sts)) {\n console.log(chalk.yellow(`${key}`));\n }\n\n if (!this.#STSInstrumentController) {\n console.log(chalk.yellow(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`));\n }\n }\n \n get WorkersEx(): Record<string, IWorkerEx>\n {\n return this.#workersEx;\n }\n\n AddWorker = async (useWorkerFactory?: IWorkerFactory): Promise<IWorkerEx> => {\n let workerFactory: IWorkerFactory;\n if (useWorkerFactory) {\n // Use the supplied workFactory\n workerFactory = useWorkerFactory;\n } else {\n // Use the default workFactory\n workerFactory = this.#options.workerFactory\n }\n const stsWorkerEx: IWorkerEx = {\n id: this.#workerId++, // uuidv4()\n worker: workerFactory.createWorkerThreadWorker(),\n primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),\n state: IWorkerState.starting,\n workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,\n primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,\n runnersEx: { } as Record<string, IRunnerEx>,\n AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),\n StopRunner: (runner: IRunnerEx): Promise<boolean> => this.#StopRunner(stsWorkerEx, runner),\n Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx)\n }\n this.#STSInstrumentController?.LogEx(chalk.yellow(`Creating new worker: [${stsWorkerEx.id}]`));\n console.log(`Adding worker: [${stsWorkerEx.id}]`);\n\n stsWorkerEx.worker.onmessage = function(data: MessageEvent) {\n console.log(data.data);\n }\n\n stsWorkerEx.worker.onerror = function(error) {\n console.log(error);\n };\n\n const { \n port1, // process message port\n port2 // collector message port\n } = new MessageChannel();\n\n const workerPort = port1;\n \n console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);\n\n this.#PostMessageToWorker(stsWorkerEx, eIWMessageCommands.MessagePort, {\n port: port2,\n //applicationStoreState: stateCopy,\n options: { ...stsWorkerEx.workerThreadWorkerOptions }\n } as ISTSAgentWorkerMessagePort, port2);\n \n // Process messages received back from the worker\n workerPort.onmessage = async (data: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (publishMessagePayload.command) {\n case eIWMessageCommands.MessagePortResponse : \n stsWorkerEx.state = IWorkerState.started;\n break;\n case eIWMessageCommands.InstrumentTelemetry :\n this.#ProcessTelemetry(stsWorkerEx, publishMessagePayload.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);\n }\n }\n\n this.#workersEx[stsWorkerEx.id] = stsWorkerEx;\n\n console.log(`Added worker: [${stsWorkerEx.id}]`);\n\n return stsWorkerEx;\n }\n\n AddRunnerToWorker = (stsWorkerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n const runnerEx: IRunnerEx = this.#CreateAsyncRunner(stsWorkerEx, runnerOptions);\n stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;\n this.#SetRunnerIntoWorker(stsWorkerEx, runnerEx);\n runnerEx.publishInstrumentController.LogEx(chalk.green(`Added runner: [${runnerEx.id}] into worker: [${stsWorkerEx.id}]`));\n return runnerEx;\n }\n\n #CreateRunnerCopy(runnerEx: IRunnerEx): IRunner {\n return {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData }\n } as IRunner\n }\n\n #SetRunnerIntoWorker = (workerEx: IWorkerEx, runnerEx: IRunnerEx): void => {\n // Now that the worker is setup, send the options\n //@@ wait until worker in running state\n const payload: ITestRunnerTelemetryPayload = {\n runner: this.#CreateRunnerCopy(runnerEx)\n }\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.AddAsyncRunner, payload);\n }\n\n #ProcessTelemetry = (workerEx: IWorkerEx, payloadContents: ITestRunnerTelemetryPayload): void => {\n const store = TelemetryStore();\n\n const { runner } = payloadContents;\n\n if (workerEx.runnersEx[runner.id]) {\n const runnerEx: IRunnerEx = workerEx.runnersEx[runner.id];\n let update = false;\n\n // Copy telemetry\n runnerEx.instrumentData = { ...runner.instrumentData };\n\n if (runner.instrumentData.message) {\n runnerEx.instrumentData.message = [...runner.instrumentData.message];\n } else {\n runnerEx.instrumentData.message = [ ];\n }\n\n if (runner.instrumentData.message) {\n runner.instrumentData.message.forEach((message) => {\n runnerEx.publishInstrumentController.LogEx(message);\n });\n update = true;\n }\n\n if (runner.instrumentData.requestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {\n val: runnerEx.instrumentData.requestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.errorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.errorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.retryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.retryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationErrorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationErrorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationRetryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationRetryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.coreCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {\n val: runnerEx.instrumentData.coreCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.timer) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {\n val: runnerEx.instrumentData.timer\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.activeRequestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {\n val: runnerEx.instrumentData.activeRequestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.velocity) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {\n Inc: runnerEx.instrumentData.velocity\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.duration) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.latency) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.childCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {\n val: runnerEx.instrumentData.childCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.rx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {\n Inc: runnerEx.instrumentData.rx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.tx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {\n Inc: runnerEx.instrumentData.tx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (update) {\n store.Update(workerEx, runnerEx);\n }\n }\n }\n\n #CreateAsyncRunner = (workerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n //const applicationStore = ApplicationStore();\n this.#runner++; // The runner number always increases\n this.#STSInstrumentController?.LogEx(chalk.yellow(`Creating new async runner: [${this.#runner}]`));\n const asyncRunnerContext: IAsyncRunnerContext = {\n nid: `\\\n${workerEx.workerThreadWorkerOptions.hostName}${ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}\\\n${ModelDelimeter.NID_SEPERATOR}\\\nworker${workerEx.id}\\\n${ModelDelimeter.SEPERATOR}\\\n${this.#runner}`,\n id: this.#runner.toString(),\n hostName: (workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : 'host'),\n agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,\n threadId: `worker${workerEx.id}`,\n asyncRunnerId: this.#runner\n }\n const runnerEx: IRunnerEx = {\n id: this.#runner,\n publishInstrumentController: (this.#STSInstrumentController as PublishInstrumentController).AddPublishInstrumentController(asyncRunnerContext),\n asyncRunnerContext: asyncRunnerContext,\n state: IRunnerState.created,\n options: runnerOptions,\n instrumentData: {\n requestCount: 0,\n errorCount: 0,\n retryCount: 0,\n authenticationCount: 0,\n authenticationErrorCount: 0,\n authenticationRetryCount: 0,\n velocity: 0,\n coreCount: 0,\n timer: 0,\n duration: 0,\n latency: 0,\n activeRequestCount: 0,\n message: [ ],\n childCount: 0,\n rx: 0,\n tx: 0\n } as IRunnerTelemetry,\n Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx)\n }\n return runnerEx;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #PostMessageToWorker = (workerEx: IWorkerEx, command: IIWMessageCommand, payload: IIWMessagePayloadContentBase | null, transferObject?: any) => {\n if (transferObject) {\n console.log(`#PostMessageToWorker with transfer object`);\n workerEx.worker.postMessage({ command, payload }, [transferObject]);\n console.log(`#PostMessageToWorker with transfer object - done...`);\n } else {\n console.log(`#PostMessageToWorker`);\n workerEx.worker.postMessage({ command, payload });\n }\n }\n\n #TerminateWorker = (workerEx: IWorkerEx) => {\n if (workerEx.worker) {\n const store = TelemetryStore();\n workerEx.worker.terminate();\n console.log(`Terminated worker: [${workerEx.id}]`);\n store.RemoveWorker(workerEx);\n delete this.#workersEx[workerEx.id];\n } else {\n // Some other runner has already removed the parent worker, do nothing\n // console.log(`WORKER ALREADY NULL`);\n }\n }\n\n #StopRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {\n // If runnerEx not provided, Remove the first runner in the collection\n if (runnerEx === null) {\n const ids: string[] = Object.keys(workerEx.runnersEx);\n if (ids.length > 0) {\n const id = ids[0];\n runnerEx = workerEx.runnersEx[id];\n }\n }\n if (runnerEx !== null) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, {\n runner: this.#CreateRunnerCopy(runnerEx)\n } as ITestRunnerTelemetryPayload);\n\n runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);\n \n const promArray: Promise<boolean>[] = [ ];\n\n promArray.push((async (): Promise<boolean> => {\n await Sleep(100);\n return runnerEx.publishInstrumentController.EndPublish() as Promise<boolean>\n })());\n\n const store = TelemetryStore();\n store.RemoveRunner(workerEx, runnerEx);\n\n delete workerEx.runnersEx[runnerEx.id];\n\n const retVal = await Promise.all(promArray);\n console.log(`Removed instrument workers: [${retVal}]`);\n }\n return true;\n }\n\n #StopWorker = async (workerEx: IWorkerEx): Promise<boolean> => {\n try {\n if (workerEx.state !== IWorkerState.stopped) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, null);\n \n //@@ Now wait until we get an ack back from the worker\n // This is because we may be trying to stop BEFORE the worker has had a chance to startup ...\n \n console.log(`Terminating worker: [${workerEx.id}]`);\n const promArray: Promise<boolean>[] = [ ];\n \n // Terminate only those that are currently running...\n const ids: string[] = Object.keys(workerEx.runnersEx);\n\n ids.forEach((id) => {\n const runnerEx: IRunnerEx = workerEx.runnersEx[id];\n promArray.push(this.#StopRunner(workerEx, runnerEx));\n });\n await Promise.all(promArray);\n\n this.#TerminateWorker(workerEx);\n }\n return true;\n } catch (error) {\n console.log(`Error in STSTestWorker:StopWorker: [${error}]`);\n return false;\n }\n }\n\n GetNextAvailableWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let leastRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (leastRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {\n leastRunnerWorker = stsWorker;\n }\n } else {\n leastRunnerWorker = stsWorker;\n }\n }\n return leastRunnerWorker;\n }\n\n GetBusyWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let busyWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (busyWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {\n busyWorker = stsWorker;\n }\n } else {\n busyWorker = stsWorker;\n }\n }\n return busyWorker;\n }\n\n get Options(): IWorkerManagerOptions {\n return this.#options;\n }\n\n set Options(options: IWorkerManagerOptions) {\n this.#options = options;\n }\n\n StopAllWorkers = async () => {\n const promArray = [ ];\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n promArray.push(stsWorker.Stop());\n }\n await Promise.all(promArray);\n }\n}\n\nexport const GetSTSInstrumentControllerPluginKeyWM = (): symbol => STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWM = (val: symbol): boolean => val === STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWMEx = (): boolean => STSInstrumentControllerPluginKey === GetSTSInstrumentControllerPluginKey()\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSWorkerManager = (): STSWorkerManager => inject(STSWorkerManagerPluginKey) as STSWorkerManager\n\nexport const STSWorkerManagerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any, options?: IWorkerManagerOptions) => {\n const wm = new STSWorkerManager(app, options);\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSWorkerManagerPluginKey] = wm;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSWorkerManagerPluginKey, wm);\n }\n}\n","import type { IIWMessagePayload } from './../commonTypes'\n\nimport { defaultLogger } from '@nsshunt/stsutils'\n\ndeclare interface RequestResponseMessage {\n\tpublishMessagePayload: IIWMessagePayload\n\tpublishMessagePayloadResponse?: IIWMessagePayload\n\tcb: () => void,\n\ttimeout: NodeJS.Timeout\n}\n\ndeclare type RequestResponseMessages = Record<string, RequestResponseMessage>;\n\n//@@ this should become a low level stsutils type helper\nexport class RequestResponseHelper\n{\n #requestResponseMessages: RequestResponseMessages = { }\n #requestResponseMessageTimeout = 10000; //@@ config\n #port: MessagePort\n\n constructor(port: MessagePort) {\n this.#port = port\n this.#SetupListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n PostMessage = (message: IIWMessagePayload): Promise<IIWMessagePayload> => {\n return new Promise((resolve, reject) => {\n const { messageId } = message.payload;\n if (messageId) {\n if (this.#requestResponseMessages[messageId]) {\n reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);\n } else {\n this.#requestResponseMessages[messageId] = {\n publishMessagePayload: { ...message },\n cb: () => {\n const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;\n clearTimeout(this.#requestResponseMessages[messageId].timeout);\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n if (detail) {\n this.#debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);\n resolve(detail);\n } else {\n const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;\n this.#debug(msg);\n reject(msg);\n }\n },\n timeout: setTimeout(() => {\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n this.#debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n reject('RequestResponseHelper: Did not receive response form parent process.');\n }, this.#requestResponseMessageTimeout) // max message timeout allowed\n };\n //debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n this.#port.postMessage(message);\n }\n } else {\n const msg = `RequestResponseHelper: Response did not include a message id`;\n this.#debug(msg);\n reject(msg);\n }\n });\n }\n\n #SetupListener = () => {\n this.#port.onmessage = async (msg: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = msg.data as IIWMessagePayload;\n if (publishMessagePayload.payload.messageId) {\n const messageId = publishMessagePayload.payload.messageId;\n if (messageId && messageId !== '') {\n if (this.#requestResponseMessages[messageId]) {\n const requestResponseMessage: RequestResponseMessage = this.#requestResponseMessages[messageId];\n requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };\n requestResponseMessage.cb();\n } else {\n throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);\n }\n }\n }\n }\n }\n}\n","import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase } from './../commonTypes'\n\nimport type { ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload } from './stsTestWorkerDefinitions'\nimport { IRunnerState } from './stsTestWorkerDefinitions'\n\nimport { RequestResponseHelper } from './requestResponseHelper'\nimport { defaultLogger } from '@nsshunt/stsutils';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface IWorkerInstanceOptions {\n\n}\n\nexport abstract class WorkerInstance {\n #collectorCollectorPort: MessagePort | null = null;\n #requestResponseHelper: RequestResponseHelper | null = null;\n #runners: Record<string, IRunner> = { };\n #options: IWorkerInstanceOptions | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n constructor() {\n this.#debug(`WorkerInstance::constructor`)\n }\n\n GetRandomInt = (max: number) => {\n this.#debug(`WorkerInstance::GetRandomInt`)\n return Math.floor(Math.random() * Math.floor(max));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StartWork = async (runner: IRunner): Promise<void> => {\n this.#debug(`WorkerInstance::StartWork`)\n return;\n }\n\n PostTelemetry = (runner: IRunner) => {\n //debug(`WorkerInstance::PostTelemetry`)\n if (this.#collectorCollectorPort) {\n const message: IIWMessagePayload = {\n command: eIWMessageCommands.InstrumentTelemetry,\n payload: {\n runner\n } as ITestRunnerTelemetryPayload\n }\n this.#collectorCollectorPort.postMessage(message);\n }\n }\n\n get RequestResponseHelper(): RequestResponseHelper | null {\n return this.#requestResponseHelper;\n }\n\n get CollectorCollectorPort(): MessagePort | null {\n return this.#collectorCollectorPort;\n }\n\n get Options(): IWorkerInstanceOptions | null {\n return this.#options;\n }\n\n #SetMessagePort = (workerMessagePort: ISTSAgentWorkerMessagePort) => {\n this.#debug(`WorkerInstance::SetMessagePort`)\n this.#collectorCollectorPort = workerMessagePort.port as MessagePort;\n this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {\n console.log(`collectorCollectorPort onmessage: ${data.data}`);\n }\n\n this.#requestResponseHelper = new RequestResponseHelper(this.#collectorCollectorPort);\n\n const response: IIWMessagePayload = {\n command: eIWMessageCommands.MessagePortResponse,\n payload: { } as IIWMessagePayloadContentBase\n }\n\n this.#collectorCollectorPort.postMessage(response);\n }\n\n StartRunner = async (runner: IRunner) => {\n this.#debug(`WorkerInstance::StartRunner`)\n console.log(`StartTests: [${JSON.stringify(runner)}]`);\n runner.state = IRunnerState.running;\n this.StartWork(runner);\n }\n\n #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n this.#debug(`WorkerInstance::AddAsyncRunner`)\n const { runner } = testRunnerTelemetryPayload;\n this.#runners[runner.id] = runner;\n this.StartRunner(runner);\n }\n\n #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n this.#debug(`WorkerInstance::StopRunners`)\n if (testRunnerTelemetryPayload === null) {\n for (const [, testRunner] of Object.entries(this.#runners)) {\n testRunner.state = IRunnerState.stopped;\n }\n } else {\n const runner: IRunner = this.#runners[testRunnerTelemetryPayload.runner.id];\n if (runner) {\n runner.state = IRunnerState.stopped;\n }\n }\n }\n\n ProcessMessage = async(data: MessageEvent) => {\n this.#debug(`WorkerInstance::ProcessMessage`)\n try {\n const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (payloadMessage.command) {\n case eIWMessageCommands.MessagePort :\n this.#SetMessagePort(payloadMessage.payload as ISTSAgentWorkerMessagePort);\n this.#options = (payloadMessage.payload as ISTSAgentWorkerMessagePort).options;\n this.#debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(this.#options)}]`)\n break;\n case eIWMessageCommands.AddAsyncRunner :\n this.#AddAsyncRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n case eIWMessageCommands.StopAllAsyncRunners :\n this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);\n }\n } catch (error) {\n console.log(error);\n }\n }\n}"],"names":["tinyEmitterModule","tinyEmitter","te.TinyEmitter","source","converter","ClientStorageType","Cookies","_debug","eIWMessageCommands","IRunnerState","IWorkerState","require$$0","conversions","route","require$$1","colorConvert","escape","chalk","styles","ansiStyles","require$$2","require$$3","_options"],"mappings":"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","x_google_ignoreList":[1,3,9,10,11,12,13,14,15,16,17]}
1
+ {"version":3,"file":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/emitter.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/storage.ts","../src/commonTypes.ts","../src/stores/TelemetryStore.ts","../src/plugins/stsTestWorkerDefinitions.ts","../node_modules/color-name/index.js","../node_modules/color-convert/conversions.js","../node_modules/color-convert/route.js","../node_modules/color-convert/index.js","../node_modules/ansi-styles/index.js","../node_modules/supports-color/browser.js","../node_modules/chalk/source/util.js","../node_modules/chalk/source/templates.js","../node_modules/chalk/source/index.js","../src/plugins/workerManager.ts","../src/plugins/requestResponseHelper.ts","../src/plugins/workerInstance.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\nexport const STSWorkerManagerPluginKey = Symbol('workerManager')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n","import { IContextBase } from '@nsshunt/stsobservability'\n\nexport const URI_BASE_VUEUTILS: string = '/';\n\nexport interface IAsyncRunnerContext extends IContextBase {\n\tid: string\n\thostName: string\n\tagentName: string\n\tthreadId: string\n\tasyncRunnerId: number\n}\n\n/**\n * Inter-Worker (IW) Payload context base.\n */\nexport interface IIWMessagePayloadContentBase {\n messageId?: string\n}\n\n/**\n * Inter-Worker (IW) message commands.\n */\nexport enum eIWMessageCommands {\n\tInstrumentTelemetry ='__STS__InstrumentTelemetry', // Used to send instrument telemetry\n\tMessagePort = '__STS__MessagePort',\n\tMessagePortResponse = '__STS__MessagePortResponse',\n\tAddAsyncRunner = '__STS__AddAsyncRunner',\n\tStopAllAsyncRunners = '__STS__StopAllAsyncRunners',\n}\n\n/**\n * Inter-Worker (IW) message command.\n */\nexport type IIWMessageCommand = eIWMessageCommands\n\n/**\n * Inter-Worker (IW) message payload.\n */\nexport interface IIWMessagePayload {\n command: IIWMessageCommand\n payload: IIWMessagePayloadContentBase\n}\n\nexport interface IObservabilitySubscriberManagerOptions {\n modelId: string\n consumeInstrumentationMode: string\n instrumentManagerEndpoint: string\n instrumentManagerPort: string\n instrumentManagerAPIRoot: string\n}\n","import { defineStore } from 'pinia'\n\nimport type { IWorker, IWorkerEx, IRunnerEx, IRunner, ITelemetryStore } from './../plugins/stsTestWorkerDefinitions'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TelemetryStore = defineStore('__sts__TelemetryStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): ITelemetryStore => {\n return {\n workers: { }\n }\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n RemoveWorker(workerEx: IWorkerEx) {\n delete this.workers[workerEx.id];\n },\n\n RemoveRunner(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n const worker: IWorker = this.workers[workerEx.id];\n if (worker && worker.runners) {\n delete worker.runners[runnerEx.id];\n }\n },\n\n Update(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n if (!this.workers[workerEx.id]) {\n // Create a new telemetry record\n this.workers[workerEx.id] = {\n id: workerEx.id,\n state: workerEx.state,\n primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },\n workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },\n runners: { }\n } as IWorker\n }\n const worker: IWorker = this.workers[workerEx.id];\n // Now check for the async runner\n if (worker.runners) {\n if (!worker.runners[runnerEx.id]) {\n // Create a new asyncRunnerInstance telemetry record\n const runner: IRunner = {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData },\n }\n worker.runners[runner.id] = runner;\n } else {\n const runner: IRunner = worker.runners[runnerEx.id];\n runner.instrumentData = { ...runnerEx.instrumentData }\n }\n }\n }\n }\n});\n","import type { PublishInstrumentController } from '@nsshunt/stsobservability'\n\nimport type { IIWMessagePayloadContentBase, \n IIWMessagePayload, IAsyncRunnerContext } from './../commonTypes'\n\t\nexport interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {\n port: MessagePort\n options: IWorkerOptions\n}\n\nexport enum IRunnerState {\n\tcreated = 'created',\n\trunning = 'running',\n\tstopped = 'stopped',\n\tpaused = 'paused',\n\terror = 'error',\n}\n\nexport interface IRunnerTelemetry {\n\trequestCount: number // requestCount\n\terrorCount: number\n\tretryCount: number\n\tauthenticationCount: number\n\tauthenticationErrorCount: number\n\tauthenticationRetryCount: number\n\tvelocity: number\n\tcoreCount: number\n\ttimer: number\n\tduration: number\n\tlatency: number\n\tactiveRequestCount: number\n\tmessage: string[]\n\tchildCount: number\n\trx: number\n\ttx: number\n}\n\nexport interface IRunner {\n\tid: number\n\tasyncRunnerContext: IAsyncRunnerContext\n\toptions: IRunnerOptions\n\tstate: IRunnerState\n\tinstrumentData: IRunnerTelemetry\n}\n\nexport interface IRunnerEx extends IRunner {\n publishInstrumentController: PublishInstrumentController\n Stop: () => Promise<boolean>\n}\n\nexport enum IWorkerState {\n\tstarting = 'starting',\n\tstarted = 'started',\n\tstopped = 'stopped'\n}\n\n \nexport interface IWorkerOptions {\n hostName: string\n agentId: string\n userAgent: string\n}\n\nexport type Runners = Record<string, IRunner>\n\nexport interface IWorker {\n\tid: number\n\tstate: IWorkerState\n primaryThreadWorkerOptions: IWorkerOptions\n\tworkerThreadWorkerOptions: IWorkerOptions\n\trunners?: Runners // Will be created by utility helper\n}\n\nexport type Workers = Record<string, IWorker>\n\nexport interface IPrimaryWorker {\n ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface IRunnerOptions {\n\n}\n\nexport interface IWorkerEx extends IWorker {\n\tworker: Worker\n primaryWorker: IPrimaryWorker\n\trunnersEx: Record<string, IRunnerEx>\n\tAddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx\n\tStopRunner: (runner: IRunnerEx) => Promise<boolean>\n\tStop: () => Promise<boolean>\n}\n\nexport interface ISTSTestWorkerOptions {\n messageMod: number\n iterations: number\n}\n\nexport interface ITelemetryStore {\n\tworkers: Workers\n}\n\nexport interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {\n\trunner: IRunner\n}\n\nexport interface IWorkerFactory {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker\n\tcreateWorkerThreadWorker: () => Worker // | wt.Worker\n get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n}\n\nexport interface IWorkerManagerOptions {\n workerFactory: IWorkerFactory\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","//import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers\nimport { type IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase, \n type IIWMessageCommand, eIWMessageCommands } from './../commonTypes'\n \nimport { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsobservability'\n\nimport { ModelDelimeter } from '@nsshunt/stsutils'\n\nimport { TelemetryStore } from './../stores/TelemetryStore'\n//import { ApplicationStore } from './../stores/applicationStore'\n\nimport type { ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,\n ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,\n IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions'\n\nimport { IWorkerState, IRunnerState } from './stsTestWorkerDefinitions'\nimport { Sleep } from '@nsshunt/stsutils';\nimport { inject } from 'vue';\n\n \nimport { STSInstrumentControllerPluginKey, GetSTSInstrumentControllerPluginKey, GetSTSInstrumentController, \n PublishInstrumentController } from '@nsshunt/stsobservability'\nimport { STSWorkerManagerPluginKey } from './stsPluginKeys';\n\nimport chalk from 'chalk';\nchalk.level = 3;\n\nexport class STSWorkerManager {\n //#agentSession: string = null;\n #workersEx: Record<string, IWorkerEx> = { };\n #runner = 0;\n #workerId = 0;\n #options: IWorkerManagerOptions;\n #STSInstrumentController?: PublishInstrumentController\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #app: any\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(app: any, options?: IWorkerManagerOptions) {\n this.#app = app;\n if (options) {\n this.#options = options;\n } else {\n this.#options = { } as IWorkerManagerOptions;\n }\n\n // Note: ** Important **\n // The module stsobservability must me made external in the vite config otherwise when the module\n // is inlcuded directly within this module, the imported symbol will be a new object. By making the module\n // external and only included in the final vue applicatrion, the symbol will be globally unique. This is\n // only an issue becuase this module uses the STSInstrumentController plugin from stsobservability.\n console.log(chalk.yellow(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${CompareSTSInstrumentControllerPluginKeyWMEx()}]`));\n\n console.log(chalk.yellow(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`));\n //this.#STSInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]\n //this.#STSInstrumentController = app.config.globalProperties.$sts[GetSTSInstrumentControllerPluginKey()]\n\n this.#STSInstrumentController = GetSTSInstrumentController(app);\n //this.#STSInstrumentController = app.config.globalProperties.$sts.aic;\n\n console.log(chalk.yellow('keys within app.config.globalProperties.$sts'));\n for (const [key, ] of Object.entries(app.config.globalProperties.$sts)) {\n console.log(chalk.yellow(`${key}`));\n }\n\n if (!this.#STSInstrumentController) {\n console.log(chalk.yellow(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`));\n }\n }\n \n get WorkersEx(): Record<string, IWorkerEx>\n {\n return this.#workersEx;\n }\n\n AddWorker = async (useWorkerFactory?: IWorkerFactory): Promise<IWorkerEx> => {\n let workerFactory: IWorkerFactory;\n if (useWorkerFactory) {\n // Use the supplied workFactory\n workerFactory = useWorkerFactory;\n } else {\n // Use the default workFactory\n workerFactory = this.#options.workerFactory\n }\n const stsWorkerEx: IWorkerEx = {\n id: this.#workerId++, // uuidv4()\n worker: workerFactory.createWorkerThreadWorker(),\n primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),\n state: IWorkerState.starting,\n workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,\n primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,\n runnersEx: { } as Record<string, IRunnerEx>,\n AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),\n StopRunner: (runner: IRunnerEx): Promise<boolean> => this.#StopRunner(stsWorkerEx, runner),\n Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx)\n }\n this.#STSInstrumentController?.LogEx(chalk.yellow(`Creating new worker: [${stsWorkerEx.id}]`));\n console.log(`Adding worker: [${stsWorkerEx.id}]`);\n\n stsWorkerEx.worker.onmessage = function(data: MessageEvent) {\n console.log(data.data);\n }\n\n stsWorkerEx.worker.onerror = function(error) {\n console.log(error);\n };\n\n const { \n port1, // process message port\n port2 // collector message port\n } = new MessageChannel();\n\n const workerPort = port1;\n \n console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);\n\n this.#PostMessageToWorker(stsWorkerEx, eIWMessageCommands.MessagePort, {\n port: port2,\n //applicationStoreState: stateCopy,\n options: { ...stsWorkerEx.workerThreadWorkerOptions }\n } as ISTSAgentWorkerMessagePort, port2);\n \n // Process messages received back from the worker\n workerPort.onmessage = async (data: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (publishMessagePayload.command) {\n case eIWMessageCommands.MessagePortResponse : \n stsWorkerEx.state = IWorkerState.started;\n break;\n case eIWMessageCommands.InstrumentTelemetry :\n this.#ProcessTelemetry(stsWorkerEx, publishMessagePayload.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);\n }\n }\n\n this.#workersEx[stsWorkerEx.id] = stsWorkerEx;\n\n console.log(`Added worker: [${stsWorkerEx.id}]`);\n\n return stsWorkerEx;\n }\n\n AddRunnerToWorker = (stsWorkerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n const runnerEx: IRunnerEx = this.#CreateAsyncRunner(stsWorkerEx, runnerOptions);\n stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;\n this.#SetRunnerIntoWorker(stsWorkerEx, runnerEx);\n runnerEx.publishInstrumentController.LogEx(chalk.green(`Added runner: [${runnerEx.id}] into worker: [${stsWorkerEx.id}]`));\n return runnerEx;\n }\n\n #CreateRunnerCopy(runnerEx: IRunnerEx): IRunner {\n return {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData }\n } as IRunner\n }\n\n #SetRunnerIntoWorker = (workerEx: IWorkerEx, runnerEx: IRunnerEx): void => {\n // Now that the worker is setup, send the options\n //@@ wait until worker in running state\n const payload: ITestRunnerTelemetryPayload = {\n runner: this.#CreateRunnerCopy(runnerEx)\n }\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.AddAsyncRunner, payload);\n }\n\n #ProcessTelemetry = (workerEx: IWorkerEx, payloadContents: ITestRunnerTelemetryPayload): void => {\n const store = TelemetryStore();\n\n const { runner } = payloadContents;\n\n if (workerEx.runnersEx[runner.id]) {\n const runnerEx: IRunnerEx = workerEx.runnersEx[runner.id];\n let update = false;\n\n // Copy telemetry\n runnerEx.instrumentData = { ...runner.instrumentData };\n\n if (runner.instrumentData.message) {\n runnerEx.instrumentData.message = [...runner.instrumentData.message];\n } else {\n runnerEx.instrumentData.message = [ ];\n }\n\n if (runner.instrumentData.message) {\n runner.instrumentData.message.forEach((message) => {\n runnerEx.publishInstrumentController.LogEx(message);\n });\n update = true;\n }\n\n if (runner.instrumentData.requestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {\n val: runnerEx.instrumentData.requestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.errorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.errorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.retryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.retryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationErrorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationErrorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationRetryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationRetryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.coreCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {\n val: runnerEx.instrumentData.coreCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.timer) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {\n val: runnerEx.instrumentData.timer\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.activeRequestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {\n val: runnerEx.instrumentData.activeRequestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.velocity) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {\n Inc: runnerEx.instrumentData.velocity\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.duration) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.latency) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.childCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {\n val: runnerEx.instrumentData.childCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.rx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {\n Inc: runnerEx.instrumentData.rx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.tx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {\n Inc: runnerEx.instrumentData.tx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (update) {\n store.Update(workerEx, runnerEx);\n }\n }\n }\n\n #CreateAsyncRunner = (workerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n //const applicationStore = ApplicationStore();\n this.#runner++; // The runner number always increases\n this.#STSInstrumentController?.LogEx(chalk.yellow(`Creating new async runner: [${this.#runner}]`));\n const asyncRunnerContext: IAsyncRunnerContext = {\n nid: `\\\n${workerEx.workerThreadWorkerOptions.hostName}${ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}\\\n${ModelDelimeter.NID_SEPERATOR}\\\nworker${workerEx.id}\\\n${ModelDelimeter.SEPERATOR}\\\n${this.#runner}`,\n id: this.#runner.toString(),\n hostName: (workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : 'host'),\n agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,\n threadId: `worker${workerEx.id}`,\n asyncRunnerId: this.#runner\n }\n const runnerEx: IRunnerEx = {\n id: this.#runner,\n publishInstrumentController: (this.#STSInstrumentController as PublishInstrumentController).AddPublishInstrumentController(asyncRunnerContext),\n asyncRunnerContext: asyncRunnerContext,\n state: IRunnerState.created,\n options: runnerOptions,\n instrumentData: {\n requestCount: 0,\n errorCount: 0,\n retryCount: 0,\n authenticationCount: 0,\n authenticationErrorCount: 0,\n authenticationRetryCount: 0,\n velocity: 0,\n coreCount: 0,\n timer: 0,\n duration: 0,\n latency: 0,\n activeRequestCount: 0,\n message: [ ],\n childCount: 0,\n rx: 0,\n tx: 0\n } as IRunnerTelemetry,\n Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx)\n }\n return runnerEx;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #PostMessageToWorker = (workerEx: IWorkerEx, command: IIWMessageCommand, payload: IIWMessagePayloadContentBase | null, transferObject?: any) => {\n if (transferObject) {\n console.log(`#PostMessageToWorker with transfer object`);\n workerEx.worker.postMessage({ command, payload }, [transferObject]);\n console.log(`#PostMessageToWorker with transfer object - done...`);\n } else {\n console.log(`#PostMessageToWorker`);\n workerEx.worker.postMessage({ command, payload });\n }\n }\n\n #TerminateWorker = (workerEx: IWorkerEx) => {\n if (workerEx.worker) {\n const store = TelemetryStore();\n workerEx.worker.terminate();\n console.log(`Terminated worker: [${workerEx.id}]`);\n store.RemoveWorker(workerEx);\n delete this.#workersEx[workerEx.id];\n } else {\n // Some other runner has already removed the parent worker, do nothing\n // console.log(`WORKER ALREADY NULL`);\n }\n }\n\n #StopRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {\n // If runnerEx not provided, Remove the first runner in the collection\n if (runnerEx === null) {\n const ids: string[] = Object.keys(workerEx.runnersEx);\n if (ids.length > 0) {\n const id = ids[0];\n runnerEx = workerEx.runnersEx[id];\n }\n }\n if (runnerEx !== null) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, {\n runner: this.#CreateRunnerCopy(runnerEx)\n } as ITestRunnerTelemetryPayload);\n\n runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);\n \n const promArray: Promise<boolean>[] = [ ];\n\n promArray.push((async (): Promise<boolean> => {\n await Sleep(100);\n return runnerEx.publishInstrumentController.EndPublish() as Promise<boolean>\n })());\n\n const store = TelemetryStore();\n store.RemoveRunner(workerEx, runnerEx);\n\n delete workerEx.runnersEx[runnerEx.id];\n\n const retVal = await Promise.all(promArray);\n console.log(`Removed instrument workers: [${retVal}]`);\n }\n return true;\n }\n\n #StopWorker = async (workerEx: IWorkerEx): Promise<boolean> => {\n try {\n if (workerEx.state !== IWorkerState.stopped) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, null);\n \n //@@ Now wait until we get an ack back from the worker\n // This is because we may be trying to stop BEFORE the worker has had a chance to startup ...\n \n console.log(`Terminating worker: [${workerEx.id}]`);\n const promArray: Promise<boolean>[] = [ ];\n \n // Terminate only those that are currently running...\n const ids: string[] = Object.keys(workerEx.runnersEx);\n\n ids.forEach((id) => {\n const runnerEx: IRunnerEx = workerEx.runnersEx[id];\n promArray.push(this.#StopRunner(workerEx, runnerEx));\n });\n await Promise.all(promArray);\n\n this.#TerminateWorker(workerEx);\n }\n return true;\n } catch (error) {\n console.log(`Error in STSTestWorker:StopWorker: [${error}]`);\n return false;\n }\n }\n\n GetNextAvailableWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let leastRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (leastRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {\n leastRunnerWorker = stsWorker;\n }\n } else {\n leastRunnerWorker = stsWorker;\n }\n }\n return leastRunnerWorker;\n }\n\n GetBusyWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let busyWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (busyWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {\n busyWorker = stsWorker;\n }\n } else {\n busyWorker = stsWorker;\n }\n }\n return busyWorker;\n }\n\n get Options(): IWorkerManagerOptions {\n return this.#options;\n }\n\n set Options(options: IWorkerManagerOptions) {\n this.#options = options;\n }\n\n StopAllWorkers = async () => {\n const promArray = [ ];\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n promArray.push(stsWorker.Stop());\n }\n await Promise.all(promArray);\n }\n}\n\nexport const GetSTSInstrumentControllerPluginKeyWM = (): symbol => STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWM = (val: symbol): boolean => val === STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWMEx = (): boolean => STSInstrumentControllerPluginKey === GetSTSInstrumentControllerPluginKey()\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSWorkerManager = (): STSWorkerManager => inject(STSWorkerManagerPluginKey) as STSWorkerManager\n\nexport const STSWorkerManagerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any, options?: IWorkerManagerOptions) => {\n const wm = new STSWorkerManager(app, options);\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSWorkerManagerPluginKey] = wm;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSWorkerManagerPluginKey, wm);\n }\n}\n","import type { IIWMessagePayload } from './../commonTypes'\n\nimport { defaultLogger } from '@nsshunt/stsutils'\n\ndeclare interface RequestResponseMessage {\n\tpublishMessagePayload: IIWMessagePayload\n\tpublishMessagePayloadResponse?: IIWMessagePayload\n\tcb: () => void,\n\ttimeout: NodeJS.Timeout\n}\n\ndeclare type RequestResponseMessages = Record<string, RequestResponseMessage>;\n\n//@@ this should become a low level stsutils type helper\nexport class RequestResponseHelper\n{\n #requestResponseMessages: RequestResponseMessages = { }\n #requestResponseMessageTimeout = 10000; //@@ config\n #port: MessagePort\n\n constructor(port: MessagePort) {\n this.#port = port\n this.#SetupListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n PostMessage = (message: IIWMessagePayload): Promise<IIWMessagePayload> => {\n return new Promise((resolve, reject) => {\n const { messageId } = message.payload;\n if (messageId) {\n if (this.#requestResponseMessages[messageId]) {\n reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);\n } else {\n this.#requestResponseMessages[messageId] = {\n publishMessagePayload: { ...message },\n cb: () => {\n const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;\n clearTimeout(this.#requestResponseMessages[messageId].timeout);\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n if (detail) {\n this.#debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);\n resolve(detail);\n } else {\n const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;\n this.#debug(msg);\n reject(msg);\n }\n },\n timeout: setTimeout(() => {\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n this.#debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n reject('RequestResponseHelper: Did not receive response form parent process.');\n }, this.#requestResponseMessageTimeout) // max message timeout allowed\n };\n //debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n this.#port.postMessage(message);\n }\n } else {\n const msg = `RequestResponseHelper: Response did not include a message id`;\n this.#debug(msg);\n reject(msg);\n }\n });\n }\n\n #SetupListener = () => {\n this.#port.onmessage = async (msg: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = msg.data as IIWMessagePayload;\n if (publishMessagePayload.payload.messageId) {\n const messageId = publishMessagePayload.payload.messageId;\n if (messageId && messageId !== '') {\n if (this.#requestResponseMessages[messageId]) {\n const requestResponseMessage: RequestResponseMessage = this.#requestResponseMessages[messageId];\n requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };\n requestResponseMessage.cb();\n } else {\n throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);\n }\n }\n }\n }\n }\n}\n","import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase } from './../commonTypes'\n\nimport type { ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload } from './stsTestWorkerDefinitions'\nimport { IRunnerState } from './stsTestWorkerDefinitions'\n\nimport { RequestResponseHelper } from './requestResponseHelper'\nimport { defaultLogger } from '@nsshunt/stsutils';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface IWorkerInstanceOptions {\n\n}\n\nexport abstract class WorkerInstance {\n #collectorCollectorPort: MessagePort | null = null;\n #requestResponseHelper: RequestResponseHelper | null = null;\n #runners: Record<string, IRunner> = { };\n #options: IWorkerInstanceOptions | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n constructor() {\n this.#debug(`WorkerInstance::constructor`)\n }\n\n GetRandomInt = (max: number) => {\n this.#debug(`WorkerInstance::GetRandomInt`)\n return Math.floor(Math.random() * Math.floor(max));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StartWork = async (runner: IRunner): Promise<void> => {\n this.#debug(`WorkerInstance::StartWork`)\n return;\n }\n\n PostTelemetry = (runner: IRunner) => {\n //debug(`WorkerInstance::PostTelemetry`)\n if (this.#collectorCollectorPort) {\n const message: IIWMessagePayload = {\n command: eIWMessageCommands.InstrumentTelemetry,\n payload: {\n runner\n } as ITestRunnerTelemetryPayload\n }\n this.#collectorCollectorPort.postMessage(message);\n }\n }\n\n get RequestResponseHelper(): RequestResponseHelper | null {\n return this.#requestResponseHelper;\n }\n\n get CollectorCollectorPort(): MessagePort | null {\n return this.#collectorCollectorPort;\n }\n\n get Options(): IWorkerInstanceOptions | null {\n return this.#options;\n }\n\n #SetMessagePort = (workerMessagePort: ISTSAgentWorkerMessagePort) => {\n this.#debug(`WorkerInstance::SetMessagePort`)\n this.#collectorCollectorPort = workerMessagePort.port as MessagePort;\n this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {\n console.log(`collectorCollectorPort onmessage: ${data.data}`);\n }\n\n this.#requestResponseHelper = new RequestResponseHelper(this.#collectorCollectorPort);\n\n const response: IIWMessagePayload = {\n command: eIWMessageCommands.MessagePortResponse,\n payload: { } as IIWMessagePayloadContentBase\n }\n\n this.#collectorCollectorPort.postMessage(response);\n }\n\n StartRunner = async (runner: IRunner) => {\n this.#debug(`WorkerInstance::StartRunner`)\n console.log(`StartTests: [${JSON.stringify(runner)}]`);\n runner.state = IRunnerState.running;\n this.StartWork(runner);\n }\n\n #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n this.#debug(`WorkerInstance::AddAsyncRunner`)\n const { runner } = testRunnerTelemetryPayload;\n this.#runners[runner.id] = runner;\n this.StartRunner(runner);\n }\n\n #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n this.#debug(`WorkerInstance::StopRunners`)\n if (testRunnerTelemetryPayload === null) {\n for (const [, testRunner] of Object.entries(this.#runners)) {\n testRunner.state = IRunnerState.stopped;\n }\n } else {\n const runner: IRunner = this.#runners[testRunnerTelemetryPayload.runner.id];\n if (runner) {\n runner.state = IRunnerState.stopped;\n }\n }\n }\n\n ProcessMessage = async(data: MessageEvent) => {\n this.#debug(`WorkerInstance::ProcessMessage`)\n try {\n const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (payloadMessage.command) {\n case eIWMessageCommands.MessagePort :\n this.#SetMessagePort(payloadMessage.payload as ISTSAgentWorkerMessagePort);\n this.#options = (payloadMessage.payload as ISTSAgentWorkerMessagePort).options;\n this.#debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(this.#options)}]`)\n break;\n case eIWMessageCommands.AddAsyncRunner :\n this.#AddAsyncRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n case eIWMessageCommands.StopAllAsyncRunners :\n this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);\n }\n } catch (error) {\n console.log(error);\n }\n }\n}"],"names":["tinyEmitterModule","tinyEmitter","te.TinyEmitter","source","converter","ClientStorageType","Cookies","_debug","eIWMessageCommands","IRunnerState","IWorkerState","require$$0","conversions","route","require$$1","colorConvert","escape","chalk","styles","ansiStyles","require$$2","require$$3","_options"],"mappings":"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","x_google_ignoreList":[1,3,9,10,11,12,13,14,15,16,17]}