ketcher-standalone 2.13.0-rc.3 → 2.13.0-rc.3-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +3 -0
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -739,6 +739,7 @@ var IndigoService = function () {
|
|
|
739
739
|
return new Promise(function (resolve, reject) {
|
|
740
740
|
var action = function action(_ref2) {
|
|
741
741
|
var data = _ref2.data;
|
|
742
|
+
console.log('info action', data);
|
|
742
743
|
var msg = data;
|
|
743
744
|
if (!msg.hasError) {
|
|
744
745
|
var result = {
|
|
@@ -768,6 +769,7 @@ var IndigoService = function () {
|
|
|
768
769
|
return new Promise(function (resolve, reject) {
|
|
769
770
|
var action = function action(_ref3) {
|
|
770
771
|
var data = _ref3.data;
|
|
772
|
+
console.log('convert action', data);
|
|
771
773
|
var msg = data;
|
|
772
774
|
if (!msg.hasError) {
|
|
773
775
|
var result = {
|
|
@@ -804,6 +806,7 @@ var IndigoService = function () {
|
|
|
804
806
|
return new Promise(function (resolve, reject) {
|
|
805
807
|
var action = function action(_ref4) {
|
|
806
808
|
var data = _ref4.data;
|
|
809
|
+
console.log('layout action', data);
|
|
807
810
|
var msg = data;
|
|
808
811
|
if (!msg.hasError) {
|
|
809
812
|
var result = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/infrastructure/services/struct/indigoWorker.types.ts","../../../node_modules/rollup-plugin-node-polyfills/polyfills/events.js","../src/infrastructure/services/struct/standaloneStructService.ts","../src/infrastructure/services/struct/standaloneStructServiceProvider.ts"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// TODO add typings for Indigo standalone object\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type IndigoStandalone = any;\n\nexport const enum Command {\n Info,\n Convert,\n Layout,\n Clean,\n Aromatize,\n Dearomatize,\n CalculateCip,\n Automap,\n Check,\n Calculate,\n GenerateImageAsBase64,\n GenerateInchIKey,\n}\n\nexport const enum WorkerEvent {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64',\n GenerateInchIKey = 'generateInchIKey',\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n Ket = 'ket',\n CDX = 'cdx',\n CDXML = 'cdxml',\n}\n\nexport interface WithStruct {\n struct: string;\n}\n\nexport interface WithFormat {\n format: SupportedFormat;\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>;\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CommandData {\n options?: CommandOptions;\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>;\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateInchIKeyCommandData extends CommandData, WithStruct {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg';\n backgroundColor?: string;\n}\n\nexport interface LayoutCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection,\n WithFormat {}\n\nexport interface AromatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface DearomatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCipCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport type CalculateProps =\n | 'molecular-weight'\n | 'most-abundant-mass'\n | 'monoisotopic-mass'\n | 'gross'\n | 'gross-formula'\n | 'mass-composition';\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>;\n}\n\nexport interface AutomapCommandData\n extends CommandData,\n WithStruct,\n WithFormat {\n mode: string;\n}\n\ninterface OutputMessageBase {\n type?: Command;\n hasError?: boolean;\n}\n\ninterface OutputMessageWithError extends OutputMessageBase {\n hasError: true;\n error: string;\n}\n\ninterface OutputMessageWithoutError<T> extends OutputMessageBase {\n hasError?: false;\n payload: T;\n}\n\nexport type OutputMessage<T> =\n | OutputMessageWithError\n | OutputMessageWithoutError<T>;\n\nexport interface InputMessage<T> {\n type: Command;\n data: T;\n}\n\nexport interface OutputMessageWrapper<T = string> {\n data: OutputMessage<T>;\n}\n","'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CalculateProps,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n WorkerEvent,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n GenerateInchIKeyCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat,\n OutputMessageWrapper,\n} from './indigoWorker.types';\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions,\n} from 'ketcher-core';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./indigoWorker';\nimport EventEmitter from 'events';\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object;\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType,\n): SupportedFormat {\n let format: SupportedFormat;\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol;\n break;\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn;\n break;\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles;\n break;\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts;\n break;\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI;\n break;\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo;\n break;\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML;\n break;\n }\n case ChemicalMimeType.KET: {\n format = SupportedFormat.Ket;\n break;\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML;\n break;\n }\n case ChemicalMimeType.CDX: {\n format = SupportedFormat.CDX;\n break;\n }\n case ChemicalMimeType.UNKNOWN:\n default: {\n throw new Error('Unsupported chemical mime type');\n }\n }\n\n return format;\n}\n\nfunction mapCalculatedPropertyName(property: CalculateProps) {\n let mappedProperty: CalculateProps | undefined;\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross';\n break;\n }\n default:\n mappedProperty = property;\n break;\n }\n\n return mappedProperty;\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined;\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds';\n break;\n }\n default:\n mappedProperty = property.toLowerCase();\n break;\n }\n\n return mappedProperty;\n}\n\nconst messageTypeToEventMapping: {\n [key in Command]: WorkerEvent;\n} = {\n [Command.Info]: WorkerEvent.Info,\n [Command.Convert]: WorkerEvent.Convert,\n [Command.Layout]: WorkerEvent.Layout,\n [Command.Clean]: WorkerEvent.Clean,\n [Command.Aromatize]: WorkerEvent.Aromatize,\n [Command.Dearomatize]: WorkerEvent.Dearomatize,\n [Command.CalculateCip]: WorkerEvent.CalculateCip,\n [Command.Automap]: WorkerEvent.Automap,\n [Command.Check]: WorkerEvent.Check,\n [Command.Calculate]: WorkerEvent.Calculate,\n [Command.GenerateImageAsBase64]: WorkerEvent.GenerateImageAsBase64,\n [Command.GenerateInchIKey]: WorkerEvent.GenerateInchIKey,\n};\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions;\n private readonly worker: IndigoWorker;\n private readonly EE: EventEmitter = new EventEmitter();\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions;\n this.worker = new IndigoWorker();\n this.worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n const message: OutputMessage<string> = e.data;\n if (message.type !== undefined) {\n const event = messageTypeToEventMapping[message.type];\n this.EE.emit(event, { data: message });\n }\n };\n }\n\n async generateInchIKey(struct: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload || '');\n } else {\n reject(msg.error);\n }\n };\n\n const inputMessage: InputMessage<GenerateInchIKeyCommandData> = {\n type: Command.GenerateInchIKey,\n data: { struct },\n };\n\n this.EE.removeListener(WorkerEvent.GenerateInchIKey, action);\n this.EE.addListener(WorkerEvent.GenerateInchIKey, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('info action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload,\n imagoVersions: [],\n isAvailable: true,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n this.EE.removeListener(WorkerEvent.Info, action);\n this.EE.addListener(WorkerEvent.Info, action);\n\n this.worker.postMessage({ type: Command.Info });\n });\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions,\n ): Promise<ConvertResult> {\n const { output_format: outputFormat, struct } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('convert action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload,\n format: outputFormat,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Convert, action);\n this.EE.addListener(WorkerEvent.Convert, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions,\n ): Promise<LayoutResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('layout action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: LayoutCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Layout, action);\n this.EE.addListener(WorkerEvent.Layout, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CleanCommandData = {\n struct,\n format,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Clean, action);\n this.EE.addListener(WorkerEvent.Clean, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions,\n ): Promise<AromatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AromatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Aromatize, action);\n this.EE.addListener(WorkerEvent.Aromatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions,\n ): Promise<DearomatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: DearomatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Dearomatize, action);\n this.EE.addListener(WorkerEvent.Dearomatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions,\n ): Promise<CalculateCipResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCipCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.CalculateCip, action);\n this.EE.addListener(WorkerEvent.CalculateCip, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions,\n ): Promise<AutomapResult> {\n const { mode, struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AutomapCommandData = {\n struct,\n format,\n mode,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Automap, action);\n this.EE.addListener(WorkerEvent.Automap, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data;\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload) as KeyValuePair;\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapWarningGroup(key);\n acc[mappedPropertyName] = value;\n\n return acc;\n },\n {},\n );\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Check, action);\n this.EE.addListener(WorkerEvent.Check, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions,\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const calculatedProperties: CalculateResult = JSON.parse(msg.payload);\n const result: CalculateResult = Object.entries(\n calculatedProperties,\n ).reduce((acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapCalculatedPropertyName(\n key as CalculateProps,\n );\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value;\n }\n\n return acc;\n }, {} as CalculateResult);\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Calculate, action);\n this.EE.addListener(WorkerEvent.Calculate, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n recognize(_blob: Blob, _version: string): Promise<RecognizeResult> {\n return Promise.reject(new Error('Not supported in standalone mode'));\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = {\n outputFormat: 'png',\n backgroundColor: '',\n },\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions,\n };\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n backgroundColor,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.GenerateImageAsBase64, action);\n this.EE.addListener(WorkerEvent.GenerateImageAsBase64, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n}\n\nexport default IndigoService;\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider,\n} from 'ketcher-core';\n\nimport StandaloneStructService from './standaloneStructService';\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone';\n\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options);\n }\n}\nexport default StandaloneStructServiceProvider;\n"],"names":["Command","WorkerEvent","SupportedFormat","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","KET","Ket","CDXML","CDX","UNKNOWN","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","messageTypeToEventMapping","_messageTypeToEventMa","_defineProperty","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_this","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_createClass","key","value","_generateInchIKey","_asyncToGenerator","_regeneratorRuntime","mark","_callee","struct","_this2","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","action","_ref","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","stop","generateInchIKey","_x","apply","arguments","info","_this3","_ref2","result","indigoVersion","imagoVersions","isAvailable","convert","options","_this4","outputFormat","output_format","_ref3","commandOptions","_objectSpread","commandData","layout","_this5","_ref4","clean","_this6","selected","_ref5","selectedAtoms","aromatize","_this7","_ref6","dearomatize","_this8","_ref7","calculateCip","_this9","_ref8","automap","_this10","mode","_ref9","check","_this11","types","_ref10","warnings","JSON","parse","Object","entries","reduce","acc","curr","_curr","_slicedToArray","mappedPropertyName","calculate","_this12","properties","_ref11","calculatedProperties","_curr2","includes","recognize","_blob","_version","generateImageAsBase64","_this13","length","backgroundColor","restOptions","_objectWithoutProperties","_excluded","_ref12","StandaloneStructServiceProvider","createStructService","StandaloneStructService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/infrastructure/services/struct/indigoWorker.types.ts","../../../node_modules/rollup-plugin-node-polyfills/polyfills/events.js","../src/infrastructure/services/struct/standaloneStructService.ts","../src/infrastructure/services/struct/standaloneStructServiceProvider.ts"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// TODO add typings for Indigo standalone object\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type IndigoStandalone = any;\n\nexport const enum Command {\n Info,\n Convert,\n Layout,\n Clean,\n Aromatize,\n Dearomatize,\n CalculateCip,\n Automap,\n Check,\n Calculate,\n GenerateImageAsBase64,\n GenerateInchIKey,\n}\n\nexport const enum WorkerEvent {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64',\n GenerateInchIKey = 'generateInchIKey',\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n Ket = 'ket',\n CDX = 'cdx',\n CDXML = 'cdxml',\n}\n\nexport interface WithStruct {\n struct: string;\n}\n\nexport interface WithFormat {\n format: SupportedFormat;\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>;\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CommandData {\n options?: CommandOptions;\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>;\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateInchIKeyCommandData extends CommandData, WithStruct {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg';\n backgroundColor?: string;\n}\n\nexport interface LayoutCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection,\n WithFormat {}\n\nexport interface AromatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface DearomatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCipCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport type CalculateProps =\n | 'molecular-weight'\n | 'most-abundant-mass'\n | 'monoisotopic-mass'\n | 'gross'\n | 'gross-formula'\n | 'mass-composition';\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>;\n}\n\nexport interface AutomapCommandData\n extends CommandData,\n WithStruct,\n WithFormat {\n mode: string;\n}\n\ninterface OutputMessageBase {\n type?: Command;\n hasError?: boolean;\n}\n\ninterface OutputMessageWithError extends OutputMessageBase {\n hasError: true;\n error: string;\n}\n\ninterface OutputMessageWithoutError<T> extends OutputMessageBase {\n hasError?: false;\n payload: T;\n}\n\nexport type OutputMessage<T> =\n | OutputMessageWithError\n | OutputMessageWithoutError<T>;\n\nexport interface InputMessage<T> {\n type: Command;\n data: T;\n}\n\nexport interface OutputMessageWrapper<T = string> {\n data: OutputMessage<T>;\n}\n","'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CalculateProps,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n WorkerEvent,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n GenerateInchIKeyCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat,\n OutputMessageWrapper,\n} from './indigoWorker.types';\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions,\n} from 'ketcher-core';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./indigoWorker';\nimport EventEmitter from 'events';\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object;\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType,\n): SupportedFormat {\n let format: SupportedFormat;\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol;\n break;\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn;\n break;\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles;\n break;\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts;\n break;\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI;\n break;\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo;\n break;\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML;\n break;\n }\n case ChemicalMimeType.KET: {\n format = SupportedFormat.Ket;\n break;\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML;\n break;\n }\n case ChemicalMimeType.CDX: {\n format = SupportedFormat.CDX;\n break;\n }\n case ChemicalMimeType.UNKNOWN:\n default: {\n throw new Error('Unsupported chemical mime type');\n }\n }\n\n return format;\n}\n\nfunction mapCalculatedPropertyName(property: CalculateProps) {\n let mappedProperty: CalculateProps | undefined;\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross';\n break;\n }\n default:\n mappedProperty = property;\n break;\n }\n\n return mappedProperty;\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined;\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds';\n break;\n }\n default:\n mappedProperty = property.toLowerCase();\n break;\n }\n\n return mappedProperty;\n}\n\nconst messageTypeToEventMapping: {\n [key in Command]: WorkerEvent;\n} = {\n [Command.Info]: WorkerEvent.Info,\n [Command.Convert]: WorkerEvent.Convert,\n [Command.Layout]: WorkerEvent.Layout,\n [Command.Clean]: WorkerEvent.Clean,\n [Command.Aromatize]: WorkerEvent.Aromatize,\n [Command.Dearomatize]: WorkerEvent.Dearomatize,\n [Command.CalculateCip]: WorkerEvent.CalculateCip,\n [Command.Automap]: WorkerEvent.Automap,\n [Command.Check]: WorkerEvent.Check,\n [Command.Calculate]: WorkerEvent.Calculate,\n [Command.GenerateImageAsBase64]: WorkerEvent.GenerateImageAsBase64,\n [Command.GenerateInchIKey]: WorkerEvent.GenerateInchIKey,\n};\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions;\n private readonly worker: IndigoWorker;\n private readonly EE: EventEmitter = new EventEmitter();\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions;\n this.worker = new IndigoWorker();\n this.worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n const message: OutputMessage<string> = e.data;\n if (message.type !== undefined) {\n const event = messageTypeToEventMapping[message.type];\n this.EE.emit(event, { data: message });\n }\n };\n }\n\n async generateInchIKey(struct: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload || '');\n } else {\n reject(msg.error);\n }\n };\n\n const inputMessage: InputMessage<GenerateInchIKeyCommandData> = {\n type: Command.GenerateInchIKey,\n data: { struct },\n };\n\n this.EE.removeListener(WorkerEvent.GenerateInchIKey, action);\n this.EE.addListener(WorkerEvent.GenerateInchIKey, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('info action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload,\n imagoVersions: [],\n isAvailable: true,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n this.EE.removeListener(WorkerEvent.Info, action);\n this.EE.addListener(WorkerEvent.Info, action);\n\n this.worker.postMessage({ type: Command.Info });\n });\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions,\n ): Promise<ConvertResult> {\n const { output_format: outputFormat, struct } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('convert action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload,\n format: outputFormat,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Convert, action);\n this.EE.addListener(WorkerEvent.Convert, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions,\n ): Promise<LayoutResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('layout action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: LayoutCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Layout, action);\n this.EE.addListener(WorkerEvent.Layout, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CleanCommandData = {\n struct,\n format,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Clean, action);\n this.EE.addListener(WorkerEvent.Clean, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions,\n ): Promise<AromatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AromatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Aromatize, action);\n this.EE.addListener(WorkerEvent.Aromatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions,\n ): Promise<DearomatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: DearomatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Dearomatize, action);\n this.EE.addListener(WorkerEvent.Dearomatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions,\n ): Promise<CalculateCipResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCipCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.CalculateCip, action);\n this.EE.addListener(WorkerEvent.CalculateCip, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions,\n ): Promise<AutomapResult> {\n const { mode, struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AutomapCommandData = {\n struct,\n format,\n mode,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Automap, action);\n this.EE.addListener(WorkerEvent.Automap, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data;\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload) as KeyValuePair;\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapWarningGroup(key);\n acc[mappedPropertyName] = value;\n\n return acc;\n },\n {},\n );\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Check, action);\n this.EE.addListener(WorkerEvent.Check, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions,\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const calculatedProperties: CalculateResult = JSON.parse(msg.payload);\n const result: CalculateResult = Object.entries(\n calculatedProperties,\n ).reduce((acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapCalculatedPropertyName(\n key as CalculateProps,\n );\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value;\n }\n\n return acc;\n }, {} as CalculateResult);\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Calculate, action);\n this.EE.addListener(WorkerEvent.Calculate, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n recognize(_blob: Blob, _version: string): Promise<RecognizeResult> {\n return Promise.reject(new Error('Not supported in standalone mode'));\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = {\n outputFormat: 'png',\n backgroundColor: '',\n },\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions,\n };\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n backgroundColor,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.GenerateImageAsBase64, action);\n this.EE.addListener(WorkerEvent.GenerateImageAsBase64, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n}\n\nexport default IndigoService;\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider,\n} from 'ketcher-core';\n\nimport StandaloneStructService from './standaloneStructService';\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone';\n\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options);\n }\n}\nexport default StandaloneStructServiceProvider;\n"],"names":["Command","WorkerEvent","SupportedFormat","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","KET","Ket","CDXML","CDX","UNKNOWN","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","messageTypeToEventMapping","_messageTypeToEventMa","_defineProperty","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_this","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_createClass","key","value","_generateInchIKey","_asyncToGenerator","_regeneratorRuntime","mark","_callee","struct","_this2","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","action","_ref","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","stop","generateInchIKey","_x","apply","arguments","info","_this3","_ref2","console","log","result","indigoVersion","imagoVersions","isAvailable","convert","options","_this4","outputFormat","output_format","_ref3","commandOptions","_objectSpread","commandData","layout","_this5","_ref4","clean","_this6","selected","_ref5","selectedAtoms","aromatize","_this7","_ref6","dearomatize","_this8","_ref7","calculateCip","_this9","_ref8","automap","_this10","mode","_ref9","check","_this11","types","_ref10","warnings","JSON","parse","Object","entries","reduce","acc","curr","_curr","_slicedToArray","mappedPropertyName","calculate","_this12","properties","_ref11","calculatedProperties","_curr2","includes","recognize","_blob","_version","generateImageAsBase64","_this13","length","backgroundColor","restOptions","_objectWithoutProperties","_excluded","_ref12","StandaloneStructServiceProvider","createStructService","StandaloneStructService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,IAAkBA,OAajB,CAAA;AAbD,CAAA,UAAkBA,OAAO,EAAA;EACvBA,OAAA,CAAAA,OAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;EACJA,OAAA,CAAAA,OAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;EACPA,OAAA,CAAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;EACNA,OAAA,CAAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;EACLA,OAAA,CAAAA,OAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;EACTA,OAAA,CAAAA,OAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;EACXA,OAAA,CAAAA,OAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;EACZA,OAAA,CAAAA,OAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;EACPA,OAAA,CAAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;EACLA,OAAA,CAAAA,OAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;EACTA,OAAA,CAAAA,OAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAqB,CAAA;EACrBA,OAAA,CAAAA,OAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAgB,CAAA;AAClB,CAAC,EAbiBA,OAAO,KAAPA,OAAO,GAaxB,EAAA,CAAA,CAAA,CAAA;AAED,IAAkBC,WAajB,CAAA;AAbD,CAAA,UAAkBA,WAAW,EAAA;AAC3BA,EAAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACbA,EAAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnBA,EAAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjBA,EAAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACfA,EAAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvBA,EAAAA,WAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3BA,EAAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7BA,EAAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnBA,EAAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACfA,EAAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvBA,EAAAA,WAAA,CAAA,uBAAA,CAAA,GAAA,uBAA+C,CAAA;AAC/CA,EAAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACvC,CAAC,EAbiBA,WAAW,KAAXA,WAAW,GAa5B,EAAA,CAAA,CAAA,CAAA;AAED,IAAYC,eAWX,CAAA;AAXD,CAAA,UAAYA,eAAe,EAAA;AACzBA,EAAAA,eAAA,CAAA,KAAA,CAAA,GAAA,SAAe,CAAA;AACfA,EAAAA,eAAA,CAAA,KAAA,CAAA,GAAA,SAAe,CAAA;AACfA,EAAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjBA,EAAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjBA,EAAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACXA,EAAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACfA,EAAAA,eAAA,CAAA,cAAA,CAAA,GAAA,WAA0B,CAAA;AAC1BA,EAAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACXA,EAAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACXA,EAAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAXWA,eAAe,KAAfA,eAAe,GAW1B,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3DD,IAAI,MAAM,CAAC;AACX;AACA;AACA;AACA;AACA,SAAS,aAAa,GAAG,EAAE;AAC3B,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,SAAS,YAAY,GAAG;AACxB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAGD;AACA;AACA;AACA,YAAY,CAAC,YAAY,GAAG,aAAY;AACxC;AACA,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC;AACA,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;AAC1C,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3C,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;AACjD;AACA;AACA;AACA,YAAY,CAAC,mBAAmB,GAAG,EAAE,CAAC;AACtC;AACA,YAAY,CAAC,IAAI,GAAG,WAAW;AAC/B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,YAAY,CAAC,YAAY,EAAE;AACjC;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAoC,EAAE,CAEtD;AACL,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;AAC7E,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE;AACrE,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,EAAE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AACtC,IAAI,OAAO,YAAY,CAAC,mBAAmB,CAAC;AAC5C,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,GAAG;AACpE,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AACvC,EAAE,IAAI,IAAI;AACV,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,OAAO;AACP,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5C,EAAE,IAAI,IAAI;AACV,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,OAAO;AACP,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,GAAG;AACH,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAClD,EAAE,IAAI,IAAI;AACV,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,OAAO;AACP,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD,SAAS,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,IAAI;AACV,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,OAAO;AACP,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C,EAAE,IAAI,IAAI;AACV,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,OAAO;AACP,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE;AAClD,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;AAEhD,EAAE,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;AACnC;AACA,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACxB,EAAE,IAAI,MAAM;AACZ,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AAChD,OAAO,IAAI,CAAC,OAAO;AACnB,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACvB;AACA;AACA,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,EAAE;AACb,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC9D,MAAM,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,MAAM,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/B,KAAK,MAAM,IAAI,EAAE,YAAY,KAAK,EAAE;AACpC,MAAM,MAAM,EAAE,CAAC;AACf,KAAK,MAAM;AACX;AACA,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,wCAAwC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AAC/E,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;AACvB,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,OAAO;AACd,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,IAAI,IAAI,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AAC3C,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AACzB,EAAE,QAAQ,GAAG;AACb;AACA,IAAI,KAAK,CAAC;AACV,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,MAAM,MAAM;AACZ,IAAI,KAAK,CAAC;AACV,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,MAAM,MAAM;AACZ,IAAI,KAAK,CAAC;AACV,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM;AACZ,IAAI,KAAK,CAAC;AACV,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,MAAM;AACZ;AACA,IAAI;AACJ,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,GAAG;AAIH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU;AACpC,IAAI,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AAClE;AACA,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAClD,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5B,GAAG,MAAM;AACT;AACA;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE;AAC5B,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI;AACrC,kBAAkB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACpE;AACA;AACA;AACA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB;AACA,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACvC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;AAC1B,GAAG,MAAM;AACT,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC;AACA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC9D,0CAA0C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/D,KAAK,MAAM;AACX;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnC,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1B,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAQ,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,8CAA8C;AACxE,4BAA4B,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,oBAAoB;AAC/E,4BAA4B,iDAAiD,CAAC,CAAC;AAC/E,QAAQ,CAAC,CAAC,IAAI,GAAG,6BAA6B,CAAC;AAC/C,QAAQ,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;AAC3B,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB,QAAQ,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC;AACvB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AACD,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1E,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;AAC/D;AACA,YAAY,CAAC,SAAS,CAAC,eAAe;AACtC,IAAI,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC7C,MAAM,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtD,KAAK,CAAC;AACN;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB,EAAE,SAAS,CAAC,GAAG;AACf,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,EAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACxB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC5D,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU;AACpC,IAAI,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjD,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,mBAAmB;AAC1C,IAAI,SAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjD,MAAM,IAAI,OAAO,QAAQ,KAAK,UAAU;AACxC,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA;AACA,YAAY,CAAC,SAAS,CAAC,cAAc;AACrC,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,CAAC;AACtD;AACA,MAAM,IAAI,OAAO,QAAQ,KAAK,UAAU;AACxC,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,MAAM,IAAI,CAAC,MAAM;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA,MAAM,IAAI,IAAI,KAAK,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;AAC9E,QAAQ,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;AACrC,UAAU,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAC7C,aAAa;AACb,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,UAAU,IAAI,MAAM,CAAC,cAAc;AACnC,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACzE,SAAS;AACT,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC7C,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC;AACtB;AACA,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG;AACxC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AAClC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;AACnE,YAAY,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChD,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,GAAG,CAAC;AACxB,UAAU,OAAO,IAAI,CAAC;AACtB;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC9B,UAAU,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;AACzC,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAC/C,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW,MAAM;AACjB,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,WAAW;AACX,SAAS,MAAM;AACf,UAAU,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,cAAc;AACjC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,QAAQ,CAAC,CAAC;AAC1E,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA,YAAY,CAAC,SAAS,CAAC,kBAAkB;AACzC,IAAI,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACtC,MAAM,IAAI,SAAS,EAAE,MAAM,CAAC;AAC5B;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,MAAM,IAAI,CAAC,MAAM;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAClC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,UAAU,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAC7C,UAAU,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACjC,UAAU,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;AACvC,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAC/C;AACA,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA;AACA,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACnD,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,UAAU,IAAI,GAAG,KAAK,gBAAgB,EAAE,SAAS;AACjD,UAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,MAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C,OAAO,MAAM,IAAI,SAAS,EAAE;AAC5B;AACA,QAAQ,GAAG;AACX,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE;AAC/B,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE;AAC5D,EAAE,IAAI,UAAU,CAAC;AACjB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,MAAM;AACb,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,OAAO;AACP,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU;AACnB,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,SAAS,IAAI,OAAO,UAAU,KAAK,UAAU;AAC7C,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC;AAChD;AACA,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACrD,EAAE,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;AACnD,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACvC,GAAG,MAAM;AACT,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;AACrD,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B;AACA,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC;AACA,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,MAAM,IAAI,UAAU,EAAE;AAC3B,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;AAC1D,EAAE,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACpE,CAAC,CAAC;AACF;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAChC,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACvE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AACD;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,EAAE;AACZ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb;;;;;;ACjZA,SAASC,6BAA6BA,CACpCC,QAA0B,EAAA;AAE1B,EAAA,IAAIC,MAAuB,CAAA;AAC3B,EAAA,QAAQD,QAAQ;IACd,KAAKE,4BAAgB,CAACC,GAAG;AAAE,MAAA;QACzBF,MAAM,GAAGH,eAAe,CAACK,GAAG,CAAA;AAC5B,QAAA,MAAA;AACD,OAAA;IACD,KAAKD,4BAAgB,CAACE,GAAG;AAAE,MAAA;QACzBH,MAAM,GAAGH,eAAe,CAACM,GAAG,CAAA;AAC5B,QAAA,MAAA;AACD,OAAA;IACD,KAAKF,4BAAgB,CAACG,cAAc,CAAA;IACpC,KAAKH,4BAAgB,CAACI,cAAc;AAAE,MAAA;QACpCL,MAAM,GAAGH,eAAe,CAACS,MAAM,CAAA;AAC/B,QAAA,MAAA;AACD,OAAA;IACD,KAAKL,4BAAgB,CAACM,cAAc;AAAE,MAAA;QACpCP,MAAM,GAAGH,eAAe,CAACW,MAAM,CAAA;AAC/B,QAAA,MAAA;AACD,OAAA;IACD,KAAKP,4BAAgB,CAACQ,KAAK;AAAE,MAAA;QAC3BT,MAAM,GAAGH,eAAe,CAACY,KAAK,CAAA;AAC9B,QAAA,MAAA;AACD,OAAA;IACD,KAAKR,4BAAgB,CAACS,YAAY;AAAE,MAAA;QAClCV,MAAM,GAAGH,eAAe,CAACa,YAAY,CAAA;AACrC,QAAA,MAAA;AACD,OAAA;IACD,KAAKT,4BAAgB,CAACU,GAAG;AAAE,MAAA;QACzBX,MAAM,GAAGH,eAAe,CAACc,GAAG,CAAA;AAC5B,QAAA,MAAA;AACD,OAAA;IACD,KAAKV,4BAAgB,CAACW,GAAG;AAAE,MAAA;QACzBZ,MAAM,GAAGH,eAAe,CAACgB,GAAG,CAAA;AAC5B,QAAA,MAAA;AACD,OAAA;IACD,KAAKZ,4BAAgB,CAACa,KAAK;AAAE,MAAA;QAC3Bd,MAAM,GAAGH,eAAe,CAACiB,KAAK,CAAA;AAC9B,QAAA,MAAA;AACD,OAAA;IACD,KAAKb,4BAAgB,CAACc,GAAG;AAAE,MAAA;QACzBf,MAAM,GAAGH,eAAe,CAACkB,GAAG,CAAA;AAC5B,QAAA,MAAA;AACD,OAAA;IACD,KAAKd,4BAAgB,CAACe,OAAO,CAAA;AAC7B,IAAA;AAAS,MAAA;AACP,QAAA,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC,CAAA;AAClD,OAAA;AAAA,GAAA;AAGH,EAAA,OAAOjB,MAAM,CAAA;AACf,CAAA;AAEA,SAASkB,yBAAyBA,CAACC,QAAwB,EAAA;AACzD,EAAA,IAAIC,cAA0C,CAAA;AAC9C,EAAA,QAAQD,QAAQ;AACd,IAAA,KAAK,eAAe;AAAE,MAAA;AACpBC,QAAAA,cAAc,GAAG,OAAO,CAAA;AACxB,QAAA,MAAA;AACD,OAAA;AACD,IAAA;AACEA,MAAAA,cAAc,GAAGD,QAAQ,CAAA;AACzB,MAAA,MAAA;AAAM,GAAA;AAGV,EAAA,OAAOC,cAAc,CAAA;AACvB,CAAA;AAEA,SAASC,eAAeA,CAACF,QAAgB,EAAA;AACvC,EAAA,IAAIC,cAAkC,CAAA;AACtC,EAAA,QAAQD,QAAQ;AACd,IAAA,KAAK,cAAc;AAAE,MAAA;AACnBC,QAAAA,cAAc,GAAG,mBAAmB,CAAA;AACpC,QAAA,MAAA;AACD,OAAA;AACD,IAAA;AACEA,MAAAA,cAAc,GAAGD,QAAQ,CAACG,WAAW,EAAE,CAAA;AACvC,MAAA,MAAA;AAAM,GAAA;AAGV,EAAA,OAAOF,cAAc,CAAA;AACvB,CAAA;AAEA,IAAMG,yBAAyB,IAAAC,qBAAA,GAAA,EAAA,EAAAC,mCAAA,CAAAD,qBAAA,EAG5B7B,OAAO,CAAC+B,IAAI,EAAG9B,WAAW,CAAC8B,IAAI,CAAAD,EAAAA,mCAAA,CAAAD,qBAAA,EAC/B7B,OAAO,CAACgC,OAAO,EAAG/B,WAAW,CAAC+B,OAAO,CAAA,EAAAF,mCAAA,CAAAD,qBAAA,EACrC7B,OAAO,CAACiC,MAAM,EAAGhC,WAAW,CAACgC,MAAM,CAAA,EAAAH,mCAAA,CAAAD,qBAAA,EACnC7B,OAAO,CAACkC,KAAK,EAAGjC,WAAW,CAACiC,KAAK,CAAA,EAAAJ,mCAAA,CAAAD,qBAAA,EACjC7B,OAAO,CAACmC,SAAS,EAAGlC,WAAW,CAACkC,SAAS,CAAA,EAAAL,mCAAA,CAAAD,qBAAA,EACzC7B,OAAO,CAACoC,WAAW,EAAGnC,WAAW,CAACmC,WAAW,CAAA,EAAAN,mCAAA,CAAAD,qBAAA,EAC7C7B,OAAO,CAACqC,YAAY,EAAGpC,WAAW,CAACoC,YAAY,CAAA,EAAAP,mCAAA,CAAAD,qBAAA,EAC/C7B,OAAO,CAACsC,OAAO,EAAGrC,WAAW,CAACqC,OAAO,GAAAR,mCAAA,CAAAD,qBAAA,EACrC7B,OAAO,CAACuC,KAAK,EAAGtC,WAAW,CAACsC,KAAK,CAAA,EAAAT,mCAAA,CAAAD,qBAAA,EACjC7B,OAAO,CAACwC,SAAS,EAAGvC,WAAW,CAACuC,SAAS,GAAAV,mCAAA,CAAAD,qBAAA,EACzC7B,OAAO,CAACyC,qBAAqB,EAAGxC,WAAW,CAACwC,qBAAqB,CAAA,EAAAX,mCAAA,CAAAD,qBAAA,EACjE7B,OAAO,CAAC0C,gBAAgB,EAAGzC,WAAW,CAACyC,gBAAgB,CAAA,EAAAb,qBAAA,CACzD,CAAA;AAAC,IAEIc,aAAa,GAAA,YAAA;EAKjB,SAAAA,aAAAA,CAAYC,cAAoC,EAAA;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA,CAAA;AAAAC,IAAAA,mCAAA,OAAAH,aAAA,CAAA,CAAA;IAAAb,mCAAA,CAAA,IAAA,EAAA,IAAA,EAFZ,IAAIiB,YAAY,EAAE,CAAA,CAAA;IAGpD,IAAI,CAACH,cAAc,GAAGA,cAAc,CAAA;AACpC,IAAA,IAAI,CAACI,MAAM,GAAG,IAAIC,aAAY,EAAE,CAAA;AAChC,IAAA,IAAI,CAACD,MAAM,CAACE,SAAS,GAAG,UAACC,CAAsC,EAAI;AACjE,MAAA,IAAMC,OAAO,GAA0BD,CAAC,CAACE,IAAI,CAAA;AAC7C,MAAA,IAAID,OAAO,CAACE,IAAI,KAAKC,SAAS,EAAE;AAC9B,QAAA,IAAMC,KAAK,GAAG5B,yBAAyB,CAACwB,OAAO,CAACE,IAAI,CAAC,CAAA;AACrDT,QAAAA,KAAI,CAACY,EAAE,CAACC,IAAI,CAACF,KAAK,EAAE;AAAEH,UAAAA,IAAI,EAAED,OAAAA;AAAO,SAAE,CAAC,CAAA;AACvC,OAAA;KACF,CAAA;AACH,GAAA;AAACO,EAAAA,gCAAA,CAAAhB,aAAA,EAAA,CAAA;IAAAiB,GAAA,EAAA,kBAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAAC,iBAAA,GAAAC,qCAAA,EAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAC,OAAAA,CAAuBC,MAAc,EAAA;AAAA,QAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AAAA,QAAA,OAAAJ,uCAAA,CAAAK,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA;AAAA,YAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,cAAA,KAAA,CAAA;gBAAA,OAAAF,QAAA,CAAAG,MAAA,CAC5B,QAAA,EAAA,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,kBAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAAsC;AAAA,oBAAA,IAAhC1B,IAAI,GAAA0B,IAAA,CAAJ1B,IAAI,CAAA;oBACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,oBAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjBL,sBAAAA,OAAO,CAACI,GAAG,CAACE,OAAO,IAAI,EAAE,CAAC,CAAA;AAC3B,qBAAA,MAAM;AACLL,sBAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,qBAAA;mBACF,CAAA;AAED,kBAAA,IAAMC,YAAY,GAA8C;oBAC9D9B,IAAI,EAAEtD,OAAO,CAAC0C,gBAAgB;AAC9BW,oBAAAA,IAAI,EAAE;AAAEc,sBAAAA,MAAM,EAANA,MAAAA;AAAQ,qBAAA;mBACjB,CAAA;kBAEDC,MAAI,CAACX,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACyC,gBAAgB,EAAEoC,MAAM,CAAC,CAAA;kBAC5DV,MAAI,CAACX,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACyC,gBAAgB,EAAEoC,MAAM,CAAC,CAAA;AAEzDV,kBAAAA,MAAI,CAACpB,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,iBAAC,CAAC,CAAA,CAAA;AAAA,cAAA,KAAA,CAAA,CAAA;AAAA,cAAA,KAAA,KAAA;gBAAA,OAAAb,QAAA,CAAAiB,IAAA,EAAA,CAAA;AAAA,aAAA;AAAA,WAAA;AAAA,SAAA,EAAAtB,OAAA,CAAA,CAAA;OACH,CAAA,CAAA,CAAA;AAAA,MAAA,SAAAuB,iBAAAC,EAAA,EAAA;AAAA,QAAA,OAAA5B,iBAAA,CAAA6B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAAH,gBAAA,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAA7B,GAAA,EAAA,MAAA;IAAAC,KAAA,EAED,SAAAgC,IAAAA,GAAI;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AACF,MAAA,OAAO,IAAInB,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAiB,KAAA,EAAsC;AAAA,UAAA,IAAhC1C,IAAI,GAAA0C,KAAA,CAAJ1C,IAAI,CAAA;AACpB2C,UAAAA,OAAO,CAACC,GAAG,CAAC,aAAa,EAAE5C,IAAI,CAAC,CAAA;UAChC,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAe;cACzBC,aAAa,EAAEnB,GAAG,CAACE,OAAO;AAC1BkB,cAAAA,aAAa,EAAE,EAAE;AACjBC,cAAAA,WAAW,EAAE,IAAA;aACd,CAAA;YACDzB,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAEDW,MAAI,CAACrC,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAAC8B,IAAI,EAAE+C,MAAM,CAAC,CAAA;QAChDgB,MAAI,CAACrC,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAAC8B,IAAI,EAAE+C,MAAM,CAAC,CAAA;AAE7CgB,QAAAA,MAAI,CAAC9C,MAAM,CAACuC,WAAW,CAAC;UAAEjC,IAAI,EAAEtD,OAAO,CAAC+B,IAAAA;AAAI,SAAE,CAAC,CAAA;AACjD,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAA6B,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAyC,OAAAA,CACEjD,IAAiB,EACjBkD,OAA8B,EAAA;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAuBC,YAAY,GAAapD,IAAI,CAA5CqD,aAAa;QAAgBvC,MAAM,GAAKd,IAAI,CAAfc,MAAM,CAAA;AAC3C,MAAA,IAAM9D,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAA6B,KAAA,EAAsC;AAAA,UAAA,IAAhCtD,IAAI,GAAAsD,KAAA,CAAJtD,IAAI,CAAA;AACpB2C,UAAAA,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAE5C,IAAI,CAAC,CAAA;UACnC,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAkB;cAC5B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;AACnB7E,cAAAA,MAAM,EAAEoG,YAAAA;aACT,CAAA;YACD7B,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfL,EAAAA,EAAAA,MAAI,CAAC5D,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAuB;AACtC3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAAqC;UACrD9B,IAAI,EAAEtD,OAAO,CAACgC,OAAO;AACrBqB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDN,MAAI,CAAC/C,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAAC+B,OAAO,EAAE8C,MAAM,CAAC,CAAA;QACnD0B,MAAI,CAAC/C,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAAC+B,OAAO,EAAE8C,MAAM,CAAC,CAAA;AAEhD0B,QAAAA,MAAI,CAACxD,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAED,SAAAkD,MAAAA,CACE1D,IAAgB,EAChBkD,OAA8B,EAAA;AAAA,MAAA,IAAAS,MAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQ7C,MAAM,GAAkCd,IAAI,CAA5Cc,MAAM;QAAiBsC,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AAC7B,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAmC,KAAA,EAAsC;AAAA,UAAA,IAAhC5D,IAAI,GAAA4D,KAAA,CAAJ5D,IAAI,CAAA;AACpB2C,UAAAA,OAAO,CAACC,GAAG,CAAC,eAAe,EAAE5C,IAAI,CAAC,CAAA;UAClC,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAiB;cAC3B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfG,EAAAA,EAAAA,MAAI,CAACpE,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAsB;AACrC3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAAoC;UACpD9B,IAAI,EAAEtD,OAAO,CAACiC,MAAM;AACpBoB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDE,MAAI,CAACvD,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACgC,MAAM,EAAE6C,MAAM,CAAC,CAAA;QAClDkC,MAAI,CAACvD,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACgC,MAAM,EAAE6C,MAAM,CAAC,CAAA;AAE/CkC,QAAAA,MAAI,CAAChE,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAED,SAAAqD,KAAAA,CAAM7D,IAAe,EAAEkD,OAA8B,EAAA;AAAA,MAAA,IAAAY,MAAA,GAAA,IAAA,CAAA;AACnD,MAAA,IAAQhD,MAAM,GAA4Cd,IAAI,CAAtDc,MAAM;QAAEiD,QAAQ,GAAkC/D,IAAI,CAA9C+D,QAAQ;QAAiBX,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AACvC,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAuC,KAAA,EAAsC;AAAA,UAAA,IAAhChE,IAAI,GAAAgE,KAAA,CAAJhE,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAgB;cAC1B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfM,EAAAA,EAAAA,MAAI,CAACvE,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAqB;AACpC3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAc;UACvBU,aAAa,EAAEF,QAAQ,IAAI,EAAA;SAC5B,CAAA;AAED,QAAA,IAAMhC,YAAY,GAAmC;UACnD9B,IAAI,EAAEtD,OAAO,CAACkC,KAAK;AACnBmB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDK,MAAI,CAAC1D,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACiC,KAAK,EAAE4C,MAAM,CAAC,CAAA;QACjDqC,MAAI,CAAC1D,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACiC,KAAK,EAAE4C,MAAM,CAAC,CAAA;AAE9CqC,QAAAA,MAAI,CAACnE,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAED,SAAA0D,SAAAA,CACElE,IAAmB,EACnBkD,OAA8B,EAAA;AAAA,MAAA,IAAAiB,MAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQrD,MAAM,GAAkCd,IAAI,CAA5Cc,MAAM;QAAiBsC,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AAC7B,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAA2C,KAAA,EAAsC;AAAA,UAAA,IAAhCpE,IAAI,GAAAoE,KAAA,CAAJpE,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAoB;cAC9B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfW,EAAAA,EAAAA,MAAI,CAAC5E,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAyB;AACxC3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAAuC;UACvD9B,IAAI,EAAEtD,OAAO,CAACmC,SAAS;AACvBkB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDU,MAAI,CAAC/D,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACkC,SAAS,EAAE2C,MAAM,CAAC,CAAA;QACrD0C,MAAI,CAAC/D,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACkC,SAAS,EAAE2C,MAAM,CAAC,CAAA;AAElD0C,QAAAA,MAAI,CAACxE,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAED,SAAA6D,WAAAA,CACErE,IAAqB,EACrBkD,OAA8B,EAAA;AAAA,MAAA,IAAAoB,MAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQxD,MAAM,GAAkCd,IAAI,CAA5Cc,MAAM;QAAiBsC,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AAC7B,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAA8C,KAAA,EAAsC;AAAA,UAAA,IAAhCvE,IAAI,GAAAuE,KAAA,CAAJvE,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAoB;cAC9B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfc,EAAAA,EAAAA,MAAI,CAAC/E,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAA2B;AAC1C3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAAyC;UACzD9B,IAAI,EAAEtD,OAAO,CAACoC,WAAW;AACzBiB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDa,MAAI,CAAClE,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACmC,WAAW,EAAE0C,MAAM,CAAC,CAAA;QACvD6C,MAAI,CAAClE,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACmC,WAAW,EAAE0C,MAAM,CAAC,CAAA;AAEpD6C,QAAAA,MAAI,CAAC3E,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAED,SAAAgE,YAAAA,CACExE,IAAsB,EACtBkD,OAA8B,EAAA;AAAA,MAAA,IAAAuB,MAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQ3D,MAAM,GAAkCd,IAAI,CAA5Cc,MAAM;QAAiBsC,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AAC7B,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAiD,KAAA,EAAsC;AAAA,UAAA,IAAhC1E,IAAI,GAAA0E,KAAA,CAAJ1E,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAuB;cACjC/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfiB,EAAAA,EAAAA,MAAI,CAAClF,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAA4B;AAC3C3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACNkG,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAA0C;UAC1D9B,IAAI,EAAEtD,OAAO,CAACqC,YAAY;AAC1BgB,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDgB,MAAI,CAACrE,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACoC,YAAY,EAAEyC,MAAM,CAAC,CAAA;QACxDgD,MAAI,CAACrE,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACoC,YAAY,EAAEyC,MAAM,CAAC,CAAA;AAErDgD,QAAAA,MAAI,CAAC9E,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAmE,OAAAA,CACE3E,IAAiB,EACjBkD,OAA8B,EAAA;AAAA,MAAA,IAAA0B,OAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQC,IAAI,GAA0C7E,IAAI,CAAlD6E,IAAI;QAAE/D,MAAM,GAAkCd,IAAI,CAA5Cc,MAAM;QAAiBsC,YAAY,GAAKpD,IAAI,CAApCqD,aAAa,CAAA;AACnC,MAAA,IAAMrG,MAAM,GAAGF,6BAA6B,CAACsG,YAAY,CAAC,CAAA;AAE1D,MAAA,OAAO,IAAI9B,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAqD,KAAA,EAAsC;AAAA,UAAA,IAAhC9E,IAAI,GAAA8E,KAAA,CAAJ9E,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjB,YAAA,IAAMiB,MAAM,GAAkB;cAC5B/B,MAAM,EAAEa,GAAG,CAACE,OAAO;cACnB7E,MAAM,EAAEC,4BAAgB,CAACC,GAAAA;aAC1B,CAAA;YACDqE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfoB,EAAAA,EAAAA,OAAI,CAACrF,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAuB;AACtC3C,UAAAA,MAAM,EAANA,MAAM;AACN9D,UAAAA,MAAM,EAANA,MAAM;AACN6H,UAAAA,IAAI,EAAJA,IAAI;AACJ3B,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAA0C;UAC1D9B,IAAI,EAAEtD,OAAO,CAACsC,OAAO;AACrBe,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDmB,OAAI,CAACxE,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACqC,OAAO,EAAEwC,MAAM,CAAC,CAAA;QACnDmD,OAAI,CAACxE,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACqC,OAAO,EAAEwC,MAAM,CAAC,CAAA;AAEhDmD,QAAAA,OAAI,CAACjF,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuE,KAAAA,CAAM/E,IAAe,EAAEkD,OAA8B,EAAA;AAAA,MAAA,IAAA8B,OAAA,GAAA,IAAA,CAAA;AACnD,MAAA,IAAQC,KAAK,GAAajF,IAAI,CAAtBiF,KAAK;QAAEnE,MAAM,GAAKd,IAAI,CAAfc,MAAM,CAAA;AAErB,MAAA,OAAO,IAAIQ,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAyD,MAAA,EAAsC;AAAA,UAAA,IAAhClF,IAAI,GAAAkF,MAAA,CAAJlF,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;YACjB,IAAMuD,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAC1D,GAAG,CAACE,OAAO,CAAiB,CAAA;AAExD,YAAA,IAAMgB,MAAM,GAAgByC,MAAM,CAACC,OAAO,CAACJ,QAAQ,CAAC,CAACK,MAAM,CACzD,UAACC,GAAG,EAAEC,IAAI,EAAI;AACZ,cAAA,IAAAC,KAAA,GAAAC,kCAAA,CAAqBF,IAAI,EAAA,CAAA,CAAA;AAAlBnF,gBAAAA,GAAG,GAAAoF,KAAA,CAAA,CAAA,CAAA;AAAEnF,gBAAAA,KAAK,GAAAmF,KAAA,CAAA,CAAA,CAAA,CAAA;AACjB,cAAA,IAAME,kBAAkB,GAAGxH,eAAe,CAACkC,GAAG,CAAC,CAAA;AAC/CkF,cAAAA,GAAG,CAACI,kBAAkB,CAAC,GAAGrF,KAAK,CAAA;AAE/B,cAAA,OAAOiF,GAAG,CAAA;aACX,EACD,EAAE,CACH,CAAA;YACDlE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfwB,EAAAA,EAAAA,OAAI,CAACzF,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAqB;AACpC3C,UAAAA,MAAM,EAANA,MAAM;AACNmE,UAAAA,KAAK,EAALA,KAAK;AACL/B,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAAmC;UACnD9B,IAAI,EAAEtD,OAAO,CAACuC,KAAK;AACnBc,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDuB,OAAI,CAAC5E,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACsC,KAAK,EAAEuC,MAAM,CAAC,CAAA;QACjDuD,OAAI,CAAC5E,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACsC,KAAK,EAAEuC,MAAM,CAAC,CAAA;AAE9CuD,QAAAA,OAAI,CAACrF,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAED,SAAAsF,SAAAA,CACE9F,IAAmB,EACnBkD,OAA8B,EAAA;AAAA,MAAA,IAAA6C,OAAA,GAAA,IAAA,CAAA;AAE9B,MAAA,IAAQC,UAAU,GAAuBhG,IAAI,CAArCgG,UAAU;QAAElF,MAAM,GAAed,IAAI,CAAzBc,MAAM;QAAEiD,QAAQ,GAAK/D,IAAI,CAAjB+D,QAAQ,CAAA;AACpC,MAAA,OAAO,IAAIzC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAwE,MAAA,EAAsC;AAAA,UAAA,IAAhCjG,IAAI,GAAAiG,MAAA,CAAJjG,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;YACjB,IAAMsE,oBAAoB,GAAoBd,IAAI,CAACC,KAAK,CAAC1D,GAAG,CAACE,OAAO,CAAC,CAAA;AACrE,YAAA,IAAMgB,MAAM,GAAoByC,MAAM,CAACC,OAAO,CAC5CW,oBAAoB,CACrB,CAACV,MAAM,CAAC,UAACC,GAAG,EAAEC,IAAI,EAAI;AACrB,cAAA,IAAAS,MAAA,GAAAP,kCAAA,CAAqBF,IAAI,EAAA,CAAA,CAAA;AAAlBnF,gBAAAA,GAAG,GAAA4F,MAAA,CAAA,CAAA,CAAA;AAAE3F,gBAAAA,KAAK,GAAA2F,MAAA,CAAA,CAAA,CAAA,CAAA;AACjB,cAAA,IAAMN,kBAAkB,GAAG3H,yBAAyB,CAClDqC,GAAqB,CACtB,CAAA;AACD,cAAA,IAAIyF,UAAU,CAACI,QAAQ,CAACP,kBAAkB,CAAC,EAAE;AAC3CJ,gBAAAA,GAAG,CAACI,kBAAkB,CAAC,GAAGrF,KAAK,CAAA;AAChC,eAAA;AAED,cAAA,OAAOiF,GAAG,CAAA;aACX,EAAE,EAAqB,CAAC,CAAA;YACzBlE,OAAO,CAACsB,MAAM,CAAC,CAAA;AAChB,WAAA,MAAM;AACLrB,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfuC,EAAAA,EAAAA,OAAI,CAACxG,cAAc,CACnB2D,EAAAA,OAAO,CACX,CAAA;AAED,QAAA,IAAMO,WAAW,GAAyB;AACxC3C,UAAAA,MAAM,EAANA,MAAM;AACNkF,UAAAA,UAAU,EAAVA,UAAU;AACV9C,UAAAA,OAAO,EAAEK,cAAc;UACvBU,aAAa,EAAEF,QAAQ,IAAI,EAAA;SAC5B,CAAA;AAED,QAAA,IAAMhC,YAAY,GAAuC;UACvD9B,IAAI,EAAEtD,OAAO,CAACwC,SAAS;AACvBa,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDsC,OAAI,CAAC3F,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACuC,SAAS,EAAEsC,MAAM,CAAC,CAAA;QACrDsE,OAAI,CAAC3F,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACuC,SAAS,EAAEsC,MAAM,CAAC,CAAA;AAElDsE,QAAAA,OAAI,CAACpG,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAxB,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAED,SAAA6F,SAAAA,CAAUC,KAAW,EAAEC,QAAgB,EAAA;MACrC,OAAOjF,OAAO,CAACE,MAAM,CAAC,IAAIvD,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAA;AACtE,KAAA;AAAC,GAAA,EAAA;IAAAsC,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAgG,qBACExG,CAAAA,IAAY,EAIX;AAAA,MAAA,IAAAyG,OAAA,GAAA,IAAA,CAAA;MAAA,IAHDvD,OAAgC,GAAAX,SAAA,CAAAmE,MAAA,GAAAnE,CAAAA,IAAAA,SAAA,CAAArC,CAAAA,CAAAA,KAAAA,SAAA,GAAAqC,SAAA,CAAA,CAAA,CAAA,GAAA;AAC9Ba,QAAAA,YAAY,EAAE,KAAK;AACnBuD,QAAAA,eAAe,EAAE,EAAA;OAClB,CAAA;AAED,MAAA,IAAQvD,YAAY,GAAsCF,OAAO,CAAzDE,YAAY;QAAEuD,eAAe,GAAqBzD,OAAO,CAA3CyD,eAAe;AAAKC,QAAAA,WAAW,GAAAC,4CAAA,CAAK3D,OAAO,EAAA4D,SAAA,CAAA,CAAA;AACjE,MAAA,OAAO,IAAIxF,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;AACrC,QAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAsF,MAAA,EAAsC;AAAA,UAAA,IAAhC/G,IAAI,GAAA+G,MAAA,CAAJ/G,IAAI,CAAA;UACpB,IAAM2B,GAAG,GAA0B3B,IAAI,CAAA;AACvC,UAAA,IAAI,CAAC2B,GAAG,CAACC,QAAQ,EAAE;AACjBL,YAAAA,OAAO,CAACI,GAAG,CAACE,OAAO,CAAC,CAAA;AACrB,WAAA,MAAM;AACLL,YAAAA,MAAM,CAACG,GAAG,CAACG,KAAK,CAAC,CAAA;AAClB,WAAA;SACF,CAAA;QAED,IAAMyB,cAAc,GAAAC,aAAA,CAAAA,aAAA,CACfiD,EAAAA,EAAAA,OAAI,CAAClH,cAAc,CACnBqH,EAAAA,WAAW,CACf,CAAA;AAED,QAAA,IAAMnD,WAAW,GAA6B;AAC5C3C,UAAAA,MAAM,EAAEd,IAAI;UACZoD,YAAY,EAAEA,YAAY,IAAI,KAAK;AACnCuD,UAAAA,eAAe,EAAfA,eAAe;AACfzD,UAAAA,OAAO,EAAEK,cAAAA;SACV,CAAA;AAED,QAAA,IAAMxB,YAAY,GAA2C;UAC3D9B,IAAI,EAAEtD,OAAO,CAACyC,qBAAqB;AACnCY,UAAAA,IAAI,EAAEyD,WAAAA;SACP,CAAA;QAEDgD,OAAI,CAACrG,EAAE,CAAC4B,cAAc,CAACpF,WAAW,CAACwC,qBAAqB,EAAEqC,MAAM,CAAC,CAAA;QACjEgF,OAAI,CAACrG,EAAE,CAAC6B,WAAW,CAACrF,WAAW,CAACwC,qBAAqB,EAAEqC,MAAM,CAAC,CAAA;AAE9DgF,QAAAA,OAAI,CAAC9G,MAAM,CAACuC,WAAW,CAACH,YAAY,CAAC,CAAA;AACvC,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,EAAA,OAAAzC,aAAA,CAAA;AAAA,CAAA;;AC9pB6D,IAE1D0H,+BAA+B,GAAA,YAAA;AAAA,EAAA,SAAAA,+BAAA,GAAA;AAAAvH,IAAAA,mCAAA,OAAAuH,+BAAA,CAAA,CAAA;AAAAvI,IAAAA,mCAAA,eACf,YAAY,CAAA,CAAA;AAAA,GAAA;AAAA6B,EAAAA,gCAAA,CAAA0G,+BAAA,EAAA,CAAA;IAAAzG,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAEhC,SAAAyG,mBAAoB/D,CAAAA,OAA6B,EAAA;AAC/C,MAAA,OAAO,IAAIgE,aAAuB,CAAChE,OAAO,CAAC,CAAA;AAC7C,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA8D,+BAAA,CAAA;AAAA,CAAA;;;;;"}
|
package/dist/index.modern.js
CHANGED
|
@@ -725,6 +725,7 @@ var IndigoService = function () {
|
|
|
725
725
|
return new Promise(function (resolve, reject) {
|
|
726
726
|
var action = function action(_ref2) {
|
|
727
727
|
var data = _ref2.data;
|
|
728
|
+
console.log('info action', data);
|
|
728
729
|
var msg = data;
|
|
729
730
|
if (!msg.hasError) {
|
|
730
731
|
var result = {
|
|
@@ -754,6 +755,7 @@ var IndigoService = function () {
|
|
|
754
755
|
return new Promise(function (resolve, reject) {
|
|
755
756
|
var action = function action(_ref3) {
|
|
756
757
|
var data = _ref3.data;
|
|
758
|
+
console.log('convert action', data);
|
|
757
759
|
var msg = data;
|
|
758
760
|
if (!msg.hasError) {
|
|
759
761
|
var result = {
|
|
@@ -790,6 +792,7 @@ var IndigoService = function () {
|
|
|
790
792
|
return new Promise(function (resolve, reject) {
|
|
791
793
|
var action = function action(_ref4) {
|
|
792
794
|
var data = _ref4.data;
|
|
795
|
+
console.log('layout action', data);
|
|
793
796
|
var msg = data;
|
|
794
797
|
if (!msg.hasError) {
|
|
795
798
|
var result = {
|
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/infrastructure/services/struct/indigoWorker.types.ts","../../../node_modules/rollup-plugin-node-polyfills/polyfills/events.js","../src/infrastructure/services/struct/standaloneStructService.ts","../src/infrastructure/services/struct/standaloneStructServiceProvider.ts"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// TODO add typings for Indigo standalone object\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type IndigoStandalone = any;\n\nexport const enum Command {\n Info,\n Convert,\n Layout,\n Clean,\n Aromatize,\n Dearomatize,\n CalculateCip,\n Automap,\n Check,\n Calculate,\n GenerateImageAsBase64,\n GenerateInchIKey,\n}\n\nexport const enum WorkerEvent {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64',\n GenerateInchIKey = 'generateInchIKey',\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n Ket = 'ket',\n CDX = 'cdx',\n CDXML = 'cdxml',\n}\n\nexport interface WithStruct {\n struct: string;\n}\n\nexport interface WithFormat {\n format: SupportedFormat;\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>;\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CommandData {\n options?: CommandOptions;\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>;\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateInchIKeyCommandData extends CommandData, WithStruct {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg';\n backgroundColor?: string;\n}\n\nexport interface LayoutCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection,\n WithFormat {}\n\nexport interface AromatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface DearomatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCipCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport type CalculateProps =\n | 'molecular-weight'\n | 'most-abundant-mass'\n | 'monoisotopic-mass'\n | 'gross'\n | 'gross-formula'\n | 'mass-composition';\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>;\n}\n\nexport interface AutomapCommandData\n extends CommandData,\n WithStruct,\n WithFormat {\n mode: string;\n}\n\ninterface OutputMessageBase {\n type?: Command;\n hasError?: boolean;\n}\n\ninterface OutputMessageWithError extends OutputMessageBase {\n hasError: true;\n error: string;\n}\n\ninterface OutputMessageWithoutError<T> extends OutputMessageBase {\n hasError?: false;\n payload: T;\n}\n\nexport type OutputMessage<T> =\n | OutputMessageWithError\n | OutputMessageWithoutError<T>;\n\nexport interface InputMessage<T> {\n type: Command;\n data: T;\n}\n\nexport interface OutputMessageWrapper<T = string> {\n data: OutputMessage<T>;\n}\n","'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CalculateProps,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n WorkerEvent,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n GenerateInchIKeyCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat,\n OutputMessageWrapper,\n} from './indigoWorker.types';\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions,\n} from 'ketcher-core';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./indigoWorker';\nimport EventEmitter from 'events';\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object;\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType,\n): SupportedFormat {\n let format: SupportedFormat;\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol;\n break;\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn;\n break;\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles;\n break;\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts;\n break;\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI;\n break;\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo;\n break;\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML;\n break;\n }\n case ChemicalMimeType.KET: {\n format = SupportedFormat.Ket;\n break;\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML;\n break;\n }\n case ChemicalMimeType.CDX: {\n format = SupportedFormat.CDX;\n break;\n }\n case ChemicalMimeType.UNKNOWN:\n default: {\n throw new Error('Unsupported chemical mime type');\n }\n }\n\n return format;\n}\n\nfunction mapCalculatedPropertyName(property: CalculateProps) {\n let mappedProperty: CalculateProps | undefined;\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross';\n break;\n }\n default:\n mappedProperty = property;\n break;\n }\n\n return mappedProperty;\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined;\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds';\n break;\n }\n default:\n mappedProperty = property.toLowerCase();\n break;\n }\n\n return mappedProperty;\n}\n\nconst messageTypeToEventMapping: {\n [key in Command]: WorkerEvent;\n} = {\n [Command.Info]: WorkerEvent.Info,\n [Command.Convert]: WorkerEvent.Convert,\n [Command.Layout]: WorkerEvent.Layout,\n [Command.Clean]: WorkerEvent.Clean,\n [Command.Aromatize]: WorkerEvent.Aromatize,\n [Command.Dearomatize]: WorkerEvent.Dearomatize,\n [Command.CalculateCip]: WorkerEvent.CalculateCip,\n [Command.Automap]: WorkerEvent.Automap,\n [Command.Check]: WorkerEvent.Check,\n [Command.Calculate]: WorkerEvent.Calculate,\n [Command.GenerateImageAsBase64]: WorkerEvent.GenerateImageAsBase64,\n [Command.GenerateInchIKey]: WorkerEvent.GenerateInchIKey,\n};\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions;\n private readonly worker: IndigoWorker;\n private readonly EE: EventEmitter = new EventEmitter();\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions;\n this.worker = new IndigoWorker();\n this.worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n const message: OutputMessage<string> = e.data;\n if (message.type !== undefined) {\n const event = messageTypeToEventMapping[message.type];\n this.EE.emit(event, { data: message });\n }\n };\n }\n\n async generateInchIKey(struct: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload || '');\n } else {\n reject(msg.error);\n }\n };\n\n const inputMessage: InputMessage<GenerateInchIKeyCommandData> = {\n type: Command.GenerateInchIKey,\n data: { struct },\n };\n\n this.EE.removeListener(WorkerEvent.GenerateInchIKey, action);\n this.EE.addListener(WorkerEvent.GenerateInchIKey, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('info action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload,\n imagoVersions: [],\n isAvailable: true,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n this.EE.removeListener(WorkerEvent.Info, action);\n this.EE.addListener(WorkerEvent.Info, action);\n\n this.worker.postMessage({ type: Command.Info });\n });\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions,\n ): Promise<ConvertResult> {\n const { output_format: outputFormat, struct } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('convert action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload,\n format: outputFormat,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Convert, action);\n this.EE.addListener(WorkerEvent.Convert, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions,\n ): Promise<LayoutResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('layout action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: LayoutCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Layout, action);\n this.EE.addListener(WorkerEvent.Layout, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CleanCommandData = {\n struct,\n format,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Clean, action);\n this.EE.addListener(WorkerEvent.Clean, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions,\n ): Promise<AromatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AromatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Aromatize, action);\n this.EE.addListener(WorkerEvent.Aromatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions,\n ): Promise<DearomatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: DearomatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Dearomatize, action);\n this.EE.addListener(WorkerEvent.Dearomatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions,\n ): Promise<CalculateCipResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCipCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.CalculateCip, action);\n this.EE.addListener(WorkerEvent.CalculateCip, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions,\n ): Promise<AutomapResult> {\n const { mode, struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AutomapCommandData = {\n struct,\n format,\n mode,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Automap, action);\n this.EE.addListener(WorkerEvent.Automap, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data;\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload) as KeyValuePair;\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapWarningGroup(key);\n acc[mappedPropertyName] = value;\n\n return acc;\n },\n {},\n );\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Check, action);\n this.EE.addListener(WorkerEvent.Check, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions,\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const calculatedProperties: CalculateResult = JSON.parse(msg.payload);\n const result: CalculateResult = Object.entries(\n calculatedProperties,\n ).reduce((acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapCalculatedPropertyName(\n key as CalculateProps,\n );\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value;\n }\n\n return acc;\n }, {} as CalculateResult);\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Calculate, action);\n this.EE.addListener(WorkerEvent.Calculate, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n recognize(_blob: Blob, _version: string): Promise<RecognizeResult> {\n return Promise.reject(new Error('Not supported in standalone mode'));\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = {\n outputFormat: 'png',\n backgroundColor: '',\n },\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions,\n };\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n backgroundColor,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.GenerateImageAsBase64, action);\n this.EE.addListener(WorkerEvent.GenerateImageAsBase64, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n}\n\nexport default IndigoService;\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider,\n} from 'ketcher-core';\n\nimport StandaloneStructService from './standaloneStructService';\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone';\n\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options);\n }\n}\nexport default StandaloneStructServiceProvider;\n"],"names":["Command","WorkerEvent","SupportedFormat","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","KET","Ket","CDXML","CDX","UNKNOWN","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","messageTypeToEventMapping","_messageTypeToEventMa","_defineProperty","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_this","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_createClass","key","value","_generateInchIKey","_asyncToGenerator","_regeneratorRuntime","mark","_callee","struct","_this2","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","action","_ref","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","stop","generateInchIKey","_x","apply","arguments","info","_this3","_ref2","result","indigoVersion","imagoVersions","isAvailable","convert","options","_this4","outputFormat","output_format","_ref3","commandOptions","_objectSpread","commandData","layout","_this5","_ref4","clean","_this6","selected","_ref5","selectedAtoms","aromatize","_this7","_ref6","dearomatize","_this8","_ref7","calculateCip","_this9","_ref8","automap","_this10","mode","_ref9","check","_this11","types","_ref10","warnings","JSON","parse","Object","entries","reduce","acc","curr","_curr","_slicedToArray","mappedPropertyName","calculate","_this12","properties","_ref11","calculatedProperties","_curr2","includes","recognize","_blob","_version","generateImageAsBase64","_this13","length","backgroundColor","restOptions","_objectWithoutProperties","_excluded","_ref12","StandaloneStructServiceProvider","createStructService","StandaloneStructService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/infrastructure/services/struct/indigoWorker.types.ts","../../../node_modules/rollup-plugin-node-polyfills/polyfills/events.js","../src/infrastructure/services/struct/standaloneStructService.ts","../src/infrastructure/services/struct/standaloneStructServiceProvider.ts"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// TODO add typings for Indigo standalone object\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type IndigoStandalone = any;\n\nexport const enum Command {\n Info,\n Convert,\n Layout,\n Clean,\n Aromatize,\n Dearomatize,\n CalculateCip,\n Automap,\n Check,\n Calculate,\n GenerateImageAsBase64,\n GenerateInchIKey,\n}\n\nexport const enum WorkerEvent {\n Info = 'info',\n Convert = 'convert',\n Layout = 'layout',\n Clean = 'clean',\n Aromatize = 'aromatize',\n Dearomatize = 'dearomatize',\n CalculateCip = 'calculateCip',\n Automap = 'automap',\n Check = 'check',\n Calculate = 'calculate',\n GenerateImageAsBase64 = 'generateImageAsBase64',\n GenerateInchIKey = 'generateInchIKey',\n}\n\nexport enum SupportedFormat {\n Rxn = 'rxnfile',\n Mol = 'molfile',\n Smiles = 'smiles',\n Smarts = 'smarts',\n CML = 'cml',\n InChI = 'inchi',\n InChIAuxInfo = 'inchi-aux',\n Ket = 'ket',\n CDX = 'cdx',\n CDXML = 'cdxml',\n}\n\nexport interface WithStruct {\n struct: string;\n}\n\nexport interface WithFormat {\n format: SupportedFormat;\n}\n\nexport interface WithSelection {\n selectedAtoms: Array<number>;\n}\n\nexport interface CommandOptions {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CommandData {\n options?: CommandOptions;\n}\n\nexport interface CheckCommandData extends CommandData, WithStruct {\n types: Array<string>;\n}\n\nexport interface ConvertCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface GenerateInchIKeyCommandData extends CommandData, WithStruct {}\n\nexport interface GenerateImageCommandData extends CommandData, WithStruct {\n outputFormat: 'png' | 'svg';\n backgroundColor?: string;\n}\n\nexport interface LayoutCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CleanCommandData\n extends CommandData,\n WithStruct,\n WithSelection,\n WithFormat {}\n\nexport interface AromatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface DearomatizeCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport interface CalculateCipCommandData\n extends CommandData,\n WithStruct,\n WithFormat {}\n\nexport type CalculateProps =\n | 'molecular-weight'\n | 'most-abundant-mass'\n | 'monoisotopic-mass'\n | 'gross'\n | 'gross-formula'\n | 'mass-composition';\n\nexport interface CalculateCommandData\n extends CommandData,\n WithStruct,\n WithSelection {\n properties: Array<string>;\n}\n\nexport interface AutomapCommandData\n extends CommandData,\n WithStruct,\n WithFormat {\n mode: string;\n}\n\ninterface OutputMessageBase {\n type?: Command;\n hasError?: boolean;\n}\n\ninterface OutputMessageWithError extends OutputMessageBase {\n hasError: true;\n error: string;\n}\n\ninterface OutputMessageWithoutError<T> extends OutputMessageBase {\n hasError?: false;\n payload: T;\n}\n\nexport type OutputMessage<T> =\n | OutputMessageWithError\n | OutputMessageWithoutError<T>;\n\nexport interface InputMessage<T> {\n type: Command;\n data: T;\n}\n\nexport interface OutputMessageWrapper<T = string> {\n data: OutputMessage<T>;\n}\n","'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n AromatizeCommandData,\n AutomapCommandData,\n CalculateCipCommandData,\n CalculateCommandData,\n CalculateProps,\n CheckCommandData,\n CleanCommandData,\n Command,\n CommandOptions,\n WorkerEvent,\n ConvertCommandData,\n DearomatizeCommandData,\n GenerateImageCommandData,\n GenerateInchIKeyCommandData,\n InputMessage,\n LayoutCommandData,\n OutputMessage,\n SupportedFormat,\n OutputMessageWrapper,\n} from './indigoWorker.types';\nimport {\n AromatizeData,\n AromatizeResult,\n AutomapData,\n AutomapResult,\n CalculateCipData,\n CalculateCipResult,\n CalculateData,\n CalculateResult,\n CheckData,\n CheckResult,\n ChemicalMimeType,\n CleanData,\n CleanResult,\n ConvertData,\n ConvertResult,\n DearomatizeData,\n DearomatizeResult,\n GenerateImageOptions,\n InfoResult,\n LayoutData,\n LayoutResult,\n RecognizeResult,\n StructService,\n StructServiceOptions,\n} from 'ketcher-core';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport IndigoWorker from 'web-worker:./indigoWorker';\nimport EventEmitter from 'events';\n\ninterface KeyValuePair {\n [key: string]: number | string | boolean | object;\n}\n\nfunction convertMimeTypeToOutputFormat(\n mimeType: ChemicalMimeType,\n): SupportedFormat {\n let format: SupportedFormat;\n switch (mimeType) {\n case ChemicalMimeType.Mol: {\n format = SupportedFormat.Mol;\n break;\n }\n case ChemicalMimeType.Rxn: {\n format = SupportedFormat.Rxn;\n break;\n }\n case ChemicalMimeType.DaylightSmiles:\n case ChemicalMimeType.ExtendedSmiles: {\n format = SupportedFormat.Smiles;\n break;\n }\n case ChemicalMimeType.DaylightSmarts: {\n format = SupportedFormat.Smarts;\n break;\n }\n case ChemicalMimeType.InChI: {\n format = SupportedFormat.InChI;\n break;\n }\n case ChemicalMimeType.InChIAuxInfo: {\n format = SupportedFormat.InChIAuxInfo;\n break;\n }\n case ChemicalMimeType.CML: {\n format = SupportedFormat.CML;\n break;\n }\n case ChemicalMimeType.KET: {\n format = SupportedFormat.Ket;\n break;\n }\n case ChemicalMimeType.CDXML: {\n format = SupportedFormat.CDXML;\n break;\n }\n case ChemicalMimeType.CDX: {\n format = SupportedFormat.CDX;\n break;\n }\n case ChemicalMimeType.UNKNOWN:\n default: {\n throw new Error('Unsupported chemical mime type');\n }\n }\n\n return format;\n}\n\nfunction mapCalculatedPropertyName(property: CalculateProps) {\n let mappedProperty: CalculateProps | undefined;\n switch (property) {\n case 'gross-formula': {\n mappedProperty = 'gross';\n break;\n }\n default:\n mappedProperty = property;\n break;\n }\n\n return mappedProperty;\n}\n\nfunction mapWarningGroup(property: string) {\n let mappedProperty: string | undefined;\n switch (property) {\n case 'OVERLAP_BOND': {\n mappedProperty = 'overlapping_bonds';\n break;\n }\n default:\n mappedProperty = property.toLowerCase();\n break;\n }\n\n return mappedProperty;\n}\n\nconst messageTypeToEventMapping: {\n [key in Command]: WorkerEvent;\n} = {\n [Command.Info]: WorkerEvent.Info,\n [Command.Convert]: WorkerEvent.Convert,\n [Command.Layout]: WorkerEvent.Layout,\n [Command.Clean]: WorkerEvent.Clean,\n [Command.Aromatize]: WorkerEvent.Aromatize,\n [Command.Dearomatize]: WorkerEvent.Dearomatize,\n [Command.CalculateCip]: WorkerEvent.CalculateCip,\n [Command.Automap]: WorkerEvent.Automap,\n [Command.Check]: WorkerEvent.Check,\n [Command.Calculate]: WorkerEvent.Calculate,\n [Command.GenerateImageAsBase64]: WorkerEvent.GenerateImageAsBase64,\n [Command.GenerateInchIKey]: WorkerEvent.GenerateInchIKey,\n};\n\nclass IndigoService implements StructService {\n private readonly defaultOptions: StructServiceOptions;\n private readonly worker: IndigoWorker;\n private readonly EE: EventEmitter = new EventEmitter();\n\n constructor(defaultOptions: StructServiceOptions) {\n this.defaultOptions = defaultOptions;\n this.worker = new IndigoWorker();\n this.worker.onmessage = (e: MessageEvent<OutputMessage<string>>) => {\n const message: OutputMessage<string> = e.data;\n if (message.type !== undefined) {\n const event = messageTypeToEventMapping[message.type];\n this.EE.emit(event, { data: message });\n }\n };\n }\n\n async generateInchIKey(struct: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload || '');\n } else {\n reject(msg.error);\n }\n };\n\n const inputMessage: InputMessage<GenerateInchIKeyCommandData> = {\n type: Command.GenerateInchIKey,\n data: { struct },\n };\n\n this.EE.removeListener(WorkerEvent.GenerateInchIKey, action);\n this.EE.addListener(WorkerEvent.GenerateInchIKey, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n info(): Promise<InfoResult> {\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('info action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: InfoResult = {\n indigoVersion: msg.payload,\n imagoVersions: [],\n isAvailable: true,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n this.EE.removeListener(WorkerEvent.Info, action);\n this.EE.addListener(WorkerEvent.Info, action);\n\n this.worker.postMessage({ type: Command.Info });\n });\n }\n\n convert(\n data: ConvertData,\n options?: StructServiceOptions,\n ): Promise<ConvertResult> {\n const { output_format: outputFormat, struct } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('convert action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: ConvertResult = {\n struct: msg.payload,\n format: outputFormat,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: ConvertCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<ConvertCommandData> = {\n type: Command.Convert,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Convert, action);\n this.EE.addListener(WorkerEvent.Convert, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n layout(\n data: LayoutData,\n options?: StructServiceOptions,\n ): Promise<LayoutResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n console.log('layout action', data);\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: LayoutResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: LayoutCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<LayoutCommandData> = {\n type: Command.Layout,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Layout, action);\n this.EE.addListener(WorkerEvent.Layout, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n clean(data: CleanData, options?: StructServiceOptions): Promise<CleanResult> {\n const { struct, selected, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CleanResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CleanCommandData = {\n struct,\n format,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CleanCommandData> = {\n type: Command.Clean,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Clean, action);\n this.EE.addListener(WorkerEvent.Clean, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n aromatize(\n data: AromatizeData,\n options?: StructServiceOptions,\n ): Promise<AromatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AromatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<AromatizeCommandData> = {\n type: Command.Aromatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Aromatize, action);\n this.EE.addListener(WorkerEvent.Aromatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n dearomatize(\n data: DearomatizeData,\n options?: StructServiceOptions,\n ): Promise<DearomatizeResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AromatizeResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: DearomatizeCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<DearomatizeCommandData> = {\n type: Command.Dearomatize,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Dearomatize, action);\n this.EE.addListener(WorkerEvent.Dearomatize, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculateCip(\n data: CalculateCipData,\n options?: StructServiceOptions,\n ): Promise<CalculateCipResult> {\n const { struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: CalculateCipResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCipCommandData = {\n struct,\n format,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.CalculateCip,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.CalculateCip, action);\n this.EE.addListener(WorkerEvent.CalculateCip, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n automap(\n data: AutomapData,\n options?: StructServiceOptions,\n ): Promise<AutomapResult> {\n const { mode, struct, output_format: outputFormat } = data;\n const format = convertMimeTypeToOutputFormat(outputFormat);\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const result: AutomapResult = {\n struct: msg.payload,\n format: ChemicalMimeType.Mol,\n };\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: AutomapCommandData = {\n struct,\n format,\n mode,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CalculateCipCommandData> = {\n type: Command.Automap,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Automap, action);\n this.EE.addListener(WorkerEvent.Automap, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n check(data: CheckData, options?: StructServiceOptions): Promise<CheckResult> {\n const { types, struct } = data;\n\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const warnings = JSON.parse(msg.payload) as KeyValuePair;\n\n const result: CheckResult = Object.entries(warnings).reduce(\n (acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapWarningGroup(key);\n acc[mappedPropertyName] = value;\n\n return acc;\n },\n {},\n );\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CheckCommandData = {\n struct,\n types,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<CheckCommandData> = {\n type: Command.Check,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Check, action);\n this.EE.addListener(WorkerEvent.Check, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n calculate(\n data: CalculateData,\n options?: StructServiceOptions,\n ): Promise<CalculateResult> {\n const { properties, struct, selected } = data;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n const calculatedProperties: CalculateResult = JSON.parse(msg.payload);\n const result: CalculateResult = Object.entries(\n calculatedProperties,\n ).reduce((acc, curr) => {\n const [key, value] = curr;\n const mappedPropertyName = mapCalculatedPropertyName(\n key as CalculateProps,\n );\n if (properties.includes(mappedPropertyName)) {\n acc[mappedPropertyName] = value;\n }\n\n return acc;\n }, {} as CalculateResult);\n resolve(result);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...options,\n };\n\n const commandData: CalculateCommandData = {\n struct,\n properties,\n options: commandOptions,\n selectedAtoms: selected || [],\n };\n\n const inputMessage: InputMessage<CalculateCommandData> = {\n type: Command.Calculate,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.Calculate, action);\n this.EE.addListener(WorkerEvent.Calculate, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n\n recognize(_blob: Blob, _version: string): Promise<RecognizeResult> {\n return Promise.reject(new Error('Not supported in standalone mode'));\n }\n\n generateImageAsBase64(\n data: string,\n options: GenerateImageOptions = {\n outputFormat: 'png',\n backgroundColor: '',\n },\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options;\n return new Promise((resolve, reject) => {\n const action = ({ data }: OutputMessageWrapper) => {\n const msg: OutputMessage<string> = data;\n if (!msg.hasError) {\n resolve(msg.payload);\n } else {\n reject(msg.error);\n }\n };\n\n const commandOptions: CommandOptions = {\n ...this.defaultOptions,\n ...restOptions,\n };\n\n const commandData: GenerateImageCommandData = {\n struct: data,\n outputFormat: outputFormat || 'png',\n backgroundColor,\n options: commandOptions,\n };\n\n const inputMessage: InputMessage<GenerateImageCommandData> = {\n type: Command.GenerateImageAsBase64,\n data: commandData,\n };\n\n this.EE.removeListener(WorkerEvent.GenerateImageAsBase64, action);\n this.EE.addListener(WorkerEvent.GenerateImageAsBase64, action);\n\n this.worker.postMessage(inputMessage);\n });\n }\n}\n\nexport default IndigoService;\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ServiceMode,\n StructService,\n StructServiceOptions,\n StructServiceProvider,\n} from 'ketcher-core';\n\nimport StandaloneStructService from './standaloneStructService';\n\nclass StandaloneStructServiceProvider implements StructServiceProvider {\n mode: ServiceMode = 'standalone';\n\n createStructService(options: StructServiceOptions): StructService {\n return new StandaloneStructService(options);\n }\n}\nexport default StandaloneStructServiceProvider;\n"],"names":["Command","WorkerEvent","SupportedFormat","convertMimeTypeToOutputFormat","mimeType","format","ChemicalMimeType","Mol","Rxn","DaylightSmiles","ExtendedSmiles","Smiles","DaylightSmarts","Smarts","InChI","InChIAuxInfo","CML","KET","Ket","CDXML","CDX","UNKNOWN","Error","mapCalculatedPropertyName","property","mappedProperty","mapWarningGroup","toLowerCase","messageTypeToEventMapping","_messageTypeToEventMa","_defineProperty","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_this","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_createClass","key","value","_generateInchIKey","_asyncToGenerator","_regeneratorRuntime","mark","_callee","struct","_this2","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","action","_ref","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","stop","generateInchIKey","_x","apply","arguments","info","_this3","_ref2","console","log","result","indigoVersion","imagoVersions","isAvailable","convert","options","_this4","outputFormat","output_format","_ref3","commandOptions","_objectSpread","commandData","layout","_this5","_ref4","clean","_this6","selected","_ref5","selectedAtoms","aromatize","_this7","_ref6","dearomatize","_this8","_ref7","calculateCip","_this9","_ref8","automap","_this10","mode","_ref9","check","_this11","types","_ref10","warnings","JSON","parse","Object","entries","reduce","acc","curr","_curr","_slicedToArray","mappedPropertyName","calculate","_this12","properties","_ref11","calculatedProperties","_curr2","includes","recognize","_blob","_version","generateImageAsBase64","_this13","length","backgroundColor","restOptions","_objectWithoutProperties","_excluded","_ref12","StandaloneStructServiceProvider","createStructService","StandaloneStructService"],"mappings":"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"}
|