From 8281dd24d59411ea4259b2fd7e49912251ee9875 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Fri, 31 May 2019 11:19:44 -0700
Subject: [PATCH] package updates and ts fixes

---
 package-lock.json                         | Bin 570913 -> 575785 bytes
 package.json                              |  29 +++++++++++++---------
 src/mol-data/db/table.ts                  |   2 +-
 src/mol-gl/render-object.ts               |  16 ++++++------
 src/mol-math/graph/int-adjacency-graph.ts |   6 ++---
 src/mol-repr/shape/representation.ts      |  10 ++++----
 src/mol-repr/structure/complex-visual.ts  |   8 +++---
 src/mol-repr/structure/units-visual.ts    |   8 +++---
 src/mol-repr/volume/representation.ts     |   8 +++---
 src/mol-util/set.ts                       |   2 +-
 src/servers/volume/config.ts              |   8 ++----
 11 files changed, 49 insertions(+), 48 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 3db077f62b8a695813533388b3ad68e8f0917b91..63217087816db2a87969dcfecf735d221decc48a 100644
GIT binary patch
delta 4442
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

delta 3672
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
E0b=$8O8@`>

diff --git a/package.json b/package.json
index 4e0873b4b..6b9b89280 100644
--- a/package.json
+++ b/package.json
@@ -67,6 +67,11 @@
     "testRegex": "\\.spec\\.ts$"
   },
   "author": "Mol* Contributors",
+  "contributors": [
+    "Alexander Rose <alexander.rose@weirdbyte.de>",
+    "David Sehnal <david.sehnal@gmail.com>",
+    "Sebastian Bittrich <sebastian.bittrich@rcsb.org>"
+  ],
   "license": "MIT",
   "devDependencies": {
     "benchmark": "^2.1.4",
@@ -81,18 +86,18 @@
     "graphql-codegen-typescript-template": "^0.18.2",
     "jest": "^24.8.0",
     "jest-raw-loader": "^1.0.1",
-    "mini-css-extract-plugin": "^0.6.0",
+    "mini-css-extract-plugin": "^0.7.0",
     "node-sass": "^4.12.0",
     "raw-loader": "^2.0.0",
     "resolve-url-loader": "^3.1.0",
     "sass-loader": "^7.1.0",
     "style-loader": "^0.23.1",
     "ts-jest": "^24.0.2",
-    "tslint": "^5.16.0",
-    "typescript": "^3.4.5",
-    "uglify-js": "^3.5.13",
+    "tslint": "^5.17.0",
+    "typescript": "^3.5.1",
+    "uglify-js": "^3.6.0",
     "util.promisify": "^1.0.0",
-    "webpack": "^4.31.0",
+    "webpack": "^4.32.2",
     "webpack-cli": "^3.3.2"
   },
   "dependencies": {
@@ -102,25 +107,25 @@
     "@types/express": "^4.16.1",
     "@types/gl": "^4.1.0",
     "@types/jest": "^24.0.13",
-    "@types/node": "^12.0.2",
+    "@types/node": "^12.0.4",
     "@types/node-fetch": "^2.3.4",
     "@types/pngjs": "^3.3.2",
-    "@types/react": "^16.8.17",
+    "@types/react": "^16.8.19",
     "@types/react-dom": "^16.8.4",
     "@types/swagger-ui-dist": "3.0.0",
     "@types/webgl2": "0.0.4",
     "argparse": "^1.0.10",
     "compression": "^1.7.4",
-    "express": "^4.17.0",
-    "gl": "^4.2.2",
-    "graphql": "^14.3.0",
+    "express": "^4.17.1",
+    "gl": "^4.3.3",
+    "graphql": "^14.3.1",
     "immutable": "^3.8.2",
     "node-fetch": "^2.6.0",
     "pngjs": "^3.4.0",
     "react": "^16.8.6",
     "react-dom": "^16.8.6",
     "rxjs": "^6.5.2",
-    "swagger-ui-dist": "^3.22.1",
-    "xhr2": "^0.1.4"
+    "swagger-ui-dist": "^3.22.2",
+    "xhr2": "^0.2.0"
   }
 }
diff --git a/src/mol-data/db/table.ts b/src/mol-data/db/table.ts
index 3573c7bd6..b67be9677 100644
--- a/src/mol-data/db/table.ts
+++ b/src/mol-data/db/table.ts
@@ -196,7 +196,7 @@ namespace Table {
         const row: Row<S> = Object.create(null);
         const { _columns: cols } = table;
         for (let i = 0; i < cols.length; i++) {
-            const c = cols[i];
+            const c = cols[i] as keyof S;
             row[c] = table[c].value(index);
         }
         return row;
diff --git a/src/mol-gl/render-object.ts b/src/mol-gl/render-object.ts
index ec7536ff3..a464f730d 100644
--- a/src/mol-gl/render-object.ts
+++ b/src/mol-gl/render-object.ts
@@ -20,14 +20,14 @@ const getNextId = idFactory(0, 0x7FFFFFFF)
 
 export const getNextMaterialId = idFactory(0, 0x7FFFFFFF)
 
-export interface BaseRenderObject { id: number, type: string, values: RenderableValues, state: RenderableState, materialId: number }
-export interface MeshRenderObject extends BaseRenderObject { type: 'mesh', values: MeshValues }
-export interface PointsRenderObject extends BaseRenderObject { type: 'points', values: PointsValues }
-export interface SpheresRenderObject extends BaseRenderObject { type: 'spheres', values: SpheresValues }
-export interface TextRenderObject extends BaseRenderObject { type: 'text', values: TextValues }
-export interface LinesRenderObject extends BaseRenderObject { type: 'lines', values: LinesValues }
-export interface DirectVolumeRenderObject extends BaseRenderObject { type: 'direct-volume', values: DirectVolumeValues }
-export interface TextureMeshRenderObject extends BaseRenderObject { type: 'texture-mesh', values: TextureMeshValues }
+export interface BaseRenderObject<T extends RenderableValues> { id: number, type: string, values: T, state: RenderableState, materialId: number }
+export interface MeshRenderObject extends BaseRenderObject<MeshValues> { type: 'mesh' }
+export interface PointsRenderObject extends BaseRenderObject<PointsValues> { type: 'points' }
+export interface SpheresRenderObject extends BaseRenderObject<SpheresValues> { type: 'spheres' }
+export interface TextRenderObject extends BaseRenderObject<TextValues> { type: 'text' }
+export interface LinesRenderObject extends BaseRenderObject<LinesValues> { type: 'lines' }
+export interface DirectVolumeRenderObject extends BaseRenderObject<DirectVolumeValues> { type: 'direct-volume' }
+export interface TextureMeshRenderObject extends BaseRenderObject<TextureMeshValues> { type: 'texture-mesh' }
 
 //
 
diff --git a/src/mol-math/graph/int-adjacency-graph.ts b/src/mol-math/graph/int-adjacency-graph.ts
index efd567b2e..d9460e228 100644
--- a/src/mol-math/graph/int-adjacency-graph.ts
+++ b/src/mol-math/graph/int-adjacency-graph.ts
@@ -297,9 +297,9 @@ export namespace IntAdjacencyGraph {
             newOffsets[++vo] = eo;
         }
 
-        const newEdgeProps: P = {} as any;
-        for (const key of Object.keys(edgeProps)) {
-            newEdgeProps[key] = arrayPickIndices(edgeProps[key], edgeIndices);
+        const newEdgeProps = {} as P;
+        for (const key of Object.keys(edgeProps) as (keyof P)[]) {
+            newEdgeProps[key] = arrayPickIndices(edgeProps[key], edgeIndices) as P[keyof P];
         }
 
         return create(newOffsets, newA, newB, newEdgeCount, newEdgeProps);
diff --git a/src/mol-repr/shape/representation.ts b/src/mol-repr/shape/representation.ts
index b84a0bffc..43fb6ea0f 100644
--- a/src/mol-repr/shape/representation.ts
+++ b/src/mol-repr/shape/representation.ts
@@ -5,7 +5,7 @@
  */
 
 import { Task, RuntimeContext } from 'mol-task'
-import { createRenderObject, GraphicsRenderObject, getNextMaterialId } from 'mol-gl/render-object';
+import { createRenderObject, getNextMaterialId, RenderObjectKindType, RenderObjectValuesType } from 'mol-gl/render-object';
 import { Representation } from '../representation';
 import { Loci, EmptyLoci, isEveryLoci } from 'mol-model/loci';
 import { ValueCell } from 'mol-util';
@@ -36,8 +36,8 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
     const updated = new Subject<number>()
     const _state = Representation.createState()
     const materialId = getNextMaterialId()
-    const renderObjects: GraphicsRenderObject[] = []
-    let _renderObject: GraphicsRenderObject | undefined
+    const renderObjects: RenderObjectKindType[G['kind']][] = []
+    let _renderObject: RenderObjectKindType[G['kind']] | undefined
     let _shape: Shape<G>
     let _theme = createEmptyTheme()
     let currentProps: PD.Values<P> = PD.getDefaultValues(geometryUtils.Params as P) // TODO avoid casting
@@ -122,7 +122,7 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
 
                 if (updateState.updateTransform || updateState.createGeometry) {
                     // console.log('updateBoundingSphere')
-                    geometryUtils.updateBoundingSphere(_renderObject.values, _shape.geometry)
+                    geometryUtils.updateBoundingSphere(_renderObject.values as RenderObjectValuesType[G['kind']], _shape.geometry)
                 }
 
                 if (updateState.updateColor) {
@@ -138,7 +138,7 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
                     }
                 }
 
-                geometryUtils.updateValues(_renderObject.values, newProps)
+                geometryUtils.updateValues(_renderObject.values as RenderObjectValuesType[G['kind']], newProps)
                 geometryUtils.updateRenderableState(_renderObject.state, newProps)
             }
 
diff --git a/src/mol-repr/structure/complex-visual.ts b/src/mol-repr/structure/complex-visual.ts
index f42df562b..6728dfd3d 100644
--- a/src/mol-repr/structure/complex-visual.ts
+++ b/src/mol-repr/structure/complex-visual.ts
@@ -6,7 +6,7 @@
 
 import { Structure } from 'mol-model/structure';
 import { Visual, VisualContext } from '../visual';
-import { createRenderObject, GraphicsRenderObject } from 'mol-gl/render-object';
+import { createRenderObject, RenderObjectValuesType, RenderObjectKindType } from 'mol-gl/render-object';
 import { UnitKind, UnitKindOptions } from './visual/util/common';
 import { StructureMeshParams, StructureParams, StructureDirectVolumeParams } from './representation';
 import { deepEqual, ValueCell } from 'mol-util';
@@ -65,7 +65,7 @@ export function ComplexVisual<G extends Geometry, P extends ComplexParams & Geom
     const { updateValues, updateBoundingSphere, updateRenderableState } = builder.geometryUtils
     const updateState = VisualUpdateState.create()
 
-    let renderObject: GraphicsRenderObject | undefined
+    let renderObject: RenderObjectKindType[G['kind']] | undefined
 
     let newProps: PD.Values<P>
     let newTheme: Theme
@@ -137,7 +137,7 @@ export function ComplexVisual<G extends Geometry, P extends ComplexParams & Geom
             if (updateState.createGeometry) {
                 if (newGeometry) {
                     ValueCell.update(renderObject.values.drawCount, Geometry.getDrawCount(newGeometry))
-                    updateBoundingSphere(renderObject.values, newGeometry)
+                    updateBoundingSphere(renderObject.values as RenderObjectValuesType[G['kind']], newGeometry)
                 } else {
                     throw new Error('expected geometry to be given')
                 }
@@ -154,7 +154,7 @@ export function ComplexVisual<G extends Geometry, P extends ComplexParams & Geom
                 createColors(locationIt, newTheme.color, renderObject.values)
             }
 
-            updateValues(renderObject.values, newProps)
+            updateValues(renderObject.values as RenderObjectValuesType[G['kind']], newProps)
             updateRenderableState(renderObject.state, newProps)
         }
 
diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts
index f62214001..8f86a0556 100644
--- a/src/mol-repr/structure/units-visual.ts
+++ b/src/mol-repr/structure/units-visual.ts
@@ -9,7 +9,7 @@ import { RepresentationProps } from '../representation';
 import { Visual, VisualContext } from '../visual';
 import { StructureMeshParams, StructurePointsParams, StructureLinesParams, StructureDirectVolumeParams, StructureSpheresParams, StructureTextureMeshParams } from './representation';
 import { Loci, isEveryLoci, EmptyLoci } from 'mol-model/loci';
-import { GraphicsRenderObject, createRenderObject } from 'mol-gl/render-object';
+import { createRenderObject, RenderObjectKindType, RenderObjectValuesType } from 'mol-gl/render-object';
 import { deepEqual, ValueCell } from 'mol-util';
 import { Interval } from 'mol-data/int';
 import { ParamDefinition as PD } from 'mol-util/param-definition';
@@ -65,7 +65,7 @@ export function UnitsVisual<G extends Geometry, P extends UnitsParams & Geometry
     const { createEmpty: createEmptyGeometry, updateValues, updateBoundingSphere, updateRenderableState } = builder.geometryUtils
     const updateState = VisualUpdateState.create()
 
-    let renderObject: GraphicsRenderObject | undefined
+    let renderObject: RenderObjectKindType[G['kind']] | undefined
 
     let newProps: PD.Values<P> = Object.assign({}, defaultProps)
     let newTheme: Theme = createEmptyTheme()
@@ -181,7 +181,7 @@ export function UnitsVisual<G extends Geometry, P extends UnitsParams & Geometry
 
             if (updateState.updateTransform || updateState.createGeometry) {
                 // console.log('UnitsVisual.updateBoundingSphere')
-                updateBoundingSphere(renderObject.values, newGeometry || geometry)
+                updateBoundingSphere(renderObject.values as RenderObjectValuesType[G['kind']], newGeometry || geometry)
             }
 
             if (updateState.updateSize) {
@@ -197,7 +197,7 @@ export function UnitsVisual<G extends Geometry, P extends UnitsParams & Geometry
                 createColors(locationIt, newTheme.color, renderObject.values)
             }
 
-            updateValues(renderObject.values, newProps)
+            updateValues(renderObject.values as RenderObjectValuesType[G['kind']], newProps)
             updateRenderableState(renderObject.state, newProps)
         }
 
diff --git a/src/mol-repr/volume/representation.ts b/src/mol-repr/volume/representation.ts
index 621c17ebc..309a65ac9 100644
--- a/src/mol-repr/volume/representation.ts
+++ b/src/mol-repr/volume/representation.ts
@@ -13,7 +13,7 @@ import { Geometry, GeometryUtils } from 'mol-geo/geometry/geometry';
 import { ParamDefinition as PD } from 'mol-util/param-definition';
 import { PickingId } from 'mol-geo/geometry/picking';
 import { MarkerAction } from 'mol-geo/geometry/marker-data';
-import { GraphicsRenderObject, createRenderObject, getNextMaterialId } from 'mol-gl/render-object';
+import { GraphicsRenderObject, createRenderObject, getNextMaterialId, RenderObjectKindType, RenderObjectValuesType } from 'mol-gl/render-object';
 import { Interval } from 'mol-data/int';
 import { LocationIterator } from 'mol-geo/util/location-iterator';
 import { VisualUpdateState } from 'mol-repr/util';
@@ -57,7 +57,7 @@ export function VolumeVisual<G extends Geometry, P extends VolumeParams & Geomet
     const { updateValues, updateBoundingSphere, updateRenderableState } = builder.geometryUtils
     const updateState = VisualUpdateState.create()
 
-    let renderObject: GraphicsRenderObject | undefined
+    let renderObject: RenderObjectKindType[G['kind']] | undefined
 
     let newProps: PD.Values<P>
     let newTheme: Theme
@@ -119,7 +119,7 @@ export function VolumeVisual<G extends Geometry, P extends VolumeParams & Geomet
             if (updateState.createGeometry) {
                 if (newGeometry) {
                     ValueCell.update(renderObject.values.drawCount, Geometry.getDrawCount(newGeometry))
-                    updateBoundingSphere(renderObject.values, newGeometry)
+                    updateBoundingSphere(renderObject.values as RenderObjectValuesType[G['kind']], newGeometry)
                 } else {
                     throw new Error('expected geometry to be given')
                 }
@@ -136,7 +136,7 @@ export function VolumeVisual<G extends Geometry, P extends VolumeParams & Geomet
                 createColors(locationIt, newTheme.color, renderObject.values)
             }
 
-            updateValues(renderObject.values, newProps)
+            updateValues(renderObject.values as RenderObjectValuesType[G['kind']], newProps)
             updateRenderableState(renderObject.state, newProps)
         }
 
diff --git a/src/mol-util/set.ts b/src/mol-util/set.ts
index 3d5f648d9..af09cf608 100644
--- a/src/mol-util/set.ts
+++ b/src/mol-util/set.ts
@@ -43,7 +43,7 @@ export namespace SetUtils {
 
     /** Create set containing elements of set a that are also in set b. */
     export function intersection<T>(setA: Set<T>, setB: Set<T>): Set<T> {
-        const intersection = new Set();
+        const intersection = new Set<T>();
         for (const elem of Array.from(setB)) {
             if (setA.has(elem)) intersection.add(elem);
         }
diff --git a/src/servers/volume/config.ts b/src/servers/volume/config.ts
index 236c1c7ba..7227d7738 100644
--- a/src/servers/volume/config.ts
+++ b/src/servers/volume/config.ts
@@ -75,9 +75,7 @@ const DefaultServerConfig = {
 export type ServerConfig = typeof DefaultServerConfig
 export const ServerConfig = { ...DefaultServerConfig }
 export function setServerConfig(config: ServerConfig) {
-    for (const name in DefaultServerConfig) {
-        ServerConfig[name as keyof ServerConfig] = config[name as keyof ServerConfig]
-    }
+    Object.assign(ServerConfig, config)
 }
 
 const DefaultLimitsConfig = {
@@ -96,9 +94,7 @@ const DefaultLimitsConfig = {
 export type LimitsConfig = typeof DefaultLimitsConfig
 export const LimitsConfig = { ...DefaultLimitsConfig }
 export function setLimitsConfig(config: LimitsConfig) {
-    for (const name in DefaultLimitsConfig) {
-        LimitsConfig[name as keyof LimitsConfig] = config[name as keyof LimitsConfig]
-    }
+    Object.assign(LimitsConfig, config)
 }
 
 export function setConfig(config: ServerConfig & LimitsConfig) {
-- 
GitLab