Showing
48 changed files
with
2375 additions
and
398 deletions
backend/.gitignore
0 → 100644
... | @@ -22,7 +22,7 @@ from django.conf import settings | ... | @@ -22,7 +22,7 @@ from django.conf import settings |
22 | import jwt | 22 | import jwt |
23 | from django.http import HttpResponse, JsonResponse | 23 | from django.http import HttpResponse, JsonResponse |
24 | from khudrive.settings import AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_REGION, \ | 24 | from khudrive.settings import AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_REGION, \ |
25 | - AWS_STORAGE_BUCKET_NAME | 25 | + AWS_STORAGE_BUCKET_NAME, AWS_ENDPOINT_URL |
26 | 26 | ||
27 | 27 | ||
28 | class UserViewSet(viewsets.ModelViewSet): | 28 | class UserViewSet(viewsets.ModelViewSet): |
... | @@ -51,6 +51,8 @@ class UserViewSet(viewsets.ModelViewSet): | ... | @@ -51,6 +51,8 @@ class UserViewSet(viewsets.ModelViewSet): |
51 | root = Item(is_folder=True, name="root", file_type="folder", path="", user_id=user.int_id, size=0, | 51 | root = Item(is_folder=True, name="root", file_type="folder", path="", user_id=user.int_id, size=0, |
52 | status=True) | 52 | status=True) |
53 | root.save() | 53 | root.save() |
54 | + user.root_folder = root.item_id | ||
55 | + user.save() | ||
54 | return Response({ | 56 | return Response({ |
55 | 'message': 'user created', | 57 | 'message': 'user created', |
56 | 'int_id': user.int_id, | 58 | 'int_id': user.int_id, |
... | @@ -94,7 +96,15 @@ class UserViewSet(viewsets.ModelViewSet): | ... | @@ -94,7 +96,15 @@ class UserViewSet(viewsets.ModelViewSet): |
94 | exp = jwt.decode(access, settings.SECRET_KEY, algorithm='HS256')['exp'] | 96 | exp = jwt.decode(access, settings.SECRET_KEY, algorithm='HS256')['exp'] |
95 | token = {'access': access, | 97 | token = {'access': access, |
96 | 'refresh': refresh, | 98 | 'refresh': refresh, |
97 | - 'exp': exp} | 99 | + 'exp': exp, |
100 | + 'user': { | ||
101 | + 'int_id': user.int_id, | ||
102 | + 'user_id': user.user_id, | ||
103 | + 'name': user.name, | ||
104 | + 'total_size': user.total_size, | ||
105 | + 'current_size': user.current_size, | ||
106 | + 'root_folder': user.root_folder | ||
107 | + }} | ||
98 | return JsonResponse( | 108 | return JsonResponse( |
99 | token, | 109 | token, |
100 | status=status.HTTP_200_OK, | 110 | status=status.HTTP_200_OK, |
... | @@ -173,11 +183,15 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -173,11 +183,15 @@ class ItemViewSet(viewsets.ViewSet): |
173 | # url: items/11/ | 183 | # url: items/11/ |
174 | # 마지막 slash도 써주어야함 | 184 | # 마지막 slash도 써주어야함 |
175 | def get(self, request, pk): | 185 | def get(self, request, pk): |
176 | - s3 = boto3.client('s3', | 186 | + s3 = boto3.client( |
177 | - aws_access_key_id=AWS_ACCESS_KEY_ID, | 187 | + 's3', |
178 | - aws_secret_access_key=AWS_SECRET_ACCESS_KEY, | 188 | + region_name=AWS_REGION, |
179 | - aws_session_token=AWS_SESSION_TOKEN, | 189 | + aws_access_key_id=AWS_ACCESS_KEY_ID, |
180 | - config=Config(signature_version='s3v4')) | 190 | + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, |
191 | + aws_session_token=AWS_SESSION_TOKEN, | ||
192 | + endpoint_url=AWS_ENDPOINT_URL or None, | ||
193 | + config=Config(s3={'addressing_style': 'path'}) | ||
194 | + ) | ||
181 | s3_bucket = AWS_STORAGE_BUCKET_NAME | 195 | s3_bucket = AWS_STORAGE_BUCKET_NAME |
182 | 196 | ||
183 | item = Item.objects.filter(item_id=pk) | 197 | item = Item.objects.filter(item_id=pk) |
... | @@ -239,29 +253,40 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -239,29 +253,40 @@ class ItemViewSet(viewsets.ViewSet): |
239 | def move(self, request, pk): | 253 | def move(self, request, pk): |
240 | if request.method == 'POST': | 254 | if request.method == 'POST': |
241 | parent_id = request.POST.get('parent', '') | 255 | parent_id = request.POST.get('parent', '') |
242 | - name = request.POST.get('name', '') | 256 | + name = request.POST.get('name','') |
243 | - parent = get_object_or_None(Item, item_id=parent_id) | 257 | + child = get_object_or_None(Item, item_id=pk) |
244 | - if parent != None and parent.is_folder == True: | 258 | + |
245 | - child = get_object_or_None(Item, item_id=pk) | 259 | + if child == None: |
246 | - if child == None: | 260 | + return Response({'message': 'item is not existed.'}, status=status.HTTP_204_NO_CONTENT) |
247 | - return Response({'message': 'item is not existed.'}, status=status.HTTP_204_NO_CONTENT) | 261 | + |
248 | - child.parent = parent_id | 262 | + if parent_id != '': |
249 | - child.save() | 263 | + parent = get_object_or_None(Item, item_id=parent_id) |
250 | - child = Item.objects.filter(item_id=pk) | 264 | + |
251 | - child_data = serializers.serialize("json", child) | 265 | + if parent == None: |
252 | - json_child = json.loads(child_data) | 266 | + return Response({'message': 'parent is not existed.'}, status=status.HTTP_200_OK) |
253 | - res = json_child[0]['fields'] | 267 | + if parent.is_folder == False: |
254 | - res['id'] = pk | 268 | + return Response({'message': 'parent is not folder.'}, status=status.HTTP_200_OK) |
255 | - parent = Item.objects.filter(item_id=parent_id) | 269 | + |
256 | - parent_data = serializers.serialize("json", parent) | 270 | + if parent != None and parent.is_folder == True: |
257 | - json_parent = json.loads(parent_data)[0]['fields'] | 271 | + child.parent = parent_id |
258 | - res['parentInfo'] = json_parent | 272 | + else: |
259 | - return Response({'data': res}, status=status.HTTP_200_OK) | 273 | + parent_id = child.parent |
260 | - if parent == None: | 274 | + |
261 | - return Response({'message': 'parent is not existed.'}, status=status.HTTP_200_OK) | 275 | + if name != '': |
262 | - if parent.is_folder == False: | 276 | + child.name = name; |
263 | - return Response({'message': 'parent is not folder.'}, status=status.HTTP_200_OK) | 277 | + |
264 | - return Response({'message': 'item is not existed.'}, status=status.HTTP_204_NO_CONTENT) | 278 | + child.save() |
279 | + child = Item.objects.filter(item_id = pk) | ||
280 | + child_data = serializers.serialize("json", child) | ||
281 | + json_child = json.loads(child_data) | ||
282 | + res = json_child[0]['fields'] | ||
283 | + res['id'] = pk | ||
284 | + parent = Item.objects.filter(item_id = parent_id) | ||
285 | + parent_data = serializers.serialize("json", parent) | ||
286 | + json_parent = json.loads(parent_data)[0]['fields'] | ||
287 | + res['parentInfo'] = json_parent | ||
288 | + | ||
289 | + return Response({'data': res}, status=status.HTTP_200_OK) | ||
265 | 290 | ||
266 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], url_path='copy', url_name='copy') | 291 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], url_path='copy', url_name='copy') |
267 | def copy(self, request, pk): | 292 | def copy(self, request, pk): |
... | @@ -308,7 +333,7 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -308,7 +333,7 @@ class ItemViewSet(viewsets.ViewSet): |
308 | url_path='children', url_name='children') | 333 | url_path='children', url_name='children') |
309 | def children(self, request, pk): | 334 | def children(self, request, pk): |
310 | if request.method == 'GET': | 335 | if request.method == 'GET': |
311 | - children = Item.objects.filter(parent=pk, is_deleted=False) | 336 | + children = Item.objects.filter(parent=pk, is_deleted=False, status=True) |
312 | children_data = serializers.serialize("json", children) | 337 | children_data = serializers.serialize("json", children) |
313 | json_children = json.loads(children_data) | 338 | json_children = json.loads(children_data) |
314 | parent = Item.objects.filter(item_id=pk) # item | 339 | parent = Item.objects.filter(item_id=pk) # item |
... | @@ -359,7 +384,15 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -359,7 +384,15 @@ class ItemViewSet(viewsets.ViewSet): |
359 | url_path='upload', url_name='upload') | 384 | url_path='upload', url_name='upload') |
360 | def upload(self, request, pk): | 385 | def upload(self, request, pk): |
361 | if request.method == 'POST': | 386 | if request.method == 'POST': |
362 | - s3 = boto3.client('s3') | 387 | + s3 = boto3.client( |
388 | + 's3', | ||
389 | + region_name=AWS_REGION, | ||
390 | + aws_access_key_id=AWS_ACCESS_KEY_ID, | ||
391 | + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, | ||
392 | + aws_session_token=AWS_SESSION_TOKEN, | ||
393 | + endpoint_url=AWS_ENDPOINT_URL or None, | ||
394 | + config=Config(s3={'addressing_style': 'path'}) | ||
395 | + ) | ||
363 | s3_bucket = AWS_STORAGE_BUCKET_NAME | 396 | s3_bucket = AWS_STORAGE_BUCKET_NAME |
364 | 397 | ||
365 | # 파일 객체 생성 | 398 | # 파일 객체 생성 |
... | @@ -378,6 +411,7 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -378,6 +411,7 @@ class ItemViewSet(viewsets.ViewSet): |
378 | { | 411 | { |
379 | "acl": "private", | 412 | "acl": "private", |
380 | "Content-Type": file_type, | 413 | "Content-Type": file_type, |
414 | + "Content-Disposition": "attachment", | ||
381 | 'region': AWS_REGION, | 415 | 'region': AWS_REGION, |
382 | 'x-amz-algorithm': 'AWS4-HMAC-SHA256', | 416 | 'x-amz-algorithm': 'AWS4-HMAC-SHA256', |
383 | 'x-amz-date': date_long | 417 | 'x-amz-date': date_long |
... | @@ -385,18 +419,26 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -385,18 +419,26 @@ class ItemViewSet(viewsets.ViewSet): |
385 | [ | 419 | [ |
386 | {"acl": "private"}, | 420 | {"acl": "private"}, |
387 | {"Content-Type": file_type}, | 421 | {"Content-Type": file_type}, |
422 | + {"Content-Disposition": "attachment"}, | ||
388 | {'x-amz-algorithm': 'AWS4-HMAC-SHA256'}, | 423 | {'x-amz-algorithm': 'AWS4-HMAC-SHA256'}, |
389 | {'x-amz-date': date_long} | 424 | {'x-amz-date': date_long} |
390 | ], | 425 | ], |
391 | 3600 | 426 | 3600 |
392 | ) | 427 | ) |
393 | 428 | ||
429 | + item = Item.objects.filter(item_id=upload_item.item_id) | ||
430 | + item_data = serializers.serialize("json", item) | ||
431 | + json_item = json.loads(item_data) | ||
432 | + res = json_item[0]['fields'] | ||
433 | + res['id'] = json_item[0]['pk'] | ||
434 | + | ||
394 | data = { | 435 | data = { |
395 | "signed_url": presigned_post, | 436 | "signed_url": presigned_post, |
396 | - 'url': 'https://%s.s3.amazonaws.com/%s' % (s3_bucket, file_name) | 437 | + 'url': '%s/%s' % (presigned_post["url"], file_name), |
438 | + 'item': res | ||
397 | } | 439 | } |
398 | 440 | ||
399 | - return Response({'presigned_post': presigned_post, 'proc_data': data}, status=status.HTTP_200_OK) | 441 | + return Response(data, status=status.HTTP_200_OK) |
400 | 442 | ||
401 | # url: /status/ | 443 | # url: /status/ |
402 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], | 444 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], | ... | ... |
backend/docker-compose.yml
0 → 100644
1 | +version: "3" | ||
2 | +services: | ||
3 | + postgres: | ||
4 | + image: "postgres:alpine" | ||
5 | + environment: | ||
6 | + - POSTGRES_USER=khudrive | ||
7 | + - POSTGRES_PASSWORD=4REPwb7y4CLtQaTv4PNeWRJeGLbHXn | ||
8 | + - POSTGRES_DB=khudrive | ||
9 | + ports: | ||
10 | + - "35432:5432" | ||
11 | + volumes: | ||
12 | + - ./docker/postgres:/var/lib/postgresql/data/ | ||
13 | + minio: | ||
14 | + image: "minio/minio" | ||
15 | + entrypoint: sh | ||
16 | + command: -c "mkdir -p /data/bucket && /usr/bin/minio server /data" | ||
17 | + environment: | ||
18 | + - MINIO_ACCESS_KEY=access_key | ||
19 | + - MINIO_SECRET_KEY=secret_key | ||
20 | + ports: | ||
21 | + - "39000:9000" | ||
22 | + volumes: | ||
23 | + - ./docker/minio:/data | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -88,11 +88,11 @@ DATABASES = { | ... | @@ -88,11 +88,11 @@ DATABASES = { |
88 | # } | 88 | # } |
89 | 'default': { | 89 | 'default': { |
90 | 'ENGINE': 'django.db.backends.postgresql', | 90 | 'ENGINE': 'django.db.backends.postgresql', |
91 | - 'NAME': 'drive', | 91 | + 'NAME': 'khudrive', |
92 | - 'USER': 'jooheekwon', | 92 | + 'USER': 'khudrive', |
93 | - 'PASSWORD': 'victoriawngml77', | 93 | + 'PASSWORD': '4REPwb7y4CLtQaTv4PNeWRJeGLbHXn', |
94 | 'HOST': 'localhost', | 94 | 'HOST': 'localhost', |
95 | - 'PORT': '', | 95 | + 'PORT': '35432', |
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ... | ... |
1 | asgiref==3.2.7 | 1 | asgiref==3.2.7 |
2 | +boto3==1.14.2 | ||
3 | +botocore==1.17.2 | ||
4 | +cffi==1.14.0 | ||
5 | +cryptography==2.9.2 | ||
2 | Django==3.0.6 | 6 | Django==3.0.6 |
7 | +django-annoying==0.10.6 | ||
3 | djangorestframework==3.11.0 | 8 | djangorestframework==3.11.0 |
9 | +docutils==0.15.2 | ||
10 | +jmespath==0.10.0 | ||
11 | +psycopg2==2.8.5 | ||
12 | +pycparser==2.20 | ||
13 | +PyJWT==1.7.1 | ||
14 | +python-dateutil==2.8.1 | ||
4 | pytz==2020.1 | 15 | pytz==2020.1 |
16 | +s3transfer==0.3.3 | ||
17 | +six==1.15.0 | ||
5 | sqlparse==0.3.1 | 18 | sqlparse==0.3.1 |
19 | +urllib3==1.25.9 | ... | ... |
... | @@ -21,6 +21,7 @@ | ... | @@ -21,6 +21,7 @@ |
21 | "react/display-name": "off", | 21 | "react/display-name": "off", |
22 | "react/prop-types": "off", | 22 | "react/prop-types": "off", |
23 | "no-empty": ["warn", { "allowEmptyCatch": true }], | 23 | "no-empty": ["warn", { "allowEmptyCatch": true }], |
24 | + "@typescript-eslint/camelcase": "off", | ||
24 | "@typescript-eslint/explicit-function-return-type": "off", | 25 | "@typescript-eslint/explicit-function-return-type": "off", |
25 | "@typescript-eslint/explicit-member-accessibility": "off", | 26 | "@typescript-eslint/explicit-member-accessibility": "off", |
26 | "@typescript-eslint/interface-name-prefix": "off", | 27 | "@typescript-eslint/interface-name-prefix": "off", | ... | ... |
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. |
2 | 2 | ||
3 | # dependencies | 3 | # dependencies |
4 | -/backend/env | 4 | +/node_modules |
5 | -/frontend/node_modules | 5 | +/.pnp |
6 | -/frontend/.pnp | ||
7 | .pnp.js | 6 | .pnp.js |
8 | 7 | ||
9 | # testing | 8 | # testing |
10 | -/frontend/coverage | 9 | +/coverage |
11 | 10 | ||
12 | # production | 11 | # production |
13 | -/frontend/build | 12 | +/build |
14 | - | ||
15 | -# database | ||
16 | -/backend/db.sqlite3 | ||
17 | 13 | ||
18 | # misc | 14 | # misc |
19 | .DS_Store | 15 | .DS_Store |
... | @@ -21,7 +17,6 @@ | ... | @@ -21,7 +17,6 @@ |
21 | .env.development.local | 17 | .env.development.local |
22 | .env.test.local | 18 | .env.test.local |
23 | .env.production.local | 19 | .env.production.local |
24 | -__pycache__ | ||
25 | 20 | ||
26 | npm-debug.log* | 21 | npm-debug.log* |
27 | yarn-debug.log* | 22 | yarn-debug.log* | ... | ... |
... | @@ -4,6 +4,58 @@ | ... | @@ -4,6 +4,58 @@ |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | + "@ant-design/colors": { | ||
8 | + "version": "3.2.2", | ||
9 | + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", | ||
10 | + "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", | ||
11 | + "requires": { | ||
12 | + "tinycolor2": "^1.4.1" | ||
13 | + } | ||
14 | + }, | ||
15 | + "@ant-design/css-animation": { | ||
16 | + "version": "1.7.2", | ||
17 | + "resolved": "https://registry.npmjs.org/@ant-design/css-animation/-/css-animation-1.7.2.tgz", | ||
18 | + "integrity": "sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw==" | ||
19 | + }, | ||
20 | + "@ant-design/icons": { | ||
21 | + "version": "4.2.1", | ||
22 | + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.2.1.tgz", | ||
23 | + "integrity": "sha512-245ZI40MOr5GGws+sNSiJIRRoEf/J2xvPSMgwRYf3bv8mVGQZ6XTQI/OMeV16KtiSZ3D+mBKXVYSBz2fhigOXQ==", | ||
24 | + "requires": { | ||
25 | + "@ant-design/colors": "^3.1.0", | ||
26 | + "@ant-design/icons-svg": "^4.0.0", | ||
27 | + "@babel/runtime": "^7.10.1", | ||
28 | + "classnames": "^2.2.6", | ||
29 | + "insert-css": "^2.0.0", | ||
30 | + "rc-util": "^5.0.1" | ||
31 | + }, | ||
32 | + "dependencies": { | ||
33 | + "@babel/runtime": { | ||
34 | + "version": "7.10.2", | ||
35 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
36 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
37 | + "requires": { | ||
38 | + "regenerator-runtime": "^0.13.4" | ||
39 | + } | ||
40 | + } | ||
41 | + } | ||
42 | + }, | ||
43 | + "@ant-design/icons-svg": { | ||
44 | + "version": "4.1.0", | ||
45 | + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz", | ||
46 | + "integrity": "sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==" | ||
47 | + }, | ||
48 | + "@ant-design/react-slick": { | ||
49 | + "version": "0.26.1", | ||
50 | + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.26.1.tgz", | ||
51 | + "integrity": "sha512-1CR3vNFxAMmMb9btF6w9yT1xlrhZr6f/K+OkqoCLfWxN7h7jC16UCr1RsGBoFUdSq8bYfTr3pe6AiiCEDsALvA==", | ||
52 | + "requires": { | ||
53 | + "classnames": "^2.2.5", | ||
54 | + "json2mq": "^0.2.0", | ||
55 | + "lodash": "^4.17.15", | ||
56 | + "resize-observer-polyfill": "^1.5.0" | ||
57 | + } | ||
58 | + }, | ||
7 | "@babel/code-frame": { | 59 | "@babel/code-frame": { |
8 | "version": "7.8.3", | 60 | "version": "7.8.3", |
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", | 61 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", |
... | @@ -2072,6 +2124,11 @@ | ... | @@ -2072,6 +2124,11 @@ |
2072 | "chalk": "^3.0.0" | 2124 | "chalk": "^3.0.0" |
2073 | } | 2125 | } |
2074 | }, | 2126 | }, |
2127 | + "@miragejs/pretender-node-polyfill": { | ||
2128 | + "version": "0.1.2", | ||
2129 | + "resolved": "https://registry.npmjs.org/@miragejs/pretender-node-polyfill/-/pretender-node-polyfill-0.1.2.tgz", | ||
2130 | + "integrity": "sha512-M/BexG/p05C5lFfMunxo/QcgIJnMT2vDVCd00wNqK2ImZONIlEETZwWJu1QtLxtmYlSHlCFl3JNzp0tLe7OJ5g==" | ||
2131 | + }, | ||
2075 | "@mrmlnc/readdir-enhanced": { | 2132 | "@mrmlnc/readdir-enhanced": { |
2076 | "version": "2.2.1", | 2133 | "version": "2.2.1", |
2077 | "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", | 2134 | "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", |
... | @@ -2088,15 +2145,6 @@ | ... | @@ -2088,15 +2145,6 @@ |
2088 | "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", | 2145 | "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", |
2089 | "dev": true | 2146 | "dev": true |
2090 | }, | 2147 | }, |
2091 | - "@samverschueren/stream-to-observable": { | ||
2092 | - "version": "0.3.0", | ||
2093 | - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", | ||
2094 | - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", | ||
2095 | - "dev": true, | ||
2096 | - "requires": { | ||
2097 | - "any-observable": "^0.3.0" | ||
2098 | - } | ||
2099 | - }, | ||
2100 | "@svgr/babel-plugin-add-jsx-attribute": { | 2148 | "@svgr/babel-plugin-add-jsx-attribute": { |
2101 | "version": "4.2.0", | 2149 | "version": "4.2.0", |
2102 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", | 2150 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", |
... | @@ -2301,57 +2349,32 @@ | ... | @@ -2301,57 +2349,32 @@ |
2301 | } | 2349 | } |
2302 | }, | 2350 | }, |
2303 | "@testing-library/dom": { | 2351 | "@testing-library/dom": { |
2304 | - "version": "7.5.1", | 2352 | + "version": "7.10.0", |
2305 | - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.5.1.tgz", | 2353 | + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.10.0.tgz", |
2306 | - "integrity": "sha512-c9iQWyFtdsqaVScIlOdgdG3HXWkYvGzin02nJ4LUnzNXKyxqeqq9KPIAAjnmfrSApbRc8mK1l6esiCeEredfRw==", | 2354 | + "integrity": "sha512-nCCutwtbChYPnWFvmxCIRINeA0mlT0B3dAeCb2RxX65nZZVbf3jHfd6+v//TYnWo5O6nL5j6x6mJE5JUU3zNSw==", |
2307 | "dev": true, | 2355 | "dev": true, |
2308 | "requires": { | 2356 | "requires": { |
2309 | - "@babel/runtime": "^7.9.6", | 2357 | + "@babel/runtime": "^7.10.2", |
2310 | "aria-query": "^4.0.2", | 2358 | "aria-query": "^4.0.2", |
2311 | - "dom-accessibility-api": "^0.4.3", | 2359 | + "dom-accessibility-api": "^0.4.4", |
2312 | - "pretty-format": "^26.0.1" | 2360 | + "pretty-format": "^25.5.0" |
2313 | }, | 2361 | }, |
2314 | "dependencies": { | 2362 | "dependencies": { |
2315 | - "@jest/types": { | 2363 | + "@babel/runtime": { |
2316 | - "version": "26.0.1", | 2364 | + "version": "7.10.2", |
2317 | - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.0.1.tgz", | 2365 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", |
2318 | - "integrity": "sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA==", | 2366 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", |
2319 | - "dev": true, | ||
2320 | - "requires": { | ||
2321 | - "@types/istanbul-lib-coverage": "^2.0.0", | ||
2322 | - "@types/istanbul-reports": "^1.1.1", | ||
2323 | - "@types/yargs": "^15.0.0", | ||
2324 | - "chalk": "^4.0.0" | ||
2325 | - } | ||
2326 | - }, | ||
2327 | - "chalk": { | ||
2328 | - "version": "4.0.0", | ||
2329 | - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", | ||
2330 | - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", | ||
2331 | - "dev": true, | ||
2332 | - "requires": { | ||
2333 | - "ansi-styles": "^4.1.0", | ||
2334 | - "supports-color": "^7.1.0" | ||
2335 | - } | ||
2336 | - }, | ||
2337 | - "pretty-format": { | ||
2338 | - "version": "26.0.1", | ||
2339 | - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.0.1.tgz", | ||
2340 | - "integrity": "sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw==", | ||
2341 | "dev": true, | 2367 | "dev": true, |
2342 | "requires": { | 2368 | "requires": { |
2343 | - "@jest/types": "^26.0.1", | 2369 | + "regenerator-runtime": "^0.13.4" |
2344 | - "ansi-regex": "^5.0.0", | ||
2345 | - "ansi-styles": "^4.0.0", | ||
2346 | - "react-is": "^16.12.0" | ||
2347 | } | 2370 | } |
2348 | } | 2371 | } |
2349 | } | 2372 | } |
2350 | }, | 2373 | }, |
2351 | "@testing-library/jest-dom": { | 2374 | "@testing-library/jest-dom": { |
2352 | - "version": "5.7.0", | 2375 | + "version": "5.9.0", |
2353 | - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.7.0.tgz", | 2376 | + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.9.0.tgz", |
2354 | - "integrity": "sha512-ZV0OtBXmTDEDxrIbqJXiOcXCZ6aIMpmDlmfHj0hGNsSuQ/nX0qPAs9HWmCzXvPfTrhufTiH2nJLvDJu/LgHzwQ==", | 2377 | + "integrity": "sha512-uZ68dyILuM2VL13lGz4ehFEAgxzvLKRu8wQxyAZfejWnyMhmipJ60w4eG81NQikJHBfaYXx+Or8EaPQTDwGfPA==", |
2355 | "dev": true, | 2378 | "dev": true, |
2356 | "requires": { | 2379 | "requires": { |
2357 | "@babel/runtime": "^7.9.2", | 2380 | "@babel/runtime": "^7.9.2", |
... | @@ -2366,21 +2389,45 @@ | ... | @@ -2366,21 +2389,45 @@ |
2366 | } | 2389 | } |
2367 | }, | 2390 | }, |
2368 | "@testing-library/react": { | 2391 | "@testing-library/react": { |
2369 | - "version": "10.0.4", | 2392 | + "version": "10.2.0", |
2370 | - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.4.tgz", | 2393 | + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.2.0.tgz", |
2371 | - "integrity": "sha512-2e1B5debfuiIGbvUuiSXybskuh7ZTVJDDvG/IxlzLOY9Co/mKFj9hIklAe2nGZYcOUxFaiqWrRZ9vCVGzJfRlQ==", | 2394 | + "integrity": "sha512-TYQZ4vz0lGCGRgFqQivrtUGQhAlRSxHlYB0sDFJ6h2BZ0IrgRMF3EDQixn5UJk8oMsZJuE1HNnOA0yP4Ci2kyA==", |
2372 | "dev": true, | 2395 | "dev": true, |
2373 | "requires": { | 2396 | "requires": { |
2374 | - "@babel/runtime": "^7.9.6", | 2397 | + "@babel/runtime": "^7.10.2", |
2375 | - "@testing-library/dom": "^7.2.2", | 2398 | + "@testing-library/dom": "^7.9.0" |
2376 | - "@types/testing-library__react": "^10.0.1" | 2399 | + }, |
2400 | + "dependencies": { | ||
2401 | + "@babel/runtime": { | ||
2402 | + "version": "7.10.2", | ||
2403 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
2404 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
2405 | + "dev": true, | ||
2406 | + "requires": { | ||
2407 | + "regenerator-runtime": "^0.13.4" | ||
2408 | + } | ||
2409 | + } | ||
2377 | } | 2410 | } |
2378 | }, | 2411 | }, |
2379 | "@testing-library/user-event": { | 2412 | "@testing-library/user-event": { |
2380 | - "version": "10.1.2", | 2413 | + "version": "11.2.0", |
2381 | - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-10.1.2.tgz", | 2414 | + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-11.2.0.tgz", |
2382 | - "integrity": "sha512-77pydoNNMfcCgE6RasuYB+Dm61mWtzO1l4JBWHbFyUXXf9FA+9XrpLWWB/vA/FfTsjj4vrV7kHNorj3UKLtcig==", | 2415 | + "integrity": "sha512-kFaPsjQRte/t6rIYJPRyuzg8nraE1JVnjQOtEjSIfxU5dIc+lSH9sJmCTUNF87IpLHlYzHlWL70EjuhIwGbXjg==", |
2383 | - "dev": true | 2416 | + "dev": true, |
2417 | + "requires": { | ||
2418 | + "@babel/runtime": "^7.10.2" | ||
2419 | + }, | ||
2420 | + "dependencies": { | ||
2421 | + "@babel/runtime": { | ||
2422 | + "version": "7.10.2", | ||
2423 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
2424 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
2425 | + "dev": true, | ||
2426 | + "requires": { | ||
2427 | + "regenerator-runtime": "^0.13.4" | ||
2428 | + } | ||
2429 | + } | ||
2430 | + } | ||
2384 | }, | 2431 | }, |
2385 | "@types/babel__core": { | 2432 | "@types/babel__core": { |
2386 | "version": "7.1.7", | 2433 | "version": "7.1.7", |
... | @@ -2490,9 +2537,9 @@ | ... | @@ -2490,9 +2537,9 @@ |
2490 | } | 2537 | } |
2491 | }, | 2538 | }, |
2492 | "@types/jest": { | 2539 | "@types/jest": { |
2493 | - "version": "25.2.1", | 2540 | + "version": "25.2.3", |
2494 | - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.1.tgz", | 2541 | + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", |
2495 | - "integrity": "sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==", | 2542 | + "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", |
2496 | "dev": true, | 2543 | "dev": true, |
2497 | "requires": { | 2544 | "requires": { |
2498 | "jest-diff": "^25.2.1", | 2545 | "jest-diff": "^25.2.1", |
... | @@ -2581,39 +2628,19 @@ | ... | @@ -2581,39 +2628,19 @@ |
2581 | "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", | 2628 | "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", |
2582 | "dev": true | 2629 | "dev": true |
2583 | }, | 2630 | }, |
2584 | - "@types/testing-library__dom": { | ||
2585 | - "version": "7.0.2", | ||
2586 | - "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-7.0.2.tgz", | ||
2587 | - "integrity": "sha512-8yu1gSwUEAwzg2OlPNbGq+ixhmSviGurBu1+ivxRKq1eRcwdjkmlwtPvr9VhuxTq2fNHBWN2po6Iem3Xt5A6rg==", | ||
2588 | - "dev": true, | ||
2589 | - "requires": { | ||
2590 | - "pretty-format": "^25.1.0" | ||
2591 | - } | ||
2592 | - }, | ||
2593 | "@types/testing-library__jest-dom": { | 2631 | "@types/testing-library__jest-dom": { |
2594 | - "version": "5.0.4", | 2632 | + "version": "5.9.1", |
2595 | - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.4.tgz", | 2633 | + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.1.tgz", |
2596 | - "integrity": "sha512-Ns69aaNvlxvXkPxIwsqeaWH5vJpwa/pdBIlf8LGkRnbV3tiqUgifs13moLXg1NQ2AM23qRR5CtHarNshvRyEdA==", | 2634 | + "integrity": "sha512-yYn5EKHO3MPEMSOrcAb1dLWY+68CG29LiXKsWmmpVHqoP5+ZRiAVLyUHvPNrO2dABDdUGZvavMsaGpWNjM6N2g==", |
2597 | "dev": true, | 2635 | "dev": true, |
2598 | "requires": { | 2636 | "requires": { |
2599 | "@types/jest": "*" | 2637 | "@types/jest": "*" |
2600 | } | 2638 | } |
2601 | }, | 2639 | }, |
2602 | - "@types/testing-library__react": { | ||
2603 | - "version": "10.0.1", | ||
2604 | - "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.0.1.tgz", | ||
2605 | - "integrity": "sha512-RbDwmActAckbujLZeVO/daSfdL1pnjVqas25UueOkAY5r7vriavWf0Zqg7ghXMHa8ycD/kLkv8QOj31LmSYwww==", | ||
2606 | - "dev": true, | ||
2607 | - "requires": { | ||
2608 | - "@types/react-dom": "*", | ||
2609 | - "@types/testing-library__dom": "*", | ||
2610 | - "pretty-format": "^25.1.0" | ||
2611 | - } | ||
2612 | - }, | ||
2613 | "@types/yargs": { | 2640 | "@types/yargs": { |
2614 | - "version": "15.0.4", | 2641 | + "version": "15.0.5", |
2615 | - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", | 2642 | + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", |
2616 | - "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", | 2643 | + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", |
2617 | "dev": true, | 2644 | "dev": true, |
2618 | "requires": { | 2645 | "requires": { |
2619 | "@types/yargs-parser": "*" | 2646 | "@types/yargs-parser": "*" |
... | @@ -2626,45 +2653,45 @@ | ... | @@ -2626,45 +2653,45 @@ |
2626 | "dev": true | 2653 | "dev": true |
2627 | }, | 2654 | }, |
2628 | "@typescript-eslint/eslint-plugin": { | 2655 | "@typescript-eslint/eslint-plugin": { |
2629 | - "version": "2.31.0", | 2656 | + "version": "2.34.0", |
2630 | - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.31.0.tgz", | 2657 | + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", |
2631 | - "integrity": "sha512-iIC0Pb8qDaoit+m80Ln/aaeu9zKQdOLF4SHcGLarSeY1gurW6aU4JsOPMjKQwXlw70MvWKZQc6S2NamA8SJ/gg==", | 2658 | + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", |
2632 | "dev": true, | 2659 | "dev": true, |
2633 | "requires": { | 2660 | "requires": { |
2634 | - "@typescript-eslint/experimental-utils": "2.31.0", | 2661 | + "@typescript-eslint/experimental-utils": "2.34.0", |
2635 | "functional-red-black-tree": "^1.0.1", | 2662 | "functional-red-black-tree": "^1.0.1", |
2636 | "regexpp": "^3.0.0", | 2663 | "regexpp": "^3.0.0", |
2637 | "tsutils": "^3.17.1" | 2664 | "tsutils": "^3.17.1" |
2638 | } | 2665 | } |
2639 | }, | 2666 | }, |
2640 | "@typescript-eslint/experimental-utils": { | 2667 | "@typescript-eslint/experimental-utils": { |
2641 | - "version": "2.31.0", | 2668 | + "version": "2.34.0", |
2642 | - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.31.0.tgz", | 2669 | + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", |
2643 | - "integrity": "sha512-MI6IWkutLYQYTQgZ48IVnRXmLR/0Q6oAyJgiOror74arUMh7EWjJkADfirZhRsUMHeLJ85U2iySDwHTSnNi9vA==", | 2670 | + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", |
2644 | "dev": true, | 2671 | "dev": true, |
2645 | "requires": { | 2672 | "requires": { |
2646 | "@types/json-schema": "^7.0.3", | 2673 | "@types/json-schema": "^7.0.3", |
2647 | - "@typescript-eslint/typescript-estree": "2.31.0", | 2674 | + "@typescript-eslint/typescript-estree": "2.34.0", |
2648 | "eslint-scope": "^5.0.0", | 2675 | "eslint-scope": "^5.0.0", |
2649 | "eslint-utils": "^2.0.0" | 2676 | "eslint-utils": "^2.0.0" |
2650 | } | 2677 | } |
2651 | }, | 2678 | }, |
2652 | "@typescript-eslint/parser": { | 2679 | "@typescript-eslint/parser": { |
2653 | - "version": "2.31.0", | 2680 | + "version": "2.34.0", |
2654 | - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.31.0.tgz", | 2681 | + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", |
2655 | - "integrity": "sha512-uph+w6xUOlyV2DLSC6o+fBDzZ5i7+3/TxAsH4h3eC64tlga57oMb96vVlXoMwjR/nN+xyWlsnxtbDkB46M2EPQ==", | 2682 | + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", |
2656 | "dev": true, | 2683 | "dev": true, |
2657 | "requires": { | 2684 | "requires": { |
2658 | "@types/eslint-visitor-keys": "^1.0.0", | 2685 | "@types/eslint-visitor-keys": "^1.0.0", |
2659 | - "@typescript-eslint/experimental-utils": "2.31.0", | 2686 | + "@typescript-eslint/experimental-utils": "2.34.0", |
2660 | - "@typescript-eslint/typescript-estree": "2.31.0", | 2687 | + "@typescript-eslint/typescript-estree": "2.34.0", |
2661 | "eslint-visitor-keys": "^1.1.0" | 2688 | "eslint-visitor-keys": "^1.1.0" |
2662 | } | 2689 | } |
2663 | }, | 2690 | }, |
2664 | "@typescript-eslint/typescript-estree": { | 2691 | "@typescript-eslint/typescript-estree": { |
2665 | - "version": "2.31.0", | 2692 | + "version": "2.34.0", |
2666 | - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.31.0.tgz", | 2693 | + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", |
2667 | - "integrity": "sha512-vxW149bXFXXuBrAak0eKHOzbcu9cvi6iNcJDzEtOkRwGHxJG15chiAQAwhLOsk+86p9GTr/TziYvw+H9kMaIgA==", | 2694 | + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", |
2668 | "dev": true, | 2695 | "dev": true, |
2669 | "requires": { | 2696 | "requires": { |
2670 | "debug": "^4.1.1", | 2697 | "debug": "^4.1.1", |
... | @@ -2672,8 +2699,16 @@ | ... | @@ -2672,8 +2699,16 @@ |
2672 | "glob": "^7.1.6", | 2699 | "glob": "^7.1.6", |
2673 | "is-glob": "^4.0.1", | 2700 | "is-glob": "^4.0.1", |
2674 | "lodash": "^4.17.15", | 2701 | "lodash": "^4.17.15", |
2675 | - "semver": "^6.3.0", | 2702 | + "semver": "^7.3.2", |
2676 | "tsutils": "^3.17.1" | 2703 | "tsutils": "^3.17.1" |
2704 | + }, | ||
2705 | + "dependencies": { | ||
2706 | + "semver": { | ||
2707 | + "version": "7.3.2", | ||
2708 | + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", | ||
2709 | + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", | ||
2710 | + "dev": true | ||
2711 | + } | ||
2677 | } | 2712 | } |
2678 | }, | 2713 | }, |
2679 | "@webassemblyjs/ast": { | 2714 | "@webassemblyjs/ast": { |
... | @@ -3058,11 +3093,53 @@ | ... | @@ -3058,11 +3093,53 @@ |
3058 | "color-convert": "^2.0.1" | 3093 | "color-convert": "^2.0.1" |
3059 | } | 3094 | } |
3060 | }, | 3095 | }, |
3061 | - "any-observable": { | 3096 | + "antd": { |
3062 | - "version": "0.3.0", | 3097 | + "version": "4.3.3", |
3063 | - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", | 3098 | + "resolved": "https://registry.npmjs.org/antd/-/antd-4.3.3.tgz", |
3064 | - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", | 3099 | + "integrity": "sha512-psDb3krf0nK0gkZSfxOGfJdqKbi0hzQJif7R2Cg3T6OV1nrNfc6waL4Th8mV72qq/+Ushuk0afRDaARkx9EzEg==", |
3065 | - "dev": true | 3100 | + "requires": { |
3101 | + "@ant-design/css-animation": "^1.7.2", | ||
3102 | + "@ant-design/icons": "^4.2.1", | ||
3103 | + "@ant-design/react-slick": "~0.26.1", | ||
3104 | + "array-tree-filter": "^2.1.0", | ||
3105 | + "classnames": "^2.2.6", | ||
3106 | + "copy-to-clipboard": "^3.2.0", | ||
3107 | + "lodash": "^4.17.13", | ||
3108 | + "moment": "^2.25.3", | ||
3109 | + "omit.js": "^1.0.2", | ||
3110 | + "raf": "^3.4.1", | ||
3111 | + "rc-animate": "~3.1.0", | ||
3112 | + "rc-cascader": "~1.2.0", | ||
3113 | + "rc-checkbox": "~2.2.0", | ||
3114 | + "rc-collapse": "~2.0.0", | ||
3115 | + "rc-dialog": "~8.0.0", | ||
3116 | + "rc-drawer": "~4.0.0", | ||
3117 | + "rc-dropdown": "~3.1.2", | ||
3118 | + "rc-field-form": "~1.4.1", | ||
3119 | + "rc-input-number": "~5.0.0", | ||
3120 | + "rc-mentions": "~1.2.0", | ||
3121 | + "rc-menu": "~8.3.0", | ||
3122 | + "rc-notification": "~4.4.0", | ||
3123 | + "rc-pagination": "~2.2.5", | ||
3124 | + "rc-picker": "~1.6.1", | ||
3125 | + "rc-progress": "~3.0.0", | ||
3126 | + "rc-rate": "~2.7.0", | ||
3127 | + "rc-resize-observer": "^0.2.3", | ||
3128 | + "rc-select": "~11.0.0", | ||
3129 | + "rc-slider": "~9.3.0", | ||
3130 | + "rc-steps": "~4.0.0", | ||
3131 | + "rc-switch": "~3.2.0", | ||
3132 | + "rc-table": "~7.7.2", | ||
3133 | + "rc-tabs": "~11.3.1", | ||
3134 | + "rc-tooltip": "~4.2.0", | ||
3135 | + "rc-tree": "~3.3.0", | ||
3136 | + "rc-tree-select": "~4.0.0", | ||
3137 | + "rc-trigger": "~4.3.0", | ||
3138 | + "rc-upload": "~3.1.0", | ||
3139 | + "rc-util": "^5.0.1", | ||
3140 | + "scroll-into-view-if-needed": "^2.2.25", | ||
3141 | + "warning": "^4.0.3" | ||
3142 | + } | ||
3066 | }, | 3143 | }, |
3067 | "anymatch": { | 3144 | "anymatch": { |
3068 | "version": "2.0.0", | 3145 | "version": "2.0.0", |
... | @@ -3308,6 +3385,11 @@ | ... | @@ -3308,6 +3385,11 @@ |
3308 | "is-string": "^1.0.5" | 3385 | "is-string": "^1.0.5" |
3309 | } | 3386 | } |
3310 | }, | 3387 | }, |
3388 | + "array-tree-filter": { | ||
3389 | + "version": "2.1.0", | ||
3390 | + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", | ||
3391 | + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" | ||
3392 | + }, | ||
3311 | "array-union": { | 3393 | "array-union": { |
3312 | "version": "1.0.2", | 3394 | "version": "1.0.2", |
3313 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", | 3395 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", |
... | @@ -3439,6 +3521,11 @@ | ... | @@ -3439,6 +3521,11 @@ |
3439 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", | 3521 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", |
3440 | "dev": true | 3522 | "dev": true |
3441 | }, | 3523 | }, |
3524 | + "async-validator": { | ||
3525 | + "version": "3.3.0", | ||
3526 | + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.3.0.tgz", | ||
3527 | + "integrity": "sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg==" | ||
3528 | + }, | ||
3442 | "asynckit": { | 3529 | "asynckit": { |
3443 | "version": "0.4.0", | 3530 | "version": "0.4.0", |
3444 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | 3531 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", |
... | @@ -3973,7 +4060,6 @@ | ... | @@ -3973,7 +4060,6 @@ |
3973 | "version": "6.26.0", | 4060 | "version": "6.26.0", |
3974 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", | 4061 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", |
3975 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", | 4062 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", |
3976 | - "dev": true, | ||
3977 | "requires": { | 4063 | "requires": { |
3978 | "core-js": "^2.4.0", | 4064 | "core-js": "^2.4.0", |
3979 | "regenerator-runtime": "^0.11.0" | 4065 | "regenerator-runtime": "^0.11.0" |
... | @@ -3982,14 +4068,12 @@ | ... | @@ -3982,14 +4068,12 @@ |
3982 | "core-js": { | 4068 | "core-js": { |
3983 | "version": "2.6.11", | 4069 | "version": "2.6.11", |
3984 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", | 4070 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", |
3985 | - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", | 4071 | + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" |
3986 | - "dev": true | ||
3987 | }, | 4072 | }, |
3988 | "regenerator-runtime": { | 4073 | "regenerator-runtime": { |
3989 | "version": "0.11.1", | 4074 | "version": "0.11.1", |
3990 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", | 4075 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", |
3991 | - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", | 4076 | + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" |
3992 | - "dev": true | ||
3993 | } | 4077 | } |
3994 | } | 4078 | } |
3995 | }, | 4079 | }, |
... | @@ -4808,12 +4892,6 @@ | ... | @@ -4808,12 +4892,6 @@ |
4808 | } | 4892 | } |
4809 | } | 4893 | } |
4810 | }, | 4894 | }, |
4811 | - "clone": { | ||
4812 | - "version": "1.0.4", | ||
4813 | - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", | ||
4814 | - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", | ||
4815 | - "dev": true | ||
4816 | - }, | ||
4817 | "clone-deep": { | 4895 | "clone-deep": { |
4818 | "version": "0.2.4", | 4896 | "version": "0.2.4", |
4819 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", | 4897 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", |
... | @@ -5053,6 +5131,11 @@ | ... | @@ -5053,6 +5131,11 @@ |
5053 | } | 5131 | } |
5054 | } | 5132 | } |
5055 | }, | 5133 | }, |
5134 | + "compute-scroll-into-view": { | ||
5135 | + "version": "1.0.14", | ||
5136 | + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz", | ||
5137 | + "integrity": "sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==" | ||
5138 | + }, | ||
5056 | "concat-map": { | 5139 | "concat-map": { |
5057 | "version": "0.0.1", | 5140 | "version": "0.0.1", |
5058 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | 5141 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
... | @@ -5189,6 +5272,14 @@ | ... | @@ -5189,6 +5272,14 @@ |
5189 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", | 5272 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", |
5190 | "dev": true | 5273 | "dev": true |
5191 | }, | 5274 | }, |
5275 | + "copy-to-clipboard": { | ||
5276 | + "version": "3.3.1", | ||
5277 | + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", | ||
5278 | + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", | ||
5279 | + "requires": { | ||
5280 | + "toggle-selection": "^1.0.6" | ||
5281 | + } | ||
5282 | + }, | ||
5192 | "core-js": { | 5283 | "core-js": { |
5193 | "version": "3.6.5", | 5284 | "version": "3.6.5", |
5194 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", | 5285 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", |
... | @@ -5284,9 +5375,9 @@ | ... | @@ -5284,9 +5375,9 @@ |
5284 | } | 5375 | } |
5285 | }, | 5376 | }, |
5286 | "cross-spawn": { | 5377 | "cross-spawn": { |
5287 | - "version": "7.0.2", | 5378 | + "version": "7.0.3", |
5288 | - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", | 5379 | + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", |
5289 | - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", | 5380 | + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", |
5290 | "dev": true, | 5381 | "dev": true, |
5291 | "requires": { | 5382 | "requires": { |
5292 | "path-key": "^3.1.0", | 5383 | "path-key": "^3.1.0", |
... | @@ -5635,9 +5726,9 @@ | ... | @@ -5635,9 +5726,9 @@ |
5635 | } | 5726 | } |
5636 | }, | 5727 | }, |
5637 | "customize-cra": { | 5728 | "customize-cra": { |
5638 | - "version": "0.9.1", | 5729 | + "version": "1.0.0", |
5639 | - "resolved": "https://registry.npmjs.org/customize-cra/-/customize-cra-0.9.1.tgz", | 5730 | + "resolved": "https://registry.npmjs.org/customize-cra/-/customize-cra-1.0.0.tgz", |
5640 | - "integrity": "sha512-LISruJ6ak6u+HVQ2vPI+HE4inpPugB73KB9YIpE2J1TW5L1Vrjzm3l2Yupyy+1alJGwAd5GAb5Hfc9qmSUuHow==", | 5731 | + "integrity": "sha512-DbtaLuy59224U+xCiukkxSq8clq++MOtJ1Et7LED1fLszWe88EoblEYFBJ895sB1mC6B4uu3xPT/IjClELhMbA==", |
5641 | "dev": true, | 5732 | "dev": true, |
5642 | "requires": { | 5733 | "requires": { |
5643 | "lodash.flow": "^3.5.0" | 5734 | "lodash.flow": "^3.5.0" |
... | @@ -5845,15 +5936,6 @@ | ... | @@ -5845,15 +5936,6 @@ |
5845 | } | 5936 | } |
5846 | } | 5937 | } |
5847 | }, | 5938 | }, |
5848 | - "defaults": { | ||
5849 | - "version": "1.0.3", | ||
5850 | - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", | ||
5851 | - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", | ||
5852 | - "dev": true, | ||
5853 | - "requires": { | ||
5854 | - "clone": "^1.0.2" | ||
5855 | - } | ||
5856 | - }, | ||
5857 | "define-properties": { | 5939 | "define-properties": { |
5858 | "version": "1.1.3", | 5940 | "version": "1.1.3", |
5859 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", | 5941 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", |
... | @@ -6114,11 +6196,16 @@ | ... | @@ -6114,11 +6196,16 @@ |
6114 | } | 6196 | } |
6115 | }, | 6197 | }, |
6116 | "dom-accessibility-api": { | 6198 | "dom-accessibility-api": { |
6117 | - "version": "0.4.3", | 6199 | + "version": "0.4.4", |
6118 | - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz", | 6200 | + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.4.4.tgz", |
6119 | - "integrity": "sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA==", | 6201 | + "integrity": "sha512-XBM62jdDc06IXSujkqw6BugEWiDkp6jphtzVJf1kgPQGvfzaU7/jRtRSF/mxc8DBCIm2LS3bN1dCa5Sfxx982A==", |
6120 | "dev": true | 6202 | "dev": true |
6121 | }, | 6203 | }, |
6204 | + "dom-align": { | ||
6205 | + "version": "1.12.0", | ||
6206 | + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz", | ||
6207 | + "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==" | ||
6208 | + }, | ||
6122 | "dom-converter": { | 6209 | "dom-converter": { |
6123 | "version": "0.2.0", | 6210 | "version": "0.2.0", |
6124 | "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", | 6211 | "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", |
... | @@ -6303,12 +6390,6 @@ | ... | @@ -6303,12 +6390,6 @@ |
6303 | "integrity": "sha512-/GdNhXyLP5Yl2322CUX/+Xi8NhdHBqL6lD9VJVKjH6CjoPGakvwZ5CpKgj/oOlbzuWWjOvMjDw1bBuAIRCNTlw==", | 6390 | "integrity": "sha512-/GdNhXyLP5Yl2322CUX/+Xi8NhdHBqL6lD9VJVKjH6CjoPGakvwZ5CpKgj/oOlbzuWWjOvMjDw1bBuAIRCNTlw==", |
6304 | "dev": true | 6391 | "dev": true |
6305 | }, | 6392 | }, |
6306 | - "elegant-spinner": { | ||
6307 | - "version": "2.0.0", | ||
6308 | - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-2.0.0.tgz", | ||
6309 | - "integrity": "sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA==", | ||
6310 | - "dev": true | ||
6311 | - }, | ||
6312 | "elliptic": { | 6393 | "elliptic": { |
6313 | "version": "6.5.2", | 6394 | "version": "6.5.2", |
6314 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", | 6395 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", |
... | @@ -7025,9 +7106,9 @@ | ... | @@ -7025,9 +7106,9 @@ |
7025 | } | 7106 | } |
7026 | }, | 7107 | }, |
7027 | "eslint-plugin-jest": { | 7108 | "eslint-plugin-jest": { |
7028 | - "version": "23.10.0", | 7109 | + "version": "23.13.2", |
7029 | - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.10.0.tgz", | 7110 | + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.13.2.tgz", |
7030 | - "integrity": "sha512-cHC//nesojSO1MLxVmFJR/bUaQQG7xvMHQD8YLbsQzevR41WKm8paKDUv2wMHlUy5XLZUmNcWuflOi4apS8D+Q==", | 7111 | + "integrity": "sha512-qZit+moTXTyZFNDqSIR88/L3rdBlTU7CuW6XmyErD2FfHEkdoLgThkRbiQjzgYnX6rfgLx3Ci4eJmF4Ui5v1Cw==", |
7031 | "dev": true, | 7112 | "dev": true, |
7032 | "requires": { | 7113 | "requires": { |
7033 | "@typescript-eslint/experimental-utils": "^2.5.0" | 7114 | "@typescript-eslint/experimental-utils": "^2.5.0" |
... | @@ -7207,9 +7288,9 @@ | ... | @@ -7207,9 +7288,9 @@ |
7207 | "dev": true | 7288 | "dev": true |
7208 | }, | 7289 | }, |
7209 | "eventemitter3": { | 7290 | "eventemitter3": { |
7210 | - "version": "4.0.1", | 7291 | + "version": "4.0.4", |
7211 | - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.1.tgz", | 7292 | + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", |
7212 | - "integrity": "sha512-MnI0l35oYL2C/c80rjJN7qu50MDx39yYE7y7oYck2YA3v+y7EaAenY8IU8AP4d1RWqE8VAKWFGSh3rfP87ll3g==", | 7293 | + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", |
7213 | "dev": true | 7294 | "dev": true |
7214 | }, | 7295 | }, |
7215 | "events": { | 7296 | "events": { |
... | @@ -7244,9 +7325,9 @@ | ... | @@ -7244,9 +7325,9 @@ |
7244 | "dev": true | 7325 | "dev": true |
7245 | }, | 7326 | }, |
7246 | "execa": { | 7327 | "execa": { |
7247 | - "version": "4.0.1", | 7328 | + "version": "4.0.2", |
7248 | - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", | 7329 | + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.2.tgz", |
7249 | - "integrity": "sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==", | 7330 | + "integrity": "sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q==", |
7250 | "dev": true, | 7331 | "dev": true, |
7251 | "requires": { | 7332 | "requires": { |
7252 | "cross-spawn": "^7.0.0", | 7333 | "cross-spawn": "^7.0.0", |
... | @@ -7655,6 +7736,11 @@ | ... | @@ -7655,6 +7736,11 @@ |
7655 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", | 7736 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", |
7656 | "dev": true | 7737 | "dev": true |
7657 | }, | 7738 | }, |
7739 | + "fake-xml-http-request": { | ||
7740 | + "version": "2.1.1", | ||
7741 | + "resolved": "https://registry.npmjs.org/fake-xml-http-request/-/fake-xml-http-request-2.1.1.tgz", | ||
7742 | + "integrity": "sha512-Kn2WYYS6cDBS5jq/voOfSGCA0TafOYAUPbEp8mUVpD/DVV5bQIDjlq+MLLvNUokkbTpjBVlLDaM5PnX+PwZMlw==" | ||
7743 | + }, | ||
7658 | "fast-deep-equal": { | 7744 | "fast-deep-equal": { |
7659 | "version": "3.1.1", | 7745 | "version": "3.1.1", |
7660 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", | 7746 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", |
... | @@ -7879,10 +7965,9 @@ | ... | @@ -7879,10 +7965,9 @@ |
7879 | "optional": true | 7965 | "optional": true |
7880 | }, | 7966 | }, |
7881 | "filesize": { | 7967 | "filesize": { |
7882 | - "version": "6.0.1", | 7968 | + "version": "6.1.0", |
7883 | - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", | 7969 | + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", |
7884 | - "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", | 7970 | + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" |
7885 | - "dev": true | ||
7886 | }, | 7971 | }, |
7887 | "fill-range": { | 7972 | "fill-range": { |
7888 | "version": "7.0.1", | 7973 | "version": "7.0.1", |
... | @@ -8690,11 +8775,6 @@ | ... | @@ -8690,11 +8775,6 @@ |
8690 | "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", | 8775 | "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", |
8691 | "dev": true | 8776 | "dev": true |
8692 | }, | 8777 | }, |
8693 | - "gud": { | ||
8694 | - "version": "1.0.0", | ||
8695 | - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", | ||
8696 | - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" | ||
8697 | - }, | ||
8698 | "gzip-size": { | 8778 | "gzip-size": { |
8699 | "version": "5.1.1", | 8779 | "version": "5.1.1", |
8700 | "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", | 8780 | "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", |
... | @@ -9104,9 +9184,9 @@ | ... | @@ -9104,9 +9184,9 @@ |
9104 | "dev": true | 9184 | "dev": true |
9105 | }, | 9185 | }, |
9106 | "http-proxy": { | 9186 | "http-proxy": { |
9107 | - "version": "1.18.0", | 9187 | + "version": "1.18.1", |
9108 | - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", | 9188 | + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", |
9109 | - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", | 9189 | + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", |
9110 | "dev": true, | 9190 | "dev": true, |
9111 | "requires": { | 9191 | "requires": { |
9112 | "eventemitter3": "^4.0.0", | 9192 | "eventemitter3": "^4.0.0", |
... | @@ -9462,6 +9542,11 @@ | ... | @@ -9462,6 +9542,11 @@ |
9462 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", | 9542 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", |
9463 | "dev": true | 9543 | "dev": true |
9464 | }, | 9544 | }, |
9545 | + "inflected": { | ||
9546 | + "version": "2.0.4", | ||
9547 | + "resolved": "https://registry.npmjs.org/inflected/-/inflected-2.0.4.tgz", | ||
9548 | + "integrity": "sha512-HQPzFLTTUvwfeUH6RAGjD8cHS069mBqXG5n4qaxX7sJXBhVQrsGgF+0ZJGkSuN6a8pcUWB/GXStta11kKi/WvA==" | ||
9549 | + }, | ||
9465 | "inflight": { | 9550 | "inflight": { |
9466 | "version": "1.0.6", | 9551 | "version": "1.0.6", |
9467 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | 9552 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
... | @@ -9505,6 +9590,11 @@ | ... | @@ -9505,6 +9590,11 @@ |
9505 | "through": "^2.3.6" | 9590 | "through": "^2.3.6" |
9506 | } | 9591 | } |
9507 | }, | 9592 | }, |
9593 | + "insert-css": { | ||
9594 | + "version": "2.0.0", | ||
9595 | + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", | ||
9596 | + "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" | ||
9597 | + }, | ||
9508 | "internal-ip": { | 9598 | "internal-ip": { |
9509 | "version": "4.3.0", | 9599 | "version": "4.3.0", |
9510 | "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", | 9600 | "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", |
... | @@ -12374,6 +12464,14 @@ | ... | @@ -12374,6 +12464,14 @@ |
12374 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", | 12464 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", |
12375 | "dev": true | 12465 | "dev": true |
12376 | }, | 12466 | }, |
12467 | + "json2mq": { | ||
12468 | + "version": "0.2.0", | ||
12469 | + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", | ||
12470 | + "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", | ||
12471 | + "requires": { | ||
12472 | + "string-convert": "^0.2.0" | ||
12473 | + } | ||
12474 | + }, | ||
12377 | "json3": { | 12475 | "json3": { |
12378 | "version": "3.3.3", | 12476 | "version": "3.3.3", |
12379 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", | 12477 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", |
... | @@ -12448,9 +12546,9 @@ | ... | @@ -12448,9 +12546,9 @@ |
12448 | "dev": true | 12546 | "dev": true |
12449 | }, | 12547 | }, |
12450 | "ky": { | 12548 | "ky": { |
12451 | - "version": "0.19.1", | 12549 | + "version": "0.20.0", |
12452 | - "resolved": "https://registry.npmjs.org/ky/-/ky-0.19.1.tgz", | 12550 | + "resolved": "https://registry.npmjs.org/ky/-/ky-0.20.0.tgz", |
12453 | - "integrity": "sha512-ZwciYrfaWpDI72U2HAruuGYGFW3PCfGNdWWSANGGssg9BGm4rRJ9s/sApiiRpj+8Y245/hlZW9c60zudLr6iwA==" | 12551 | + "integrity": "sha512-JAfwtwj+t7WqRus88PfBj25aAjRQUgMhk7aB2ufjQ6v8faoNwMy02mfSQ0iNXWCbJGcSl2JZ5ckaiywRjbq0Uw==" |
12454 | }, | 12552 | }, |
12455 | "last-call-webpack-plugin": { | 12553 | "last-call-webpack-plugin": { |
12456 | "version": "3.0.0", | 12554 | "version": "3.0.0", |
... | @@ -12515,19 +12613,21 @@ | ... | @@ -12515,19 +12613,21 @@ |
12515 | "dev": true | 12613 | "dev": true |
12516 | }, | 12614 | }, |
12517 | "lint-staged": { | 12615 | "lint-staged": { |
12518 | - "version": "10.2.2", | 12616 | + "version": "10.2.9", |
12519 | - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.2.tgz", | 12617 | + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.9.tgz", |
12520 | - "integrity": "sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg==", | 12618 | + "integrity": "sha512-ziRAuXEqvJLSXg43ezBpHxRW8FOJCXISaXU//BWrxRrp5cBdRkIx7g5IsB3OI45xYGE0S6cOacfekSjDyDKF2g==", |
12521 | "dev": true, | 12619 | "dev": true, |
12522 | "requires": { | 12620 | "requires": { |
12523 | "chalk": "^4.0.0", | 12621 | "chalk": "^4.0.0", |
12524 | - "commander": "^5.0.0", | 12622 | + "cli-truncate": "2.1.0", |
12623 | + "commander": "^5.1.0", | ||
12525 | "cosmiconfig": "^6.0.0", | 12624 | "cosmiconfig": "^6.0.0", |
12526 | "debug": "^4.1.1", | 12625 | "debug": "^4.1.1", |
12527 | "dedent": "^0.7.0", | 12626 | "dedent": "^0.7.0", |
12528 | - "execa": "^4.0.0", | 12627 | + "enquirer": "^2.3.5", |
12529 | - "listr2": "1.3.8", | 12628 | + "execa": "^4.0.1", |
12530 | - "log-symbols": "^3.0.0", | 12629 | + "listr2": "^2.1.0", |
12630 | + "log-symbols": "^4.0.0", | ||
12531 | "micromatch": "^4.0.2", | 12631 | "micromatch": "^4.0.2", |
12532 | "normalize-path": "^3.0.0", | 12632 | "normalize-path": "^3.0.0", |
12533 | "please-upgrade-node": "^3.2.0", | 12633 | "please-upgrade-node": "^3.2.0", |
... | @@ -12548,25 +12648,31 @@ | ... | @@ -12548,25 +12648,31 @@ |
12548 | } | 12648 | } |
12549 | }, | 12649 | }, |
12550 | "listr2": { | 12650 | "listr2": { |
12551 | - "version": "1.3.8", | 12651 | + "version": "2.1.3", |
12552 | - "resolved": "https://registry.npmjs.org/listr2/-/listr2-1.3.8.tgz", | 12652 | + "resolved": "https://registry.npmjs.org/listr2/-/listr2-2.1.3.tgz", |
12553 | - "integrity": "sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA==", | 12653 | + "integrity": "sha512-6oy3QhrZAlJGrG8oPcRp1hix1zUpb5AvyvZ5je979HCyf48tIj3Hn1TG5+rfyhz30t7HfySH/OIaVbwrI2kruA==", |
12554 | "dev": true, | 12654 | "dev": true, |
12555 | "requires": { | 12655 | "requires": { |
12556 | - "@samverschueren/stream-to-observable": "^0.3.0", | 12656 | + "chalk": "^4.0.0", |
12557 | - "chalk": "^3.0.0", | ||
12558 | - "cli-cursor": "^3.1.0", | ||
12559 | "cli-truncate": "^2.1.0", | 12657 | "cli-truncate": "^2.1.0", |
12560 | - "elegant-spinner": "^2.0.0", | ||
12561 | - "enquirer": "^2.3.4", | ||
12562 | "figures": "^3.2.0", | 12658 | "figures": "^3.2.0", |
12563 | "indent-string": "^4.0.0", | 12659 | "indent-string": "^4.0.0", |
12564 | "log-update": "^4.0.0", | 12660 | "log-update": "^4.0.0", |
12565 | "p-map": "^4.0.0", | 12661 | "p-map": "^4.0.0", |
12566 | - "pad": "^3.2.0", | 12662 | + "rxjs": "^6.5.5", |
12567 | - "rxjs": "^6.3.3", | 12663 | + "through": "^2.3.8" |
12568 | - "through": "^2.3.8", | 12664 | + }, |
12569 | - "uuid": "^7.0.2" | 12665 | + "dependencies": { |
12666 | + "chalk": { | ||
12667 | + "version": "4.0.0", | ||
12668 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", | ||
12669 | + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", | ||
12670 | + "dev": true, | ||
12671 | + "requires": { | ||
12672 | + "ansi-styles": "^4.1.0", | ||
12673 | + "supports-color": "^7.1.0" | ||
12674 | + } | ||
12675 | + } | ||
12570 | } | 12676 | } |
12571 | }, | 12677 | }, |
12572 | "load-json-file": { | 12678 | "load-json-file": { |
... | @@ -12684,8 +12790,7 @@ | ... | @@ -12684,8 +12790,7 @@ |
12684 | "lodash": { | 12790 | "lodash": { |
12685 | "version": "4.17.15", | 12791 | "version": "4.17.15", |
12686 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", | 12792 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", |
12687 | - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", | 12793 | + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" |
12688 | - "dev": true | ||
12689 | }, | 12794 | }, |
12690 | "lodash._reinterpolate": { | 12795 | "lodash._reinterpolate": { |
12691 | "version": "3.0.0", | 12796 | "version": "3.0.0", |
... | @@ -12693,18 +12798,118 @@ | ... | @@ -12693,18 +12798,118 @@ |
12693 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", | 12798 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", |
12694 | "dev": true | 12799 | "dev": true |
12695 | }, | 12800 | }, |
12801 | + "lodash.assign": { | ||
12802 | + "version": "4.2.0", | ||
12803 | + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", | ||
12804 | + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" | ||
12805 | + }, | ||
12806 | + "lodash.camelcase": { | ||
12807 | + "version": "4.3.0", | ||
12808 | + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", | ||
12809 | + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" | ||
12810 | + }, | ||
12811 | + "lodash.clonedeep": { | ||
12812 | + "version": "4.5.0", | ||
12813 | + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", | ||
12814 | + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" | ||
12815 | + }, | ||
12816 | + "lodash.compact": { | ||
12817 | + "version": "3.0.1", | ||
12818 | + "resolved": "https://registry.npmjs.org/lodash.compact/-/lodash.compact-3.0.1.tgz", | ||
12819 | + "integrity": "sha1-VAzjg3dFl1gHRx4WtKK6IeclbKU=" | ||
12820 | + }, | ||
12821 | + "lodash.find": { | ||
12822 | + "version": "4.6.0", | ||
12823 | + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", | ||
12824 | + "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" | ||
12825 | + }, | ||
12826 | + "lodash.flatten": { | ||
12827 | + "version": "4.4.0", | ||
12828 | + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", | ||
12829 | + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" | ||
12830 | + }, | ||
12696 | "lodash.flow": { | 12831 | "lodash.flow": { |
12697 | "version": "3.5.0", | 12832 | "version": "3.5.0", |
12698 | "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", | 12833 | "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", |
12699 | "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=", | 12834 | "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=", |
12700 | "dev": true | 12835 | "dev": true |
12701 | }, | 12836 | }, |
12837 | + "lodash.forin": { | ||
12838 | + "version": "4.4.0", | ||
12839 | + "resolved": "https://registry.npmjs.org/lodash.forin/-/lodash.forin-4.4.0.tgz", | ||
12840 | + "integrity": "sha1-XT8grlZAEfvog4H32YlJyclRlzE=" | ||
12841 | + }, | ||
12842 | + "lodash.get": { | ||
12843 | + "version": "4.4.2", | ||
12844 | + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", | ||
12845 | + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" | ||
12846 | + }, | ||
12847 | + "lodash.has": { | ||
12848 | + "version": "4.5.2", | ||
12849 | + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", | ||
12850 | + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=" | ||
12851 | + }, | ||
12852 | + "lodash.invokemap": { | ||
12853 | + "version": "4.6.0", | ||
12854 | + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", | ||
12855 | + "integrity": "sha1-F0jNpdiw74NpxOs+xUwh/rofLWI=" | ||
12856 | + }, | ||
12857 | + "lodash.isempty": { | ||
12858 | + "version": "4.4.0", | ||
12859 | + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", | ||
12860 | + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" | ||
12861 | + }, | ||
12862 | + "lodash.isequal": { | ||
12863 | + "version": "4.5.0", | ||
12864 | + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", | ||
12865 | + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" | ||
12866 | + }, | ||
12867 | + "lodash.isfunction": { | ||
12868 | + "version": "3.0.9", | ||
12869 | + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", | ||
12870 | + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" | ||
12871 | + }, | ||
12872 | + "lodash.isinteger": { | ||
12873 | + "version": "4.0.4", | ||
12874 | + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", | ||
12875 | + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" | ||
12876 | + }, | ||
12877 | + "lodash.isplainobject": { | ||
12878 | + "version": "4.0.6", | ||
12879 | + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", | ||
12880 | + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" | ||
12881 | + }, | ||
12882 | + "lodash.lowerfirst": { | ||
12883 | + "version": "4.3.1", | ||
12884 | + "resolved": "https://registry.npmjs.org/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz", | ||
12885 | + "integrity": "sha1-3jx7EuAsZSSgBZwvbLfFxSZVoT0=" | ||
12886 | + }, | ||
12887 | + "lodash.map": { | ||
12888 | + "version": "4.6.0", | ||
12889 | + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", | ||
12890 | + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" | ||
12891 | + }, | ||
12892 | + "lodash.mapvalues": { | ||
12893 | + "version": "4.6.0", | ||
12894 | + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", | ||
12895 | + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=" | ||
12896 | + }, | ||
12702 | "lodash.memoize": { | 12897 | "lodash.memoize": { |
12703 | "version": "4.1.2", | 12898 | "version": "4.1.2", |
12704 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", | 12899 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", |
12705 | "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", | 12900 | "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", |
12706 | "dev": true | 12901 | "dev": true |
12707 | }, | 12902 | }, |
12903 | + "lodash.pick": { | ||
12904 | + "version": "4.4.0", | ||
12905 | + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", | ||
12906 | + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" | ||
12907 | + }, | ||
12908 | + "lodash.snakecase": { | ||
12909 | + "version": "4.1.1", | ||
12910 | + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", | ||
12911 | + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" | ||
12912 | + }, | ||
12708 | "lodash.sortby": { | 12913 | "lodash.sortby": { |
12709 | "version": "4.7.0", | 12914 | "version": "4.7.0", |
12710 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", | 12915 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", |
... | @@ -12733,66 +12938,35 @@ | ... | @@ -12733,66 +12938,35 @@ |
12733 | "lodash.uniq": { | 12938 | "lodash.uniq": { |
12734 | "version": "4.5.0", | 12939 | "version": "4.5.0", |
12735 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", | 12940 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", |
12736 | - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", | 12941 | + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" |
12737 | - "dev": true | 12942 | + }, |
12943 | + "lodash.uniqby": { | ||
12944 | + "version": "4.7.0", | ||
12945 | + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", | ||
12946 | + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=" | ||
12947 | + }, | ||
12948 | + "lodash.values": { | ||
12949 | + "version": "4.3.0", | ||
12950 | + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", | ||
12951 | + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" | ||
12738 | }, | 12952 | }, |
12739 | "log-symbols": { | 12953 | "log-symbols": { |
12740 | - "version": "3.0.0", | 12954 | + "version": "4.0.0", |
12741 | - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", | 12955 | + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", |
12742 | - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", | 12956 | + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", |
12743 | "dev": true, | 12957 | "dev": true, |
12744 | "requires": { | 12958 | "requires": { |
12745 | - "chalk": "^2.4.2" | 12959 | + "chalk": "^4.0.0" |
12746 | }, | 12960 | }, |
12747 | "dependencies": { | 12961 | "dependencies": { |
12748 | - "ansi-styles": { | ||
12749 | - "version": "3.2.1", | ||
12750 | - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
12751 | - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
12752 | - "dev": true, | ||
12753 | - "requires": { | ||
12754 | - "color-convert": "^1.9.0" | ||
12755 | - } | ||
12756 | - }, | ||
12757 | "chalk": { | 12962 | "chalk": { |
12758 | - "version": "2.4.2", | 12963 | + "version": "4.0.0", |
12759 | - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | 12964 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", |
12760 | - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | 12965 | + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", |
12761 | - "dev": true, | ||
12762 | - "requires": { | ||
12763 | - "ansi-styles": "^3.2.1", | ||
12764 | - "escape-string-regexp": "^1.0.5", | ||
12765 | - "supports-color": "^5.3.0" | ||
12766 | - } | ||
12767 | - }, | ||
12768 | - "color-convert": { | ||
12769 | - "version": "1.9.3", | ||
12770 | - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||
12771 | - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||
12772 | - "dev": true, | ||
12773 | - "requires": { | ||
12774 | - "color-name": "1.1.3" | ||
12775 | - } | ||
12776 | - }, | ||
12777 | - "color-name": { | ||
12778 | - "version": "1.1.3", | ||
12779 | - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||
12780 | - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", | ||
12781 | - "dev": true | ||
12782 | - }, | ||
12783 | - "has-flag": { | ||
12784 | - "version": "3.0.0", | ||
12785 | - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||
12786 | - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | ||
12787 | - "dev": true | ||
12788 | - }, | ||
12789 | - "supports-color": { | ||
12790 | - "version": "5.5.0", | ||
12791 | - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
12792 | - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
12793 | "dev": true, | 12966 | "dev": true, |
12794 | "requires": { | 12967 | "requires": { |
12795 | - "has-flag": "^3.0.0" | 12968 | + "ansi-styles": "^4.1.0", |
12969 | + "supports-color": "^7.1.0" | ||
12796 | } | 12970 | } |
12797 | } | 12971 | } |
12798 | } | 12972 | } |
... | @@ -13259,19 +13433,18 @@ | ... | @@ -13259,19 +13433,18 @@ |
13259 | } | 13433 | } |
13260 | }, | 13434 | }, |
13261 | "min-indent": { | 13435 | "min-indent": { |
13262 | - "version": "1.0.0", | 13436 | + "version": "1.0.1", |
13263 | - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", | 13437 | + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", |
13264 | - "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", | 13438 | + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", |
13265 | "dev": true | 13439 | "dev": true |
13266 | }, | 13440 | }, |
13267 | "mini-create-react-context": { | 13441 | "mini-create-react-context": { |
13268 | - "version": "0.3.2", | 13442 | + "version": "0.4.0", |
13269 | - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz", | 13443 | + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", |
13270 | - "integrity": "sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==", | 13444 | + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", |
13271 | "requires": { | 13445 | "requires": { |
13272 | - "@babel/runtime": "^7.4.0", | 13446 | + "@babel/runtime": "^7.5.5", |
13273 | - "gud": "^1.0.0", | 13447 | + "tiny-warning": "^1.0.3" |
13274 | - "tiny-warning": "^1.0.2" | ||
13275 | } | 13448 | } |
13276 | }, | 13449 | }, |
13277 | "mini-css-extract-plugin": { | 13450 | "mini-css-extract-plugin": { |
... | @@ -13299,6 +13472,15 @@ | ... | @@ -13299,6 +13472,15 @@ |
13299 | } | 13472 | } |
13300 | } | 13473 | } |
13301 | }, | 13474 | }, |
13475 | + "mini-store": { | ||
13476 | + "version": "3.0.5", | ||
13477 | + "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.5.tgz", | ||
13478 | + "integrity": "sha512-A7f0+d7TEvjJNY2K+splh2OG3AhmoPoiF3VntlAcJuBzryMumOF9LAVzg8mRJPPbCkz7mlWQg9MCMQPR2auftA==", | ||
13479 | + "requires": { | ||
13480 | + "hoist-non-react-statics": "^3.3.2", | ||
13481 | + "shallowequal": "^1.0.2" | ||
13482 | + } | ||
13483 | + }, | ||
13302 | "minimalistic-assert": { | 13484 | "minimalistic-assert": { |
13303 | "version": "1.0.1", | 13485 | "version": "1.0.1", |
13304 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", | 13486 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", |
... | @@ -13362,6 +13544,39 @@ | ... | @@ -13362,6 +13544,39 @@ |
13362 | "minipass": "^3.0.0" | 13544 | "minipass": "^3.0.0" |
13363 | } | 13545 | } |
13364 | }, | 13546 | }, |
13547 | + "miragejs": { | ||
13548 | + "version": "0.1.40", | ||
13549 | + "resolved": "https://registry.npmjs.org/miragejs/-/miragejs-0.1.40.tgz", | ||
13550 | + "integrity": "sha512-7zxIcynzdS6425KZ2+TWD6F6DqESorulSDW2QBXf4iKyVn/J5vSielcubAK8sTKUefTPCrSRi7PwgNOb0JlmIg==", | ||
13551 | + "requires": { | ||
13552 | + "@miragejs/pretender-node-polyfill": "^0.1.0", | ||
13553 | + "inflected": "^2.0.4", | ||
13554 | + "lodash.assign": "^4.2.0", | ||
13555 | + "lodash.camelcase": "^4.3.0", | ||
13556 | + "lodash.clonedeep": "^4.5.0", | ||
13557 | + "lodash.compact": "^3.0.1", | ||
13558 | + "lodash.find": "^4.6.0", | ||
13559 | + "lodash.flatten": "^4.4.0", | ||
13560 | + "lodash.forin": "^4.4.0", | ||
13561 | + "lodash.get": "^4.4.2", | ||
13562 | + "lodash.has": "^4.5.2", | ||
13563 | + "lodash.invokemap": "^4.6.0", | ||
13564 | + "lodash.isempty": "^4.4.0", | ||
13565 | + "lodash.isequal": "^4.5.0", | ||
13566 | + "lodash.isfunction": "^3.0.9", | ||
13567 | + "lodash.isinteger": "^4.0.4", | ||
13568 | + "lodash.isplainobject": "^4.0.6", | ||
13569 | + "lodash.lowerfirst": "^4.3.1", | ||
13570 | + "lodash.map": "^4.6.0", | ||
13571 | + "lodash.mapvalues": "^4.6.0", | ||
13572 | + "lodash.pick": "^4.4.0", | ||
13573 | + "lodash.snakecase": "^4.1.1", | ||
13574 | + "lodash.uniq": "^4.5.0", | ||
13575 | + "lodash.uniqby": "^4.7.0", | ||
13576 | + "lodash.values": "^4.3.0", | ||
13577 | + "pretender": "^3.4.3" | ||
13578 | + } | ||
13579 | + }, | ||
13365 | "mississippi": { | 13580 | "mississippi": { |
13366 | "version": "3.0.0", | 13581 | "version": "3.0.0", |
13367 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", | 13582 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", |
... | @@ -13428,6 +13643,11 @@ | ... | @@ -13428,6 +13643,11 @@ |
13428 | "minimist": "^1.2.5" | 13643 | "minimist": "^1.2.5" |
13429 | } | 13644 | } |
13430 | }, | 13645 | }, |
13646 | + "moment": { | ||
13647 | + "version": "2.26.0", | ||
13648 | + "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", | ||
13649 | + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" | ||
13650 | + }, | ||
13431 | "move-concurrently": { | 13651 | "move-concurrently": { |
13432 | "version": "1.0.1", | 13652 | "version": "1.0.1", |
13433 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", | 13653 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", |
... | @@ -14074,6 +14294,14 @@ | ... | @@ -14074,6 +14294,14 @@ |
14074 | "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", | 14294 | "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", |
14075 | "dev": true | 14295 | "dev": true |
14076 | }, | 14296 | }, |
14297 | + "omit.js": { | ||
14298 | + "version": "1.0.2", | ||
14299 | + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", | ||
14300 | + "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", | ||
14301 | + "requires": { | ||
14302 | + "babel-runtime": "^6.23.0" | ||
14303 | + } | ||
14304 | + }, | ||
14077 | "on-finished": { | 14305 | "on-finished": { |
14078 | "version": "2.3.0", | 14306 | "version": "2.3.0", |
14079 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | 14307 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", |
... | @@ -14386,15 +14614,6 @@ | ... | @@ -14386,15 +14614,6 @@ |
14386 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", | 14614 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", |
14387 | "dev": true | 14615 | "dev": true |
14388 | }, | 14616 | }, |
14389 | - "pad": { | ||
14390 | - "version": "3.2.0", | ||
14391 | - "resolved": "https://registry.npmjs.org/pad/-/pad-3.2.0.tgz", | ||
14392 | - "integrity": "sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg==", | ||
14393 | - "dev": true, | ||
14394 | - "requires": { | ||
14395 | - "wcwidth": "^1.0.1" | ||
14396 | - } | ||
14397 | - }, | ||
14398 | "pako": { | 14617 | "pako": { |
14399 | "version": "1.0.11", | 14618 | "version": "1.0.11", |
14400 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", | 14619 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", |
... | @@ -14581,8 +14800,7 @@ | ... | @@ -14581,8 +14800,7 @@ |
14581 | "performance-now": { | 14800 | "performance-now": { |
14582 | "version": "2.1.0", | 14801 | "version": "2.1.0", |
14583 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | 14802 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", |
14584 | - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", | 14803 | + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" |
14585 | - "dev": true | ||
14586 | }, | 14804 | }, |
14587 | "picomatch": { | 14805 | "picomatch": { |
14588 | "version": "2.2.2", | 14806 | "version": "2.2.2", |
... | @@ -15864,6 +16082,15 @@ | ... | @@ -15864,6 +16082,15 @@ |
15864 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", | 16082 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", |
15865 | "dev": true | 16083 | "dev": true |
15866 | }, | 16084 | }, |
16085 | + "pretender": { | ||
16086 | + "version": "3.4.3", | ||
16087 | + "resolved": "https://registry.npmjs.org/pretender/-/pretender-3.4.3.tgz", | ||
16088 | + "integrity": "sha512-AlbkBly9R8KR+R0sTCJ/ToOeEoUMtt52QVCetui5zoSmeLOU3S8oobFsyPLm1O2txR6t58qDNysqPnA1vVi8Hg==", | ||
16089 | + "requires": { | ||
16090 | + "fake-xml-http-request": "^2.1.1", | ||
16091 | + "route-recognizer": "^0.3.3" | ||
16092 | + } | ||
16093 | + }, | ||
15867 | "prettier": { | 16094 | "prettier": { |
15868 | "version": "2.0.5", | 16095 | "version": "2.0.5", |
15869 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", | 16096 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", |
... | @@ -16090,7 +16317,6 @@ | ... | @@ -16090,7 +16317,6 @@ |
16090 | "version": "3.4.1", | 16317 | "version": "3.4.1", |
16091 | "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", | 16318 | "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", |
16092 | "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", | 16319 | "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", |
16093 | - "dev": true, | ||
16094 | "requires": { | 16320 | "requires": { |
16095 | "performance-now": "^2.1.0" | 16321 | "performance-now": "^2.1.0" |
16096 | } | 16322 | } |
... | @@ -16140,6 +16366,535 @@ | ... | @@ -16140,6 +16366,535 @@ |
16140 | } | 16366 | } |
16141 | } | 16367 | } |
16142 | }, | 16368 | }, |
16369 | + "rc-align": { | ||
16370 | + "version": "4.0.0", | ||
16371 | + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.0.tgz", | ||
16372 | + "integrity": "sha512-0mKKfiZGo7VNiRCmnI4MTOG72pBFF0H08zebqcJyXcAm2hgAqTUtvt4I0pjMHh1WdYg+iQDjowpB5X8mZTN2vw==", | ||
16373 | + "requires": { | ||
16374 | + "@babel/runtime": "^7.10.1", | ||
16375 | + "classnames": "2.x", | ||
16376 | + "dom-align": "^1.7.0", | ||
16377 | + "rc-util": "^5.0.1", | ||
16378 | + "resize-observer-polyfill": "^1.5.1" | ||
16379 | + }, | ||
16380 | + "dependencies": { | ||
16381 | + "@babel/runtime": { | ||
16382 | + "version": "7.10.2", | ||
16383 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16384 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16385 | + "requires": { | ||
16386 | + "regenerator-runtime": "^0.13.4" | ||
16387 | + } | ||
16388 | + } | ||
16389 | + } | ||
16390 | + }, | ||
16391 | + "rc-animate": { | ||
16392 | + "version": "3.1.0", | ||
16393 | + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-3.1.0.tgz", | ||
16394 | + "integrity": "sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw==", | ||
16395 | + "requires": { | ||
16396 | + "@ant-design/css-animation": "^1.7.2", | ||
16397 | + "classnames": "^2.2.6", | ||
16398 | + "raf": "^3.4.0", | ||
16399 | + "rc-util": "^5.0.1" | ||
16400 | + } | ||
16401 | + }, | ||
16402 | + "rc-cascader": { | ||
16403 | + "version": "1.2.0", | ||
16404 | + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.2.0.tgz", | ||
16405 | + "integrity": "sha512-exJ6qvaZddARXOjxYQzD0oYrOhNS/WC3E0+xUtAA6yP3RA6PRtzTBWCI4Il4y58X3C+wTjkQq5q1vKxHD76QOA==", | ||
16406 | + "requires": { | ||
16407 | + "array-tree-filter": "^2.1.0", | ||
16408 | + "rc-trigger": "^4.0.0", | ||
16409 | + "rc-util": "^5.0.1", | ||
16410 | + "warning": "^4.0.1" | ||
16411 | + } | ||
16412 | + }, | ||
16413 | + "rc-checkbox": { | ||
16414 | + "version": "2.2.0", | ||
16415 | + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.2.0.tgz", | ||
16416 | + "integrity": "sha512-Wjh/nutLA8iIPTT1P9I9KOqlUblVe+CWa3SxMibFySnLyYbMxKNtPhwNcbADPOqzNU0AsCntTduNeJg1n0B5fg==", | ||
16417 | + "requires": { | ||
16418 | + "babel-runtime": "^6.23.0", | ||
16419 | + "classnames": "2.x" | ||
16420 | + } | ||
16421 | + }, | ||
16422 | + "rc-collapse": { | ||
16423 | + "version": "2.0.0", | ||
16424 | + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-2.0.0.tgz", | ||
16425 | + "integrity": "sha512-R5+Ge1uzwK9G1wZPRPhqQsed4FXTDmU0BKzsqfNBtZdk/wd+yey8ZutmJmSozYc5hQwjPkCvJHV7gOIRZKIlJg==", | ||
16426 | + "requires": { | ||
16427 | + "@ant-design/css-animation": "^1.7.2", | ||
16428 | + "classnames": "2.x", | ||
16429 | + "rc-animate": "3.x", | ||
16430 | + "react-is": "^16.7.0", | ||
16431 | + "shallowequal": "^1.1.0" | ||
16432 | + } | ||
16433 | + }, | ||
16434 | + "rc-dialog": { | ||
16435 | + "version": "8.0.1", | ||
16436 | + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.0.1.tgz", | ||
16437 | + "integrity": "sha512-ZOO2F8KHN4Dkpf1KiXNPKFWaLZutIuAhQw+YCafcFrigDv50AxGivoMSC//k4yjcJr3XRQTQMlMsmdAff4dEhw==", | ||
16438 | + "requires": { | ||
16439 | + "babel-runtime": "6.x", | ||
16440 | + "rc-animate": "3.x", | ||
16441 | + "rc-util": "^5.0.1" | ||
16442 | + } | ||
16443 | + }, | ||
16444 | + "rc-drawer": { | ||
16445 | + "version": "4.0.1", | ||
16446 | + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.0.1.tgz", | ||
16447 | + "integrity": "sha512-sQCMV7W5hBjptdHXXKC+YOvZ6sNChDN9Nudd9dA5kJ2ld83yLa54IkEYs4FIb3Ana7yl4kkrgU0B1k2baSsnzw==", | ||
16448 | + "requires": { | ||
16449 | + "@babel/runtime": "^7.10.1", | ||
16450 | + "classnames": "^2.2.6", | ||
16451 | + "rc-util": "^5.0.1" | ||
16452 | + }, | ||
16453 | + "dependencies": { | ||
16454 | + "@babel/runtime": { | ||
16455 | + "version": "7.10.2", | ||
16456 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16457 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16458 | + "requires": { | ||
16459 | + "regenerator-runtime": "^0.13.4" | ||
16460 | + } | ||
16461 | + } | ||
16462 | + } | ||
16463 | + }, | ||
16464 | + "rc-dropdown": { | ||
16465 | + "version": "3.1.2", | ||
16466 | + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.1.2.tgz", | ||
16467 | + "integrity": "sha512-s2W5jqvjTid5DxotGO5FlTBaQWeB+Bu7McQgjB8Ot3Wbl72AIKwLf11+lgbV4mA2vWC1H8DKyn6SW9TKLTi0xg==", | ||
16468 | + "requires": { | ||
16469 | + "@babel/runtime": "^7.10.1", | ||
16470 | + "classnames": "^2.2.6", | ||
16471 | + "rc-trigger": "^4.0.0" | ||
16472 | + }, | ||
16473 | + "dependencies": { | ||
16474 | + "@babel/runtime": { | ||
16475 | + "version": "7.10.2", | ||
16476 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16477 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16478 | + "requires": { | ||
16479 | + "regenerator-runtime": "^0.13.4" | ||
16480 | + } | ||
16481 | + } | ||
16482 | + } | ||
16483 | + }, | ||
16484 | + "rc-field-form": { | ||
16485 | + "version": "1.4.4", | ||
16486 | + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.4.4.tgz", | ||
16487 | + "integrity": "sha512-1LwZ/I3fRUDzj2JGyfwur4nZqgwybrHy3kf6aKbGeWfYkpNbZaUNkIPfjBBmCdpN6lVPKI7ftRnYtjdBaXzyaw==", | ||
16488 | + "requires": { | ||
16489 | + "@babel/runtime": "^7.8.4", | ||
16490 | + "async-validator": "^3.0.3", | ||
16491 | + "rc-util": "^5.0.0" | ||
16492 | + } | ||
16493 | + }, | ||
16494 | + "rc-input-number": { | ||
16495 | + "version": "5.0.1", | ||
16496 | + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-5.0.1.tgz", | ||
16497 | + "integrity": "sha512-4GgnJCjllAVNsZ9fPA+3LnoIgwUqM8QAWpyoKiTkPDN1UWapXYsPiKJCXOhnmiR0X8xpEoYHiobUaiquMliWiQ==", | ||
16498 | + "requires": { | ||
16499 | + "classnames": "^2.2.0", | ||
16500 | + "rc-util": "^5.0.1" | ||
16501 | + } | ||
16502 | + }, | ||
16503 | + "rc-mentions": { | ||
16504 | + "version": "1.2.0", | ||
16505 | + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.2.0.tgz", | ||
16506 | + "integrity": "sha512-9d4AYMuKN4o/ND5r/82rJHMp+R+rn1b+f8ZmWsI/1NlWtMqVn9Q7yxofqbX78zgV6+nppsMvMqtduJhgQkVl0Q==", | ||
16507 | + "requires": { | ||
16508 | + "@babel/runtime": "^7.10.1", | ||
16509 | + "classnames": "^2.2.6", | ||
16510 | + "rc-menu": "^8.0.1", | ||
16511 | + "rc-trigger": "^4.3.0", | ||
16512 | + "rc-util": "^5.0.1" | ||
16513 | + }, | ||
16514 | + "dependencies": { | ||
16515 | + "@babel/runtime": { | ||
16516 | + "version": "7.10.2", | ||
16517 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16518 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16519 | + "requires": { | ||
16520 | + "regenerator-runtime": "^0.13.4" | ||
16521 | + } | ||
16522 | + } | ||
16523 | + } | ||
16524 | + }, | ||
16525 | + "rc-menu": { | ||
16526 | + "version": "8.3.1", | ||
16527 | + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.3.1.tgz", | ||
16528 | + "integrity": "sha512-4LNQ0zIL27yayQu9Xi3QOUB2yEqm5qSFwD9MzB1XnTo1JeLTLy3+D8Bm94rykvnhV6z5MYtalUTnM7ETfjExXQ==", | ||
16529 | + "requires": { | ||
16530 | + "@babel/runtime": "^7.10.1", | ||
16531 | + "classnames": "2.x", | ||
16532 | + "mini-store": "^3.0.1", | ||
16533 | + "rc-animate": "^3.1.0", | ||
16534 | + "rc-trigger": "^4.2.0", | ||
16535 | + "rc-util": "^5.0.1", | ||
16536 | + "resize-observer-polyfill": "^1.5.0", | ||
16537 | + "shallowequal": "^1.1.0" | ||
16538 | + }, | ||
16539 | + "dependencies": { | ||
16540 | + "@babel/runtime": { | ||
16541 | + "version": "7.10.2", | ||
16542 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16543 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16544 | + "requires": { | ||
16545 | + "regenerator-runtime": "^0.13.4" | ||
16546 | + } | ||
16547 | + } | ||
16548 | + } | ||
16549 | + }, | ||
16550 | + "rc-notification": { | ||
16551 | + "version": "4.4.0", | ||
16552 | + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.4.0.tgz", | ||
16553 | + "integrity": "sha512-IDeNAFGVeOsy1tv4zNVqMAXB9tianR80ewQbtObaAQfjwAjWfONdqdyjFkEU6nc6UQhSUYA5OcTGb7kwwbnh0g==", | ||
16554 | + "requires": { | ||
16555 | + "@babel/runtime": "^7.10.1", | ||
16556 | + "classnames": "2.x", | ||
16557 | + "rc-animate": "3.x", | ||
16558 | + "rc-util": "^5.0.1" | ||
16559 | + }, | ||
16560 | + "dependencies": { | ||
16561 | + "@babel/runtime": { | ||
16562 | + "version": "7.10.2", | ||
16563 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16564 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16565 | + "requires": { | ||
16566 | + "regenerator-runtime": "^0.13.4" | ||
16567 | + } | ||
16568 | + } | ||
16569 | + } | ||
16570 | + }, | ||
16571 | + "rc-pagination": { | ||
16572 | + "version": "2.2.5", | ||
16573 | + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-2.2.5.tgz", | ||
16574 | + "integrity": "sha512-7hMFNi8R7C/4cLKgmSpUb3BfMFdt4DLrjTixSRMpMBR5jwGfwRyoV9g9Tm6gCuCaAlVAX1QNtlM1T2UqEOW5lw==", | ||
16575 | + "requires": { | ||
16576 | + "@babel/runtime": "^7.10.1", | ||
16577 | + "classnames": "^2.2.1" | ||
16578 | + }, | ||
16579 | + "dependencies": { | ||
16580 | + "@babel/runtime": { | ||
16581 | + "version": "7.10.2", | ||
16582 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16583 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16584 | + "requires": { | ||
16585 | + "regenerator-runtime": "^0.13.4" | ||
16586 | + } | ||
16587 | + } | ||
16588 | + } | ||
16589 | + }, | ||
16590 | + "rc-picker": { | ||
16591 | + "version": "1.6.3", | ||
16592 | + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-1.6.3.tgz", | ||
16593 | + "integrity": "sha512-SBaTUZDr+q89s21dF4wi8Ag+Kecv2x7QfufopV4eASm/WXWnvxIP4pCbedqP02jJQMGt290KNlIiffVNqscs5A==", | ||
16594 | + "requires": { | ||
16595 | + "@babel/runtime": "^7.10.1", | ||
16596 | + "classnames": "^2.2.1", | ||
16597 | + "moment": "^2.24.0", | ||
16598 | + "rc-trigger": "^4.0.0", | ||
16599 | + "rc-util": "^5.0.1", | ||
16600 | + "shallowequal": "^1.1.0" | ||
16601 | + }, | ||
16602 | + "dependencies": { | ||
16603 | + "@babel/runtime": { | ||
16604 | + "version": "7.10.2", | ||
16605 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16606 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16607 | + "requires": { | ||
16608 | + "regenerator-runtime": "^0.13.4" | ||
16609 | + } | ||
16610 | + } | ||
16611 | + } | ||
16612 | + }, | ||
16613 | + "rc-progress": { | ||
16614 | + "version": "3.0.0", | ||
16615 | + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.0.0.tgz", | ||
16616 | + "integrity": "sha512-dQv1KU3o6Vay604FMYMF4S0x4GNXAgXf1tbQ1QoxeIeQt4d5fUeB7Ri82YPu+G+aRvH/AtxYAlEcnxyVZ1/4Hw==", | ||
16617 | + "requires": { | ||
16618 | + "classnames": "^2.2.6" | ||
16619 | + } | ||
16620 | + }, | ||
16621 | + "rc-rate": { | ||
16622 | + "version": "2.7.0", | ||
16623 | + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.7.0.tgz", | ||
16624 | + "integrity": "sha512-XD+1tnmKa3Ykm6jVX2ZiwIWdv+DG1t7LDK3dojeFoS8GgA7W3oqW5R/UpJ66qrLYpPHw9N4pYJKWySiPKtPsLQ==", | ||
16625 | + "requires": { | ||
16626 | + "@babel/runtime": "^7.10.1", | ||
16627 | + "classnames": "^2.2.5", | ||
16628 | + "rc-util": "^5.0.1" | ||
16629 | + }, | ||
16630 | + "dependencies": { | ||
16631 | + "@babel/runtime": { | ||
16632 | + "version": "7.10.2", | ||
16633 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16634 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16635 | + "requires": { | ||
16636 | + "regenerator-runtime": "^0.13.4" | ||
16637 | + } | ||
16638 | + } | ||
16639 | + } | ||
16640 | + }, | ||
16641 | + "rc-resize-observer": { | ||
16642 | + "version": "0.2.3", | ||
16643 | + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.2.3.tgz", | ||
16644 | + "integrity": "sha512-dEPCGX15eRRnu+TNBIGyEghpzE24fTDW8pHdJPJS/kCR3lafFqBLqKzBgZW6pMUuM70/ZDyFQ0Kynx9kWsXRNw==", | ||
16645 | + "requires": { | ||
16646 | + "@babel/runtime": "^7.10.1", | ||
16647 | + "classnames": "^2.2.1", | ||
16648 | + "rc-util": "^5.0.0", | ||
16649 | + "resize-observer-polyfill": "^1.5.1" | ||
16650 | + }, | ||
16651 | + "dependencies": { | ||
16652 | + "@babel/runtime": { | ||
16653 | + "version": "7.10.2", | ||
16654 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16655 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16656 | + "requires": { | ||
16657 | + "regenerator-runtime": "^0.13.4" | ||
16658 | + } | ||
16659 | + } | ||
16660 | + } | ||
16661 | + }, | ||
16662 | + "rc-select": { | ||
16663 | + "version": "11.0.0", | ||
16664 | + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-11.0.0.tgz", | ||
16665 | + "integrity": "sha512-TG3I5RkTFNkDo1cNgQHccRdrL29+o61yx6UmfZ8kZ8MCKn7f7FYld3Tey0PGcQOJ4RnzBOCySp+tGakYl94NKQ==", | ||
16666 | + "requires": { | ||
16667 | + "@babel/runtime": "^7.10.1", | ||
16668 | + "classnames": "2.x", | ||
16669 | + "rc-animate": "^3.0.0", | ||
16670 | + "rc-trigger": "^4.3.0", | ||
16671 | + "rc-util": "^5.0.1", | ||
16672 | + "rc-virtual-list": "^1.1.2", | ||
16673 | + "warning": "^4.0.3" | ||
16674 | + }, | ||
16675 | + "dependencies": { | ||
16676 | + "@babel/runtime": { | ||
16677 | + "version": "7.10.2", | ||
16678 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16679 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16680 | + "requires": { | ||
16681 | + "regenerator-runtime": "^0.13.4" | ||
16682 | + } | ||
16683 | + } | ||
16684 | + } | ||
16685 | + }, | ||
16686 | + "rc-slider": { | ||
16687 | + "version": "9.3.0", | ||
16688 | + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.3.0.tgz", | ||
16689 | + "integrity": "sha512-9QPRjK8qFYO8L/Cn//O/K4g4dSU1glgvAdeT9qBLmjXtdYSiJ9u3YulcdbHWHo9Y3IE1dyaVm4m4ll2FWdDyqg==", | ||
16690 | + "requires": { | ||
16691 | + "@babel/runtime": "^7.10.1", | ||
16692 | + "classnames": "^2.2.5", | ||
16693 | + "rc-tooltip": "^4.0.0", | ||
16694 | + "rc-util": "^5.0.0", | ||
16695 | + "shallowequal": "^1.1.0" | ||
16696 | + }, | ||
16697 | + "dependencies": { | ||
16698 | + "@babel/runtime": { | ||
16699 | + "version": "7.10.2", | ||
16700 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16701 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16702 | + "requires": { | ||
16703 | + "regenerator-runtime": "^0.13.4" | ||
16704 | + } | ||
16705 | + } | ||
16706 | + } | ||
16707 | + }, | ||
16708 | + "rc-steps": { | ||
16709 | + "version": "4.0.0", | ||
16710 | + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.0.0.tgz", | ||
16711 | + "integrity": "sha512-Vy0T2sC+1ElpovEB97mYNVR5GYNYSzMiRJFumera5gZL2bH6FcxYioXcq/HYCPN//YC+b/Fs37x4G/WpGMuaVw==", | ||
16712 | + "requires": { | ||
16713 | + "@babel/runtime": "^7.10.2", | ||
16714 | + "classnames": "^2.2.3", | ||
16715 | + "rc-util": "^5.0.1" | ||
16716 | + }, | ||
16717 | + "dependencies": { | ||
16718 | + "@babel/runtime": { | ||
16719 | + "version": "7.10.2", | ||
16720 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16721 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16722 | + "requires": { | ||
16723 | + "regenerator-runtime": "^0.13.4" | ||
16724 | + } | ||
16725 | + } | ||
16726 | + } | ||
16727 | + }, | ||
16728 | + "rc-switch": { | ||
16729 | + "version": "3.2.0", | ||
16730 | + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.0.tgz", | ||
16731 | + "integrity": "sha512-WQZnRrWZ+KGh4Cd98FpP1ZgvMmebctoHzKAO2n1Xsry1FQBSGgIw4rQJRxET31VS/dR1LIKb5md/k0UzcXXc0g==", | ||
16732 | + "requires": { | ||
16733 | + "@babel/runtime": "^7.10.1", | ||
16734 | + "classnames": "^2.2.1", | ||
16735 | + "rc-util": "^5.0.1" | ||
16736 | + }, | ||
16737 | + "dependencies": { | ||
16738 | + "@babel/runtime": { | ||
16739 | + "version": "7.10.2", | ||
16740 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16741 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16742 | + "requires": { | ||
16743 | + "regenerator-runtime": "^0.13.4" | ||
16744 | + } | ||
16745 | + } | ||
16746 | + } | ||
16747 | + }, | ||
16748 | + "rc-table": { | ||
16749 | + "version": "7.7.2", | ||
16750 | + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.7.2.tgz", | ||
16751 | + "integrity": "sha512-LcCOYmnIKFPNFDbJpD6yUpTyQytoQL0nXoyuG4FWJROMJzmhVhpVQZ83YjFOAlZjwx0Ixz04yPkMvRq6xr9vXQ==", | ||
16752 | + "requires": { | ||
16753 | + "@babel/runtime": "^7.10.1", | ||
16754 | + "classnames": "^2.2.5", | ||
16755 | + "raf": "^3.4.1", | ||
16756 | + "rc-resize-observer": "^0.2.0", | ||
16757 | + "rc-util": "^5.0.0", | ||
16758 | + "shallowequal": "^1.1.0" | ||
16759 | + }, | ||
16760 | + "dependencies": { | ||
16761 | + "@babel/runtime": { | ||
16762 | + "version": "7.10.2", | ||
16763 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16764 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16765 | + "requires": { | ||
16766 | + "regenerator-runtime": "^0.13.4" | ||
16767 | + } | ||
16768 | + } | ||
16769 | + } | ||
16770 | + }, | ||
16771 | + "rc-tabs": { | ||
16772 | + "version": "11.3.2", | ||
16773 | + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.3.2.tgz", | ||
16774 | + "integrity": "sha512-UQQrVmBZm/LrgS5GHPZNpzedTV5ppU1f8dvTV2TX/zmV8byaOVd2uJ9F/f4zkXTvsTLxGzFfCrb6nAn1cwSBLw==", | ||
16775 | + "requires": { | ||
16776 | + "@babel/runtime": "^7.10.1", | ||
16777 | + "classnames": "2.x", | ||
16778 | + "raf": "^3.4.1", | ||
16779 | + "rc-dropdown": "^3.1.0", | ||
16780 | + "rc-menu": "^8.2.1", | ||
16781 | + "rc-resize-observer": "^0.2.1", | ||
16782 | + "rc-trigger": "^4.2.1", | ||
16783 | + "rc-util": "^5.0.0" | ||
16784 | + }, | ||
16785 | + "dependencies": { | ||
16786 | + "@babel/runtime": { | ||
16787 | + "version": "7.10.2", | ||
16788 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16789 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16790 | + "requires": { | ||
16791 | + "regenerator-runtime": "^0.13.4" | ||
16792 | + } | ||
16793 | + } | ||
16794 | + } | ||
16795 | + }, | ||
16796 | + "rc-tooltip": { | ||
16797 | + "version": "4.2.1", | ||
16798 | + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-4.2.1.tgz", | ||
16799 | + "integrity": "sha512-oykuaGsHg7RFvPUaxUpxo7ScEqtH61C66x4JUmjlFlSS8gSx2L8JFtfwM1D68SLBxUqGqJObtxj4TED75gQTiA==", | ||
16800 | + "requires": { | ||
16801 | + "rc-trigger": "^4.2.1" | ||
16802 | + } | ||
16803 | + }, | ||
16804 | + "rc-tree": { | ||
16805 | + "version": "3.3.1", | ||
16806 | + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-3.3.1.tgz", | ||
16807 | + "integrity": "sha512-DGyVZN4HRSrmFErn68KOISIl3z0R9EjeNyZE0sgAaa5oqpQDAEK78/lYf5k3rot1N/iFAEJKaTRJfM7eIdWGwg==", | ||
16808 | + "requires": { | ||
16809 | + "@babel/runtime": "^7.10.1", | ||
16810 | + "classnames": "2.x", | ||
16811 | + "rc-animate": "^3.1.0", | ||
16812 | + "rc-util": "^5.0.0", | ||
16813 | + "rc-virtual-list": "^1.1.0" | ||
16814 | + }, | ||
16815 | + "dependencies": { | ||
16816 | + "@babel/runtime": { | ||
16817 | + "version": "7.10.2", | ||
16818 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16819 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16820 | + "requires": { | ||
16821 | + "regenerator-runtime": "^0.13.4" | ||
16822 | + } | ||
16823 | + } | ||
16824 | + } | ||
16825 | + }, | ||
16826 | + "rc-tree-select": { | ||
16827 | + "version": "4.0.1", | ||
16828 | + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.0.1.tgz", | ||
16829 | + "integrity": "sha512-VehfIZgu6Xmko7YfJgshmuIdeI7u7Ar1iLkmlb69/w1HjaDnSHbV3N3xopLABAq8lTlTAnSFU2JCPcYifvTmAA==", | ||
16830 | + "requires": { | ||
16831 | + "@babel/runtime": "^7.10.1", | ||
16832 | + "classnames": "2.x", | ||
16833 | + "rc-select": "^11.0.0", | ||
16834 | + "rc-tree": "^3.1.0", | ||
16835 | + "rc-util": "^5.0.1" | ||
16836 | + }, | ||
16837 | + "dependencies": { | ||
16838 | + "@babel/runtime": { | ||
16839 | + "version": "7.10.2", | ||
16840 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16841 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16842 | + "requires": { | ||
16843 | + "regenerator-runtime": "^0.13.4" | ||
16844 | + } | ||
16845 | + } | ||
16846 | + } | ||
16847 | + }, | ||
16848 | + "rc-trigger": { | ||
16849 | + "version": "4.3.0", | ||
16850 | + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-4.3.0.tgz", | ||
16851 | + "integrity": "sha512-jnGNzosXmDdivMBjPCYe/AfOXTpJU2/xQ9XukgoXDQEoZq/9lcI1r7eUIfq70WlWpLxlUEqQktiV3hwyy6Nw9g==", | ||
16852 | + "requires": { | ||
16853 | + "@babel/runtime": "^7.10.1", | ||
16854 | + "classnames": "^2.2.6", | ||
16855 | + "raf": "^3.4.1", | ||
16856 | + "rc-align": "^4.0.0", | ||
16857 | + "rc-animate": "^3.0.0", | ||
16858 | + "rc-util": "^5.0.1" | ||
16859 | + }, | ||
16860 | + "dependencies": { | ||
16861 | + "@babel/runtime": { | ||
16862 | + "version": "7.10.2", | ||
16863 | + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", | ||
16864 | + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", | ||
16865 | + "requires": { | ||
16866 | + "regenerator-runtime": "^0.13.4" | ||
16867 | + } | ||
16868 | + } | ||
16869 | + } | ||
16870 | + }, | ||
16871 | + "rc-upload": { | ||
16872 | + "version": "3.1.4", | ||
16873 | + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.1.4.tgz", | ||
16874 | + "integrity": "sha512-G6nqT4HMrT+mDd32ZHfcFs2eCFilMdIdteylNCHPcfoBBOKkBW4iVo7O6uFhz/8jIGNLJfR3+6S2x/lnXYYrCQ==", | ||
16875 | + "requires": { | ||
16876 | + "classnames": "^2.2.5" | ||
16877 | + } | ||
16878 | + }, | ||
16879 | + "rc-util": { | ||
16880 | + "version": "5.0.4", | ||
16881 | + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.0.4.tgz", | ||
16882 | + "integrity": "sha512-cd19RCrE0DJH6UcJ9+V3eaXA/5sNWyVKOKkWl8ZM2OqgNzVb8fv0obf/TkuvSN43tmTsgqY8k7OqpFYHhmef8g==", | ||
16883 | + "requires": { | ||
16884 | + "react-is": "^16.12.0", | ||
16885 | + "shallowequal": "^1.1.0" | ||
16886 | + } | ||
16887 | + }, | ||
16888 | + "rc-virtual-list": { | ||
16889 | + "version": "1.1.5", | ||
16890 | + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-1.1.5.tgz", | ||
16891 | + "integrity": "sha512-roZ6HE5MNKaiop+Ic7jZS7xlMnXBLp0XBElsMbE4eEL3GnnnJAet2iXoT5wjKcKMXEVyVCD0L4yQozmH7+Kgxg==", | ||
16892 | + "requires": { | ||
16893 | + "classnames": "^2.2.6", | ||
16894 | + "raf": "^3.4.1", | ||
16895 | + "rc-util": "^5.0.0" | ||
16896 | + } | ||
16897 | + }, | ||
16143 | "react": { | 16898 | "react": { |
16144 | "version": "16.13.1", | 16899 | "version": "16.13.1", |
16145 | "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", | 16900 | "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", |
... | @@ -16297,6 +17052,12 @@ | ... | @@ -16297,6 +17052,12 @@ |
16297 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", | 17052 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", |
16298 | "dev": true | 17053 | "dev": true |
16299 | }, | 17054 | }, |
17055 | + "filesize": { | ||
17056 | + "version": "6.0.1", | ||
17057 | + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", | ||
17058 | + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", | ||
17059 | + "dev": true | ||
17060 | + }, | ||
16300 | "has-flag": { | 17061 | "has-flag": { |
16301 | "version": "3.0.0", | 17062 | "version": "3.0.0", |
16302 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | 17063 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
... | @@ -16464,15 +17225,15 @@ | ... | @@ -16464,15 +17225,15 @@ |
16464 | "dev": true | 17225 | "dev": true |
16465 | }, | 17226 | }, |
16466 | "react-router": { | 17227 | "react-router": { |
16467 | - "version": "5.1.2", | 17228 | + "version": "5.2.0", |
16468 | - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz", | 17229 | + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", |
16469 | - "integrity": "sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==", | 17230 | + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", |
16470 | "requires": { | 17231 | "requires": { |
16471 | "@babel/runtime": "^7.1.2", | 17232 | "@babel/runtime": "^7.1.2", |
16472 | "history": "^4.9.0", | 17233 | "history": "^4.9.0", |
16473 | "hoist-non-react-statics": "^3.1.0", | 17234 | "hoist-non-react-statics": "^3.1.0", |
16474 | "loose-envify": "^1.3.1", | 17235 | "loose-envify": "^1.3.1", |
16475 | - "mini-create-react-context": "^0.3.0", | 17236 | + "mini-create-react-context": "^0.4.0", |
16476 | "path-to-regexp": "^1.7.0", | 17237 | "path-to-regexp": "^1.7.0", |
16477 | "prop-types": "^15.6.2", | 17238 | "prop-types": "^15.6.2", |
16478 | "react-is": "^16.6.0", | 17239 | "react-is": "^16.6.0", |
... | @@ -16496,15 +17257,15 @@ | ... | @@ -16496,15 +17257,15 @@ |
16496 | } | 17257 | } |
16497 | }, | 17258 | }, |
16498 | "react-router-dom": { | 17259 | "react-router-dom": { |
16499 | - "version": "5.1.2", | 17260 | + "version": "5.2.0", |
16500 | - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.1.2.tgz", | 17261 | + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", |
16501 | - "integrity": "sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==", | 17262 | + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", |
16502 | "requires": { | 17263 | "requires": { |
16503 | "@babel/runtime": "^7.1.2", | 17264 | "@babel/runtime": "^7.1.2", |
16504 | "history": "^4.9.0", | 17265 | "history": "^4.9.0", |
16505 | "loose-envify": "^1.3.1", | 17266 | "loose-envify": "^1.3.1", |
16506 | "prop-types": "^15.6.2", | 17267 | "prop-types": "^15.6.2", |
16507 | - "react-router": "5.1.2", | 17268 | + "react-router": "5.2.0", |
16508 | "tiny-invariant": "^1.0.2", | 17269 | "tiny-invariant": "^1.0.2", |
16509 | "tiny-warning": "^1.0.0" | 17270 | "tiny-warning": "^1.0.0" |
16510 | } | 17271 | } |
... | @@ -16950,6 +17711,11 @@ | ... | @@ -16950,6 +17711,11 @@ |
16950 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", | 17711 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", |
16951 | "dev": true | 17712 | "dev": true |
16952 | }, | 17713 | }, |
17714 | + "resize-observer-polyfill": { | ||
17715 | + "version": "1.5.1", | ||
17716 | + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", | ||
17717 | + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" | ||
17718 | + }, | ||
16953 | "resolve": { | 17719 | "resolve": { |
16954 | "version": "1.15.0", | 17720 | "version": "1.15.0", |
16955 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", | 17721 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", |
... | @@ -17188,6 +17954,11 @@ | ... | @@ -17188,6 +17954,11 @@ |
17188 | "inherits": "^2.0.1" | 17954 | "inherits": "^2.0.1" |
17189 | } | 17955 | } |
17190 | }, | 17956 | }, |
17957 | + "route-recognizer": { | ||
17958 | + "version": "0.3.4", | ||
17959 | + "resolved": "https://registry.npmjs.org/route-recognizer/-/route-recognizer-0.3.4.tgz", | ||
17960 | + "integrity": "sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g==" | ||
17961 | + }, | ||
17191 | "rsvp": { | 17962 | "rsvp": { |
17192 | "version": "4.8.5", | 17963 | "version": "4.8.5", |
17193 | "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", | 17964 | "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", |
... | @@ -17548,6 +18319,14 @@ | ... | @@ -17548,6 +18319,14 @@ |
17548 | "ajv-keywords": "^3.4.1" | 18319 | "ajv-keywords": "^3.4.1" |
17549 | } | 18320 | } |
17550 | }, | 18321 | }, |
18322 | + "scroll-into-view-if-needed": { | ||
18323 | + "version": "2.2.25", | ||
18324 | + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.25.tgz", | ||
18325 | + "integrity": "sha512-C8RKJPq9lK7eubwGpLbUkw3lklcG3Ndjmea2PyauzrA0i4DPlzAmVMGxaZrBFqCrVLfvJmP80IyHnv4jxvg1OQ==", | ||
18326 | + "requires": { | ||
18327 | + "compute-scroll-into-view": "^1.0.14" | ||
18328 | + } | ||
18329 | + }, | ||
17551 | "scss-tokenizer": { | 18330 | "scss-tokenizer": { |
17552 | "version": "0.2.3", | 18331 | "version": "0.2.3", |
17553 | "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", | 18332 | "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", |
... | @@ -17811,8 +18590,7 @@ | ... | @@ -17811,8 +18590,7 @@ |
17811 | "shallowequal": { | 18590 | "shallowequal": { |
17812 | "version": "1.1.0", | 18591 | "version": "1.1.0", |
17813 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", | 18592 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", |
17814 | - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", | 18593 | + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" |
17815 | - "dev": true | ||
17816 | }, | 18594 | }, |
17817 | "shebang-command": { | 18595 | "shebang-command": { |
17818 | "version": "2.0.0", | 18596 | "version": "2.0.0", |
... | @@ -18406,6 +19184,11 @@ | ... | @@ -18406,6 +19184,11 @@ |
18406 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", | 19184 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", |
18407 | "dev": true | 19185 | "dev": true |
18408 | }, | 19186 | }, |
19187 | + "string-convert": { | ||
19188 | + "version": "0.2.1", | ||
19189 | + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", | ||
19190 | + "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" | ||
19191 | + }, | ||
18409 | "string-length": { | 19192 | "string-length": { |
18410 | "version": "2.0.0", | 19193 | "version": "2.0.0", |
18411 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", | 19194 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", |
... | @@ -19002,6 +19785,11 @@ | ... | @@ -19002,6 +19785,11 @@ |
19002 | "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", | 19785 | "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", |
19003 | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" | 19786 | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" |
19004 | }, | 19787 | }, |
19788 | + "tinycolor2": { | ||
19789 | + "version": "1.4.1", | ||
19790 | + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", | ||
19791 | + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" | ||
19792 | + }, | ||
19005 | "tmp": { | 19793 | "tmp": { |
19006 | "version": "0.0.33", | 19794 | "version": "0.0.33", |
19007 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", | 19795 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", |
... | @@ -19059,6 +19847,11 @@ | ... | @@ -19059,6 +19847,11 @@ |
19059 | "is-number": "^7.0.0" | 19847 | "is-number": "^7.0.0" |
19060 | } | 19848 | } |
19061 | }, | 19849 | }, |
19850 | + "toggle-selection": { | ||
19851 | + "version": "1.0.6", | ||
19852 | + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", | ||
19853 | + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" | ||
19854 | + }, | ||
19062 | "toidentifier": { | 19855 | "toidentifier": { |
19063 | "version": "1.0.0", | 19856 | "version": "1.0.0", |
19064 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", | 19857 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", |
... | @@ -19185,9 +19978,9 @@ | ... | @@ -19185,9 +19978,9 @@ |
19185 | "dev": true | 19978 | "dev": true |
19186 | }, | 19979 | }, |
19187 | "typescript": { | 19980 | "typescript": { |
19188 | - "version": "3.8.3", | 19981 | + "version": "3.9.5", |
19189 | - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", | 19982 | + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", |
19190 | - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", | 19983 | + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", |
19191 | "dev": true | 19984 | "dev": true |
19192 | }, | 19985 | }, |
19193 | "unicode-canonical-property-names-ecmascript": { | 19986 | "unicode-canonical-property-names-ecmascript": { |
... | @@ -19431,12 +20224,6 @@ | ... | @@ -19431,12 +20224,6 @@ |
19431 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", | 20224 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", |
19432 | "dev": true | 20225 | "dev": true |
19433 | }, | 20226 | }, |
19434 | - "uuid": { | ||
19435 | - "version": "7.0.3", | ||
19436 | - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", | ||
19437 | - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", | ||
19438 | - "dev": true | ||
19439 | - }, | ||
19440 | "v8-compile-cache": { | 20227 | "v8-compile-cache": { |
19441 | "version": "2.1.0", | 20228 | "version": "2.1.0", |
19442 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", | 20229 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", |
... | @@ -19516,6 +20303,14 @@ | ... | @@ -19516,6 +20303,14 @@ |
19516 | "makeerror": "1.0.x" | 20303 | "makeerror": "1.0.x" |
19517 | } | 20304 | } |
19518 | }, | 20305 | }, |
20306 | + "warning": { | ||
20307 | + "version": "4.0.3", | ||
20308 | + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", | ||
20309 | + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", | ||
20310 | + "requires": { | ||
20311 | + "loose-envify": "^1.0.0" | ||
20312 | + } | ||
20313 | + }, | ||
19519 | "watchpack": { | 20314 | "watchpack": { |
19520 | "version": "1.6.1", | 20315 | "version": "1.6.1", |
19521 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", | 20316 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", |
... | @@ -19746,15 +20541,6 @@ | ... | @@ -19746,15 +20541,6 @@ |
19746 | "minimalistic-assert": "^1.0.0" | 20541 | "minimalistic-assert": "^1.0.0" |
19747 | } | 20542 | } |
19748 | }, | 20543 | }, |
19749 | - "wcwidth": { | ||
19750 | - "version": "1.0.1", | ||
19751 | - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", | ||
19752 | - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", | ||
19753 | - "dev": true, | ||
19754 | - "requires": { | ||
19755 | - "defaults": "^1.0.3" | ||
19756 | - } | ||
19757 | - }, | ||
19758 | "webidl-conversions": { | 20544 | "webidl-conversions": { |
19759 | "version": "4.0.2", | 20545 | "version": "4.0.2", |
19760 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", | 20546 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", |
... | @@ -19980,9 +20766,9 @@ | ... | @@ -19980,9 +20766,9 @@ |
19980 | } | 20766 | } |
19981 | }, | 20767 | }, |
19982 | "webpack-bundle-analyzer": { | 20768 | "webpack-bundle-analyzer": { |
19983 | - "version": "3.7.0", | 20769 | + "version": "3.8.0", |
19984 | - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.7.0.tgz", | 20770 | + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", |
19985 | - "integrity": "sha512-mETdjZ30a3Yf+NTB/wqTgACK7rAYQl5uxKK0WVTNmF0sM3Uv8s3R58YZMW7Rhu0Lk2Rmuhdj5dcH5Q76zCDVdA==", | 20771 | + "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", |
19986 | "dev": true, | 20772 | "dev": true, |
19987 | "requires": { | 20773 | "requires": { |
19988 | "acorn": "^7.1.1", | 20774 | "acorn": "^7.1.1", | ... | ... |
... | @@ -4,37 +4,41 @@ | ... | @@ -4,37 +4,41 @@ |
4 | "description": "Dropbox alternative cloud file service", | 4 | "description": "Dropbox alternative cloud file service", |
5 | "private": true, | 5 | "private": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | + "@ant-design/icons": "^4.2.1", | ||
8 | + "antd": "^4.3.3", | ||
7 | "classnames": "^2.2.6", | 9 | "classnames": "^2.2.6", |
8 | - "ky": "^0.19.1", | 10 | + "filesize": "^6.1.0", |
11 | + "ky": "^0.20.0", | ||
12 | + "miragejs": "^0.1.40", | ||
9 | "react": "^16.13.1", | 13 | "react": "^16.13.1", |
10 | "react-dom": "^16.13.1", | 14 | "react-dom": "^16.13.1", |
11 | - "react-router-dom": "^5.1.2" | 15 | + "react-router-dom": "^5.2.0" |
12 | }, | 16 | }, |
13 | "devDependencies": { | 17 | "devDependencies": { |
14 | "@hot-loader/react-dom": "^16.13.0", | 18 | "@hot-loader/react-dom": "^16.13.0", |
15 | - "@testing-library/jest-dom": "^5.7.0", | 19 | + "@testing-library/jest-dom": "^5.9.0", |
16 | - "@testing-library/react": "^10.0.4", | 20 | + "@testing-library/react": "^10.2.0", |
17 | - "@testing-library/user-event": "^10.1.2", | 21 | + "@testing-library/user-event": "^11.2.0", |
18 | "@types/classnames": "^2.2.10", | 22 | "@types/classnames": "^2.2.10", |
19 | - "@types/jest": "^25.2.1", | 23 | + "@types/jest": "^25.2.3", |
20 | "@types/node": "12", | 24 | "@types/node": "12", |
21 | "@types/react": "^16.9.35", | 25 | "@types/react": "^16.9.35", |
22 | "@types/react-dom": "^16.9.8", | 26 | "@types/react-dom": "^16.9.8", |
23 | "@types/react-router-dom": "^5.1.5", | 27 | "@types/react-router-dom": "^5.1.5", |
24 | - "@typescript-eslint/eslint-plugin": "^2.31.0", | 28 | + "@typescript-eslint/eslint-plugin": "^2.34.0", |
25 | - "@typescript-eslint/parser": "^2.31.0", | 29 | + "@typescript-eslint/parser": "^2.34.0", |
26 | - "customize-cra": "0.9.1", | 30 | + "customize-cra": "1.0.0", |
27 | "eslint-config-prettier": "^6.11.0", | 31 | "eslint-config-prettier": "^6.11.0", |
28 | - "eslint-plugin-jest": "^23.10.0", | 32 | + "eslint-plugin-jest": "^23.13.2", |
29 | "husky": "^4.2.5", | 33 | "husky": "^4.2.5", |
30 | - "lint-staged": "^10.2.2", | 34 | + "lint-staged": "^10.2.9", |
31 | "node-sass": "^4.14.1", | 35 | "node-sass": "^4.14.1", |
32 | "prettier": "^2.0.5", | 36 | "prettier": "^2.0.5", |
33 | "react-app-rewired": "^2.1.6", | 37 | "react-app-rewired": "^2.1.6", |
34 | "react-hot-loader": "^4.12.21", | 38 | "react-hot-loader": "^4.12.21", |
35 | "react-scripts": "3.4.1", | 39 | "react-scripts": "3.4.1", |
36 | - "typescript": "^3.8.3", | 40 | + "typescript": "^3.9.5", |
37 | - "webpack-bundle-analyzer": "^3.7.0" | 41 | + "webpack-bundle-analyzer": "^3.8.0" |
38 | }, | 42 | }, |
39 | "scripts": { | 43 | "scripts": { |
40 | "start": "react-app-rewired start", | 44 | "start": "react-app-rewired start", |
... | @@ -63,5 +67,6 @@ | ... | @@ -63,5 +67,6 @@ |
63 | }, | 67 | }, |
64 | "lint-staged": { | 68 | "lint-staged": { |
65 | "*.{js,ts,tsx,json,css,scss}": "prettier --write" | 69 | "*.{js,ts,tsx,json,css,scss}": "prettier --write" |
66 | - } | 70 | + }, |
71 | + "proxy": "http://localhost:8000" | ||
67 | } | 72 | } | ... | ... |
frontend/public/android-chrome-192x192.png
0 → 100644
1.67 KB
frontend/public/android-chrome-512x512.png
0 → 100644
5.26 KB
frontend/public/apple-touch-icon.png
0 → 100644
1.53 KB
frontend/public/browserconfig.xml
0 → 100644
frontend/public/favicon-16x16.png
0 → 100644
605 Bytes
frontend/public/favicon-32x32.png
0 → 100644
699 Bytes
No preview for this file type
... | @@ -2,42 +2,21 @@ | ... | @@ -2,42 +2,21 @@ |
2 | <html lang="en"> | 2 | <html lang="en"> |
3 | <head> | 3 | <head> |
4 | <meta charset="utf-8" /> | 4 | <meta charset="utf-8" /> |
5 | - <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> | ||
6 | <meta name="viewport" content="width=device-width, initial-scale=1" /> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1" /> |
7 | <meta name="theme-color" content="#000000" /> | 6 | <meta name="theme-color" content="#000000" /> |
8 | - <meta | 7 | + <meta name="description" content="KHUDrive" /> |
9 | - name="description" | 8 | + <link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/apple-touch-icon.png"> |
10 | - content="Web site created using create-react-app" | 9 | + <link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon-32x32.png"> |
11 | - /> | 10 | + <link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon-16x16.png"> |
12 | - <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> | 11 | + <link rel="manifest" href="%PUBLIC_URL%/site.webmanifest"> |
13 | - <!-- | 12 | + <link rel="mask-icon" href="%PUBLIC_URL%/safari-pinned-tab.svg" color="#5bbad5"> |
14 | - manifest.json provides metadata used when your web app is installed on a | 13 | + <meta name="msapplication-TileColor" content="#da532c"> |
15 | - user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ | 14 | + <meta name="theme-color" content="#ffffff"> |
16 | - --> | ||
17 | <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> | 15 | <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> |
18 | - <!-- | 16 | + <title>KHUDrive</title> |
19 | - Notice the use of %PUBLIC_URL% in the tags above. | ||
20 | - It will be replaced with the URL of the `public` folder during the build. | ||
21 | - Only files inside the `public` folder can be referenced from the HTML. | ||
22 | - | ||
23 | - Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will | ||
24 | - work correctly both with client-side routing and a non-root public URL. | ||
25 | - Learn how to configure a non-root public URL by running `npm run build`. | ||
26 | - --> | ||
27 | - <title>React App</title> | ||
28 | </head> | 17 | </head> |
29 | <body> | 18 | <body> |
30 | <noscript>You need to enable JavaScript to run this app.</noscript> | 19 | <noscript>You need to enable JavaScript to run this app.</noscript> |
31 | <div id="root"></div> | 20 | <div id="root"></div> |
32 | - <!-- | ||
33 | - This HTML file is a template. | ||
34 | - If you open it directly in the browser, you will see an empty page. | ||
35 | - | ||
36 | - You can add webfonts, meta tags, or analytics to this file. | ||
37 | - The build step will place the bundled scripts into the <body> tag. | ||
38 | - | ||
39 | - To begin the development, run `npm start` or `yarn start`. | ||
40 | - To create a production bundle, use `npm run build` or `yarn build`. | ||
41 | - --> | ||
42 | </body> | 21 | </body> |
43 | </html> | 22 | </html> | ... | ... |
frontend/public/mstile-144x144.png
0 → 100644
1.3 KB
frontend/public/mstile-150x150.png
0 → 100644
1.33 KB
frontend/public/mstile-310x150.png
0 → 100644
1.49 KB
frontend/public/mstile-310x310.png
0 → 100644
2.74 KB
frontend/public/mstile-70x70.png
0 → 100644
984 Bytes
frontend/public/safari-pinned-tab.svg
0 → 100644
1 | +<?xml version="1.0" standalone="no"?> | ||
2 | +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" | ||
3 | + "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> | ||
4 | +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" | ||
5 | + width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000" | ||
6 | + preserveAspectRatio="xMidYMid meet"> | ||
7 | +<metadata> | ||
8 | +Created by potrace 1.11, written by Peter Selinger 2001-2013 | ||
9 | +</metadata> | ||
10 | +<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)" | ||
11 | +fill="#000000" stroke="none"> | ||
12 | +<path d="M300 6180 c-105 -20 -218 -112 -268 -218 l-27 -57 0 -2410 0 -2410 | ||
13 | +29 -58 c50 -98 123 -163 223 -196 l63 -21 3197 2 3198 3 65 31 c80 38 149 105 | ||
14 | +187 182 l28 57 0 2040 0 2040 -33 67 c-48 99 -134 169 -242 198 -34 9 -494 12 | ||
15 | +-1930 14 l-1885 1 -65 31 c-96 46 -150 109 -240 279 -70 132 -165 287 -194 | ||
16 | +317 -46 47 -112 86 -175 103 -38 10 -247 13 -972 12 -508 0 -940 -3 -959 -7z"/> | ||
17 | +</g> | ||
18 | +</svg> |
frontend/public/site.webmanifest
0 → 100644
1 | +{ | ||
2 | + "name": "", | ||
3 | + "short_name": "", | ||
4 | + "icons": [ | ||
5 | + { | ||
6 | + "src": "/android-chrome-192x192.png", | ||
7 | + "sizes": "192x192", | ||
8 | + "type": "image/png" | ||
9 | + }, | ||
10 | + { | ||
11 | + "src": "/android-chrome-512x512.png", | ||
12 | + "sizes": "512x512", | ||
13 | + "type": "image/png" | ||
14 | + } | ||
15 | + ], | ||
16 | + "theme_color": "#ffffff", | ||
17 | + "background_color": "#ffffff", | ||
18 | + "display": "standalone" | ||
19 | +} |
1 | import React from "react"; | 1 | import React from "react"; |
2 | +import { Switch, Route, Redirect } from "react-router-dom"; | ||
3 | + | ||
4 | +import { Login } from "auth/Login"; | ||
5 | +import { Signup } from "auth/Signup"; | ||
6 | +import { useAuth, TokenContext } from "auth/useAuth"; | ||
7 | + | ||
8 | +import { Page } from "layout/Page"; | ||
9 | +import { FileList } from "file/FileList"; | ||
2 | 10 | ||
3 | export function App() { | 11 | export function App() { |
4 | - return <div>Hello World!</div>; | 12 | + const token = useAuth(); |
13 | + const root = token?.token?.user.rootFolder; | ||
14 | + | ||
15 | + return ( | ||
16 | + <Switch> | ||
17 | + <Route path="/login"> | ||
18 | + <Login login={token.login} /> | ||
19 | + </Route> | ||
20 | + <Route path="/signup"> | ||
21 | + <Signup /> | ||
22 | + </Route> | ||
23 | + <Route> | ||
24 | + {token.token !== null ? ( | ||
25 | + <TokenContext.Provider value={token}> | ||
26 | + <Page> | ||
27 | + <Switch> | ||
28 | + <Route path="/folder/:id"> | ||
29 | + <FileList /> | ||
30 | + </Route> | ||
31 | + <Route> | ||
32 | + <Redirect to={`/folder/${root}`} /> | ||
33 | + </Route> | ||
34 | + </Switch> | ||
35 | + </Page> | ||
36 | + </TokenContext.Provider> | ||
37 | + ) : ( | ||
38 | + <Redirect to="/login" /> | ||
39 | + )} | ||
40 | + </Route> | ||
41 | + </Switch> | ||
42 | + ); | ||
5 | } | 43 | } | ... | ... |
frontend/src/auth/Login.module.scss
0 → 100644
1 | +.layout { | ||
2 | + height: 100%; | ||
3 | + align-items: center; | ||
4 | + justify-content: center; | ||
5 | +} | ||
6 | + | ||
7 | +.content { | ||
8 | + width: 640px; | ||
9 | + flex-grow: 0; | ||
10 | + background: #fff; | ||
11 | + padding: 80px 50px 50px; | ||
12 | +} | ||
13 | + | ||
14 | +#components-form-demo-normal-login .login-form-forgot { | ||
15 | + float: right; | ||
16 | +} | ||
17 | + | ||
18 | +#components-form-demo-normal-login .ant-col-rtl .login-form-forgot { | ||
19 | + float: left; | ||
20 | +} | ||
21 | + | ||
22 | +#components-form-demo-normal-login .login-form-button { | ||
23 | + width: 100%; | ||
24 | +} |
frontend/src/auth/Login.tsx
0 → 100644
1 | +import React, { useCallback, useState } from "react"; | ||
2 | +import { Form, Input, Button, Checkbox, Layout } from "antd"; | ||
3 | +import { UserOutlined, LockOutlined } from "@ant-design/icons"; | ||
4 | +import { useHistory, Link } from "react-router-dom"; | ||
5 | + | ||
6 | +import styles from "./Login.module.scss"; | ||
7 | + | ||
8 | +export type LoginProps = { | ||
9 | + login: ( | ||
10 | + username: string, | ||
11 | + password: string, | ||
12 | + remember: boolean | ||
13 | + ) => Promise<void>; | ||
14 | +}; | ||
15 | + | ||
16 | +export function Login({ login }: LoginProps) { | ||
17 | + const [error, setError] = useState<boolean>(false); | ||
18 | + const history = useHistory(); | ||
19 | + | ||
20 | + const handleLogin = useCallback( | ||
21 | + async ({ username, password, remember }) => { | ||
22 | + setError(false); | ||
23 | + try { | ||
24 | + await login(username, password, remember); | ||
25 | + history.push("/"); | ||
26 | + } catch { | ||
27 | + setError(true); | ||
28 | + } | ||
29 | + }, | ||
30 | + [login, history] | ||
31 | + ); | ||
32 | + | ||
33 | + return ( | ||
34 | + <Layout className={styles.layout}> | ||
35 | + <Layout.Content className={styles.content}> | ||
36 | + <Form | ||
37 | + name="login" | ||
38 | + initialValues={{ remember: true }} | ||
39 | + onFinish={handleLogin} | ||
40 | + > | ||
41 | + <Form.Item | ||
42 | + name="username" | ||
43 | + rules={[{ required: true, message: "아이디를 입력하세요" }]} | ||
44 | + {...(error && { | ||
45 | + validateStatus: "error", | ||
46 | + })} | ||
47 | + > | ||
48 | + <Input prefix={<UserOutlined />} placeholder="아이디" /> | ||
49 | + </Form.Item> | ||
50 | + <Form.Item | ||
51 | + name="password" | ||
52 | + rules={[{ required: true, message: "비밀번호를 입력하세요" }]} | ||
53 | + {...(error && { | ||
54 | + validateStatus: "error", | ||
55 | + help: "로그인에 실패했습니다", | ||
56 | + })} | ||
57 | + > | ||
58 | + <Input | ||
59 | + prefix={<LockOutlined />} | ||
60 | + type="password" | ||
61 | + placeholder="비밀번호" | ||
62 | + /> | ||
63 | + </Form.Item> | ||
64 | + <Form.Item> | ||
65 | + <Form.Item name="remember" valuePropName="checked" noStyle> | ||
66 | + <Checkbox>자동 로그인</Checkbox> | ||
67 | + </Form.Item> | ||
68 | + </Form.Item> | ||
69 | + | ||
70 | + <Form.Item> | ||
71 | + <Button type="primary" htmlType="submit"> | ||
72 | + 로그인 | ||
73 | + </Button> | ||
74 | + <Link to="/signup" style={{ marginLeft: 24 }}> | ||
75 | + 회원가입 | ||
76 | + </Link> | ||
77 | + </Form.Item> | ||
78 | + </Form> | ||
79 | + </Layout.Content> | ||
80 | + </Layout> | ||
81 | + ); | ||
82 | +} |
frontend/src/auth/Signup.tsx
0 → 100644
1 | +import React, { useCallback, useState } from "react"; | ||
2 | +import { Form, Input, Button, Layout, message } from "antd"; | ||
3 | +import { UserOutlined, LockOutlined, TagOutlined } from "@ant-design/icons"; | ||
4 | +import { useHistory } from "react-router-dom"; | ||
5 | + | ||
6 | +import styles from "./Login.module.scss"; | ||
7 | +import ky from "ky"; | ||
8 | + | ||
9 | +export function Signup() { | ||
10 | + const [error, setError] = useState<boolean>(false); | ||
11 | + const [check, setCheck] = useState<boolean>(false); | ||
12 | + const history = useHistory(); | ||
13 | + | ||
14 | + const handleSignup = useCallback( | ||
15 | + async ({ user_id, password, password_check, name }) => { | ||
16 | + if (password !== password_check) { | ||
17 | + return setCheck(true); | ||
18 | + } else { | ||
19 | + setCheck(false); | ||
20 | + } | ||
21 | + | ||
22 | + setError(false); | ||
23 | + try { | ||
24 | + const body = new URLSearchParams(); | ||
25 | + body.set("user_id", user_id); | ||
26 | + body.set("password", password); | ||
27 | + body.set("name", name); | ||
28 | + | ||
29 | + await ky.post("/users/signup/", { body }); | ||
30 | + | ||
31 | + message.success("회원가입이 완료되었습니다"); | ||
32 | + history.push("/login"); | ||
33 | + } catch { | ||
34 | + setError(true); | ||
35 | + } | ||
36 | + }, | ||
37 | + [history] | ||
38 | + ); | ||
39 | + | ||
40 | + return ( | ||
41 | + <Layout className={styles.layout}> | ||
42 | + <Layout.Content className={styles.content}> | ||
43 | + <Form name="signup" onFinish={handleSignup}> | ||
44 | + <Form.Item | ||
45 | + name="user_id" | ||
46 | + rules={[{ required: true, message: "아이디를 입력하세요" }]} | ||
47 | + {...(error && { | ||
48 | + validateStatus: "error", | ||
49 | + })} | ||
50 | + > | ||
51 | + <Input prefix={<UserOutlined />} placeholder="아이디" /> | ||
52 | + </Form.Item> | ||
53 | + <Form.Item | ||
54 | + name="password" | ||
55 | + rules={[{ required: true, message: "비밀번호를 입력하세요" }]} | ||
56 | + {...(error && { | ||
57 | + validateStatus: "error", | ||
58 | + help: "로그인에 실패했습니다", | ||
59 | + })} | ||
60 | + > | ||
61 | + <Input | ||
62 | + prefix={<LockOutlined />} | ||
63 | + type="password" | ||
64 | + placeholder="비밀번호" | ||
65 | + /> | ||
66 | + </Form.Item> | ||
67 | + <Form.Item | ||
68 | + name="password_check" | ||
69 | + rules={[ | ||
70 | + { required: true, message: "비밀번호를 한번 더 입력하세요" }, | ||
71 | + ]} | ||
72 | + {...(error && { | ||
73 | + validateStatus: "error", | ||
74 | + help: "로그인에 실패했습니다", | ||
75 | + })} | ||
76 | + {...(check && { | ||
77 | + validateStatus: "error", | ||
78 | + help: "비밀번호가 일치하지 않습니다", | ||
79 | + })} | ||
80 | + > | ||
81 | + <Input | ||
82 | + prefix={<LockOutlined />} | ||
83 | + type="password" | ||
84 | + placeholder="비밀번호 확인" | ||
85 | + /> | ||
86 | + </Form.Item> | ||
87 | + <Form.Item | ||
88 | + name="name" | ||
89 | + rules={[{ required: true, message: "이름을 입력하세요" }]} | ||
90 | + {...(error && { | ||
91 | + validateStatus: "error", | ||
92 | + })} | ||
93 | + > | ||
94 | + <Input prefix={<TagOutlined />} placeholder="이름" /> | ||
95 | + </Form.Item> | ||
96 | + | ||
97 | + <Form.Item> | ||
98 | + <Button type="primary" htmlType="submit"> | ||
99 | + 회원 가입 | ||
100 | + </Button> | ||
101 | + </Form.Item> | ||
102 | + </Form> | ||
103 | + </Layout.Content> | ||
104 | + </Layout> | ||
105 | + ); | ||
106 | +} |
frontend/src/auth/useAuth.ts
0 → 100644
1 | +import React, { useState, useCallback } from "react"; | ||
2 | +import ky from "ky"; | ||
3 | + | ||
4 | +interface LoginResponse { | ||
5 | + access: string; | ||
6 | + refresh: string; | ||
7 | + exp: number; | ||
8 | + user: { | ||
9 | + int_id: number; | ||
10 | + user_id: string; | ||
11 | + name: string; | ||
12 | + total_size: number; | ||
13 | + current_size: number; | ||
14 | + root_folder: number; | ||
15 | + }; | ||
16 | +} | ||
17 | + | ||
18 | +interface Token { | ||
19 | + accessToken: string; | ||
20 | + refreshToken: string; | ||
21 | + expiration: Date; | ||
22 | + user: { | ||
23 | + id: number; | ||
24 | + username: string; | ||
25 | + name: string; | ||
26 | + totalSize: number; | ||
27 | + currentSize: number; | ||
28 | + rootFolder: number; | ||
29 | + }; | ||
30 | +} | ||
31 | + | ||
32 | +export const TokenContext = React.createContext<ReturnType<typeof useAuth>>( | ||
33 | + {} as any | ||
34 | +); | ||
35 | + | ||
36 | +export function useAuth() { | ||
37 | + const [token, setToken] = useState<Token | null>(() => { | ||
38 | + const item = localStorage.getItem("token"); | ||
39 | + if (item) { | ||
40 | + const token = JSON.parse(item); | ||
41 | + token.expiration = new Date(token.expiration); | ||
42 | + return token; | ||
43 | + } | ||
44 | + return null; | ||
45 | + }); | ||
46 | + | ||
47 | + const login = useCallback( | ||
48 | + async (username: string, password: string, remember: boolean) => { | ||
49 | + const body = new URLSearchParams(); | ||
50 | + body.set("user_id", username); | ||
51 | + body.set("password", password); | ||
52 | + | ||
53 | + const response = await ky | ||
54 | + .post("/users/login/", { body }) | ||
55 | + .json<LoginResponse>(); | ||
56 | + | ||
57 | + const token = { | ||
58 | + accessToken: response.access, | ||
59 | + refreshToken: response.refresh, | ||
60 | + expiration: new Date(response.exp * 1000), | ||
61 | + user: { | ||
62 | + id: response.user.int_id, | ||
63 | + username: response.user.user_id, | ||
64 | + name: response.user.name, | ||
65 | + totalSize: response.user.total_size, | ||
66 | + currentSize: response.user.current_size, | ||
67 | + rootFolder: response.user.root_folder, | ||
68 | + }, | ||
69 | + }; | ||
70 | + | ||
71 | + setToken(token); | ||
72 | + | ||
73 | + if (remember) { | ||
74 | + localStorage.setItem("token", JSON.stringify(token)); | ||
75 | + } | ||
76 | + }, | ||
77 | + [] | ||
78 | + ); | ||
79 | + | ||
80 | + const logout = useCallback(() => setToken(null), []); | ||
81 | + | ||
82 | + return { token, login, logout }; | ||
83 | +} |
frontend/src/file/CreateFolderPopover.tsx
0 → 100644
1 | +import React, { useState } from "react"; | ||
2 | +import { Button, Input } from "antd"; | ||
3 | + | ||
4 | +export type CreateFolderPopoverProps = { | ||
5 | + onCreate: (name: string) => void; | ||
6 | + onCancel?: () => void; | ||
7 | +}; | ||
8 | + | ||
9 | +export function CreateFolderPopover({ | ||
10 | + onCreate, | ||
11 | + onCancel, | ||
12 | +}: CreateFolderPopoverProps) { | ||
13 | + const [name, setName] = useState<string>(""); | ||
14 | + return ( | ||
15 | + <div> | ||
16 | + <Input | ||
17 | + value={name} | ||
18 | + onChange={(event) => setName(event.target.value)} | ||
19 | + placeholder="이름" | ||
20 | + style={{ marginBottom: 10 }} | ||
21 | + /> | ||
22 | + <div className="ant-popover-buttons"> | ||
23 | + <Button size="small" onClick={onCancel}> | ||
24 | + 취소 | ||
25 | + </Button> | ||
26 | + <Button type="primary" size="small" onClick={() => onCreate(name)}> | ||
27 | + 생성 | ||
28 | + </Button> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + ); | ||
32 | +} |
File mode changed
frontend/src/file/FileItemActions.tsx
0 → 100644
1 | +import React, { useState, Fragment } from "react"; | ||
2 | +import { Popconfirm, Popover, Button, message } from "antd"; | ||
3 | +import { FileItem } from "./useFileList"; | ||
4 | +import styles from "./FileItemActions.module.scss"; | ||
5 | +import { FileListPopover } from "./FileListPopover"; | ||
6 | +import { FileRenamePopover } from "./FileRenamePopover"; | ||
7 | + | ||
8 | +export type FileItemActionsProps = { | ||
9 | + item: FileItem; | ||
10 | + onRename: (id: number, name: string) => void; | ||
11 | + onMove: (id: number, to: number) => void; | ||
12 | + onCopy: (id: number, to: number) => void; | ||
13 | + onDelete: (id: number) => void; | ||
14 | +}; | ||
15 | + | ||
16 | +export function FileItemActions({ | ||
17 | + item, | ||
18 | + onRename, | ||
19 | + onMove, | ||
20 | + onCopy, | ||
21 | + onDelete, | ||
22 | +}: FileItemActionsProps) { | ||
23 | + const [rename, setRename] = useState<boolean>(false); | ||
24 | + const [move, setMove] = useState<boolean>(false); | ||
25 | + const [copy, setCopy] = useState<boolean>(false); | ||
26 | + | ||
27 | + return ( | ||
28 | + <div className={styles.actions}> | ||
29 | + <Popover | ||
30 | + title="변경할 이름을 입력하세요" | ||
31 | + content={ | ||
32 | + <FileRenamePopover | ||
33 | + name={item.name} | ||
34 | + onRename={(name: string) => { | ||
35 | + if (name === item.name) { | ||
36 | + return message.error("동일한 이름으로는 변경할 수 없습니다"); | ||
37 | + } | ||
38 | + if (!name) { | ||
39 | + return message.error("변경할 이름을 입력하세요"); | ||
40 | + } | ||
41 | + onRename(item.id, name); | ||
42 | + setRename(false); | ||
43 | + }} | ||
44 | + onCancel={() => setRename(false)} | ||
45 | + /> | ||
46 | + } | ||
47 | + trigger="click" | ||
48 | + visible={rename} | ||
49 | + onVisibleChange={setRename} | ||
50 | + > | ||
51 | + <Button type="link" size="small"> | ||
52 | + 이름 변경 | ||
53 | + </Button> | ||
54 | + </Popover> | ||
55 | + {!item.is_folder && ( | ||
56 | + <Button type="link" size="small"> | ||
57 | + 공유 | ||
58 | + </Button> | ||
59 | + )} | ||
60 | + <Popover | ||
61 | + title="이동할 폴더를 선택하세요" | ||
62 | + content={ | ||
63 | + <FileListPopover | ||
64 | + root={item.parent} | ||
65 | + onSelect={(to: number) => { | ||
66 | + if (to === item.parent) { | ||
67 | + return message.error("같은 폴더로는 이동할 수 없습니다"); | ||
68 | + } | ||
69 | + onMove(item.id, to); | ||
70 | + setMove(false); | ||
71 | + }} | ||
72 | + onCancel={() => setMove(false)} | ||
73 | + /> | ||
74 | + } | ||
75 | + trigger="click" | ||
76 | + visible={move} | ||
77 | + onVisibleChange={setMove} | ||
78 | + > | ||
79 | + <Button type="link" size="small"> | ||
80 | + 이동 | ||
81 | + </Button> | ||
82 | + </Popover> | ||
83 | + {!item.is_folder && ( | ||
84 | + <Popover | ||
85 | + title="복사할 폴더를 선택하세요" | ||
86 | + content={ | ||
87 | + <FileListPopover | ||
88 | + root={item.parent} | ||
89 | + onSelect={(to: number) => { | ||
90 | + onCopy(item.id, to); | ||
91 | + setCopy(false); | ||
92 | + }} | ||
93 | + onCancel={() => setCopy(false)} | ||
94 | + /> | ||
95 | + } | ||
96 | + trigger="click" | ||
97 | + visible={copy} | ||
98 | + onVisibleChange={setCopy} | ||
99 | + > | ||
100 | + <Button type="link" size="small"> | ||
101 | + 복사 | ||
102 | + </Button> | ||
103 | + </Popover> | ||
104 | + )} | ||
105 | + {!item.is_folder && ( | ||
106 | + <Popconfirm | ||
107 | + title="정말로 삭제하시겠습니까?" | ||
108 | + onConfirm={() => onDelete(item.id)} | ||
109 | + okText="삭제" | ||
110 | + cancelText="취소" | ||
111 | + > | ||
112 | + <Button type="link" size="small"> | ||
113 | + 삭제 | ||
114 | + </Button> | ||
115 | + </Popconfirm> | ||
116 | + )} | ||
117 | + </div> | ||
118 | + ); | ||
119 | +} |
frontend/src/file/FileList.module.scss
0 → 100644
frontend/src/file/FileList.tsx
0 → 100644
1 | +import React, { useCallback, useState, useContext } from "react"; | ||
2 | +import { Table, message, Button, Popover } from "antd"; | ||
3 | +import { ColumnsType } from "antd/lib/table"; | ||
4 | +import filesize from "filesize"; | ||
5 | + | ||
6 | +import { useParams } from "react-router-dom"; | ||
7 | +import { useFileList, FileItem } from "./useFileList"; | ||
8 | +import { useApi } from "util/useApi"; | ||
9 | +import { FileListItem } from "./FileListItem"; | ||
10 | +import { FileItemActions } from "./FileItemActions"; | ||
11 | + | ||
12 | +import styles from "./FileList.module.scss"; | ||
13 | +import { FileUploadPopover } from "./FileUploadPopover"; | ||
14 | +import { CreateFolderPopover } from "./CreateFolderPopover"; | ||
15 | +import { TokenContext } from "auth/useAuth"; | ||
16 | + | ||
17 | +export function FileList() { | ||
18 | + const id = useParams<{ id: string }>().id; | ||
19 | + const { data, reload } = useFileList(id); | ||
20 | + | ||
21 | + const [upload, setUpload] = useState<boolean>(false); | ||
22 | + const [createFolder, setCreateFolder] = useState<boolean>(false); | ||
23 | + | ||
24 | + const { token } = useContext(TokenContext); | ||
25 | + const userId = token?.user.id || ""; | ||
26 | + | ||
27 | + const api = useApi(); | ||
28 | + | ||
29 | + const handleCreateFolder = useCallback( | ||
30 | + async (id: number, name: string) => { | ||
31 | + try { | ||
32 | + const body = new URLSearchParams(); | ||
33 | + body.set("name", name); | ||
34 | + | ||
35 | + await api.post(`/items/${id}/children/`, { | ||
36 | + searchParams: { | ||
37 | + user_id: userId, | ||
38 | + }, | ||
39 | + body, | ||
40 | + }); | ||
41 | + await reload(); | ||
42 | + | ||
43 | + message.info("폴더가 생성되었습니다"); | ||
44 | + } catch { | ||
45 | + message.error("폴더 생성에 실패했습니다"); | ||
46 | + } | ||
47 | + }, | ||
48 | + [api, reload, userId] | ||
49 | + ); | ||
50 | + | ||
51 | + const handleRename = useCallback( | ||
52 | + async (id: number, name: string) => { | ||
53 | + try { | ||
54 | + const body = new URLSearchParams(); | ||
55 | + body.set("name", name); | ||
56 | + | ||
57 | + await api.post(`/items/${id}/move/`, { body }); | ||
58 | + await reload(); | ||
59 | + | ||
60 | + message.info("이름이 변경되었습니다"); | ||
61 | + } catch { | ||
62 | + message.error("이름 변경에 실패했습니다"); | ||
63 | + } | ||
64 | + }, | ||
65 | + [api, reload] | ||
66 | + ); | ||
67 | + | ||
68 | + const handleMove = useCallback( | ||
69 | + async (id: number, to: number) => { | ||
70 | + try { | ||
71 | + const body = new URLSearchParams(); | ||
72 | + body.set("parent", to.toString(10)); | ||
73 | + | ||
74 | + await api.post(`/items/${id}/move/`, { body }); | ||
75 | + await reload(); | ||
76 | + | ||
77 | + message.info("이동되었습니다"); | ||
78 | + } catch { | ||
79 | + message.error("파일 이동에 실패했습니다"); | ||
80 | + } | ||
81 | + }, | ||
82 | + [api, reload] | ||
83 | + ); | ||
84 | + | ||
85 | + const handleCopy = useCallback( | ||
86 | + async (id: number, to: number) => { | ||
87 | + try { | ||
88 | + const body = new URLSearchParams(); | ||
89 | + body.set("parent", to.toString(10)); | ||
90 | + | ||
91 | + await api.post(`/items/${id}/copy/`, { body }); | ||
92 | + await reload(); | ||
93 | + | ||
94 | + message.info("복사되었습니다"); | ||
95 | + } catch { | ||
96 | + message.error("파일 복사에 실패했습니다"); | ||
97 | + } | ||
98 | + }, | ||
99 | + [api, reload] | ||
100 | + ); | ||
101 | + | ||
102 | + const handleDelete = useCallback( | ||
103 | + async (id: number) => { | ||
104 | + try { | ||
105 | + await api.delete(`/items/${id}/`); | ||
106 | + await reload(); | ||
107 | + message.info("삭제되었습니다"); | ||
108 | + } catch { | ||
109 | + message.error("파일 삭제에 실패했습니다"); | ||
110 | + } | ||
111 | + }, | ||
112 | + [api, reload] | ||
113 | + ); | ||
114 | + | ||
115 | + if (!data) { | ||
116 | + return null; | ||
117 | + } | ||
118 | + | ||
119 | + const list = [...data.list].sort((itemA, itemB) => | ||
120 | + itemA.is_folder === itemB.is_folder ? 0 : itemA.is_folder ? -1 : 1 | ||
121 | + ); | ||
122 | + | ||
123 | + if (data.parent !== null) { | ||
124 | + list.unshift(({ | ||
125 | + id: data.parent, | ||
126 | + is_folder: true, | ||
127 | + name: "..", | ||
128 | + file_type: "folder", | ||
129 | + } as unknown) as FileItem); | ||
130 | + } | ||
131 | + | ||
132 | + return ( | ||
133 | + <div> | ||
134 | + <div className={styles.header}> | ||
135 | + <div>{data.parent !== null && <h3>{data.name}</h3>}</div> | ||
136 | + <div> | ||
137 | + <Popover | ||
138 | + content={<FileUploadPopover root={data.id} reload={reload} />} | ||
139 | + trigger="click" | ||
140 | + visible={upload} | ||
141 | + onVisibleChange={setUpload} | ||
142 | + > | ||
143 | + <Button type="link" size="small"> | ||
144 | + 파일 업로드 | ||
145 | + </Button> | ||
146 | + </Popover> | ||
147 | + <Popover | ||
148 | + title="폴더 이름을 입력하세요" | ||
149 | + content={ | ||
150 | + <CreateFolderPopover | ||
151 | + onCreate={(name: string) => { | ||
152 | + if (!name) { | ||
153 | + return message.error("폴더 이름을 입력하세요"); | ||
154 | + } | ||
155 | + handleCreateFolder(data.id, name); | ||
156 | + setCreateFolder(false); | ||
157 | + }} | ||
158 | + onCancel={() => setCreateFolder(false)} | ||
159 | + /> | ||
160 | + } | ||
161 | + trigger="click" | ||
162 | + visible={createFolder} | ||
163 | + onVisibleChange={setCreateFolder} | ||
164 | + > | ||
165 | + <Button type="link" size="small"> | ||
166 | + 새 폴더 | ||
167 | + </Button> | ||
168 | + </Popover> | ||
169 | + </div> | ||
170 | + </div> | ||
171 | + <Table | ||
172 | + rowKey="id" | ||
173 | + columns={getColumns({ | ||
174 | + handleRename, | ||
175 | + handleMove, | ||
176 | + handleCopy, | ||
177 | + handleDelete, | ||
178 | + })} | ||
179 | + dataSource={list} | ||
180 | + pagination={false} | ||
181 | + locale={{ | ||
182 | + emptyText: "파일이 없습니다", | ||
183 | + }} | ||
184 | + /> | ||
185 | + </div> | ||
186 | + ); | ||
187 | +} | ||
188 | + | ||
189 | +type GetColumnsParams = { | ||
190 | + handleRename: (id: number, name: string) => void; | ||
191 | + handleMove: (id: number, to: number) => void; | ||
192 | + handleCopy: (id: number, to: number) => void; | ||
193 | + handleDelete: (id: number) => void; | ||
194 | +}; | ||
195 | + | ||
196 | +function getColumns({ | ||
197 | + handleRename, | ||
198 | + handleMove, | ||
199 | + handleCopy, | ||
200 | + handleDelete, | ||
201 | +}: GetColumnsParams): ColumnsType<FileItem> { | ||
202 | + return [ | ||
203 | + { | ||
204 | + title: "이름", | ||
205 | + key: "name", | ||
206 | + dataIndex: "name", | ||
207 | + render: (_name: string, item) => <FileListItem item={item} />, | ||
208 | + }, | ||
209 | + { | ||
210 | + title: "크기", | ||
211 | + key: "size", | ||
212 | + dataIndex: "size", | ||
213 | + width: 120, | ||
214 | + render: (bytes: number, item) => | ||
215 | + item.is_folder ? "-" : filesize(bytes, { round: 0 }), | ||
216 | + }, | ||
217 | + { | ||
218 | + title: "", | ||
219 | + key: "action", | ||
220 | + dataIndex: "", | ||
221 | + width: 300, | ||
222 | + render: (__: any, item) => ( | ||
223 | + <FileItemActions | ||
224 | + item={item} | ||
225 | + onRename={handleRename} | ||
226 | + onMove={handleMove} | ||
227 | + onCopy={handleCopy} | ||
228 | + onDelete={handleDelete} | ||
229 | + /> | ||
230 | + ), | ||
231 | + }, | ||
232 | + ]; | ||
233 | +} |
frontend/src/file/FileListItem.tsx
0 → 100644
1 | +import React from "react"; | ||
2 | +import { FileItem } from "./useFileList"; | ||
3 | +import { Link } from "react-router-dom"; | ||
4 | +import { Button } from "antd"; | ||
5 | + | ||
6 | +import { FolderFilled, FileFilled } from "@ant-design/icons"; | ||
7 | +import { useDownload } from "./useDownload"; | ||
8 | + | ||
9 | +export function FileListItem({ item }: { item: FileItem }) { | ||
10 | + const download = useDownload(); | ||
11 | + return item.is_folder ? ( | ||
12 | + <Link | ||
13 | + className="ant-btn ant-btn-link ant-btn-sm" | ||
14 | + to={`/folder/${item.id}`} | ||
15 | + style={{ padding: 0, color: "#001529" }} | ||
16 | + > | ||
17 | + <FolderFilled /> <span>{item.name}</span> | ||
18 | + </Link> | ||
19 | + ) : ( | ||
20 | + <Button | ||
21 | + type="link" | ||
22 | + size="small" | ||
23 | + onClick={() => download(item.id)} | ||
24 | + style={{ padding: 0, color: "#001529" }} | ||
25 | + > | ||
26 | + <FileFilled /> {item.name} | ||
27 | + </Button> | ||
28 | + ); | ||
29 | +} |
frontend/src/file/FileListPopover.tsx
0 → 100644
1 | +import React, { useState } from "react"; | ||
2 | +import { useFileList } from "./useFileList"; | ||
3 | +import { Button } from "antd"; | ||
4 | + | ||
5 | +import styles from "./FileListPopover.module.scss"; | ||
6 | + | ||
7 | +export type FileListPopoverProps = { | ||
8 | + root: number; | ||
9 | + onSelect: (id: number) => void; | ||
10 | + onCancel?: () => void; | ||
11 | +}; | ||
12 | + | ||
13 | +export function FileListPopover({ | ||
14 | + root, | ||
15 | + onSelect, | ||
16 | + onCancel, | ||
17 | +}: FileListPopoverProps) { | ||
18 | + const [id, setId] = useState<number>(root); | ||
19 | + const { data } = useFileList(id); | ||
20 | + | ||
21 | + if (!data) { | ||
22 | + return null; | ||
23 | + } | ||
24 | + | ||
25 | + const list = data.list | ||
26 | + .filter((item) => item.is_folder) | ||
27 | + .map((item) => ({ id: item.id, name: item.name })); | ||
28 | + | ||
29 | + if (data.parent !== null) { | ||
30 | + list.unshift({ id: data.parent, name: ".." }); | ||
31 | + } | ||
32 | + | ||
33 | + return ( | ||
34 | + <div> | ||
35 | + <div>{data.name}</div> | ||
36 | + <ul className={styles.list}> | ||
37 | + {list.map((item) => ( | ||
38 | + <li key={item.id}> | ||
39 | + <Button type="link" size="small" onClick={() => setId(item.id)}> | ||
40 | + {item.name} | ||
41 | + </Button> | ||
42 | + </li> | ||
43 | + ))} | ||
44 | + </ul> | ||
45 | + <div className="ant-popover-buttons"> | ||
46 | + <Button size="small" onClick={onCancel}> | ||
47 | + 취소 | ||
48 | + </Button> | ||
49 | + <Button type="primary" size="small" onClick={() => onSelect(id)}> | ||
50 | + 선택 | ||
51 | + </Button> | ||
52 | + </div> | ||
53 | + </div> | ||
54 | + ); | ||
55 | +} |
frontend/src/file/FileRenamePopover.tsx
0 → 100644
1 | +import React, { useState } from "react"; | ||
2 | +import { Button, Input } from "antd"; | ||
3 | + | ||
4 | +export type FileRenamePopoverProps = { | ||
5 | + name: string; | ||
6 | + onRename: (name: string) => void; | ||
7 | + onCancel?: () => void; | ||
8 | +}; | ||
9 | + | ||
10 | +export function FileRenamePopover({ | ||
11 | + name: oldName, | ||
12 | + onRename, | ||
13 | + onCancel, | ||
14 | +}: FileRenamePopoverProps) { | ||
15 | + const [name, setName] = useState<string>(oldName); | ||
16 | + return ( | ||
17 | + <div> | ||
18 | + <Input | ||
19 | + value={name} | ||
20 | + onChange={(event) => setName(event.target.value)} | ||
21 | + placeholder="이름" | ||
22 | + style={{ marginBottom: 10 }} | ||
23 | + /> | ||
24 | + <div className="ant-popover-buttons"> | ||
25 | + <Button size="small" onClick={onCancel}> | ||
26 | + 취소 | ||
27 | + </Button> | ||
28 | + <Button type="primary" size="small" onClick={() => onRename(name)}> | ||
29 | + 변경 | ||
30 | + </Button> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + ); | ||
34 | +} |
frontend/src/file/FileUploadPopover.tsx
0 → 100644
1 | +import React, { useCallback, useRef } from "react"; | ||
2 | +import Dragger from "antd/lib/upload/Dragger"; | ||
3 | +import { InboxOutlined } from "@ant-design/icons"; | ||
4 | +import { useApi } from "util/useApi"; | ||
5 | + | ||
6 | +export type FileUploadPopoverProps = { | ||
7 | + root: number; | ||
8 | + reload: () => void; | ||
9 | +}; | ||
10 | + | ||
11 | +export function FileUploadPopover({ root, reload }: FileUploadPopoverProps) { | ||
12 | + const api = useApi(); | ||
13 | + const fields = useRef<any>(); | ||
14 | + const stateMap = useRef<Record<string, number>>({}); | ||
15 | + | ||
16 | + const getS3Object = useCallback( | ||
17 | + async (file: File) => { | ||
18 | + const body = new URLSearchParams(); | ||
19 | + body.set("name", file.name); | ||
20 | + body.set("size", file.size.toString()); | ||
21 | + | ||
22 | + const response = await api | ||
23 | + .post(`/items/${root}/upload/`, { body }) | ||
24 | + .json<any>(); | ||
25 | + | ||
26 | + stateMap.current[file.name] = response.item.id; | ||
27 | + fields.current = response.signed_url.fields; | ||
28 | + return response.signed_url.url; | ||
29 | + }, | ||
30 | + [api, root] | ||
31 | + ); | ||
32 | + | ||
33 | + const setObjectStatus = useCallback( | ||
34 | + async (info) => { | ||
35 | + if (info.file.status === "done") { | ||
36 | + const id = stateMap.current[info.file.name]; | ||
37 | + if (typeof id !== "undefined") { | ||
38 | + const body = new URLSearchParams(); | ||
39 | + body.set("item_id", id.toString()); | ||
40 | + await api.post(`/items/${id}/status/`, { body }); | ||
41 | + reload(); | ||
42 | + } | ||
43 | + } | ||
44 | + }, | ||
45 | + [api, reload] | ||
46 | + ); | ||
47 | + | ||
48 | + return ( | ||
49 | + <Dragger | ||
50 | + name="file" | ||
51 | + multiple={true} | ||
52 | + action={getS3Object} | ||
53 | + data={() => fields.current} | ||
54 | + onChange={setObjectStatus} | ||
55 | + style={{ padding: 40 }} | ||
56 | + > | ||
57 | + <p className="ant-upload-drag-icon"> | ||
58 | + <InboxOutlined /> | ||
59 | + </p> | ||
60 | + <p className="ant-upload-text"> | ||
61 | + 업로드할 파일을 선택하거나 드래그 하세요 | ||
62 | + </p> | ||
63 | + <p className="ant-upload-hint"></p> | ||
64 | + </Dragger> | ||
65 | + ); | ||
66 | +} |
frontend/src/file/useDownload.ts
0 → 100644
1 | +import { useApi } from "util/useApi"; | ||
2 | +import { useCallback } from "react"; | ||
3 | + | ||
4 | +function downloadURL(url: string, name: string) { | ||
5 | + const link = document.createElement("a"); | ||
6 | + link.setAttribute("download", name); | ||
7 | + link.href = url; | ||
8 | + link.click(); | ||
9 | +} | ||
10 | + | ||
11 | +export function useDownload() { | ||
12 | + const api = useApi(); | ||
13 | + const download = useCallback( | ||
14 | + async (id: number) => { | ||
15 | + const response = await api.get(`/items/${id}/`).json<any>(); | ||
16 | + const { signed_url, name } = response.data; | ||
17 | + downloadURL(signed_url, name); | ||
18 | + }, | ||
19 | + [api] | ||
20 | + ); | ||
21 | + return download; | ||
22 | +} |
frontend/src/file/useFileList.ts
0 → 100644
1 | +import { useState, useCallback, useEffect } from "react"; | ||
2 | +import ky from "ky"; | ||
3 | + | ||
4 | +interface FileListData extends FileItem { | ||
5 | + list: FileItem[]; | ||
6 | +} | ||
7 | + | ||
8 | +interface FileListResponse { | ||
9 | + data: FileListData; | ||
10 | +} | ||
11 | + | ||
12 | +export interface FileItem { | ||
13 | + is_folder: boolean; | ||
14 | + name: string; | ||
15 | + file_type: "folder" | "file"; | ||
16 | + path: string; | ||
17 | + parent: number; | ||
18 | + user_id: number; | ||
19 | + size: number; | ||
20 | + is_deleted: boolean; | ||
21 | + created_time: string | null; | ||
22 | + updated_time: string; | ||
23 | + status: boolean; | ||
24 | + id: number; | ||
25 | +} | ||
26 | + | ||
27 | +export function useFileList(id: string | number) { | ||
28 | + const [data, setData] = useState<FileListData | null>(null); | ||
29 | + | ||
30 | + const reload = useCallback(async () => { | ||
31 | + const response = await ky | ||
32 | + .get(`/items/${id}/children/`) | ||
33 | + .json<FileListResponse>(); | ||
34 | + | ||
35 | + setData(response.data); | ||
36 | + }, [id]); | ||
37 | + | ||
38 | + useEffect(() => { | ||
39 | + reload(); | ||
40 | + }, [reload]); | ||
41 | + | ||
42 | + return { data, reload }; | ||
43 | +} |
1 | -body { | 1 | +#root { |
2 | - margin: 0; | 2 | + height: 100%; |
3 | - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", | ||
4 | - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", | ||
5 | - sans-serif; | ||
6 | - -webkit-font-smoothing: antialiased; | ||
7 | - -moz-osx-font-smoothing: grayscale; | ||
8 | -} | ||
9 | - | ||
10 | -code { | ||
11 | - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", | ||
12 | - monospace; | ||
13 | } | 3 | } | ... | ... |
1 | import React from "react"; | 1 | import React from "react"; |
2 | import ReactDOM from "react-dom"; | 2 | import ReactDOM from "react-dom"; |
3 | +import { BrowserRouter } from "react-router-dom"; | ||
3 | 4 | ||
5 | +import "antd/dist/antd.css"; | ||
4 | import "./index.css"; | 6 | import "./index.css"; |
5 | 7 | ||
6 | import { App } from "./App"; | 8 | import { App } from "./App"; |
... | @@ -8,9 +10,9 @@ import { App } from "./App"; | ... | @@ -8,9 +10,9 @@ import { App } from "./App"; |
8 | import * as serviceWorker from "./serviceWorker"; | 10 | import * as serviceWorker from "./serviceWorker"; |
9 | 11 | ||
10 | ReactDOM.render( | 12 | ReactDOM.render( |
11 | - <React.StrictMode> | 13 | + <BrowserRouter> |
12 | <App /> | 14 | <App /> |
13 | - </React.StrictMode>, | 15 | + </BrowserRouter>, |
14 | document.getElementById("root") | 16 | document.getElementById("root") |
15 | ); | 17 | ); |
16 | 18 | ... | ... |
frontend/src/layout/Page.module.scss
0 → 100644
1 | +.layout { | ||
2 | + height: 100%; | ||
3 | +} | ||
4 | + | ||
5 | +.header { | ||
6 | + display: flex; | ||
7 | + align-items: center; | ||
8 | + justify-content: space-between; | ||
9 | +} | ||
10 | + | ||
11 | +.content { | ||
12 | + background: #fff; | ||
13 | + padding: 25px 50px; | ||
14 | +} | ||
15 | + | ||
16 | +.logo { | ||
17 | + width: 120px; | ||
18 | + height: 31px; | ||
19 | + margin: 16px 24px 16px 0; | ||
20 | + float: left; | ||
21 | + display: flex; | ||
22 | + align-items: center; | ||
23 | + justify-content: center; | ||
24 | + color: white; | ||
25 | + font-size: 24px; | ||
26 | + font-weight: bold; | ||
27 | +} | ||
28 | + | ||
29 | +.user { | ||
30 | + display: flex; | ||
31 | + align-items: center; | ||
32 | + color: white; | ||
33 | + | ||
34 | + svg { | ||
35 | + width: 28px; | ||
36 | + height: 28px; | ||
37 | + } | ||
38 | + | ||
39 | + &:hover, | ||
40 | + &:active, | ||
41 | + &:focus { | ||
42 | + color: rgba(255, 255, 255, 0.65); | ||
43 | + } | ||
44 | +} | ||
45 | + | ||
46 | +.footer { | ||
47 | + text-align: center; | ||
48 | +} |
frontend/src/layout/Page.tsx
0 → 100644
1 | +import React, { useContext } from "react"; | ||
2 | +import { Layout, Popover, Button } from "antd"; | ||
3 | +import { UserOutlined } from "@ant-design/icons"; | ||
4 | +import { TokenContext } from "auth/useAuth"; | ||
5 | + | ||
6 | +import styles from "./Page.module.scss"; | ||
7 | + | ||
8 | +export function Page({ children }: { children: React.ReactNode }) { | ||
9 | + const { token, logout } = useContext(TokenContext); | ||
10 | + return ( | ||
11 | + <Layout className={styles.layout}> | ||
12 | + <Layout.Header className={styles.header}> | ||
13 | + <div className={styles.logo}>KHUDrive</div> | ||
14 | + <Popover | ||
15 | + content={ | ||
16 | + <div> | ||
17 | + {token?.user.name} | ||
18 | + <Button type="link" onClick={logout}> | ||
19 | + 로그아웃 | ||
20 | + </Button> | ||
21 | + </div> | ||
22 | + } | ||
23 | + trigger="click" | ||
24 | + > | ||
25 | + <Button type="text" className={styles.user}> | ||
26 | + <UserOutlined /> | ||
27 | + </Button> | ||
28 | + </Popover> | ||
29 | + </Layout.Header> | ||
30 | + <Layout.Content className={styles.content}>{children}</Layout.Content> | ||
31 | + <Layout.Footer className={styles.footer}> | ||
32 | + © 2020 Cloud Computing Team C | ||
33 | + </Layout.Footer> | ||
34 | + </Layout> | ||
35 | + ); | ||
36 | +} |
frontend/src/util/useApi.ts
0 → 100644
frontend/src/util/usePrevious.ts
0 → 100644
secrets.json
0 → 100644
1 | +{ | ||
2 | + "AWS_SESSION_TOKEN": "", | ||
3 | + "AWS_SECRET_ACCESS_KEY": "secret_key", | ||
4 | + "AWS_ACCESS_KEY_ID": "access_key", | ||
5 | + "AWS_REGION": "us-west-2", | ||
6 | + "AWS_STORAGE_BUCKET_NAME": "bucket", | ||
7 | + "AWS_ENDPOINT_URL": "http://localhost:39000" | ||
8 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment