Ver código fonte

update packages

Alexander Rose 3 anos atrás
pai
commit
b835eb8de7

Diferenças do arquivo suprimidas por serem muito extensas
+ 331 - 407
package-lock.json


+ 42 - 42
package.json

@@ -88,54 +88,54 @@
   ],
   "license": "MIT",
   "devDependencies": {
-    "@graphql-codegen/add": "^2.0.2",
-    "@graphql-codegen/cli": "^1.19.4",
-    "@graphql-codegen/time": "^2.0.2",
-    "@graphql-codegen/typescript": "^1.19.0",
-    "@graphql-codegen/typescript-graphql-files-modules": "^1.18.1",
-    "@graphql-codegen/typescript-graphql-request": "^2.0.3",
-    "@graphql-codegen/typescript-operations": "^1.17.12",
-    "@types/cors": "^2.8.8",
-    "@typescript-eslint/eslint-plugin": "^4.9.1",
-    "@typescript-eslint/parser": "^4.9.1",
+    "@graphql-codegen/add": "^3.1.0",
+    "@graphql-codegen/cli": "^2.2.0",
+    "@graphql-codegen/time": "^3.1.0",
+    "@graphql-codegen/typescript": "^2.2.2",
+    "@graphql-codegen/typescript-graphql-files-modules": "^2.1.0",
+    "@graphql-codegen/typescript-graphql-request": "^4.1.4",
+    "@graphql-codegen/typescript-operations": "^2.1.4",
+    "@types/cors": "^2.8.12",
+    "@typescript-eslint/eslint-plugin": "^4.31.0",
+    "@typescript-eslint/parser": "^4.31.0",
     "benchmark": "^2.1.4",
-    "concurrently": "^5.3.0",
-    "cpx2": "^3.0.0",
+    "concurrently": "^6.2.1",
+    "cpx2": "^3.0.2",
     "crypto-browserify": "^3.12.0",
-    "css-loader": "^5.0.1",
-    "eslint": "^7.15.0",
+    "css-loader": "^6.2.0",
+    "eslint": "^7.32.0",
     "extra-watch-webpack-plugin": "^1.0.3",
     "file-loader": "^6.2.0",
-    "fs-extra": "^9.0.1",
-    "graphql": "^15.4.0",
-    "http-server": "^0.12.3",
-    "jest": "^26.6.3",
-    "mini-css-extract-plugin": "^1.3.2",
-    "node-sass": "^6.0.0",
+    "fs-extra": "^10.0.0",
+    "graphql": "^15.5.3",
+    "http-server": "^13.0.1",
+    "jest": "^27.1.1",
+    "mini-css-extract-plugin": "^2.3.0",
+    "node-sass": "^6.0.1",
     "path-browserify": "^1.0.1",
     "raw-loader": "^4.0.2",
-    "sass-loader": "^11.1.1",
-    "simple-git": "^2.25.0",
+    "sass-loader": "^12.1.0",
+    "simple-git": "^2.45.1",
     "stream-browserify": "^3.0.0",
-    "style-loader": "^2.0.0",
-    "ts-jest": "^26.4.4",
-    "typescript": "^4.4.2",
-    "webpack": "^5.37.1",
-    "webpack-cli": "^4.7.0",
+    "style-loader": "^3.2.1",
+    "ts-jest": "^27.0.5",
+    "typescript": "^4.4.3",
+    "webpack": "^5.52.1",
+    "webpack-cli": "^4.8.0",
     "webpack-version-file-plugin": "^0.4.0"
   },
   "dependencies": {
-    "@types/argparse": "^1.0.38",
-    "@types/benchmark": "^2.1.0",
-    "@types/compression": "1.7.0",
-    "@types/express": "^4.17.9",
-    "@types/jest": "^26.0.18",
-    "@types/node": "^14.14.11",
-    "@types/node-fetch": "^2.5.7",
-    "@types/react": "^17.0.0",
-    "@types/react-dom": "^17.0.0",
-    "@types/swagger-ui-dist": "3.30.0",
-    "argparse": "^1.0.10",
+    "@types/argparse": "^2.0.10",
+    "@types/benchmark": "^2.1.1",
+    "@types/compression": "1.7.2",
+    "@types/express": "^4.17.13",
+    "@types/jest": "^27.0.1",
+    "@types/node": "^16.9.1",
+    "@types/node-fetch": "^2.5.12",
+    "@types/react": "^17.0.20",
+    "@types/react-dom": "^17.0.9",
+    "@types/swagger-ui-dist": "3.30.1",
+    "argparse": "^2.0.1",
     "body-parser": "^1.19.0",
     "compression": "^1.7.4",
     "cors": "^2.8.5",
@@ -143,13 +143,13 @@
     "h264-mp4-encoder": "^1.0.12",
     "immer": "^9.0.6",
     "immutable": "^3.8.2",
-    "node-fetch": "^2.6.1",
+    "node-fetch": "^2.6.2",
     "react": "^17.0.2",
     "react-dom": "^17.0.2",
     "rxjs": "^7.3.0",
-    "swagger-ui-dist": "^3.37.2",
+    "swagger-ui-dist": "^3.52.1",
     "tslib": "^2.3.1",
-    "util.promisify": "^1.0.1",
-    "xhr2": "^0.2.0"
+    "util.promisify": "^1.1.1",
+    "xhr2": "^0.2.1"
   }
 }

+ 5 - 5
src/cli/chem-comp-dict/create-ions.ts

@@ -54,20 +54,20 @@ async function run(out: string, forceDownload = false) {
 }
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Extract and save IonNames from CCD.'
 });
-parser.addArgument('out', {
+parser.add_argument('out', {
     help: 'Generated file output path.'
 });
-parser.addArgument([ '--forceDownload', '-f' ], {
-    action: 'storeTrue',
+parser.add_argument('--forceDownload', '-f', {
+    action: 'store_true',
     help: 'Force download of CCD and PVCD.'
 });
 interface Args {
     out: string,
     forceDownload?: boolean,
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 run(args.out, args.forceDownload);

+ 8 - 8
src/cli/chem-comp-dict/create-table.ts

@@ -265,21 +265,21 @@ const CCB_TABLE_NAME = 'CHEM_COMP_BONDS';
 const CCA_TABLE_NAME = 'CHEM_COMP_ATOMS';
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Create a cif file with one big table of all chem_comp_bond entries from the CCD and PVCD.'
 });
-parser.addArgument('out', {
+parser.add_argument('out', {
     help: 'Generated file output path.'
 });
-parser.addArgument([ '--forceDownload', '-f' ], {
-    action: 'storeTrue',
+parser.add_argument('--forceDownload', '-f', {
+    action: 'store_true',
     help: 'Force download of CCD and PVCD.'
 });
-parser.addArgument([ '--binary', '-b' ], {
-    action: 'storeTrue',
+parser.add_argument('--binary', '-b', {
+    action: 'store_true',
     help: 'Output as BinaryCIF.'
 });
-parser.addArgument(['--ccaOut', '-a'], {
+parser.add_argument('--ccaOut', '-a', {
     help: 'Optional generated file output path for chem_comp_atom data.',
     required: false
 });
@@ -289,6 +289,6 @@ interface Args {
     binary?: boolean,
     ccaOut?: string
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 run(args.out, args.binary, args.forceDownload, args.ccaOut);

+ 6 - 6
src/cli/cif2bcif/index.ts

@@ -37,20 +37,20 @@ function run(args: Args) {
 }
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Convert any CIF file to a BCIF file'
 });
-parser.addArgument([ 'src' ], {
+parser.add_argument('src', {
     help: 'Source CIF path'
 });
-parser.addArgument([ 'out' ], {
+parser.add_argument('out', {
     help: 'Output BCIF path'
 });
-parser.addArgument([ '-c', '--config' ], {
+parser.add_argument('-c', '--config', {
     help: 'Optional encoding strategy/precision config path',
     required: false
 });
-parser.addArgument([ '-f', '--filter' ], {
+parser.add_argument('-f', '--filter', {
     help: 'Optional filter whitelist/blacklist path',
     required: false
 });
@@ -61,7 +61,7 @@ interface Args {
     config?: string
     filter?: string
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 if (args) {
     run(args);

+ 19 - 19
src/cli/cifschema/index.ts

@@ -178,44 +178,44 @@ const CIF_CORE_ATTR_PATH = `${DIC_DIR}/templ_attr.cif`;
 const CIF_CORE_ATTR_URL = 'https://raw.githubusercontent.com/COMCIFS/cif_core/master/templ_attr.cif';
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Create schema from mmcif dictionary (v50 plus IHM and entity_branch extensions, downloaded from wwPDB)'
 });
-parser.addArgument([ '--preset', '-p' ], {
-    defaultValue: '',
+parser.add_argument('--preset', '-p', {
+    default: '',
     choices: ['', 'mmCIF', 'CCD', 'BIRD', 'CifCore'],
     help: 'Preset name'
 });
-parser.addArgument([ '--name', '-n' ], {
-    defaultValue: '',
+parser.add_argument('--name', '-n', {
+    default: '',
     help: 'Schema name'
 });
-parser.addArgument([ '--out', '-o' ], {
+parser.add_argument('--out', '-o', {
     help: 'Generated schema output path, if not given printed to stdout'
 });
-parser.addArgument([ '--targetFormat', '-tf' ], {
-    defaultValue: 'typescript-molstar',
+parser.add_argument('--targetFormat', '-tf', {
+    default: 'typescript-molstar',
     choices: ['typescript-molstar', 'json-internal'],
     help: 'Target format'
 });
-parser.addArgument([ '--dicPath', '-d' ], {
-    defaultValue: '',
+parser.add_argument('--dicPath', '-d', {
+    default: '',
     help: 'Path to dictionary'
 });
-parser.addArgument([ '--fieldNamesPath', '-fn' ], {
-    defaultValue: '',
+parser.add_argument('--fieldNamesPath', '-fn', {
+    default: '',
     help: 'Field names to include'
 });
-parser.addArgument([ '--forceDicDownload', '-f' ], {
-    action: 'storeTrue',
+parser.add_argument('--forceDicDownload', '-f', {
+    action: 'store_true',
     help: 'Force download of dictionaries'
 });
-parser.addArgument([ '--moldataImportPath', '-mip' ], {
-    defaultValue: 'molstar/lib/mol-data',
+parser.add_argument('--moldataImportPath', '-mip', {
+    default: 'molstar/lib/mol-data',
     help: 'mol-data import path (for typescript target only)'
 });
-parser.addArgument([ '--addAliases', '-aa' ], {
-    action: 'storeTrue',
+parser.add_argument('--addAliases', '-aa', {
+    action: 'store_true',
     help: 'Add field name/path aliases'
 });
 interface Args {
@@ -230,7 +230,7 @@ interface Args {
     moldataImportPath: string
     addAliases: boolean
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 const FORCE_DIC_DOWNLOAD = args.forceDicDownload;
 

+ 5 - 5
src/cli/lipid-params/index.ts

@@ -70,21 +70,21 @@ export const LipidNames = new Set(${lipidNames.replace(/"/g, "'").replace(/,/g,
 }
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Create lipid params (from martini lipids itp)'
 });
-parser.addArgument([ '--out', '-o' ], {
+parser.add_argument('--out', '-o', {
     help: 'Generated lipid params output path, if not given printed to stdout'
 });
-parser.addArgument([ '--forceDownload', '-f' ], {
-    action: 'storeTrue',
+parser.add_argument('--forceDownload', '-f', {
+    action: 'store_true',
     help: 'Force download of martini lipids itp'
 });
 interface Args {
     out: string
     forceDownload: boolean
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 const FORCE_DOWNLOAD = args.forceDownload;
 

+ 14 - 14
src/cli/structure-info/model.ts

@@ -230,21 +230,21 @@ async function runFile(filename: string, args: Args) {
 }
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Print info about a structure, mainly to test and showcase the mol-model module'
 });
-parser.addArgument(['--download', '-d'], { help: 'Pdb entry id' });
-parser.addArgument(['--file', '-f'], { help: 'filename' });
-
-parser.addArgument(['--models'], { help: 'print models info', action: 'storeTrue' });
-parser.addArgument(['--seq'], { help: 'print sequence', action: 'storeTrue' });
-parser.addArgument(['--units'], { help: 'print units', action: 'storeTrue' });
-parser.addArgument(['--sym'], { help: 'print symmetry', action: 'storeTrue' });
-parser.addArgument(['--rings'], { help: 'print rings', action: 'storeTrue' });
-parser.addArgument(['--intraBonds'], { help: 'print intra unit bonds', action: 'storeTrue' });
-parser.addArgument(['--interBonds'], { help: 'print inter unit bonds', action: 'storeTrue' });
-parser.addArgument(['--mod'], { help: 'print modified residues', action: 'storeTrue' });
-parser.addArgument(['--sec'], { help: 'print secoundary structure', action: 'storeTrue' });
+parser.add_argument('--download', '-d', { help: 'Pdb entry id' });
+parser.add_argument('--file', '-f', { help: 'filename' });
+
+parser.add_argument('--models', { help: 'print models info', action: 'store_true' });
+parser.add_argument('--seq', { help: 'print sequence', action: 'store_true' });
+parser.add_argument('--units', { help: 'print units', action: 'store_true' });
+parser.add_argument('--sym', { help: 'print symmetry', action: 'store_true' });
+parser.add_argument('--rings', { help: 'print rings', action: 'store_true' });
+parser.add_argument('--intraBonds', { help: 'print intra unit bonds', action: 'store_true' });
+parser.add_argument('--interBonds', { help: 'print inter unit bonds', action: 'store_true' });
+parser.add_argument('--mod', { help: 'print modified residues', action: 'store_true' });
+parser.add_argument('--sec', { help: 'print secoundary structure', action: 'store_true' });
 interface Args {
     download?: string,
     file?: string,
@@ -260,7 +260,7 @@ interface Args {
     mod?: boolean,
     sec?: boolean,
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 if (args.download) runDL(args.download, args);
 else if (args.file) runFile(args.file, args);

+ 4 - 4
src/cli/structure-info/volume.ts

@@ -75,13 +75,13 @@ async function run(url: string, meshFilename: string) {
 }
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Info about VolumeData from mol-model module'
 });
-parser.addArgument([ '--emdb', '-e' ], {
+parser.add_argument('--emdb', '-e', {
     help: 'EMDB id, for example 8116',
 });
-parser.addArgument([ '--mesh' ], {
+parser.add_argument('--mesh', {
     help: 'Mesh filename',
     required: true
 });
@@ -89,6 +89,6 @@ interface Args {
     emdb?: string,
     mesh: string
 }
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 
 run(`https://ds.litemol.org/em/emd-${args.emdb}/cell?detail=4`, args.mesh);

+ 10 - 9
src/extensions/rcsb/graphql/codegen.yml

@@ -1,12 +1,13 @@
 schema: https://data.rcsb.org/graphql
 documents: './src/extensions/rcsb/graphql/symmetry.gql.ts'
 generates:
-  './src/extensions/rcsb/graphql/types.ts':
-    plugins:
-      - add: '/* eslint-disable */'
-      - time
-      - typescript
-      - typescript-operations
-    config:
-      immutableTypes: true
-      skipTypename: true
+    './src/extensions/rcsb/graphql/types.ts':
+        plugins:
+            - add:
+                content: '/* eslint-disable */'
+            - time
+            - typescript
+            - typescript-operations
+        config:
+            immutableTypes: true
+            skipTypename: true

+ 1 - 1
src/perf-tests/mol-script.ts

@@ -68,7 +68,7 @@ export async function testQ() {
     const { structure } = await getModelsAndStructure(frame);
     const model = structure.models[0];
 
-    const rawData = await fetch(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/${model.entryId.toLowerCase()}`, { timeout: 1500 });
+    const rawData = await fetch(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/${model.entryId.toLowerCase()}`);
     const data = StructureQualityReport.fromJson(model, await rawData.json());
 
     StructureQualityReportProvider.set(model, { serverUrl: '' }, data);

+ 27 - 28
src/servers/model/config.ts

@@ -117,65 +117,65 @@ export let mapSourceAndIdToFilename: (source: string, id: string) => [string, Mo
 };
 
 function addServerArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument([ '--apiPrefix' ], {
-        defaultValue: DefaultModelServerConfig.apiPrefix,
+    parser.add_argument('--apiPrefix', {
+        default: DefaultModelServerConfig.apiPrefix,
         metavar: 'PREFIX',
         help: `Specify the prefix of the API, i.e. <host>/<apiPrefix>/<API queries>`
     });
-    parser.addArgument([ '--defaultPort' ], {
-        defaultValue: DefaultModelServerConfig.defaultPort,
+    parser.add_argument('--defaultPort', {
+        default: DefaultModelServerConfig.defaultPort,
         metavar: 'PORT',
         type: 'int',
         help: `Specify the port the server is running on`
     });
-    parser.addArgument([ '--cacheMaxSizeInBytes' ], {
-        defaultValue: DefaultModelServerConfig.cacheMaxSizeInBytes,
+    parser.add_argument('--cacheMaxSizeInBytes', {
+        default: DefaultModelServerConfig.cacheMaxSizeInBytes,
         metavar: 'CACHE_SIZE',
         type: 'int',
         help: `0 for off.`
     });
-    parser.addArgument([ '--cacheEntryTimeoutMs' ], {
-        defaultValue: DefaultModelServerConfig.cacheEntryTimeoutMs,
+    parser.add_argument('--cacheEntryTimeoutMs', {
+        default: DefaultModelServerConfig.cacheEntryTimeoutMs,
         metavar: 'CACHE_TIMEOUT',
         type: 'int',
         help: `Specify in ms how long to keep entries in cache.`
     });
-    parser.addArgument([ '--requestTimeoutMs' ], {
-        defaultValue: DefaultModelServerConfig.requestTimeoutMs,
+    parser.add_argument('--requestTimeoutMs', {
+        default: DefaultModelServerConfig.requestTimeoutMs,
         metavar: 'REQUEST_TIMEOUT',
         type: 'int',
         help: `The maximum number of ms the server spends on a request.`
     });
-    parser.addArgument([ '--queryTimeoutMs' ], {
-        defaultValue: DefaultModelServerConfig.queryTimeoutMs,
+    parser.add_argument('--queryTimeoutMs', {
+        default: DefaultModelServerConfig.queryTimeoutMs,
         metavar: 'QUERY_TIMEOUT',
         type: 'int',
         help: `The maximum time the server dedicates to executing a query in ms.\nDoes not include the time it takes to read and export the data.`
     });
-    parser.addArgument([ '--shutdownTimeoutMinutes' ], {
-        defaultValue: DefaultModelServerConfig.shutdownTimeoutMinutes,
+    parser.add_argument('--shutdownTimeoutMinutes', {
+        default: DefaultModelServerConfig.shutdownTimeoutMinutes,
         metavar: 'TIME',
         type: 'int',
         help: `0 for off, server will shut down after this amount of minutes.`
     });
-    parser.addArgument([ '--shutdownTimeoutVarianceMinutes' ], {
-        defaultValue: DefaultModelServerConfig.shutdownTimeoutVarianceMinutes,
+    parser.add_argument('--shutdownTimeoutVarianceMinutes', {
+        default: DefaultModelServerConfig.shutdownTimeoutVarianceMinutes,
         metavar: 'VARIANCE',
         type: 'int',
         help: `modifies the shutdown timer by +/- timeoutVarianceMinutes (to avoid multiple instances shutting at the same time)`
     });
-    parser.addArgument([ '--maxQueryManyQueries' ], {
-        defaultValue: DefaultModelServerConfig.maxQueryManyQueries,
+    parser.add_argument('--maxQueryManyQueries', {
+        default: DefaultModelServerConfig.maxQueryManyQueries,
         metavar: 'QUERY_MANY_LIMIT',
         type: 'int',
         help: `maximum number of queries allowed by the query-many at a time`
     });
-    parser.addArgument([ '--defaultSource' ], {
-        defaultValue: DefaultModelServerConfig.defaultSource,
+    parser.add_argument('--defaultSource', {
+        default: DefaultModelServerConfig.defaultSource,
         metavar: 'DEFAULT_SOURCE',
         help: `modifies which 'sourceMap' source to use by default`
     });
-    parser.addArgument([ '--sourceMap' ], {
+    parser.add_argument('--sourceMap', {
         nargs: 2,
         action: 'append',
         metavar: ['SOURCE', 'PATH'] as any,
@@ -188,7 +188,7 @@ function addServerArgs(parser: argparse.ArgumentParser) {
             `Supported formats: ${ModelServerFetchFormats.join(', ')}`
         ].join('\n'),
     });
-    parser.addArgument([ '--sourceMapUrl' ], {
+    parser.add_argument('--sourceMapUrl', {
         nargs: 3,
         action: 'append',
         metavar: ['SOURCE', 'PATH', 'SOURCE_MAP_FORMAT'] as any,
@@ -224,15 +224,15 @@ interface ServerJsonConfig {
 }
 
 function addJsonConfigArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument(['--cfg'], {
+    parser.add_argument('--cfg', {
         help: [
             'JSON config file path',
             'If a property is not specified, cmd line param/OS variable/default value are used.'
         ].join('\n'),
         required: false
     });
-    parser.addArgument(['--printCfg'], { help: 'Print current config for validation and exit.', required: false, nargs: 0 });
-    parser.addArgument(['--cfgTemplate'], { help: 'Prints default JSON config template to be modified and exits.', required: false, nargs: 0 });
+    parser.add_argument('--printCfg', { help: 'Print current config for validation and exit.', required: false, nargs: 0 });
+    parser.add_argument('--cfgTemplate', { help: 'Prints default JSON config template to be modified and exits.', required: false, nargs: 0 });
 }
 
 function setConfig(config: ModelServerConfig) {
@@ -260,13 +260,12 @@ function validateConfigAndSetupSourceMap() {
 
 function parseConfigArguments() {
     const parser = new argparse.ArgumentParser({
-        version: VERSION,
-        addHelp: true,
+        add_help: true,
         description: `ModelServer ${VERSION}, (c) 2018-2020, Mol* contributors`
     });
     addJsonConfigArgs(parser);
     addServerArgs(parser);
-    return parser.parseArgs() as ModelServerConfig & ServerJsonConfig;
+    return parser.parse_args() as ModelServerConfig & ServerJsonConfig;
 }
 
 export function configureServer() {

+ 2 - 2
src/servers/model/preprocess.ts

@@ -5,10 +5,10 @@
  * @author David Sehnal <david.sehnal@gmail.com>
  */
 
-import * as cluster from 'cluster';
+import cluster from 'cluster';
 import { runChild } from './preprocess/parallel';
 
-if (cluster.isMaster) {
+if (cluster.isPrimary) {
     require('./preprocess/master');
 } else {
     runChild();

+ 11 - 11
src/servers/model/preprocess/master.ts

@@ -29,18 +29,18 @@ function description() {
 }
 
 const cmdParser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: description()
 });
-cmdParser.addArgument(['--input', '-i'], { help: 'Input filename', required: false });
-cmdParser.addArgument(['--outCIF', '-oc'], { help: 'Output CIF filename', required: false });
-cmdParser.addArgument(['--outBCIF', '-ob'], { help: 'Output BinaryCIF filename', required: false });
+cmdParser.add_argument('--input', '-i', { help: 'Input filename', required: false });
+cmdParser.add_argument('--outCIF', '-oc', { help: 'Output CIF filename', required: false });
+cmdParser.add_argument('--outBCIF', '-ob', { help: 'Output BinaryCIF filename', required: false });
 // TODO: add back? cmdParser.addArgument(['--bulk', '-b'], { help: 'Bulk JSON ({ numProcesses?: number, entries: { source: string, cif?: string, bcif?: string }[] })', required: false });
-cmdParser.addArgument(['--cfg', '-c'], { help: 'Config file path', required: false });
-cmdParser.addArgument(['--folderIn', '-fin'], { help: 'Convert folder', required: false });
-cmdParser.addArgument(['--folderOutCIF', '-foc'], { help: 'Convert folder text output', required: false });
-cmdParser.addArgument(['--folderOutBCIF', '-fob'], { help: 'Convert folder binary output', required: false });
-cmdParser.addArgument(['--folderNumProcesses', '-fp'], { help: 'Convert folder num processes', required: false });
+cmdParser.add_argument('--cfg', '-c', { help: 'Config file path', required: false });
+cmdParser.add_argument('--folderIn', '-fin', { help: 'Convert folder', required: false });
+cmdParser.add_argument('--folderOutCIF', '-foc', { help: 'Convert folder text output', required: false });
+cmdParser.add_argument('--folderOutBCIF', '-fob', { help: 'Convert folder binary output', required: false });
+cmdParser.add_argument('--folderNumProcesses', '-fp', { help: 'Convert folder num processes', required: false });
 
 interface CmdArgs {
     // bulk?: string,
@@ -61,10 +61,10 @@ export interface PreprocessConfig {
     customProperties?: ModelPropertyProviderConfig | string
 }
 
-const cmdArgs = cmdParser.parseArgs() as CmdArgs;
+const cmdArgs = cmdParser.parse_args() as CmdArgs;
 
 if (Object.keys(cmdArgs).filter(k => (cmdArgs as any)[k] !== null).length === 0 || typeof cmdArgs.help !== 'undefined') {
-    cmdParser.printHelp();
+    cmdParser.print_help();
     process.exit(0);
 }
 

+ 1 - 1
src/servers/model/preprocess/parallel.ts

@@ -5,7 +5,7 @@
  */
 
 import * as path from 'path';
-import * as cluster from 'cluster';
+import cluster from 'cluster';
 import { now } from '../../../mol-util/now';
 import { PerformanceMonitor } from '../../../mol-util/performance-monitor';
 import { preprocessFile } from './preprocess';

+ 2 - 2
src/servers/model/properties/providers/pdbe.ts

@@ -77,12 +77,12 @@ function apiQueryProvider(urlPrefix: string, cache: any) {
             const rawData = await fetchRetry(`${urlPrefix}/${model.entryId.toLowerCase()}`, 1500, 5);
             // TODO: is this ok?
             if (rawData.status !== 200) return { };
-            const json = (await rawData.json())[model.entryId.toLowerCase()] || { };
+            const json = ((await rawData.json()) as any)[model.entryId.toLowerCase()] || { };
             cache[cacheKey] = json;
             return json;
         } catch (e) {
             // TODO: handle better
-            ConsoleLogger.warn('Props', `Count not retrieve prop @${`${urlPrefix}/${model.entryId.toLowerCase()}`}`);
+            ConsoleLogger.warn('Props', `Could not retrieve prop @${`${urlPrefix}/${model.entryId.toLowerCase()}`}`);
             return { };
         }
     };

+ 5 - 5
src/servers/model/utils/fetch-props-pdbe.ts

@@ -13,19 +13,19 @@ import { now } from '../../../mol-util/now';
 import { PerformanceMonitor } from '../../../mol-util/performance-monitor';
 
 const cmdParser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: 'Download JSON data from PDBe API'
 });
 
-cmdParser.addArgument(['--in'], { help: 'Input folder', required: true });
-cmdParser.addArgument(['--out'], { help: 'Output folder', required: true });
+cmdParser.add_argument('--in', { help: 'Input folder', required: true });
+cmdParser.add_argument('--out', { help: 'Output folder', required: true });
 
 interface CmdArgs {
     in: string,
     out: string
 }
 
-const cmdArgs = cmdParser.parseArgs() as CmdArgs;
+const cmdArgs = cmdParser.parse_args() as CmdArgs;
 
 function getPDBid(name: string) {
     let idx = name.indexOf('_');
@@ -73,7 +73,7 @@ async function process() {
         for (let ee of e.entries) {
             const query = await fetch(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/${ee}`);
             try {
-                if (query.status === 200) data[ee] = (await query.json())[ee] || { };
+                if (query.status === 200) data[ee] = ((await query.json()) as any)[ee] || { };
                 else console.error(ee, query.status);
             } catch (e) {
                 console.error(ee, '' + e);

+ 5 - 4
src/servers/model/utils/fetch-retry.ts

@@ -17,15 +17,16 @@ function isRetriableNetworkError(error: any) {
 }
 
 export async function fetchRetry(url: string, timeout: number, retryCount: number, onRetry?: () => void): Promise<Response> {
-    const result = await retryIf(() => fetch(url, { timeout }), {
-        retryThenIf: r => r.status === 408 /** timeout */ || r.status === 429 /** too mant requests */ || (r.status >= 500 && r.status < 600),
+    const controller = new AbortController();
+    const id = setTimeout(() => controller.abort(), timeout);
+    const result = await retryIf(() => fetch(url, { signal: controller.signal }), {
+        retryThenIf: r => r.status === 408 /** timeout */ || r.status === 429 /** too many requests */ || (r.status >= 500 && r.status < 600),
         // TODO test retryCatchIf
         retryCatchIf: e => isRetriableNetworkError(e),
         onRetry,
         retryCount
     });
+    clearTimeout(id);
 
     return result;
-    // if (result.status >= 200 && result.status < 300) return result;
-    // throw new Error(result.statusText);
 }

+ 6 - 6
src/servers/plugin-state/config.ts

@@ -15,14 +15,14 @@ export interface Config {
 
 export function getConfig() {
     const cmdParser = new argparse.ArgumentParser({
-        addHelp: true
+        add_help: true
     });
-    cmdParser.addArgument(['--working-folder'], { help: 'Working forlder path.', required: true });
-    cmdParser.addArgument(['--port'], { help: 'Server port. Altenatively use ENV variable PORT.', type: 'int', required: false });
-    cmdParser.addArgument(['--api-prefix'], { help: 'Server API prefix.', defaultValue: '', required: false });
-    cmdParser.addArgument(['--max-states'], { help: 'Maxinum number of states that could be saved.', defaultValue: 40, type: 'int', required: false });
+    cmdParser.add_argument('--working-folder', { help: 'Working forlder path.', required: true });
+    cmdParser.add_argument('--port', { help: 'Server port. Altenatively use ENV variable PORT.', type: 'int', required: false });
+    cmdParser.add_argument('--api-prefix', { help: 'Server API prefix.', default: '', required: false });
+    cmdParser.add_argument('--max-states', { help: 'Maxinum number of states that could be saved.', default: 40, type: 'int', required: false });
 
-    const config = cmdParser.parseArgs() as Config;
+    const config = cmdParser.parse_args() as Config;
     if (!config.port) config.port = process.env.port || 1339;
     return config;
 }

+ 27 - 27
src/servers/volume/config.ts

@@ -7,7 +7,7 @@
 
 import * as argparse from 'argparse';
 import { ObjectKeys } from '../../mol-util/type-helpers';
-import { VOLUME_SERVER_HEADER, VOLUME_SERVER_VERSION } from './server/version';
+import { VOLUME_SERVER_HEADER } from './server/version';
 import * as fs from 'fs';
 
 const DefaultServerConfig = {
@@ -19,22 +19,22 @@ const DefaultServerConfig = {
 };
 
 function addLimitsArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument([ '--maxRequestBlockCount' ], {
-        defaultValue: DefaultLimitsConfig.maxRequestBlockCount,
+    parser.add_argument('--maxRequestBlockCount', {
+        default: DefaultLimitsConfig.maxRequestBlockCount,
         metavar: 'COUNT',
         help: `Maximum number of blocks that could be read in 1 query.
 This is somewhat tied to the maxOutputSizeInVoxelCountByPrecisionLevel
 in that the <maximum number of voxel> = maxRequestBlockCount * <block size>^3.
 The default block size is 96 which corresponds to 28,311,552 voxels with 32 max blocks.`
     });
-    parser.addArgument([ '--maxFractionalBoxVolume' ], {
-        defaultValue: DefaultLimitsConfig.maxFractionalBoxVolume,
+    parser.add_argument('--maxFractionalBoxVolume', {
+        default: DefaultLimitsConfig.maxFractionalBoxVolume,
         metavar: 'VOLUME',
         help: `The maximum fractional volume of the query box (to prevent queries that are too big).`
     });
-    parser.addArgument([ '--maxOutputSizeInVoxelCountByPrecisionLevel' ], {
+    parser.add_argument('--maxOutputSizeInVoxelCountByPrecisionLevel', {
         nargs: '+',
-        defaultValue: DefaultLimitsConfig.maxOutputSizeInVoxelCountByPrecisionLevel,
+        default: DefaultLimitsConfig.maxOutputSizeInVoxelCountByPrecisionLevel,
         metavar: 'LEVEL',
         help: `What is the (approximate) maximum desired size in voxel count by precision level
 Rule of thumb: <response gzipped size> in [<voxel count> / 8, <voxel count> / 4].
@@ -43,31 +43,31 @@ The maximum number of voxels is tied to maxRequestBlockCount.`
 }
 
 function addServerArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument([ '--apiPrefix' ], {
-        defaultValue: DefaultServerConfig.apiPrefix,
+    parser.add_argument('--apiPrefix', {
+        default: DefaultServerConfig.apiPrefix,
         metavar: 'PREFIX',
         help: `Specify the prefix of the API, i.e. <host>/<apiPrefix>/<API queries>`
     });
-    parser.addArgument([ '--defaultPort' ], {
-        defaultValue: DefaultServerConfig.defaultPort,
+    parser.add_argument('--defaultPort', {
+        default: DefaultServerConfig.defaultPort,
         metavar: 'PORT',
         type: 'int',
         help: `Specify the port the server is running on`
     });
 
-    parser.addArgument([ '--shutdownTimeoutMinutes' ], {
-        defaultValue: DefaultServerConfig.shutdownTimeoutMinutes,
+    parser.add_argument('--shutdownTimeoutMinutes', {
+        default: DefaultServerConfig.shutdownTimeoutMinutes,
         metavar: 'TIME',
         type: 'int',
         help: `0 for off, server will shut down after this amount of minutes.`
     });
-    parser.addArgument([ '--shutdownTimeoutVarianceMinutes' ], {
-        defaultValue: DefaultServerConfig.shutdownTimeoutVarianceMinutes,
+    parser.add_argument('--shutdownTimeoutVarianceMinutes', {
+        default: DefaultServerConfig.shutdownTimeoutVarianceMinutes,
         metavar: 'VARIANCE',
         type: 'int',
         help: `modifies the shutdown timer by +/- timeoutVarianceMinutes (to avoid multiple instances shutting at the same time)`
     });
-    parser.addArgument([ '--idMap' ], {
+    parser.add_argument('--idMap', {
         nargs: 2,
         action: 'append',
         metavar: ['TYPE', 'PATH'] as any,
@@ -84,15 +84,15 @@ function addServerArgs(parser: argparse.ArgumentParser) {
 }
 
 function addJsonConfigArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument(['--cfg'], {
+    parser.add_argument('--cfg', {
         help: [
             'JSON config file path',
             'If a property is not specified, cmd line param/OS variable/default value are used.'
         ].join('\n'),
         required: false
     });
-    parser.addArgument(['--printCfg'], { help: 'Print current config for validation and exit.', required: false, nargs: 0 });
-    parser.addArgument(['--cfgTemplate'], { help: 'Prints default JSON config template to be modified and exits.', required: false, nargs: 0 });
+    parser.add_argument('--printCfg', { help: 'Print current config for validation and exit.', required: false, nargs: 0 });
+    parser.add_argument('--cfgTemplate', { help: 'Prints default JSON config template to be modified and exits.', required: false, nargs: 0 });
 }
 
 export interface ServerJsonConfig {
@@ -156,14 +156,14 @@ const ServerConfigTemplate: FullServerConfig = {
 
 export function configureServer() {
     const parser = new argparse.ArgumentParser({
-        version: VOLUME_SERVER_VERSION,
-        addHelp: true,
+        // version: VOLUME_SERVER_VERSION,
+        add_help: true,
         description: VOLUME_SERVER_HEADER
     });
     addJsonConfigArgs(parser);
     addServerArgs(parser);
     addLimitsArgs(parser);
-    const config = parser.parseArgs() as FullServerConfig & ServerJsonConfig;
+    const config = parser.parse_args() as FullServerConfig & ServerJsonConfig;
 
     if (config.cfgTemplate !== null) {
         console.log(JSON.stringify(ServerConfigTemplate, null, 2));
@@ -192,16 +192,16 @@ export function configureServer() {
 
 export function configureLocal() {
     const parser = new argparse.ArgumentParser({
-        version: VOLUME_SERVER_VERSION,
-        addHelp: true,
+        // version: VOLUME_SERVER_VERSION,
+        add_help: true,
         description: VOLUME_SERVER_HEADER
     });
-    parser.addArgument(['--jobs'], { help: `Path to a JSON file with job specification.`, required: false });
-    parser.addArgument(['--jobsTemplate'], { help: 'Print example template for jobs.json and exit.', required: false, nargs: 0 });;
+    parser.add_argument('--jobs', { help: `Path to a JSON file with job specification.`, required: false });
+    parser.add_argument('--jobsTemplate', { help: 'Print example template for jobs.json and exit.', required: false, nargs: 0 });;
     addJsonConfigArgs(parser);
     addLimitsArgs(parser);
 
-    const config = parser.parseArgs() as LimitsConfig & ServerJsonConfig;
+    const config = parser.parse_args() as LimitsConfig & ServerJsonConfig;
 
     if (config.cfgTemplate !== null) {
         console.log(JSON.stringify(DefaultLimitsConfig, null, 2));

+ 11 - 11
src/servers/volume/pack.ts

@@ -63,31 +63,31 @@ interface EmArgs extends GeneralArgs {
 type Args = XrayArgs | EmArgs
 
 const parser = new argparse.ArgumentParser({
-    addHelp: true,
+    add_help: true,
     description: `VolumeServer Packer ${VERSION}, (c) 2018-2019, Mol* contributors`
 });
 
-const subparsers = parser.addSubparsers({
+const subparsers = parser.add_subparsers({
     title: 'Packing modes',
     dest: 'mode'
 });
 
 function addGeneralArgs(parser: argparse.ArgumentParser) {
-    parser.addArgument(['output'], { help: `Output path.` });
-    parser.addArgument(['--blockSizeInMB'], { defaultValue: 96, help: `Maximum block size.`, metavar: 'SIZE' });
-    parser.addArgument(['--format'], { defaultValue: 'ccp4', help: `Input file format.` });
+    parser.add_argument('output', { help: `Output path.` });
+    parser.add_argument('--blockSizeInMB', { default: 96, help: `Maximum block size.`, metavar: 'SIZE' });
+    parser.add_argument('--format', { default: 'ccp4', help: `Input file format.` });
 }
 
-const xrayParser = subparsers.addParser('xray', { addHelp: true });
-xrayParser.addArgument(['input2fofc'], { help: `Path to 2fofc file.`, metavar: '2FOFC' });
-xrayParser.addArgument(['inputFofc'], { help: `Path to fofc file.`, metavar: 'FOFC' });
+const xrayParser = subparsers.add_parser('xray', { add_help: true });
+xrayParser.add_argument('input2fofc', { help: `Path to 2fofc file.`, metavar: '2FOFC' });
+xrayParser.add_argument('inputFofc', { help: `Path to fofc file.`, metavar: 'FOFC' });
 addGeneralArgs(xrayParser);
 
-const emParser = subparsers.addParser('em', { addHelp: true });
-emParser.addArgument(['inputEm'], { help: `Path to EM density file.`, metavar: 'EM' });
+const emParser = subparsers.add_parser('em', { add_help: true });
+emParser.add_argument('inputEm', { help: `Path to EM density file.`, metavar: 'EM' });
 addGeneralArgs(emParser);
 
-const args: Args = parser.parseArgs();
+const args: Args = parser.parse_args();
 const config = getConfig(args);
 
 pack(config.input, config.blockSizeInMB, config.isPeriodic, config.outputFilename, config.format);

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff