ketcher-standalone 2.8.0-rc.3-dev.1 → 2.8.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 +0 -3
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +0 -3
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -739,7 +739,6 @@ 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);
|
|
743
742
|
var msg = data;
|
|
744
743
|
if (!msg.hasError) {
|
|
745
744
|
var result = {
|
|
@@ -769,7 +768,6 @@ var IndigoService = function () {
|
|
|
769
768
|
return new Promise(function (resolve, reject) {
|
|
770
769
|
var action = function action(_ref3) {
|
|
771
770
|
var data = _ref3.data;
|
|
772
|
-
console.log('convert action', data);
|
|
773
771
|
var msg = data;
|
|
774
772
|
if (!msg.hasError) {
|
|
775
773
|
var result = {
|
|
@@ -806,7 +804,6 @@ var IndigoService = function () {
|
|
|
806
804
|
return new Promise(function (resolve, reject) {
|
|
807
805
|
var action = function action(_ref4) {
|
|
808
806
|
var data = _ref4.data;
|
|
809
|
-
console.log('layout action', data);
|
|
810
807
|
var msg = data;
|
|
811
808
|
if (!msg.hasError) {
|
|
812
809
|
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\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\nexport interface OutputMessage<T> {\n type?: Command\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: 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} 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 }) => {\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 }) => {\n console.log('info action', data)\n const msg: OutputMessage<string> = data\n if (!msg.hasError) {\n const result: InfoResult = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: output_format\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 }) => {\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 }) => {\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 = { outputFormat: 'png', backgroundColor: '' }\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: 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","Info","_defineProperty","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_asyncToGenerator","_regeneratorRuntime","struct","Promise","resolve","reject","action","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","console","log","result","indigoVersion","imagoVersions","isAvailable","options","output_format","commandOptions","commandData","selected","selectedAtoms","mode","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","_slicedToArray","key","value","mappedPropertyName","properties","calculatedProperties","includes","_blob","_version","outputFormat","backgroundColor","restOptions","StandaloneStructServiceProvider","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\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\nexport interface OutputMessage<T> {\n type?: Command\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: 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} 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 }) => {\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 }) => {\n console.log('info action', data)\n const msg: OutputMessage<string> = data\n if (!msg.hasError) {\n const result: InfoResult = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: output_format\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 }) => {\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 }) => {\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 = { outputFormat: 'png', backgroundColor: '' }\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: 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","Info","_defineProperty","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","_classCallCheck","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","_asyncToGenerator","_regeneratorRuntime","struct","Promise","resolve","reject","action","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","result","indigoVersion","imagoVersions","isAvailable","options","output_format","commandOptions","commandData","selected","selectedAtoms","mode","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","_slicedToArray","key","value","mappedPropertyName","properties","calculatedProperties","includes","_blob","_version","outputFormat","backgroundColor","restOptions","StandaloneStructServiceProvider","StandaloneStructService"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -725,7 +725,6 @@ 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);
|
|
729
728
|
var msg = data;
|
|
730
729
|
if (!msg.hasError) {
|
|
731
730
|
var result = {
|
|
@@ -755,7 +754,6 @@ var IndigoService = function () {
|
|
|
755
754
|
return new Promise(function (resolve, reject) {
|
|
756
755
|
var action = function action(_ref3) {
|
|
757
756
|
var data = _ref3.data;
|
|
758
|
-
console.log('convert action', data);
|
|
759
757
|
var msg = data;
|
|
760
758
|
if (!msg.hasError) {
|
|
761
759
|
var result = {
|
|
@@ -792,7 +790,6 @@ var IndigoService = function () {
|
|
|
792
790
|
return new Promise(function (resolve, reject) {
|
|
793
791
|
var action = function action(_ref4) {
|
|
794
792
|
var data = _ref4.data;
|
|
795
|
-
console.log('layout action', data);
|
|
796
793
|
var msg = data;
|
|
797
794
|
if (!msg.hasError) {
|
|
798
795
|
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\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\nexport interface OutputMessage<T> {\n type?: Command\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: 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} 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 }) => {\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 }) => {\n console.log('info action', data)\n const msg: OutputMessage<string> = data\n if (!msg.hasError) {\n const result: InfoResult = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: output_format\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 }) => {\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 }) => {\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 = { outputFormat: 'png', backgroundColor: '' }\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: 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","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","struct","Promise","resolve","reject","action","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","console","log","result","indigoVersion","imagoVersions","isAvailable","options","output_format","commandOptions","commandData","selected","selectedAtoms","mode","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","key","value","mappedPropertyName","properties","calculatedProperties","includes","_blob","_version","outputFormat","backgroundColor","restOptions","StandaloneStructServiceProvider","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\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\nexport interface OutputMessage<T> {\n type?: Command\n hasError?: boolean\n payload?: T\n error?: string\n}\nexport interface InputMessage<T> {\n type: Command\n data: 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} 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 }) => {\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 }) => {\n console.log('info action', data)\n const msg: OutputMessage<string> = data\n if (!msg.hasError) {\n const result: InfoResult = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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, struct } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: output_format\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 } = data\n const format = convertMimeTypeToOutputFormat(output_format)\n\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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 }) => {\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 }) => {\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 = { outputFormat: 'png', backgroundColor: '' }\n ): Promise<string> {\n const { outputFormat, backgroundColor, ...restOptions } = options\n return new Promise((resolve, reject) => {\n const action = ({ data }) => {\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: 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","Info","Convert","Layout","Clean","Aromatize","Dearomatize","CalculateCip","Automap","Check","Calculate","GenerateImageAsBase64","GenerateInchIKey","IndigoService","defaultOptions","EventEmitter","worker","IndigoWorker","onmessage","e","message","data","type","undefined","event","EE","emit","struct","Promise","resolve","reject","action","msg","hasError","payload","error","inputMessage","removeListener","addListener","postMessage","result","indigoVersion","imagoVersions","isAvailable","options","output_format","commandOptions","commandData","selected","selectedAtoms","mode","types","warnings","JSON","parse","Object","entries","reduce","acc","curr","key","value","mappedPropertyName","properties","calculatedProperties","includes","_blob","_version","outputFormat","backgroundColor","restOptions","StandaloneStructServiceProvider","StandaloneStructService"],"mappings":"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"}
|