From a08b2e2b5ddc13ec10e78b8549600b23b8c6830e Mon Sep 17 00:00:00 2001 From: Venkata Chandra Sekhar Nainala Date: Thu, 3 Aug 2023 13:49:54 +0200 Subject: [PATCH] feat: updated health check endpoints --- app/main.py | 58 +- app/routers/chem.py | 12 +- app/scripts/nmr-load-save/bin/index.js | 39 + app/scripts/nmr-load-save/package-lock.json | 1029 +++++++++++++++++++ app/scripts/nmr-load-save/package.json | 20 + 5 files changed, 1140 insertions(+), 18 deletions(-) create mode 100755 app/scripts/nmr-load-save/bin/index.js create mode 100644 app/scripts/nmr-load-save/package-lock.json create mode 100644 app/scripts/nmr-load-save/package.json diff --git a/app/main.py b/app/main.py index 1cd4973..838cec6 100644 --- a/app/main.py +++ b/app/main.py @@ -1,4 +1,5 @@ -from fastapi import FastAPI +import os +from fastapi import FastAPI, status from fastapi.responses import RedirectResponse from fastapi_versioning import VersionedFastAPI @@ -8,6 +9,7 @@ from app.core import config, tasks from prometheus_fastapi_instrumentator import Instrumentator +from app.schemas import HealthCheck app = FastAPI( title=config.PROJECT_NAME, @@ -24,16 +26,6 @@ }, ) -origins = ["*"] - -app.add_middleware( - CORSMiddleware, - allow_origins=origins, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - app.include_router(chem.router) app.add_event_handler("startup", tasks.create_start_app_handler(app)) @@ -58,7 +50,49 @@ Instrumentator().instrument(app).expose(app) +origins = ["*"] + + +@app.middleware("http") +async def add_cors_headers(request, call_next): + response = await call_next(request) + response.headers["Access-Control-Allow-Origin"] = "*" + response.headers["Access-Control-Allow-Credentials"] = "true" + response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS" + response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization" + return response + + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + @app.get("/", include_in_schema=False) async def root(): - return RedirectResponse(url="https://nfdi4chem.github.io/nmrkit") + return RedirectResponse(url=os.getenv("HOMEPAGE_URL", "/latest/docs")) + + +@app.get( + "/health", + tags=["healthcheck"], + summary="Perform a Health Check", + response_description="Return HTTP Status Code 200 (OK)", + status_code=status.HTTP_200_OK, + response_model=HealthCheck, +) +def get_health() -> HealthCheck: + """ + ## Perform a Health Check + Endpoint to perform a healthcheck on. This endpoint can primarily be used Docker + to ensure a robust container orchestration and management is in place. Other + services which rely on proper functioning of the API service will not deploy if this + endpoint returns any other HTTP status code except 200 (OK). + Returns: + HealthCheck: Returns a JSON response with the health status + """ + return HealthCheck(status="OK") diff --git a/app/routers/chem.py b/app/routers/chem.py index f5a53fe..032b98d 100644 --- a/app/routers/chem.py +++ b/app/routers/chem.py @@ -11,9 +11,9 @@ retrieve, RegistrationFailureReasons, ) -from app import schemas from rdkit import Chem from io import BytesIO +from app.schemas import HealthCheck router = APIRouter( prefix="/chem", @@ -23,27 +23,27 @@ ) +@router.get("/", include_in_schema=False) @router.get( "/health", tags=["healthcheck"], summary="Perform a Health Check on Chem Module", - response_description="Returns HTTP Status Code 200 (OK)", + response_description="Return HTTP Status Code 200 (OK)", status_code=status.HTTP_200_OK, - response_model=schemas.HealthCheck, include_in_schema=False, + response_model=HealthCheck, ) -def get_health() -> schemas.HealthCheck: +def get_health() -> HealthCheck: """ ## Perform a Health Check Endpoint to perform a healthcheck on. This endpoint can primarily be used Docker to ensure a robust container orchestration and management is in place. Other services which rely on proper functioning of the API service will not deploy if this endpoint returns any other HTTP status code except 200 (OK). - Returns: HealthCheck: Returns a JSON response with the health status """ - return schemas.HealthCheck(status="OK") + return HealthCheck(status="OK") @router.post( diff --git a/app/scripts/nmr-load-save/bin/index.js b/app/scripts/nmr-load-save/bin/index.js new file mode 100755 index 0000000..043fe85 --- /dev/null +++ b/app/scripts/nmr-load-save/bin/index.js @@ -0,0 +1,39 @@ +#!/usr/bin/env node + +const yargs = require("yargs"); +const loader = require("nmr-load-save"); +const fileUtils = require("filelist-utils"); + +const options = yargs + .usage("Usage: -u ") + .option("u", { alias: "url", describe: "File URL", type: "string", demandOption: true }) + .argv; + + async function loadSpectrum(url) { + const {pathname:relativePath,origin:baseURL} = new URL(url); + const source = { + entries: [ + { + relativePath, + } + ], + baseURL + }; + const fileCollection = await fileUtils.fileCollectionFromWebSource(source,{}); + + const { + nmriumState: { data }, + } = await loader.read(fileCollection); + return data; + } + + + + const url = options.u.split(" "); + + + loadSpectrum(options.u).then((result)=>{ + console.log(JSON.stringify(result)) + }) + + diff --git a/app/scripts/nmr-load-save/package-lock.json b/app/scripts/nmr-load-save/package-lock.json new file mode 100644 index 0000000..990dd41 --- /dev/null +++ b/app/scripts/nmr-load-save/package-lock.json @@ -0,0 +1,1029 @@ +{ + "name": "test-node", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "test-node", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "filelist-utils": "^1.10.0", + "nmr-load-save": "^0.15.2", + "yargs": "^17.7.2" + }, + "bin": { + "nmr-cli": "bin/index.js" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@lukeed/uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@lukeed/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==", + "dependencies": { + "@lukeed/csprng": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==" + }, + "node_modules/@types/lodash.merge": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.7.tgz", + "integrity": "sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atom-sorter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atom-sorter/-/atom-sorter-2.0.0.tgz", + "integrity": "sha512-30O3ccAH+lmysMykyEkBsfB65BU329GatBeYrgzKjDBhaURgvWT7B2+C9gmBFnVmbMO2HaqvyAuce3eMsICluw==" + }, + "node_modules/baselines": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/baselines/-/baselines-1.1.5.tgz", + "integrity": "sha512-s4E/gKKK9/KuIMmWNuMJWWFd5k8I3Yy+1W41lqNVBK8tqOeKivlfFIquyXeNgEs3Aj7xujfVqm0PYNIxJZ8wbw==", + "dependencies": { + "ml-airpls": "^1.0.0", + "ml-array-sequential-fill": "^1.1.8", + "ml-baseline-correction-regression": "^1.0.0", + "ml-rolling-ball-baseline": "^2.0.1", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/binary-search": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", + "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==" + }, + "node_modules/brukerconverter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/brukerconverter/-/brukerconverter-6.1.4.tgz", + "integrity": "sha512-E+CeP/yXjKp2STAaGiKDy+LsiLBXJVTfUwgfDeP/vGfpGjv5u0U2YXSfRjzYZpzeXkKidwgbS+McAfFA2E/aYg==", + "dependencies": { + "cheminfo-types": "^1.5.0", + "filelist-utils": "^1.8.0", + "iobuffer": "^5.3.2", + "is-any-array": "^2.0.0", + "jcampconverter": "^9.1.0", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/cheminfo-types": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/cheminfo-types/-/cheminfo-types-1.7.2.tgz", + "integrity": "sha512-Zz7HPnh6wB2beEK7nfsXlNSK1Tpl4O0DpYUod8L6gI/5+INpn/d5UgJLI+3ck6CYY5Qsq34ylyKhERmZ5Wks2A==" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-to-jcamp": { + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/convert-to-jcamp/-/convert-to-jcamp-5.4.7.tgz", + "integrity": "sha512-nbMhlk9uSKK/31QZ75ohPFwDWWLkvbkdIPbbyW+vupqRx+fCd5TzToUCq8s24iZMPwCYf29GJErvvZZRrX/2kw==", + "dependencies": { + "cheminfo-types": "^1.7.1", + "is-any-array": "^2.0.1", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3", + "ml-matrix": "^6.10.4", + "ml-spectra-processing": "^12.4.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cuthill-mckee": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cuthill-mckee/-/cuthill-mckee-1.0.0.tgz", + "integrity": "sha512-ehXCHYXZhZzDZmVQE/P9wQ7XPOn1G3e+pVqcqXvYykBL8Lg7HFm2ewD3TZseOMWiM9bNU0u4UWSV/dAzf+unug==" + }, + "node_modules/d3-array": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-0.7.1.tgz", + "integrity": "sha512-Ifi3fH46Bco+Lb1mOlTxbFEuF3NdyElEVVD+EmoK327I0JzKAP4x57cl+HoxHqFcVd8F/uXLC+wtY3n/R1uO2w==" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dynamic-typing": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dynamic-typing/-/dynamic-typing-1.0.0.tgz", + "integrity": "sha512-Jjvr93gCn8+5q9AP+ilq8gInN5xYRaJakmuE11Un8vgCgt0zwWyRqU7lAdRgHEHnf4FwJp/ppymo1GE1+AKw+Q==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ensure-string": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ensure-string/-/ensure-string-1.2.0.tgz", + "integrity": "sha512-Hvv2Xocfn6CSvCWgIGNzf0D5bgE6fAa65cayGOWsEXz03ej3aDpsogP3zstuLKt43zVuojQFST4XHPt9+PtuGQ==", + "dependencies": { + "cheminfo-types": "^1.1.0", + "isutf8": "^4.0.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fft.js": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/fft.js/-/fft.js-4.0.4.tgz", + "integrity": "sha512-f9c00hphOgeQTlDyavwTtu6RiK8AIFjD6+jvXkNkpeQ7rirK3uFWVpalkoS4LAwbdX7mfZ8aoBfFVQX1Re/8aw==" + }, + "node_modules/filelist-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/filelist-utils/-/filelist-utils-1.10.0.tgz", + "integrity": "sha512-PItlcphlQWSWQaxLw7sjdiCQJSL4hrUh0h8pfniBJzlnC23RTRaGKZpv70cdGGIKToo+1PPJwKTCBo1BipAE0Q==", + "dependencies": { + "cheminfo-types": "^1.7.2", + "cross-fetch": "^3.1.6", + "jszip": "^3.10.1", + "pako": "^2.1.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gyromagnetic-ratio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gyromagnetic-ratio/-/gyromagnetic-ratio-1.0.0.tgz", + "integrity": "sha512-s55NtJPxoplsW/8OnM1C7tNWd2gEXXt+roF3NPNDKFb7YchBy9JXdxmzztf3d4JL1zCiQz5cn6HSC8M0osN78w==" + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/iobuffer": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.3.2.tgz", + "integrity": "sha512-kO3CjNfLZ9t+tHxAMd+Xk4v3D/31E91rMs1dHrm7ikEQrlZ8mLDbQ4z3tZfDM48zOkReas2jx8MWSAmN9+c8Fw==" + }, + "node_modules/is-any-array": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", + "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isutf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isutf8/-/isutf8-4.0.0.tgz", + "integrity": "sha512-mJtsQGFfAphKdVuRitEpc0eon4v5fuaB6v9ZJIrLnIyybh02sIIwJ2RQbLMp6UICVCfquezllupZIVcqzGzCPg==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/jcampconverter": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/jcampconverter/-/jcampconverter-9.1.1.tgz", + "integrity": "sha512-1v3nFi9TyNtHjFvkYW1jR3iUI/RLM918hANp9e6QK7niJztbt6kFIvkt7G9kLHABuiVMNktyhUegROKieArlrg==", + "dependencies": { + "cheminfo-types": "^1.7.0", + "dynamic-typing": "^1.0.0", + "ensure-string": "^1.2.0", + "gyromagnetic-ratio": "^1.0.0", + "ml-array-median": "^1.1.6", + "ml-spectra-processing": "^12.2.0" + } + }, + "node_modules/jeolconverter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jeolconverter/-/jeolconverter-1.0.1.tgz", + "integrity": "sha512-AQFwFOE4aqP2KkjCJmYngs4Os0N8iroyJDTXU8R3R3UGpQeZDeNexq8lAdwVDI2PTpzWzMt/9ydz633CYeVkOA==", + "dependencies": { + "iobuffer": "^5.0.3" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/linear-sum-assignment": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/linear-sum-assignment/-/linear-sum-assignment-1.0.5.tgz", + "integrity": "sha512-JiyPEQM+Lb5K0BR9uBkLae9gNKMpici8hOwrWwNnOkABrNn8yWCOd4wwAaLGlu9HzfQFxHcs07zOaGgXgco5Kg==", + "dependencies": { + "cheminfo-types": "^1.4.0", + "install": "^0.13.0", + "ml-matrix": "^6.10.4", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/median-quickselect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/median-quickselect/-/median-quickselect-1.0.1.tgz", + "integrity": "sha512-/QL9ptNuLsdA68qO+2o10TKCyu621zwwTFdLvtu8rzRNKsn8zvuGoq/vDxECPyELFG8wu+BpyoMR9BnsJqfVZQ==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ml-airpls": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ml-airpls/-/ml-airpls-1.0.2.tgz", + "integrity": "sha512-LbQu28am8XUHr54TWOh8Rz6edC6KRA5pjJ83F6J6/0a5QrZrh0ioEukfv3d9WeeUDzdczNLbdkU5hJvICCVacA==", + "dependencies": { + "cuthill-mckee": "^1.0.0" + } + }, + "node_modules/ml-array-max": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz", + "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-median": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ml-array-median/-/ml-array-median-1.1.6.tgz", + "integrity": "sha512-V6bV6bTPFRX8v5CaAx/7fuRXC39LLTHfPSVZZafdNaqNz2PFL5zEA7gesjv8dMXh+gwPeUMtB5QPovlTBaa4sw==", + "dependencies": { + "is-any-array": "^2.0.0", + "median-quickselect": "^1.0.1" + } + }, + "node_modules/ml-array-min": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz", + "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-rescale": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", + "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3" + } + }, + "node_modules/ml-array-sequential-fill": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ml-array-sequential-fill/-/ml-array-sequential-fill-1.1.8.tgz", + "integrity": "sha512-8oS9fYn61r61Lo4N0ueXBqjsrraxXMz0oTfKW/waNHOabvKhLMB7hjixUa2Hp5vnVBJHHHNWHqRUm/T00zRhLg==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-baseline-correction-regression": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ml-baseline-correction-regression/-/ml-baseline-correction-regression-1.0.2.tgz", + "integrity": "sha512-dRKbGx49gXhHyvpb9/6OpqySY7cEm8rz0LaQWyAsaMALr3aKHXvtPsjADh5afkzsYRw53QPgwccCo0XTvT3M8w==", + "dependencies": { + "ml-regression-polynomial": "^2.2.0" + } + }, + "node_modules/ml-direct": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ml-direct/-/ml-direct-0.1.3.tgz", + "integrity": "sha512-3CFuHK4eJrBAiTK9bgwqN5rXr3X66ShC/Acx3+h26kk/aLpQxLRkZ5lPCC72HMG9hTtJIMoSlev8QYpXSBB3OA==", + "dependencies": { + "ml-matrix": "^6.10.4", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/ml-disjoint-set": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ml-disjoint-set/-/ml-disjoint-set-1.0.0.tgz", + "integrity": "sha512-UcEzgvRzVhsKpT66syfdhaK8R+av6GxDFmU37t+6WClT/kHDIN6OMRfO7OPwQIV8+L8FSc2E6lNKpvdqf6OgLw==" + }, + "node_modules/ml-distance-euclidean": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ml-distance-euclidean/-/ml-distance-euclidean-2.0.0.tgz", + "integrity": "sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q==" + }, + "node_modules/ml-distance-matrix": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ml-distance-matrix/-/ml-distance-matrix-2.0.1.tgz", + "integrity": "sha512-6wt3bvK8WzAjyuBt9+wnyGanphrAZyqJGwiEEfuknfu8IQBtHYWpyLhjtQ8R7rjiPyXlF9eP7GcI5L7OA1NLEQ==" + }, + "node_modules/ml-fft": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ml-fft/-/ml-fft-1.3.5.tgz", + "integrity": "sha512-laAATDyUuWPbIlX57thIds41wqFLsB+Zl7i1yrLRo/4CFg+hFaF9Xle8InblQseyiaVtt1KSlDG+6lgUMPOj3g==" + }, + "node_modules/ml-floyd-warshall": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ml-floyd-warshall/-/ml-floyd-warshall-3.0.1.tgz", + "integrity": "sha512-GrUdw/QuENlOp1HnCNzjaqZJXdXyrOG8YYK7lSvq3fzgOFoaZPY5gUFFmHDSo/T0ZCBLkka9IjcSpEbRGqi/fw==", + "dependencies": { + "ml-matrix": "^6.10.4" + } + }, + "node_modules/ml-gsd": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/ml-gsd/-/ml-gsd-12.1.3.tgz", + "integrity": "sha512-9qTIc3reKSifJ4EpxdFl+9C4pfvm/XKuM+JXBfHdd2hhfD1ZQ9CcrPxm5OBTcZVqJ4e9pKsUDvJnjePX2Yb5YA==", + "dependencies": { + "@lukeed/uuid": "^2.0.0", + "cheminfo-types": "^1.4.0", + "ml-peak-shape-generator": "^4.1.2", + "ml-savitzky-golay-generalized": "^4.0.1", + "ml-spectra-fitting": "^4.2.1", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/ml-hash-table": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ml-hash-table/-/ml-hash-table-1.0.0.tgz", + "integrity": "sha512-KV2uRIUbox0xuJ5Gkmr3udX0eNqr+c2HiSqz+sqAtQOnSm46zBmzDJvZX9t4hhcqqyEmGPvxFzx5SnwCfGhXNw==", + "dependencies": { + "binary-search": "^1.3.5", + "num-sort": "^2.0.0" + } + }, + "node_modules/ml-hclust": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ml-hclust/-/ml-hclust-3.1.0.tgz", + "integrity": "sha512-EI6VCHrPHOsPsgZ1a/auhdxzHpEZ+kV7yjCGGIU+EWtb/XV1ZWSg5GlU32Qt4T05m98wCSQykPBhIg5aW6JjuQ==", + "dependencies": { + "heap": "^0.2.6", + "ml-distance-euclidean": "^2.0.0", + "ml-distance-matrix": "^2.0.1", + "ml-matrix": "^6.8.0" + } + }, + "node_modules/ml-levenberg-marquardt": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ml-levenberg-marquardt/-/ml-levenberg-marquardt-4.1.2.tgz", + "integrity": "sha512-bSs5HdflwpciC9H77LeobJf8Lss7zxKJTCbbSqUjjwFCjNo2ekiarLURlCiGf+KUKcgpz8HaETa9XCFQNdBPmA==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-matrix": "^6.10.4" + } + }, + "node_modules/ml-matrix": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.10.4.tgz", + "integrity": "sha512-rUyEhfNPzqFsltYwvjNeYQXlYEaVea3KgzcJKJteQUj2WVAGFx9fLNRjtMR9mg2B6bd5buxlmkZmxM4hmO+SKg==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-array-rescale": "^1.3.7" + } + }, + "node_modules/ml-matrix-convolution": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ml-matrix-convolution/-/ml-matrix-convolution-1.0.0.tgz", + "integrity": "sha512-+gS36VTRjBMtUDXlKlAgSs+pZLfOEY0JF/64QRRNq+6KIPCfPlzVO3P41iSEjp1NPwofhLcIJBgKIZyH6ylSVA==", + "dependencies": { + "ml-fft": "1.3.5" + } + }, + "node_modules/ml-matrix-peaks-finder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ml-matrix-peaks-finder/-/ml-matrix-peaks-finder-1.0.0.tgz", + "integrity": "sha512-a3SZrvADI6kAbOvICnnNbacC+UB6xPRbgbKxGhFeISUCoe4M3g3RMp9UaUFNFA/rRjWNtW+rGioeOH8UNPZT/Q==", + "dependencies": { + "ml-disjoint-set": "^1.0.0", + "ml-matrix-convolution": "^1.0.0" + } + }, + "node_modules/ml-peak-shape-generator": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ml-peak-shape-generator/-/ml-peak-shape-generator-4.1.2.tgz", + "integrity": "sha512-SCVKGZ96JDyzEFgk0payEZKveakfbH7vA4Lysw3eRJEAm8hDnwip2pAFXjcC4jS78WDya4ghwAOSKDBUdHuMBw==", + "dependencies": { + "cheminfo-types": "^1.1.0" + } + }, + "node_modules/ml-regression-base": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/ml-regression-base/-/ml-regression-base-2.1.6.tgz", + "integrity": "sha512-yTckvEc8szc6VrUTJSgAClShvCoPZdNt8pmyRe8aGsIWGjg6bYFotp9mDUwAB0snvKAbQWd6A4trL/PDCASLug==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-regression-polynomial": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ml-regression-polynomial/-/ml-regression-polynomial-2.2.0.tgz", + "integrity": "sha512-WxFsEmi6oLxgq9TeaVoAA+vVUJFp1kGarX6WWClR8OmlanoIW5iLMnaeXfQcYuH8xNq4R1Cax2N9hYYmeWWkLg==", + "dependencies": { + "ml-matrix": "^6.8.0", + "ml-regression-base": "^2.1.3" + } + }, + "node_modules/ml-rolling-ball-baseline": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ml-rolling-ball-baseline/-/ml-rolling-ball-baseline-2.0.1.tgz", + "integrity": "sha512-uxxFwJ4Dk4vKGs4iQYj+Ou8Jh29dn4ZP4GHy56OCiJe+4UGKihFS18cyc/tFFnPIeR/tQPywDzU2Futm0kMKAQ==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/ml-savitzky-golay-generalized": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ml-savitzky-golay-generalized/-/ml-savitzky-golay-generalized-4.0.1.tgz", + "integrity": "sha512-I3z6aEj9f+VaqoqWoTmyXOsIngOCW2JtpcZfoeqnLFFFuIyK4uXOEIRVft3XgQbbtivIvTBJKHpfxyN8sgB5vA==", + "dependencies": { + "cheminfo-types": "^1.0.0", + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-signal-processing": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ml-signal-processing/-/ml-signal-processing-1.0.3.tgz", + "integrity": "sha512-fIRgMGmF3kbsW3iiGCVZviwC652nBn+m5CTnweKi8TIyi9X/iEB0njA/TG9whTefEivQL40dqAfVUVAkybgYMw==", + "dependencies": { + "baselines": "^1.1.5", + "cheminfo-types": "^1.4.0", + "ml-gsd": "^12.1.3", + "ml-savitzky-golay-generalized": "^4.0.1", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/ml-simple-clustering": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ml-simple-clustering/-/ml-simple-clustering-0.1.0.tgz", + "integrity": "sha512-t1jLL5nzUsNXBcAjcHTkCK2E7i2pEO1qrGzZmzS4BHWWMFxi2OUzBLTpK4MgwxLt0oQLkNGLr6NL4vcDxC2ePw==" + }, + "node_modules/ml-sparse-matrix": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ml-sparse-matrix/-/ml-sparse-matrix-2.1.0.tgz", + "integrity": "sha512-ukJGbyGv+Zc0llNLVRpegMhRFW14O+i9ZhSEGBxuuSX8g5rA1S+Q+0r2JMKDM9cNM8QsvgtOPG7z/7pbjpoqzg==", + "dependencies": { + "ml-hash-table": "^1.0.0" + } + }, + "node_modules/ml-spectra-fitting": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ml-spectra-fitting/-/ml-spectra-fitting-4.2.1.tgz", + "integrity": "sha512-vZI98eSK5HKeZTgh8omskRHB8QdnDTaTw1rbMPWTkfBH+6FgEgPvMRqH18BAaSHtxJHrqE6c4tQq9L9J8iYebg==", + "dependencies": { + "cheminfo-types": "^1.4.0", + "ml-array-max": "^1.2.4", + "ml-direct": "^0.1.1", + "ml-levenberg-marquardt": "^4.1.0", + "ml-peak-shape-generator": "^4.1.2", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/ml-spectra-processing": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/ml-spectra-processing/-/ml-spectra-processing-12.5.0.tgz", + "integrity": "sha512-y2yMg8w69hpmNEebY17DJ7NNDljV2C16k6HsWx4B5aSdVL3tkgHvwLFAbmZcMpZxRE0VGIBVAPLfo8E3mTQFzQ==", + "dependencies": { + "binary-search": "^1.3.6", + "cheminfo-types": "^1.7.2", + "fft.js": "^4.0.4", + "is-any-array": "^2.0.1", + "ml-matrix": "^6.10.4", + "ml-xsadd": "^2.0.0", + "spline-interpolator": "^1.0.0" + } + }, + "node_modules/ml-tree-set": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ml-tree-set/-/ml-tree-set-0.1.1.tgz", + "integrity": "sha512-9XZv+/hSltnsN61Cgb7PCFGxmo1HZn2JxDugnNHZDh0ZryJp7qtmcnPZLw/KrQLgG1JqdkKlfhmAYajSukb8yg==" + }, + "node_modules/ml-xsadd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ml-xsadd/-/ml-xsadd-2.0.0.tgz", + "integrity": "sha512-VoAYUqmPRmzKbbqRejjqceGFp3VF81Qe8XXFGU0UXLxB7Mf4GGvyGq5Qn3k4AiQgDEV6WzobqlPOd+j0+m6IrA==" + }, + "node_modules/nmr-correlation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/nmr-correlation/-/nmr-correlation-2.3.3.tgz", + "integrity": "sha512-RSdzZGsE2HeitUEhA7Dc1048eu6Web/SH5UjrbFEpddVNwvPGKQUZfQ5uoygcaTpKfq2lTddi2Ln9MDYjfyOgg==", + "dependencies": { + "cheminfo-types": "^1.4.0", + "lodash": "^4.17.21", + "ml-matrix-peaks-finder": "^1.0.0", + "ml-peak-shape-generator": "^4.1.1" + } + }, + "node_modules/nmr-load-save": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/nmr-load-save/-/nmr-load-save-0.15.2.tgz", + "integrity": "sha512-ReSQ5flhhOKB+psavne0vaNEGH6R3RoDIuN9ojy8Xkm4N1Ns9j/HsnR2BL2m2aVWFKCMUIrDoK1OdVgeV5/vXg==", + "dependencies": { + "@lukeed/uuid": "^2.0.0", + "@types/lodash.merge": "^4.6.7", + "brukerconverter": "^6.1.4", + "cheminfo-types": "^1.7.0", + "convert-to-jcamp": "^5.4.7", + "filelist-utils": "^1.10.0", + "gyromagnetic-ratio": "^1.0.0", + "is-any-array": "^2.0.0", + "jcampconverter": "^9.1.1", + "jeolconverter": "^1.0.1", + "lodash.merge": "^4.6.2", + "ml-spectra-processing": "^12.4.0", + "nmr-correlation": "^2.3.3", + "nmr-processing": "^9.8.0", + "nmredata": "^0.9.2", + "openchemlib": "^8.2.0", + "openchemlib-utils": "^2.7.1", + "sdf-parser": "^6.0.1", + "varian-converter": "^0.3.2" + } + }, + "node_modules/nmr-processing": { + "version": "9.8.1", + "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-9.8.1.tgz", + "integrity": "sha512-1EExYZuV8XzfvZFIdMzZmLIM7HYGZc8bmQdjRHI+GTNjHgGS5SeeWsP54888jxbGfSXJpKi9HVkmyeZrFwFEtA==", + "dependencies": { + "@lukeed/uuid": "^2.0.1", + "@types/lodash": "^4.14.195", + "binary-search": "^1.3.6", + "brukerconverter": "^6.1.2", + "cross-fetch": "^3.1.5", + "form-data": "^4.0.0", + "gyromagnetic-ratio": "^1.0.0", + "is-any-array": "^2.0.0", + "linear-sum-assignment": "^1.0.5", + "lodash": "^4.17.21", + "ml-airpls": "^1.0.1", + "ml-baseline-correction-regression": "^1.0.1", + "ml-direct": "^0.1.3", + "ml-gsd": "^12.1.2", + "ml-hclust": "^3.1.0", + "ml-levenberg-marquardt": "^4.1.0", + "ml-matrix": "^6.10.4", + "ml-matrix-convolution": "^1.0.0", + "ml-matrix-peaks-finder": "^1.0.0", + "ml-peak-shape-generator": "^4.1.2", + "ml-signal-processing": "^1.0.3", + "ml-simple-clustering": "^0.1.0", + "ml-sparse-matrix": "^2.1.0", + "ml-spectra-processing": "^12.4.0", + "ml-tree-set": "^0.1.1", + "nmr-correlation": "^2.3.3", + "nmredata": "^0.9.2", + "openchemlib-utils": "^2.7.1", + "spectrum-generator": "^8.0.8" + } + }, + "node_modules/nmredata": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/nmredata/-/nmredata-0.9.2.tgz", + "integrity": "sha512-1fk2VYPV2rxPF+tJ0TobdjH5dsy32TZenbZYTICbgWwPcYEf6T6HHQbVggUo+zCcJjbmkrncjIOGRdZ/l5rxxg==", + "dependencies": { + "filelist-utils": "^1.2.0", + "jszip": "^3.10.1", + "openchemlib": "^8.0.1", + "openchemlib-utils": "^2.1.2" + } + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/num-sort": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/num-sort/-/num-sort-2.1.0.tgz", + "integrity": "sha512-1MQz1Ed8z2yckoBeSfkQHHO9K1yDRxxtotKSJ9yvcTUUxSvfvzEq5GwBrjjHEpMlq/k5gvXdmJ1SbYxWtpNoVg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openchemlib": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.3.0.tgz", + "integrity": "sha512-K1dggaC5uHIgwWc1CPoGHt8+Figu/JZaM9HbPppIFWJZh43cdyQV2bYk8pQm3VKCY2diNX/UHlq50uYzChZGhQ==" + }, + "node_modules/openchemlib-utils": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-2.9.0.tgz", + "integrity": "sha512-El0vE5Tg6BgujWHmnoAZR6azGwl6ESH6ieouUwHnYMgNvBfc63iJDzo7rn0TliK9Gr5BLQh89qfzO6A6eSeh9Q==", + "dependencies": { + "atom-sorter": "^2.0.0", + "ensure-string": "^1.2.0", + "get-value": "^3.0.1", + "ml-floyd-warshall": "^3.0.1", + "ml-matrix": "^6.10.4", + "papaparse": "^5.4.1", + "sdf-parser": "^6.0.1" + }, + "peerDependencies": { + "openchemlib": ">=8.3.0" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/papaparse": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", + "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/sdf-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sdf-parser/-/sdf-parser-6.0.1.tgz", + "integrity": "sha512-QorgjqiqTzodCMmYkWYkYJ9nBnOL3w3mWOE9BB1SATUfkFvLOSxHaeZAnJxrHlRkfI7+q3+FsvZOS2OTN74lNA==", + "dependencies": { + "dynamic-typing": "^1.0.0", + "ensure-string": "^1.2.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/spectrum-generator": { + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/spectrum-generator/-/spectrum-generator-8.0.8.tgz", + "integrity": "sha512-CRCW/ByC9lyRqssRz+S84l/xHhU+p2BzAIQc2OwLqRpmt89bzzr2u8h3WT1GDtXtMnTyDQEH2Yhnpb3PJeZ79Q==", + "dependencies": { + "ml-peak-shape-generator": "^4.1.2", + "ml-spectra-processing": "^12.5.0" + } + }, + "node_modules/spline-interpolator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spline-interpolator/-/spline-interpolator-1.0.0.tgz", + "integrity": "sha512-s8lowgsWE5wjHGEsk/4VADp7xAHw+pNy3OGp96fYjVTwLSx/83+BBmTFP2wZDRM0kj45q8zSyOV5fUcGn4hLEw==", + "dependencies": { + "d3-array": "^0.7.1" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/varian-converter": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varian-converter/-/varian-converter-0.3.2.tgz", + "integrity": "sha512-+MWPYpwF98R0KzBX0gjGRspVnuP6U8yK+5n+vFhtIa4vCmSmxnB2obRnU6/XDrF6gZc2ojQrMR2k+RtqHzuDfg==", + "dependencies": { + "filelist-utils": "^1.8.0", + "iobuffer": "^5.3.2", + "ml-spectra-processing": "^12.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/app/scripts/nmr-load-save/package.json b/app/scripts/nmr-load-save/package.json new file mode 100644 index 0000000..39f3744 --- /dev/null +++ b/app/scripts/nmr-load-save/package.json @@ -0,0 +1,20 @@ +{ + "name": "test-node", + "version": "1.0.0", + "description": "", + "main": "bin/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bin": { + "nmr-cli": "./bin/index.js" + }, + "dependencies": { + "filelist-utils": "^1.10.0", + "nmr-load-save": "^0.15.2", + "yargs": "^17.7.2" + } +}