From aa03206793c50d3417d479587b3824eb0b62a9eb Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 14 Sep 2018 16:00:07 -0700 Subject: [PATCH] replaced immutable.js with immer; updated packages --- package-lock.json | Bin 416436 -> 412027 bytes package.json | 21 ++++++++++--------- src/mol-app/controller/misc/jobs.ts | 30 ++++++++++++++++------------ src/mol-app/controller/misc/log.ts | 10 ++++++---- src/mol-app/ui/misc/jobs.tsx | 8 ++++---- tsconfig.json | 2 -- 6 files changed, 37 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 827a99ea20dff3ef1aae28cd7b173933e62aa801..eef7df4dae9988c64bf224ddff9ae23168532855 100644 GIT binary patch delta 17310 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 delta 15653 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 diff --git a/package.json b/package.json index 7157fd480..bf83b6ed9 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "@types/jest": "^23.3.2", "@types/node": "^10.9.4", "@types/node-fetch": "^2.1.2", - "@types/react": "^16.4.13", + "@types/react": "^16.4.14", "@types/react-dom": "^16.0.7", "benchmark": "^2.1.4", "cpx": "^1.5.0", @@ -87,15 +87,14 @@ "file-loader": "^2.0.0", "glslify-import": "^3.1.0", "glslify-loader": "^1.0.2", - "graphql-code-generator": "^0.11.0", - "graphql-codegen-typescript-template": "^0.11.0", - "graphql-tag": "^2.9.2", - "jest": "^23.5.0", + "graphql-code-generator": "^0.12.2", + "graphql-codegen-typescript-template": "^0.12.2", + "jest": "^23.6.0", "jest-raw-loader": "^1.0.1", "mini-css-extract-plugin": "^0.4.2", "node-sass": "^4.9.3", "raw-loader": "^0.5.1", - "resolve-url-loader": "^2.3.1", + "resolve-url-loader": "^3.0.0", "sass-loader": "^7.1.0", "style-loader": "^0.23.0", "ts-jest": "^23.1.4", @@ -103,19 +102,19 @@ "typescript": "^3.0.3", "uglify-js": "^3.4.9", "util.promisify": "^1.0.0", - "webpack": "^4.17.2", + "webpack": "^4.19.0", "webpack-cli": "^3.1.0" }, "dependencies": { "argparse": "^1.0.10", "compression": "^1.7.3", "express": "^4.16.3", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-request": "^1.8.2", - "immutable": "^4.0.0-rc.9", + "immer": "^1.6.0", "node-fetch": "^2.2.0", - "react": "^16.5.0", - "react-dom": "^16.5.0", + "react": "^16.5.1", + "react-dom": "^16.5.1", "rxjs": "^6.3.2" } } diff --git a/src/mol-app/controller/misc/jobs.ts b/src/mol-app/controller/misc/jobs.ts index 075c32e0f..754edef44 100644 --- a/src/mol-app/controller/misc/jobs.ts +++ b/src/mol-app/controller/misc/jobs.ts @@ -5,7 +5,7 @@ * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info. */ -import { Map } from 'immutable' +import produce from 'immer' import { filter } from 'rxjs/operators'; import { Controller } from '../controller' @@ -21,7 +21,7 @@ export interface JobInfo { } export interface JobsState { - jobs: Map<number, JobInfo> + jobs: { [k: number]: JobInfo } } export class JobsController extends Controller<JobsState> { @@ -30,38 +30,42 @@ export class JobsController extends Controller<JobsState> { let jobs = this.latestState.jobs!; if (!isWatched) { - if (jobs.has(state.jobId)) { - jobs = jobs.delete(state.jobId); + if (jobs[state.jobId] !== undefined) { + jobs = produce(jobs, _jobs => { delete _jobs[state.jobId] }); this.setState({ jobs }); } return; } - jobs = jobs.set(state.jobId, { - name: state.name, - message: state.message, - abort: state.abort - }); + jobs = produce(jobs, _jobs => { + _jobs[state.jobId] = { + name: state.name, + message: state.message, + abort: state.abort + }; + }) this.setState({ jobs }); } private started(job: Job.Info) { this.setState({ - jobs: this.latestState.jobs!.set(job.id, { name: job.name, message: 'Running...' }) + jobs: produce(this.latestState.jobs!, _jobs => { + _jobs[job.id] = { name: job.name, message: 'Running...' } + }) }); } private completed(taskId: number) { - if (!this.latestState.jobs!.has(taskId)) return; + if (!this.latestState.jobs![taskId]) return; this.setState({ - jobs: this.latestState.jobs!.delete(taskId) + jobs: produce(this.latestState.jobs!, _jobs => { delete _jobs[taskId] }) }); } constructor(context: Context, private type: Job.Type) { super(context, { - jobs: Map<number, JobInfo>() + jobs: {} }); JobEvents.StateUpdated.getStream(this.context) diff --git a/src/mol-app/controller/misc/log.ts b/src/mol-app/controller/misc/log.ts index c694612ec..d703375a8 100644 --- a/src/mol-app/controller/misc/log.ts +++ b/src/mol-app/controller/misc/log.ts @@ -5,18 +5,20 @@ * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info. */ -import { List } from 'immutable' +import produce from 'immer' import { Controller } from '../controller' import { Context } from '../../context/context'; import { LogEvent } from '../../event/basic'; import { Logger } from '../../service/logger'; -export class LogController extends Controller<{ entries: List<Logger.Entry> }> { +export class LogController extends Controller<{ entries: Logger.Entry[] }> { constructor(context: Context) { - super(context, { entries: List<Logger.Entry>() }); + super(context, { entries: [] }); LogEvent.getStream(this.context) - .subscribe(e => this.setState({ entries: this.latestState.entries.push(e.data) })) + .subscribe(e => this.setState({ + entries: produce(this.latestState.entries, _entries => { _entries.push(e.data) }) + })) } } \ No newline at end of file diff --git a/src/mol-app/ui/misc/jobs.tsx b/src/mol-app/ui/misc/jobs.tsx index c8a5fe557..6090da945 100644 --- a/src/mol-app/ui/misc/jobs.tsx +++ b/src/mol-app/ui/misc/jobs.tsx @@ -30,10 +30,10 @@ export class Overlay extends View<JobsController, {}, {}> { render() { const state = this.controller.latestState; - if (!state.jobs!.count()) return <div className='molstar-empty-control' /> + if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' /> const jobs: any[] = []; - state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} />)); + Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} />)); return <div className='molstar-overlay'> <div className='molstar-overlay-background' /> @@ -52,10 +52,10 @@ export class BackgroundJobs extends View<JobsController, {}, {}> { render() { const state = this.controller.latestState; - if (!state.jobs!.count()) return <div className='molstar-empty-control' /> + if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' /> const jobs: any[] = []; - state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} isSmall={true} />)); + Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} isSmall={true} />)); return <div className='molstar-background-jobs'> {jobs} diff --git a/tsconfig.json b/tsconfig.json index bc8a5e193..d68886f26 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,6 @@ "noUnusedLocals": true, "strictNullChecks": true, "strictFunctionTypes": true, - //"keyofStringsOnly": true, - // temp fix for immutable package: has(key: string): key is keyof TProps; => has(key: string | number | Symbol): key is keyof TProps; //"downlevelIteration": true, "jsx": "react", "lib": [ "es6", "dom", "esnext.asynciterable", "es2016" ], -- GitLab