summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-06-01 19:45:15 +0200
committerJules Laplace <julescarbon@gmail.com>2020-06-01 19:45:15 +0200
commit3fb522534cff61576ac58ae466a2752585b8c44e (patch)
treebefac10b20e0c07e7e3fa32e77fc1429e8708e53
parent288694ae9a61c59dba91e2357fa7785d95a51341 (diff)
setting up the database...
-rw-r--r--.gitignore6
-rw-r--r--cli/app/server/web.py8
-rw-r--r--cli/app/settings/app_cfg.py2
-rw-r--r--cli/app/sql/common.py8
-rw-r--r--cli/app/sql/env.py4
-rw-r--r--cli/app/sql/models/graph.py15
-rw-r--r--cli/app/sql/models/page.py27
-rw-r--r--cli/app/sql/models/tile.py13
-rw-r--r--cli/app/sql/models/upload.py10
-rw-r--r--cli/app/sql/script.py.mako1
-rw-r--r--cli/app/sql/versions/202006011943_adding_database.py66
-rw-r--r--cli/app/sql/versions/202006011944_adding_uploads.py37
-rw-r--r--cli/app/utils/file_utils.py3
-rwxr-xr-xcli/cli.py6
-rw-r--r--environment.yml2
-rw-r--r--frontend/actions.js2
-rw-r--r--frontend/api/index.js10
-rw-r--r--frontend/index.js1
-rw-r--r--frontend/store.js1
-rw-r--r--frontend/types.js2
-rw-r--r--frontend/views/index.js10
-rw-r--r--frontend/views/upload/components/upload.index.js3
-rw-r--r--frontend/views/upload/upload.reducer.js3
-rw-r--r--package-lock.json20
-rw-r--r--package.json1
25 files changed, 180 insertions, 81 deletions
diff --git a/.gitignore b/.gitignore
index 5ee34bb..8011615 100644
--- a/.gitignore
+++ b/.gitignore
@@ -168,15 +168,11 @@ etc
static/js/dist
-data_store/docker/mysql/*
-data_store/docker/redis/*
data_store/media/*
-data_store/models/*
-data_store/indexes/*
-data_store/incoming/*
data_store/uploads/*
data_store/features/*
data_store/exports/*
+data_store/db/*
!data_store/.gitkeep
!data_store/media/.gitkeep
diff --git a/cli/app/server/web.py b/cli/app/server/web.py
index 49618d2..739f271 100644
--- a/cli/app/server/web.py
+++ b/cli/app/server/web.py
@@ -16,7 +16,9 @@ from flask import Flask, Blueprint, send_from_directory, request
from app.sql.common import db, connection_url
from app.settings import app_cfg
-from app.controllers.collection_controller import CollectionView
+from app.controllers.graph_controller import GraphView
+from app.controllers.page_controller import PageView
+from app.controllers.tile_controller import TileView
from app.controllers.upload_controller import UploadView
def create_app(script_info=None):
@@ -31,7 +33,9 @@ def create_app(script_info=None):
db.init_app(app)
- CollectionView.register(app, route_prefix='/api/v1/')
+ GraphView.register(app, route_prefix='/api/v1/')
+ PageView.register(app, route_prefix='/api/v1/')
+ TileView.register(app, route_prefix='/api/v1/')
UploadView.register(app, route_prefix='/api/v1/')
index_html = 'index.html'
diff --git a/cli/app/settings/app_cfg.py b/cli/app/settings/app_cfg.py
index 094f51e..758056e 100644
--- a/cli/app/settings/app_cfg.py
+++ b/cli/app/settings/app_cfg.py
@@ -6,7 +6,7 @@ import logging
from dotenv import load_dotenv
import yaml
-from app.models import types
+# from app.models import types
from pathlib import Path
import codecs
diff --git a/cli/app/sql/common.py b/cli/app/sql/common.py
index cf819e1..fab324d 100644
--- a/cli/app/sql/common.py
+++ b/cli/app/sql/common.py
@@ -2,7 +2,7 @@ import os
import glob
import time
-import mysql.connector
+# import mysql.connector
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
@@ -21,13 +21,17 @@ from app.settings import app_cfg
os.makedirs(app_cfg.DIR_DATABASE, exist_ok=True)
connection_url = "sqlite:///{}".format(os.path.join(app_cfg.DIR_DATABASE, 'swimmer.sqlite3'))
+print(connection_url)
engine = create_engine(connection_url, encoding="utf-8", pool_recycle=3600)
Session = sessionmaker(bind=engine)
Base = declarative_base()
+Base.metadata.bind = engine
db = SQLAlchemy()
-from app.sql.models.collection import Collection
+from app.sql.models.tile import Tile
+from app.sql.models.page import Page
+from app.sql.models.graph import Graph
from app.sql.models.upload import Upload
diff --git a/cli/app/sql/env.py b/cli/app/sql/env.py
index a2815db..1bf717f 100644
--- a/cli/app/sql/env.py
+++ b/cli/app/sql/env.py
@@ -13,7 +13,9 @@ config.set_main_option("sqlalchemy.url", connection_url)
target_metadata = Base.metadata
-from app.sql.models.collection import Collection
+from app.sql.models.tile import Tile
+from app.sql.models.page import Page
+from app.sql.models.graph import Graph
from app.sql.models.upload import Upload
def run_migrations_offline():
diff --git a/cli/app/sql/models/graph.py b/cli/app/sql/models/graph.py
index ef5a817..1f553e9 100644
--- a/cli/app/sql/models/graph.py
+++ b/cli/app/sql/models/graph.py
@@ -1,9 +1,11 @@
-from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON, ForeignKey
+from sqlalchemy.orm import relationship
import sqlalchemy.sql.functions as func
from sqlalchemy_utc import UtcDateTime, utcnow
from wtforms_alchemy import ModelForm
from app.sql.common import db, Base, Session
+# from app.sql.models.page import Page
from app.settings import app_cfg
@@ -11,16 +13,16 @@ from os.path import join
class Graph(Base):
"""Table for storing references to graphs"""
- __tablename__ = 'graphs'
+ __tablename__ = 'graph'
id = Column(Integer, primary_key=True)
path = Column(String(64, convert_unicode=True), nullable=False)
title = Column(String(64, convert_unicode=True), nullable=False)
description = Column(Text(convert_unicode=True), nullable=False)
settings = Column(JSON, default={}, nullable=True)
created_at = Column(UtcDateTime(), default=utcnow())
- updated_at = Column(UtcDateTime(), default=utcnow())
+ updated_at = Column(UtcDateTime(), onupdate=utcnow())
- # pages = relationship("Page", secondary="pages", lazy='dynamic')
+ # pages = relationship('Page', lazy='dynamic')
def toJSON(self):
return {
@@ -33,6 +35,11 @@ class Graph(Base):
'updated_at': self.updated_at,
}
+ def toFullJSON(self):
+ data = self.toJSON()
+ data['pages'] = [ page.toJSON() for page in self.pages ]
+ return data
+
class GraphForm(ModelForm):
class Meta:
model = Graph
diff --git a/cli/app/sql/models/page.py b/cli/app/sql/models/page.py
index 1362bb3..bad5568 100644
--- a/cli/app/sql/models/page.py
+++ b/cli/app/sql/models/page.py
@@ -1,15 +1,17 @@
-from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON, ForeignKey
+from sqlalchemy.orm import relationship
import sqlalchemy.sql.functions as func
from sqlalchemy_utc import UtcDateTime, utcnow
from wtforms_alchemy import ModelForm
from app.sql.common import db, Base, Session
+# from app.sql.models.graph import Graph
from app.settings import app_cfg
class Page(Base):
"""Table for storing references to pages"""
- __tablename__ = 'pages'
+ __tablename__ = 'page'
id = Column(Integer, primary_key=True)
graph_id = Column(Integer, ForeignKey('graph.id'), nullable=True)
path = Column(String(64, convert_unicode=True), nullable=False)
@@ -17,9 +19,9 @@ class Page(Base):
description = Column(Text(convert_unicode=True), nullable=False)
settings = Column(JSON, default={}, nullable=True)
created_at = Column(UtcDateTime(), default=utcnow())
- updated_at = Column(UtcDateTime(), default=utcnow())
+ updated_at = Column(UtcDateTime(), onupdate=utcnow())
- tiles = relationship("Tile", secondary="tiles", lazy='dynamic')
+ # tiles = relationship("Tile", lazy='dynamic')
def toJSON(self):
return {
@@ -33,9 +35,14 @@ class Page(Base):
'updated_at': self.updated_at,
}
-class PageForm(ModelForm):
- class Meta:
- model = Page
- exclude = ['graph_id', 'settings', 'created_at', 'updated_at']
- def get_session():
- return Session()
+ def toFullJSON(self):
+ data = self.toJSON()
+ data['tiles'] = [ tile.toJSON() for tile in self.tiles ]
+ return data
+
+# class PageForm(ModelForm):
+# class Meta:
+# model = Page
+# exclude = ['graph_id', 'settings', 'created_at', 'updated_at']
+# def get_session():
+# return Session()
diff --git a/cli/app/sql/models/tile.py b/cli/app/sql/models/tile.py
index 01b3fab..85ee1bf 100644
--- a/cli/app/sql/models/tile.py
+++ b/cli/app/sql/models/tile.py
@@ -1,18 +1,20 @@
-from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON, ForeignKey
+from sqlalchemy.orm import relationship
import sqlalchemy.sql.functions as func
from sqlalchemy_utc import UtcDateTime, utcnow
from wtforms_alchemy import ModelForm
from app.sql.common import db, Base, Session
+# from app.sql.models.graph import Graph
+# from app.sql.models.page import Page
-from app.utils.file_utils import sha256_tree
from app.settings import app_cfg
from os.path import join
class Tile(Base):
"""Table for storing references to tiles"""
- __tablename__ = 'tiles'
+ __tablename__ = 'tile'
id = Column(Integer, primary_key=True)
graph_id = Column(Integer, ForeignKey('graph.id'), nullable=True)
page_id = Column(Integer, ForeignKey('page.id'), nullable=True)
@@ -20,7 +22,7 @@ class Tile(Base):
type = Column(String(16, convert_unicode=True), nullable=False)
settings = Column(JSON, default={}, nullable=True)
created_at = Column(UtcDateTime(), default=utcnow())
- updated_at = Column(UtcDateTime(), default=utcnow())
+ updated_at = Column(UtcDateTime(), onupdate=utcnow())
def toJSON(self):
return {
@@ -34,10 +36,9 @@ class Tile(Base):
'updated_at': self.updated_at,
}
-
class TileForm(ModelForm):
class Meta:
model = Tile
- exclude = ['graph_id', 'page_id', 'target_page_id', 'settings', 'created_at', 'updated_at']
+ # exclude = ['graph_id', 'page_id', 'target_page_id', 'settings', 'created_at', 'updated_at']
def get_session():
return Session()
diff --git a/cli/app/sql/models/upload.py b/cli/app/sql/models/upload.py
index f1e8108..5863b07 100644
--- a/cli/app/sql/models/upload.py
+++ b/cli/app/sql/models/upload.py
@@ -4,8 +4,6 @@ from sqlalchemy_utc import UtcDateTime, utcnow
from wtforms_alchemy import ModelForm
from app.sql.common import db, Base, Session
-from app.sql.columns.hash_column import HashColumn
-from app.sql.columns.media_type_column import MediaTypeColumn
from app.utils.file_utils import sha256_tree
from app.settings import app_cfg
@@ -14,9 +12,10 @@ from os.path import join
class Upload(Base):
"""Table for storing references to various media"""
- __tablename__ = 'uploads'
+ __tablename__ = 'upload'
id = Column(Integer, primary_key=True)
- sha256 = Column(HashColumn(32), nullable=False)
+ sha256 = Column(String(256), nullable=False)
+ fn = Column(String(256), nullable=False)
ext = Column(String(4, convert_unicode=True), nullable=False)
username = Column(String(16, convert_unicode=True), nullable=False)
created_at = Column(UtcDateTime(), default=utcnow())
@@ -25,6 +24,7 @@ class Upload(Base):
return {
'id': self.id,
'sha256': self.sha256,
+ 'fn': self.fn,
'ext': self.ext,
'username': self.username,
'url': self.url(),
@@ -32,7 +32,7 @@ class Upload(Base):
}
def filename(self):
- return "{}{}".format(self.sha256, self.ext)
+ return "{}{}".format(self.fn)
def filepath(self):
return join(app_cfg.DIR_UPLOADS, sha256_tree(self.sha256))
diff --git a/cli/app/sql/script.py.mako b/cli/app/sql/script.py.mako
index 94bb012..c4b86b8 100644
--- a/cli/app/sql/script.py.mako
+++ b/cli/app/sql/script.py.mako
@@ -8,7 +8,6 @@ Create Date: ${create_date}
from alembic import op
import sqlalchemy as sa
import sqlalchemy_utc
-import app.sql.columns
${imports if imports else ""}
# revision identifiers, used by Alembic.
diff --git a/cli/app/sql/versions/202006011943_adding_database.py b/cli/app/sql/versions/202006011943_adding_database.py
new file mode 100644
index 0000000..4e5b0e6
--- /dev/null
+++ b/cli/app/sql/versions/202006011943_adding_database.py
@@ -0,0 +1,66 @@
+"""adding database
+
+Revision ID: 7acd0c82a048
+Revises:
+Create Date: 2020-06-01 19:43:53.359855
+
+"""
+from alembic import op
+import sqlalchemy as sa
+import sqlalchemy_utc
+
+
+# revision identifiers, used by Alembic.
+revision = '7acd0c82a048'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('graph',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('path', sa.String(length=64, _expect_unicode=True), nullable=False),
+ sa.Column('title', sa.String(length=64, _expect_unicode=True), nullable=False),
+ sa.Column('description', sa.Text(_expect_unicode=True), nullable=False),
+ sa.Column('settings', sa.JSON(), nullable=True),
+ sa.Column('created_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.Column('updated_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ op.create_table('page',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('graph_id', sa.Integer(), nullable=True),
+ sa.Column('path', sa.String(length=64, _expect_unicode=True), nullable=False),
+ sa.Column('title', sa.String(length=64, _expect_unicode=True), nullable=False),
+ sa.Column('description', sa.Text(_expect_unicode=True), nullable=False),
+ sa.Column('settings', sa.JSON(), nullable=True),
+ sa.Column('created_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.Column('updated_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.ForeignKeyConstraint(['graph_id'], ['graph.id'], ),
+ sa.PrimaryKeyConstraint('id')
+ )
+ op.create_table('tile',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('graph_id', sa.Integer(), nullable=True),
+ sa.Column('page_id', sa.Integer(), nullable=True),
+ sa.Column('target_page_id', sa.Integer(), nullable=True),
+ sa.Column('type', sa.String(length=16, _expect_unicode=True), nullable=False),
+ sa.Column('settings', sa.JSON(), nullable=True),
+ sa.Column('created_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.Column('updated_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.ForeignKeyConstraint(['graph_id'], ['graph.id'], ),
+ sa.ForeignKeyConstraint(['page_id'], ['page.id'], ),
+ sa.ForeignKeyConstraint(['target_page_id'], ['page.id'], ),
+ sa.PrimaryKeyConstraint('id')
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('tile')
+ op.drop_table('page')
+ op.drop_table('graph')
+ # ### end Alembic commands ###
diff --git a/cli/app/sql/versions/202006011944_adding_uploads.py b/cli/app/sql/versions/202006011944_adding_uploads.py
new file mode 100644
index 0000000..f09f013
--- /dev/null
+++ b/cli/app/sql/versions/202006011944_adding_uploads.py
@@ -0,0 +1,37 @@
+"""adding uploads
+
+Revision ID: 5b926731a4ac
+Revises: 7acd0c82a048
+Create Date: 2020-06-01 19:44:30.400513
+
+"""
+from alembic import op
+import sqlalchemy as sa
+import sqlalchemy_utc
+
+
+# revision identifiers, used by Alembic.
+revision = '5b926731a4ac'
+down_revision = '7acd0c82a048'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('upload',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('sha256', sa.String(length=256), nullable=False),
+ sa.Column('fn', sa.String(length=256), nullable=False),
+ sa.Column('ext', sa.String(length=4, _expect_unicode=True), nullable=False),
+ sa.Column('username', sa.String(length=16, _expect_unicode=True), nullable=False),
+ sa.Column('created_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('upload')
+ # ### end Alembic commands ###
diff --git a/cli/app/utils/file_utils.py b/cli/app/utils/file_utils.py
index 904702c..7f1f417 100644
--- a/cli/app/utils/file_utils.py
+++ b/cli/app/utils/file_utils.py
@@ -29,9 +29,6 @@ import yaml
import hashlib
import click
from tqdm import tqdm
-import cv2 as cv
-from PIL import Image
-import imutils
diff --git a/cli/cli.py b/cli/cli.py
index a1faf93..2158398 100755
--- a/cli/cli.py
+++ b/cli/cli.py
@@ -26,12 +26,8 @@ if __name__ == '__main__':
from flask.cli import FlaskGroup
from app.server.web import create_app
- from app.server.socket import create_socket
- if len(sys.argv) > 1 and sys.argv[1] == 'socket':
- cli = create_socket
- else:
- cli = FlaskGroup(create_app=create_app)
+ cli = FlaskGroup(create_app=create_app)
elif args.group == 'db':
diff --git a/environment.yml b/environment.yml
index 87442b8..5a4dfd5 100644
--- a/environment.yml
+++ b/environment.yml
@@ -33,7 +33,6 @@ dependencies:
- dnspython==1.16.0
- flask==1.1.1
- flask-classful==0.14.2
- - flask-socketio==4.2.1
- flask-sqlalchemy==2.4.0
- flask-wtf==0.14.2
- imageio==2.5.0
@@ -43,7 +42,6 @@ dependencies:
- itsdangerous==1.1.0
- jinja2==2.10.1
- joblib==0.13.2
- - kiwisolver==1.1.0
- kombu==4.6.3
- mako==1.1.0
- markdown==3.1.1
diff --git a/frontend/actions.js b/frontend/actions.js
index fcbb6fc..31e0a52 100644
--- a/frontend/actions.js
+++ b/frontend/actions.js
@@ -13,6 +13,6 @@ export default
])
.map(p => [p[0], bindActionCreators(p[1], store.dispatch)])
.concat([
- ['socket', socketActions],
+ // ['socket', socketActions],
])
.reduce((a,b) => (a[b[0]] = b[1])&&a,{}) \ No newline at end of file
diff --git a/frontend/api/index.js b/frontend/api/index.js
index b33d2e6..26a8baa 100644
--- a/frontend/api/index.js
+++ b/frontend/api/index.js
@@ -17,12 +17,8 @@ so you can do ...
export { util }
export const actions = [
- 'collection',
+ 'graph',
+ 'page',
+ 'tile',
'upload',
- 'media',
- 'featureIndex',
- 'detectionIndex',
- 'detection',
- 'modelzoo',
- 'mediaImport',
].reduce((a,b) => (a[b] = crud_actions(b)) && a, {})
diff --git a/frontend/index.js b/frontend/index.js
index 39bcf86..94cac35 100644
--- a/frontend/index.js
+++ b/frontend/index.js
@@ -4,7 +4,6 @@ import { Provider } from 'react-redux'
import App from './app'
-import * as socket from './socket'
import { store, history } from './store'
const container = document.createElement('div')
diff --git a/frontend/store.js b/frontend/store.js
index e3adb9e..445125b 100644
--- a/frontend/store.js
+++ b/frontend/store.js
@@ -10,6 +10,7 @@ import uploadReducer from './views/upload/upload.reducer'
const createRootReducer = history => (
combineReducers({
auth: (state = {}) => state,
+ router: connectRouter(history),
upload: uploadReducer,
// collection: collectionReducer,
})
diff --git a/frontend/types.js b/frontend/types.js
index 2e948f4..cf48b67 100644
--- a/frontend/types.js
+++ b/frontend/types.js
@@ -1,9 +1,9 @@
import { with_type, crud_type } from './api/crud.types'
+export const api = crud_type('api', [])
export const graph = crud_type('graph', [])
export const page = crud_type('page', [])
export const tile = crud_type('tile', [])
-
export const upload = crud_type('upload', [])
export const system = with_type('system', [
diff --git a/frontend/views/index.js b/frontend/views/index.js
index d1e4243..5f88c96 100644
--- a/frontend/views/index.js
+++ b/frontend/views/index.js
@@ -1,11 +1 @@
-export { Container as detectionIndex } from './detectionIndex'
-export { Container as featureIndex } from './featureIndex'
-export { Container as import } from './mediaImport'
-export { Container as collection } from './collection'
-export { Container as dashboard } from './dashboard'
-export { Container as detection } from './detection'
-export { Container as modelzoo } from './modelzoo'
-export { Container as search } from './search'
export { Container as upload } from './upload'
-export { Container as media } from './media'
-export { Container as task } from './task'
diff --git a/frontend/views/upload/components/upload.index.js b/frontend/views/upload/components/upload.index.js
index 4435043..6123001 100644
--- a/frontend/views/upload/components/upload.index.js
+++ b/frontend/views/upload/components/upload.index.js
@@ -8,8 +8,6 @@ import actions from '../../../actions'
import UploadIndexOptions from './upload.indexOptions'
import UploadMenu from './upload.menu'
-import CollectionMediaToggle from '../../collectionMedia/collectionMedia.toggle.js'
-
// const { result, collectionLookup } = this.props
export default class UploadIndex extends Component {
@@ -104,4 +102,3 @@ const UploadItem = ({ data }) => {
)
}
- // <CollectionMediaToggle collectionLookup={collectionLookup} id={result.media.id} />
diff --git a/frontend/views/upload/upload.reducer.js b/frontend/views/upload/upload.reducer.js
index 674fcf8..98dc0a1 100644
--- a/frontend/views/upload/upload.reducer.js
+++ b/frontend/views/upload/upload.reducer.js
@@ -13,9 +13,6 @@ const reducer = crudReducer('upload')
export default function uploadReducer(state = initialState, action) {
// console.log(action.type, action)
- if (action.type === types.search.loaded && action.tag === 'query') {
- // console.log("infer:", action.data.infer)
- }
state = reducer(state, action)
switch (action.type) {
default:
diff --git a/package-lock.json b/package-lock.json
index 52debd4..d4bf57f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "vframe_search",
+ "name": "swimmer",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
@@ -4448,7 +4448,8 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
}
}
},
@@ -5242,7 +5243,8 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"schema-utils": {
"version": "2.6.4",
@@ -9994,7 +9996,8 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
}
}
},
@@ -10410,7 +10413,8 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"schema-utils": {
"version": "2.6.4",
@@ -11274,7 +11278,8 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"tapable": {
"version": "1.1.3",
@@ -11380,7 +11385,8 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"supports-color": {
"version": "6.1.0",
diff --git a/package.json b/package.json
index 838eb70..a2844ab 100644
--- a/package.json
+++ b/package.json
@@ -57,7 +57,6 @@
"react-router-dom": "^5.1.2",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
- "socket.io-client": "^2.3.0",
"store2": "^2.10.0",
"style-loader": "^1.1.3",
"terser-webpack-plugin": "^2.3.5",