From d58bf2551ff3a8735d717d4ffde8dc2426d3d024 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 29 Mar 2018 11:19:40 +0200 Subject: [PATCH] typos --- .../cache/PermanentDatabaseLevelCache.java | 6 +- .../annotation/services/ModelAnnotator.java | 2 +- .../annotation/services/PubmedParser.java | 680 +++++++++--------- frontend-js/package-lock.json | 54 +- 4 files changed, 375 insertions(+), 367 deletions(-) diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java index f013003304..92d56f5401 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java @@ -44,7 +44,7 @@ public class PermanentDatabaseLevelCache extends XmlParser implements PermanentDatabaseLevelCacheInterface, ApplicationContextAware { /** - * This class represents new thread task for quering database. + * This class represents new thread task for querying database. * * @author Piotr Gawron * @@ -433,8 +433,8 @@ public class PermanentDatabaseLevelCache extends XmlParser } }); - // put in the queue empty task to make sure that everything was initializedd - // (additional managing thread was createed) + // put in the queue empty task to make sure that everything was initialized + // (additional managing thread was created) service.submit(new Callable<Object>() { @Override public Object call() throws Exception { diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java index 414f01a803..e1b8afd2d4 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java @@ -419,7 +419,7 @@ public class ModelAnnotator { * @param m * model * @param updater - * updater call back function that updat information about progress of + * updater call back function that update information about progress of * the function * @param validAnnotations * map that contains information which {@link MiriamType miriam types} diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java index 0fbcd7a00e..465bc8b992 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java @@ -28,7 +28,7 @@ import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamType; /** - * This class is a backend to publically available pubmed API in + * This class is a backend to publicly available pubmed API in * <a href="https://europepmc.org/RestfulWebService">Europe PubMed Central </a>. * * @author Piotr Gawron @@ -36,340 +36,348 @@ import lcsb.mapviewer.model.map.MiriamType; */ public class PubmedParser extends CachableInterface implements IExternalService { - /** - * Pubmed identifier used to check the status of service (functionality from - * {@link IExternalService}). - */ - static final int SERVICE_STATUS_PUBMED_ID = 12345; - - /** - * Prefix used for caching elements with pubmed identifier as a key. - */ - static final String PUBMED_PREFIX = "pubmed: "; - - /** - * Length of {@link #PUBMED_PREFIX} string. - */ - private static final int PUBMED_PREFIX_LENGTH = PUBMED_PREFIX.length(); - - /** - * Version of the remote API thnat is supported by this connecting class. - */ - static final String SUPPORTED_VERSION = "5.2.2"; - - static final String API_URL = "https://www.ebi.ac.uk/europepmc/webservices/rest/"; - - /** - * Connector used for accessing data from miriam registry. - */ - @Autowired - private MiriamConnector miriamConnector; - - /** - * Default class logger. - */ - private Logger logger = Logger.getLogger(PubmedParser.class); - - /** - * Object that allows to serialize {@link Article} elements into xml string - * and deserialize xml into {@link Article} objects. - */ - private XmlSerializer<Article> articleSerializer; - - @Override - public String refreshCacheQuery(Object query) throws SourceNotAvailable { - String result = null; - try { - if (query instanceof String) { - String name = (String) query; - if (name.startsWith(PUBMED_PREFIX)) { - Integer id = Integer.valueOf(name.substring(PUBMED_PREFIX_LENGTH)); - result = articleSerializer.objectToString(getPubmedArticleById(id)); - } else { - throw new InvalidArgumentException("Don't know what to do with string \"" + query + "\""); - } - } else { - throw new InvalidArgumentException("Don't know what to do with class: " + query.getClass()); - } - } catch (PubmedSearchException e) { - throw new SourceNotAvailable(e); - } - - return result; - } - - /** - * Default constructor. Initializes structures used for transforming - * {@link Article} from/to xml. - */ - public PubmedParser() { - super(PubmedParser.class); - articleSerializer = new XmlSerializer<>(Article.class); - } - - /** - * Returns article data for given pubmed identifier. - * - * @param id - * pubmed identifier - * @return article data - * @throws PubmedSearchException - * thrown when there is a problem with accessing information about - * pubmed - */ - public Article getPubmedArticleById(Integer id) throws PubmedSearchException { - String queryString = "pubmed: " + id; - Article result = null; - try { - result = articleSerializer.xmlToObject(getCacheNode(queryString)); - } catch (SerializationException e) { - logger.warn("Problem with deserialization of the string: " + queryString); - } - if (result != null && result.getTitle() != null) { - return result; - } else { - logger.debug("Pubmed article (id=" + id + ") not found in cache. Accessing WebService..."); - } - - result = new Article(); - try { - String url = API_URL+"search/resulttype=core&query=" - + java.net.URLEncoder.encode("src:med ext_id:" + id, "UTF-8"); - - String content = getWebPageContent(url); - - Document mainDoc = super.getXmlDocumentFromString(content); - // Document citationDoc = dBuilder.parse(citationStream); - mainDoc.getDocumentElement().normalize(); - // citationDoc.getDocumentElement().normalize(); - XPathFactory xPathFactory = XPathFactory.newInstance(); - XPath xpath = xPathFactory.newXPath(); - NodeList nodeList = null; - // Hit Count - nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/citedByCount").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { - try { - result.setCitationCount(Integer.valueOf(nodeList.item(0).getFirstChild().getNodeValue())); - } catch (Exception e) { - } - } - // Title - nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/title").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { - result.setTitle(nodeList.item(0).getFirstChild().getNodeValue()); - } - // Year - nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/journalInfo/yearOfPublication").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { - try { - result.setYear(Integer.valueOf(nodeList.item(0).getFirstChild().getNodeValue())); - } catch (Exception e) { - } - } - // Journal - nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/journalInfo/journal/title").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { - result.setJournal(nodeList.item(0).getFirstChild().getNodeValue()); - } - // Authors - nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/authorString").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { - List<String> authors = new ArrayList<String>(); - String value = nodeList.item(0).getFirstChild().getNodeValue(); - if (value != null && !value.isEmpty()) { - authors = Arrays.asList(value.split(",")); - } - result.setAuthors(authors); - } - result.setLink(miriamConnector.getUrlString(new MiriamData(MiriamType.PUBMED, id + ""))); - result.setId(id + ""); - - if (result.getTitle() != null && !result.getTitle().trim().isEmpty()) { - try { - setCacheValue(queryString, articleSerializer.objectToString(result)); - } catch (SerializationException e) { - logger.warn("Problem with serialization of the string: " + queryString); - } - } else { - result = null; - } - - } catch (Exception e) { - throw new PubmedSearchException(e); - } - return result; - } - - /** - * This method return html \< a\ > tag with link for pubmed id (with some - * additional information). - * - * @param id - * pubmed identifier - * @param withTextPrefix - * should prefix be added to the tag - * @return link to webpage with pubmed article - * @throws PubmedSearchException - * thrown when there is a problem with accessing information about - * pubmed - */ - public String getHtmlFullLinkForId(Integer id, boolean withTextPrefix) throws PubmedSearchException { - String result = ""; - Article article = getPubmedArticleById(id); - result += "<div style=\"float:left;\" title=\"" + article.getTitle() + ", "; - result += article.getStringAuthors() + ", "; - result += article.getYear() + ", "; - result += article.getJournal() + "\">"; - if (withTextPrefix) { - result += "pubmed: "; - } - result += "<a target=\"_blank\" href = \"" + article.getLink() + "\">" + id + "</a> </div>"; - return result; - } - - /** - * This method return html \< a\ > tag with link for pubmed id (with some - * additional information). - * - * @param id - * pubmed identifier - * @return link to webpage with pubmed article - * @throws PubmedSearchException - * thrown when there is a problem with accessing information about - * pubmed - */ - public String getHtmlFullLinkForId(Integer id) throws PubmedSearchException { - return getHtmlFullLinkForId(id, true); - } - - /** - * Get the summary of the article. - * - * @param id - * pubmed identifier - * @return summary of the article. - * @throws PubmedSearchException - * thrown when there is a problem with accessing information about - * pubmed - */ - public String getSummary(Integer id) throws PubmedSearchException { - Article article = getPubmedArticleById(id); - if (article == null) { - return null; - } - String result = article.getTitle() + ", " + article.getStringAuthors() + ", " + article.getYear() + ", " + article.getJournal(); - return result; - } - - @Override - public ExternalServiceStatus getServiceStatus() { - ExternalServiceStatus status = new ExternalServiceStatus("Europe PubMed Central", "https://europepmc.org/RestfulWebService"); - GeneralCacheInterface cacheCopy = getCache(); - this.setCache(null); - - try { - Article art = getPubmedArticleById(SERVICE_STATUS_PUBMED_ID); - if (!getApiVersion().equals(SUPPORTED_VERSION)) { - logger.debug("New europepmc API version: " + getApiVersion()); - status.setStatus(ExternalServiceStatusType.CHANGED); - } else if (art == null) { - status.setStatus(ExternalServiceStatusType.DOWN); - } else { - status.setStatus(ExternalServiceStatusType.OK); - } - } catch (Exception e) { - logger.error(status.getName() + " is down", e); - status.setStatus(ExternalServiceStatusType.DOWN); - } - this.setCache(cacheCopy); - return status; - } - - /** - * Returns current version of the pmc API. - * - * @return version of the api to which this class is connected - * @throws PubmedSearchException - * thrown when there is a problem with accessing external databes - */ - public String getApiVersion() throws PubmedSearchException { - try { - String url = API_URL+"search/resulttype=core&query=src%3Amed+ext_id%3A23644949"; - - String content = getWebPageContent(url); - - Document mainDoc = super.getXmlDocumentFromString(content); - mainDoc.getDocumentElement().normalize(); - XPathFactory xPathFactory = XPathFactory.newInstance(); - XPath xpath = xPathFactory.newXPath(); - NodeList nodeList = (NodeList) xpath.compile("/responseWrapper/version").evaluate(mainDoc, XPathConstants.NODESET); - if (nodeList.getLength() > 0) { - return nodeList.item(0).getTextContent(); - } - return null; - } catch (IOException e) { - throw new PubmedSearchException("Problem with accessing pubmed db", e); - } catch (InvalidXmlSchemaException | XPathExpressionException e) { - throw new PubmedSearchException("Invalid response from pubmed db", e); - } - } - - /** - * Get the summary of the article. - * - * @param id - * pubmed identifier - * @return summary of the article. - * @throws PubmedSearchException - * thrown when there is a problem with accessing information about - * pubmed - */ - public String getSummary(String id) throws PubmedSearchException { - return getSummary(Integer.valueOf(id)); - } - - /** - * @return the miriamConnector - * @see #miriamConnector - */ - public MiriamConnector getMiriamConnector() { - return miriamConnector; - } - - /** - * @param miriamConnector - * the miriamConnector to set - * @see #miriamConnector - */ - public void setMiriamConnector(MiriamConnector miriamConnector) { - this.miriamConnector = miriamConnector; - } - - /** - * @return the articleSerializer - * @see #articleSerializer - */ - protected XmlSerializer<Article> getArticleSerializer() { - return articleSerializer; - } - - /** - * @param articleSerializer - * the articleSerializer to set - * @see #articleSerializer - */ - protected void setArticleSerializer(XmlSerializer<Article> articleSerializer) { - this.articleSerializer = articleSerializer; - } - - @Override - protected WebPageDownloader getWebPageDownloader() { - return super.getWebPageDownloader(); - } - - @Override - protected void setWebPageDownloader(WebPageDownloader webPageDownloader) { - super.setWebPageDownloader(webPageDownloader); - } + /** + * Pubmed identifier used to check the status of service (functionality from + * {@link IExternalService}). + */ + static final int SERVICE_STATUS_PUBMED_ID = 12345; + + /** + * Prefix used for caching elements with pubmed identifier as a key. + */ + static final String PUBMED_PREFIX = "pubmed: "; + + /** + * Length of {@link #PUBMED_PREFIX} string. + */ + private static final int PUBMED_PREFIX_LENGTH = PUBMED_PREFIX.length(); + + /** + * Version of the remote API that is supported by this connecting class. + */ + static final String SUPPORTED_VERSION = "5.2.2"; + + static final String API_URL = "https://www.ebi.ac.uk/europepmc/webservices/rest/"; + + /** + * Connector used for accessing data from miriam registry. + */ + @Autowired + private MiriamConnector miriamConnector; + + /** + * Default class logger. + */ + private Logger logger = Logger.getLogger(PubmedParser.class); + + /** + * Object that allows to serialize {@link Article} elements into xml string and + * deserialize xml into {@link Article} objects. + */ + private XmlSerializer<Article> articleSerializer; + + @Override + public Object refreshCacheQuery(Object query) throws SourceNotAvailable { + Object result = null; + try { + if (query instanceof String) { + String name = (String) query; + if (name.startsWith(PUBMED_PREFIX)) { + Integer id = Integer.valueOf(name.substring(PUBMED_PREFIX_LENGTH)); + result = articleSerializer.objectToString(getPubmedArticleById(id)); + } else { + result = super.refreshCacheQuery(query); + } + } else { + result = super.refreshCacheQuery(query); + } + } catch (PubmedSearchException e) { + throw new SourceNotAvailable(e); + } + + return result; + } + + /** + * Default constructor. Initializes structures used for transforming + * {@link Article} from/to xml. + */ + public PubmedParser() { + super(PubmedParser.class); + articleSerializer = new XmlSerializer<>(Article.class); + } + + /** + * Returns article data for given pubmed identifier. + * + * @param id + * pubmed identifier + * @return article data + * @throws PubmedSearchException + * thrown when there is a problem with accessing information about + * pubmed + */ + public Article getPubmedArticleById(Integer id) throws PubmedSearchException { + String queryString = "pubmed: " + id; + Article result = null; + try { + result = articleSerializer.xmlToObject(getCacheNode(queryString)); + } catch (SerializationException e) { + logger.warn("Problem with deserialization of the string: " + queryString); + } + if (result != null && result.getTitle() != null) { + return result; + } else { + logger.debug("Pubmed article (id=" + id + ") not found in cache. Accessing WebService..."); + } + + result = new Article(); + try { + String url = API_URL + "search/resulttype=core&query=" + + java.net.URLEncoder.encode("src:med ext_id:" + id, "UTF-8"); + + String content = getWebPageContent(url); + + Document mainDoc = super.getXmlDocumentFromString(content); + // Document citationDoc = dBuilder.parse(citationStream); + mainDoc.getDocumentElement().normalize(); + // citationDoc.getDocumentElement().normalize(); + XPathFactory xPathFactory = XPathFactory.newInstance(); + XPath xpath = xPathFactory.newXPath(); + NodeList nodeList = null; + // Hit Count + nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/citedByCount").evaluate(mainDoc, + XPathConstants.NODESET); + if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { + try { + result.setCitationCount(Integer.valueOf(nodeList.item(0).getFirstChild().getNodeValue())); + } catch (Exception e) { + } + } + // Title + nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/title").evaluate(mainDoc, + XPathConstants.NODESET); + if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { + result.setTitle(nodeList.item(0).getFirstChild().getNodeValue()); + } + // Year + nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/journalInfo/yearOfPublication") + .evaluate(mainDoc, XPathConstants.NODESET); + if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { + try { + result.setYear(Integer.valueOf(nodeList.item(0).getFirstChild().getNodeValue())); + } catch (Exception e) { + } + } + // Journal + nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/journalInfo/journal/title") + .evaluate(mainDoc, XPathConstants.NODESET); + if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { + result.setJournal(nodeList.item(0).getFirstChild().getNodeValue()); + } + // Authors + nodeList = (NodeList) xpath.compile("/responseWrapper/resultList/result/authorString").evaluate(mainDoc, + XPathConstants.NODESET); + if (nodeList != null && nodeList.getLength() > 0 && nodeList.item(0).getFirstChild() != null) { + List<String> authors = new ArrayList<String>(); + String value = nodeList.item(0).getFirstChild().getNodeValue(); + if (value != null && !value.isEmpty()) { + authors = Arrays.asList(value.split(",")); + } + result.setAuthors(authors); + } + result.setLink(miriamConnector.getUrlString(new MiriamData(MiriamType.PUBMED, id + ""))); + result.setId(id + ""); + + if (result.getTitle() != null && !result.getTitle().trim().isEmpty()) { + try { + setCacheValue(queryString, articleSerializer.objectToString(result)); + } catch (SerializationException e) { + logger.warn("Problem with serialization of the string: " + queryString); + } + } else { + result = null; + } + + } catch (Exception e) { + throw new PubmedSearchException(e); + } + return result; + } + + /** + * This method return html \< a\ > tag with link for pubmed id (with some + * additional information). + * + * @param id + * pubmed identifier + * @param withTextPrefix + * should prefix be added to the tag + * @return link to webpage with pubmed article + * @throws PubmedSearchException + * thrown when there is a problem with accessing information about + * pubmed + */ + public String getHtmlFullLinkForId(Integer id, boolean withTextPrefix) throws PubmedSearchException { + String result = ""; + Article article = getPubmedArticleById(id); + result += "<div style=\"float:left;\" title=\"" + article.getTitle() + ", "; + result += article.getStringAuthors() + ", "; + result += article.getYear() + ", "; + result += article.getJournal() + "\">"; + if (withTextPrefix) { + result += "pubmed: "; + } + result += "<a target=\"_blank\" href = \"" + article.getLink() + "\">" + id + "</a> </div>"; + return result; + } + + /** + * This method return html \< a\ > tag with link for pubmed id (with some + * additional information). + * + * @param id + * pubmed identifier + * @return link to webpage with pubmed article + * @throws PubmedSearchException + * thrown when there is a problem with accessing information about + * pubmed + */ + public String getHtmlFullLinkForId(Integer id) throws PubmedSearchException { + return getHtmlFullLinkForId(id, true); + } + + /** + * Get the summary of the article. + * + * @param id + * pubmed identifier + * @return summary of the article. + * @throws PubmedSearchException + * thrown when there is a problem with accessing information about + * pubmed + */ + public String getSummary(Integer id) throws PubmedSearchException { + Article article = getPubmedArticleById(id); + if (article == null) { + return null; + } + String result = article.getTitle() + ", " + article.getStringAuthors() + ", " + article.getYear() + ", " + + article.getJournal(); + return result; + } + + @Override + public ExternalServiceStatus getServiceStatus() { + ExternalServiceStatus status = new ExternalServiceStatus("Europe PubMed Central", + "https://europepmc.org/RestfulWebService"); + GeneralCacheInterface cacheCopy = getCache(); + this.setCache(null); + + try { + Article art = getPubmedArticleById(SERVICE_STATUS_PUBMED_ID); + if (!getApiVersion().equals(SUPPORTED_VERSION)) { + logger.debug("New europepmc API version: " + getApiVersion()); + status.setStatus(ExternalServiceStatusType.CHANGED); + } else if (art == null) { + status.setStatus(ExternalServiceStatusType.DOWN); + } else { + status.setStatus(ExternalServiceStatusType.OK); + } + } catch (Exception e) { + logger.error(status.getName() + " is down", e); + status.setStatus(ExternalServiceStatusType.DOWN); + } + this.setCache(cacheCopy); + return status; + } + + /** + * Returns current version of the pmc API. + * + * @return version of the api to which this class is connected + * @throws PubmedSearchException + * thrown when there is a problem with accessing external databes + */ + public String getApiVersion() throws PubmedSearchException { + try { + String url = API_URL + "search/resulttype=core&query=src%3Amed+ext_id%3A23644949"; + + String content = getWebPageContent(url); + + Document mainDoc = super.getXmlDocumentFromString(content); + mainDoc.getDocumentElement().normalize(); + XPathFactory xPathFactory = XPathFactory.newInstance(); + XPath xpath = xPathFactory.newXPath(); + NodeList nodeList = (NodeList) xpath.compile("/responseWrapper/version").evaluate(mainDoc, + XPathConstants.NODESET); + if (nodeList.getLength() > 0) { + return nodeList.item(0).getTextContent(); + } + return null; + } catch (IOException e) { + throw new PubmedSearchException("Problem with accessing pubmed db", e); + } catch (InvalidXmlSchemaException | XPathExpressionException e) { + throw new PubmedSearchException("Invalid response from pubmed db", e); + } + } + + /** + * Get the summary of the article. + * + * @param id + * pubmed identifier + * @return summary of the article. + * @throws PubmedSearchException + * thrown when there is a problem with accessing information about + * pubmed + */ + public String getSummary(String id) throws PubmedSearchException { + return getSummary(Integer.valueOf(id)); + } + + /** + * @return the miriamConnector + * @see #miriamConnector + */ + public MiriamConnector getMiriamConnector() { + return miriamConnector; + } + + /** + * @param miriamConnector + * the miriamConnector to set + * @see #miriamConnector + */ + public void setMiriamConnector(MiriamConnector miriamConnector) { + this.miriamConnector = miriamConnector; + } + + /** + * @return the articleSerializer + * @see #articleSerializer + */ + protected XmlSerializer<Article> getArticleSerializer() { + return articleSerializer; + } + + /** + * @param articleSerializer + * the articleSerializer to set + * @see #articleSerializer + */ + protected void setArticleSerializer(XmlSerializer<Article> articleSerializer) { + this.articleSerializer = articleSerializer; + } + + @Override + protected WebPageDownloader getWebPageDownloader() { + return super.getWebPageDownloader(); + } + + @Override + protected void setWebPageDownloader(WebPageDownloader webPageDownloader) { + super.setWebPageDownloader(webPageDownloader); + } } diff --git a/frontend-js/package-lock.json b/frontend-js/package-lock.json index 378ebd3885..29898ad842 100644 --- a/frontend-js/package-lock.json +++ b/frontend-js/package-lock.json @@ -45,38 +45,30 @@ "litemol": "github:dsehnal/LiteMol#a5419c696faa84530dd93acd55b747cf8136902b" }, "dependencies": { - "ProtVista": { - "version": "git://github.com/davidhoksza/protvista.git#4e4bb737ba1e183291505bd25f8bae2e651ce21e", - "dev": true, - "requires": { - "d3": "3.5.17", - "file-saver": "1.3.3", - "jquery": "2.2.4", - "jszip": "3.1.4", - "underscore": "1.8.3" - }, - "dependencies": { - "jquery": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", - "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=", - "dev": true - } - } - }, "jquery": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", "dev": true - }, - "litemol": { - "version": "github:dsehnal/LiteMol#a5419c696faa84530dd93acd55b747cf8136902b", - "dev": true, - "requires": { - "@types/react": "15.6.14", - "@types/react-dom": "15.5.7" - } + } + } + }, + "ProtVista": { + "version": "git://github.com/davidhoksza/protvista.git#4e4bb737ba1e183291505bd25f8bae2e651ce21e", + "dev": true, + "requires": { + "d3": "3.5.17", + "file-saver": "1.3.3", + "jquery": "2.2.4", + "jszip": "3.1.4", + "underscore": "1.8.3" + }, + "dependencies": { + "jquery": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=", + "dev": true } } }, @@ -2058,6 +2050,14 @@ "immediate": "3.0.6" } }, + "litemol": { + "version": "github:dsehnal/LiteMol#a5419c696faa84530dd93acd55b747cf8136902b", + "dev": true, + "requires": { + "@types/react": "15.6.14", + "@types/react-dom": "15.5.7" + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", -- GitLab