diff --git a/.dockerignore b/.dockerignore index fb0e71efe..2a0ed8bc5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ */bin/ -*/obj/ */out/ */.vs .vscode diff --git a/containerize_leaf.sh b/containerize_leaf.sh index bba30f42c..ef7fb1ea6 100755 --- a/containerize_leaf.sh +++ b/containerize_leaf.sh @@ -1,3 +1,4 @@ +set -e # Set configurable stuff SA_PASSWORD=Th3PA55--8zz # DB password @@ -15,7 +16,7 @@ if [ -z ${LEAF_JWT_KEY+x} ]; then echo "LEAF_JWT_KEY is unset!" exit; fi if [ -z ${LEAF_JWT_KEY_PW+x} ]; then echo "LEAF_JWT_KEY_PW is unset!" exit; fi # Extract cert/key path from ENVs -KEYS_PATH=`echo $LEAF_JWT_CERT | sed 's/\/cert.pem.*//'` +KEYS_PATH=$(dirname "$LEAF_JWT_CERT") if [ -z ${KEYS_PATH+x} ]; then echo "Couldn't find cert+key path! Are you sure LEAF_JWT_CERT is a valid path?" && exit; fi #-------------- @@ -25,7 +26,7 @@ docker run -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=$SA_PASSWORD" -p 1433:1433 \ -v leaf_sqlvolume:/var/opt/mssql \ --name leaf_db_demo mcr.microsoft.com/mssql/server:2017-latest -sleep 10s +sleep 10 docker_sqlcmd() { path="$1" @@ -36,7 +37,7 @@ docker_sqlcmd() { /opt/mssql-tools/bin/sqlcmd -S 'host.docker.internal' -U SA -P "$SA_PASSWORD" "$@" -i /sql/"$path" } -docker_getDbs(){ +docker_getDbs() { docker run --rm \ -v "$PWD"/src/db/build/:/sql \ mcr.microsoft.com/mssql-tools \ @@ -67,6 +68,7 @@ docker run \ -e "LEAF_APP_DB=Server=$DB_SERVER,1433;Database=LeafDB;uid=sa;Password=$SA_PASSWORD" \ -e "LEAF_CLIN_DB=Server=$DB_SERVER,1433;Database=TestDB;uid=sa;Password=$SA_PASSWORD" \ -e "LEAF_JWT_KEY_PW=$LEAF_JWT_KEY_PW" \ + -e "UnsecuredIsAdmin"="true" \ -p 5001:5001 \ -v ${PWD}/src/server:/app \ -v ${KEYS_PATH}:/.keys \ diff --git a/src/db/build/Dockerfile b/src/db/build/Dockerfile index 6ee4b372f..94727f63d 100644 --- a/src/db/build/Dockerfile +++ b/src/db/build/Dockerfile @@ -1,12 +1,11 @@ -FROM microsoft/mssql-server-linux:2017-latest +FROM mcr.microsoft.com/mssql/server:2017-latest ARG sapw RUN mkdir data # Include schema and initial data -COPY ./LeafDB.sql ./LeafDB.Data.sql ./LeafDB.Exec.sql ./SynPuf_OMOP.Restore.sql ./SynPuf_OMOP.Shrink.sql ./ -COPY ./SynPuf_OMOP.bak ./data/ +COPY ./LeafDB.sql ./LeafDB.Init.sql ./TestDB.sql ./ # Accept EULA ENV ACCEPT_EULA Y @@ -20,10 +19,6 @@ VOLUME /bak # Set up database RUN /opt/mssql/bin/sqlservr & sleep 10 \ && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./LeafDB.sql \ - && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./LeafDB.Data.sql \ - && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./LeafDB.Exec.sql \ - && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./SynPuf_OMOP.Restore.sql \ - && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./SynPuf_OMOP.Shrink.sql \ - && pkill sqlservr - -RUN rm /data/SynPuf_OMOP.bak \ No newline at end of file + && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./LeafDB.Init.sql -d LeafDB \ + && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -i ./TestDB.sql \ + && pkill sqlservr \ No newline at end of file diff --git a/src/db/build/TestDB.sql b/src/db/build/TestDB.sql index 09784c85e..0595a46cb 100644 --- a/src/db/build/TestDB.sql +++ b/src/db/build/TestDB.sql @@ -5,247 +5,4 @@ GO * TestDB */ CREATE DATABASE [TestDB] -GO - -ALTER DATABASE [TestDB] SET RECOVERY SIMPLE -GO - -USE [TestDB] -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [dbo].[person]( - [person_id] [int] NULL, - [age] [int] NULL, - [gender] [nvarchar](20) NULL -) ON [PRIMARY] -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [dbo].[visit_occurrence]( - [person_id] [int] NULL, - [visit_occurrence_id] [int] NULL, - [visit_date] [datetime] NULL, - [visit_type] [nvarchar](10) NULL -) ON [PRIMARY] -GO - -INSERT [dbo].[person] ([person_id], [age], [gender]) VALUES (1, 28, N'F') -GO -INSERT [dbo].[person] ([person_id], [age], [gender]) VALUES (2, 74, N'M') -GO -INSERT [dbo].[person] ([person_id], [age], [gender]) VALUES (3, 55, N'M') -GO -INSERT [dbo].[person] ([person_id], [age], [gender]) VALUES (4, 43, N'F') -GO -INSERT [dbo].[person] ([person_id], [age], [gender]) VALUES (5, 99, N'F') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (1, 100, CAST(N'2020-08-14T00:00:00.000' AS DateTime), N'IP') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (1, 101, CAST(N'2020-09-22T00:00:00.000' AS DateTime), N'OP') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (2, 102, CAST(N'2018-06-01T00:00:00.000' AS DateTime), N'IP') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (2, 103, CAST(N'2018-02-28T00:00:00.000' AS DateTime), N'ED') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (3, 104, CAST(N'2015-01-01T00:00:00.000' AS DateTime), N'OP') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (4, 105, CAST(N'2022-09-19T00:00:00.000' AS DateTime), N'OP') -GO -INSERT [dbo].[visit_occurrence] ([person_id], [visit_occurrence_id], [visit_date], [visit_type]) VALUES (4, 106, CAST(N'2028-01-01T00:00:00.000' AS DateTime), N'IP') -GO - -USE [LeafDB] -GO - - -DECLARE @user NVARCHAR(20) = 'TestDB.sql' -DECLARE @yes BIT = 1 -DECLARE @no BIT = 0 - -INSERT INTO app.ConceptSqlSet (SqlSetFrom, IsEncounterBased, IsEventBased, SqlFieldDate, Created, CreatedBy, Updated, UpdatedBy) -SELECT * -FROM (VALUES ('dbo.person', @no, @no, NULL, GETDATE(), @user, GETDATE(), @user), - ('dbo.visit_occurrence', @yes, @no, '@.visit_date', GETDATE(), @user, GETDATE(), @user) - ) AS X(col1,col2,col3,col4,col5,col6,col7,col8) - -DECLARE @sqlset_person INT = (SELECT TOP 1 Id FROM LeafDB.app.ConceptSqlSet WHERE SqlSetFrom = 'dbo.person') -DECLARE @sqlset_visit_occurrence INT = (SELECT TOP 1 Id FROM LeafDB.app.ConceptSqlSet WHERE SqlSetFrom = 'dbo.visit_occurrence') - -INSERT INTO app.Concept (ExternalId, ExternalParentId, [IsNumeric], IsParent, IsRoot, SqlSetId, SqlSetWhere, - SqlFieldNumeric, UiDisplayName, UiDisplayText, UiDisplayUnits, UiNumericDefaultText, UiDisplayPatientCount) -SELECT ExternalId = 'A' - , ExternalParentId = NULL - , [IsNumeric] = @no - , IsParent = @yes - , IsRoot = @yes - , SqlSetId = @sqlset_person - , SqlSetWhere = NULL - , SqlFieldNumeric = NULL - , UiDisplayName = 'Demographics' - , UiDisplayText = 'Have demographics' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.person) -UNION ALL -SELECT ExternalId = 'A1' - , ExternalParentId = 'A' - , [IsNumeric] = @no - , IsParent = @yes - , IsRoot = @no - , SqlSetId = @sqlset_person - , SqlSetWhere = '@.gender IS NOT NULL' - , SqlFieldNumeric = NULL - , UiDisplayName = 'Gender' - , UiDisplayText = 'Identify with a gender' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.person) -UNION ALL -SELECT ExternalId = 'A11' - , ExternalParentId = 'A1' - , [IsNumeric] = @no - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_person - , SqlSetWhere = '@.gender = ''F''' - , SqlFieldNumeric = NULL - , UiDisplayName = 'Female' - , UiDisplayText = 'Identify as Female' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.person WHERE gender = 'F') -UNION ALL -SELECT ExternalId = 'A12' - , ExternalParentId = 'A1' - , [IsNumeric] = @no - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_person - , SqlSetWhere = '@.gender = ''M''' - , SqlFieldNumeric = NULL - , UiDisplayName = 'Male' - , UiDisplayText = 'Identify as Male' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.person WHERE gender = 'M') -UNION ALL -SELECT ExternalId = 'A2' - , ExternalParentId = 'A' - , [IsNumeric] = @yes - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_person - , SqlSetWhere = '@.age IS NOT NULL' - , SqlFieldNumeric = '@.age' - , UiDisplayName = 'Age' - , UiDisplayText = 'Are currently' - , UiDisplayUnits = 'years of age' - , UiNumericDefaultText = 'any age' - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.person WHERE age IS NOT NULL) -UNION ALL -SELECT ExternalId = 'B' - , ExternalParentId = NULL - , [IsNumeric] = @no - , IsParent = @yes - , IsRoot = @yes - , SqlSetId = @sqlset_visit_occurrence - , SqlSetWhere = NULL - , SqlFieldNumeric = NULL - , UiDisplayName = 'Encounters' - , UiDisplayText = 'Had an encounter' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.visit_occurrence) -UNION ALL -SELECT ExternalId = 'B1' - , ExternalParentId = 'B' - , [IsNumeric] = @no - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_visit_occurrence - , SqlSetWhere = NULL - , SqlFieldNumeric = NULL - , UiDisplayName = 'Inpatient' - , UiDisplayText = 'Had an Inpatient encounter' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.visit_occurrence WHERE visit_type = 'IP') -UNION ALL -SELECT ExternalId = 'B2' - , ExternalParentId = 'B' - , [IsNumeric] = @no - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_visit_occurrence - , SqlSetWhere = NULL - , SqlFieldNumeric = NULL - , UiDisplayName = 'Outpatient' - , UiDisplayText = 'Had an Outpatient encounter' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.visit_occurrence WHERE visit_type = 'OP') -UNION ALL -SELECT ExternalId = 'B3' - , ExternalParentId = 'B' - , [IsNumeric] = @no - , IsParent = @no - , IsRoot = @no - , SqlSetId = @sqlset_visit_occurrence - , SqlSetWhere = NULL - , SqlFieldNumeric = NULL - , UiDisplayName = 'Emergency' - , UiDisplayText = 'Had an Emergency Department encounter' - , UiDisplayUnits = NULL - , UiNumericDefaultText = NULL - , UiDisplayPatientCount = (SELECT COUNT(*) FROM TestDB.dbo.visit_occurrence WHERE visit_type = 'ED') - - - -/** -* Set ParentId based on ExternalIds -*/ -UPDATE LeafDB.app.Concept -SET ParentId = P.Id -FROM LeafDB.app.Concept AS C - INNER JOIN (SELECT P.Id, P.ParentId, P.ExternalId - FROM LeafDB.app.Concept AS P) AS P - ON C.ExternalParentID = P.ExternalID -WHERE C.ParentId IS NULL - -/** -* Set RootIds -*/ -; WITH roots AS -( - SELECT RootId = C.Id - , RootUiDisplayName = C.UiDisplayName - , C.IsRoot - , C.Id - , C.ParentId - , C.UiDisplayName - FROM LeafDB.app.Concept AS C - WHERE C.IsRoot = 1 - UNION ALL - SELECT roots.RootId - , roots.RootUiDisplayName - , C2.IsRoot - , C2.Id - , C2.ParentId - , C2.UiDisplayName - FROM roots - INNER JOIN LeafDB.app.Concept AS C2 - ON C2.ParentId = roots.Id -) -UPDATE LeafDB.app.Concept -SET RootId = roots.RootId -FROM LeafDB.app.Concept AS C - INNER JOIN roots - ON C.Id = roots.Id -WHERE C.RootId IS NULL +GO \ No newline at end of file diff --git a/src/docker-compose.yml b/src/docker-compose.yml new file mode 100644 index 000000000..ca4b9e0aa --- /dev/null +++ b/src/docker-compose.yml @@ -0,0 +1,53 @@ +version: '3' +services: + + db: + build: + context: ./db/build + args: + - sapw=${SA_PASSWORD} + image: leaf_db + container_name: leaf_db_demo + ports: + - 1433:1433 + restart: always + networks: + - leaf + + server: + build: ./server + image: leaf_api + container_name: leaf_api_demo + volumes: + - server-log:/logs + environment: + - LEAF_APP_DB=${LEAF_APP_DB} + - LEAF_CLIN_DB=${LEAF_CLIN_DB} + - LEAF_JWT_KEY_PW=${LEAF_JWT_KEY_PW} + - UnsecuredIsAdmin=${UnsecuredIsAdminProd} + restart: always + networks: + - leaf + depends_on: + - db + + ui-client: + build: + context: ./ui-client + container_name: leaf_ui + ports: + - 80:80 + restart: always + networks: + - leaf + stdin_open: true + depends_on: + - db + - server + +networks: + leaf: + + +volumes: + server-log: diff --git a/src/server/.dockerignore b/src/server/.dockerignore index d1a21ddd4..e69de29bb 100644 --- a/src/server/.dockerignore +++ b/src/server/.dockerignore @@ -1,4 +0,0 @@ -**/bin/ -**/obj/ -out/ -.vs \ No newline at end of file diff --git a/src/server/API/Authorization/UnsecureEntitlementProvider.cs b/src/server/API/Authorization/UnsecureEntitlementProvider.cs index cabb4d760..7f3150e31 100644 --- a/src/server/API/Authorization/UnsecureEntitlementProvider.cs +++ b/src/server/API/Authorization/UnsecureEntitlementProvider.cs @@ -19,9 +19,16 @@ public class UnsecureEntitlementProvider : IFederatedEntitlementProvider { public Entitlement GetEntitlement(HttpContext _, IScopedIdentity __) { + String UnsecuredIsAdmin = Environment.GetEnvironmentVariable("UnsecuredIsAdmin"); + var MyMask = RoleMask.User; + if (UnsecuredIsAdmin == "true") + { + MyMask = RoleMask.User | RoleMask.Admin | RoleMask.Super | RoleMask.Identified | RoleMask.Federated; + }; + return new Entitlement { - Mask = RoleMask.User | RoleMask.Admin | RoleMask.Super | RoleMask.Identified | RoleMask.Federated, + Mask = MyMask, Groups = new string[] { "urn:leaf:localhost:groups:random_group" } }; } diff --git a/src/server/API/appsettings.json b/src/server/API/appsettings.json index ffbbf6e21..400118b71 100644 --- a/src/server/API/appsettings.json +++ b/src/server/API/appsettings.json @@ -59,8 +59,8 @@ }, "Compiler": { "Alias": "@", - "FieldPersonId": "person_id", - "FieldEncounterId": "visit_occurrence_id" + "FieldPersonId": "PID", + "FieldEncounterId": "encounter_id" }, "Cohort": { "RowLimit": 200000, diff --git a/src/server/Dockerfile b/src/server/Dockerfile index de48d7832..a805dd5f2 100644 --- a/src/server/Dockerfile +++ b/src/server/Dockerfile @@ -5,21 +5,11 @@ RUN rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-p && yum -y install util-linux \ && yum -y install vim-minimal \ && yum -y update \ - && yum clean all + && yum clean all -RUN useradd leaf \ - && groupadd leafg \ - && usermod -a -G leafg leaf \ - && mkdir /data/ \ - && chown leaf:leafg /data/ \ - && chmod 775 /data/ - -COPY --chown=leaf:leafg . /data/server/ -RUN chmod 775 /data/server/ - -VOLUME [ "/app", "/.keys", "/logs" ] - -USER leaf +COPY . /app +COPY ./keys /.keys +COPY . /data/server/ # Configure Environment Variables ENV LEAF_JWT_CERT /.keys/cert.pem @@ -29,6 +19,7 @@ ENV ASPNETCORE_URLS=http://0.0.0.0:5001 ENV DOTNET_RUNNING_IN_CONTAINER true ENV DOTNET_USE_POLLING_FILE_WATCHER true ENV NUGET_XMLDOC_MODE skip - +ENV LANG: en_US.UTF-8 + WORKDIR /app/API CMD [ "dotnet", "run" ] \ No newline at end of file diff --git a/src/ui-client/Dockerfile b/src/ui-client/Dockerfile index 13b4b51d9..a68146245 100644 --- a/src/ui-client/Dockerfile +++ b/src/ui-client/Dockerfile @@ -1,21 +1,13 @@ -FROM node:13.12.0-alpine as build-step - -# set working directory -WORKDIR /app - -ENV PATH /app/node_modules/.bin:$PATH - -# install app dependencies -COPY . /app -RUN npm install - -CMD [ "npm", "start" ] - -#COPY build /app/build -#COPY nginx.conf /app - -#FROM nginx:1.17.1-alpine -#EXPOSE 8080 -#COPY --from=build-step /app/build /usr/share/nginx/html -#COPY --from=build-step /app/nginx.conf /etc/nginx/conf.d/default.conf -#CMD [ "nginx", "-g", "daemon off;" ] \ No newline at end of file +FROM nginx:latest +RUN apt update +RUN curl -sL https://deb.nodesource.com/setup_14.x | bash +RUN apt install -y nodejs +RUN npm install -g typescript@latest +RUN mkdir /code +COPY . /code +RUN cd /code && find . && npm install && npm run build + +RUN mkdir /app +RUN cp -R /code/build/* /app/ + +COPY ./nginx.conf /etc/nginx/nginx.conf diff --git a/src/ui-client/Dockerfile-dev b/src/ui-client/Dockerfile-dev new file mode 100644 index 000000000..e63a8adff --- /dev/null +++ b/src/ui-client/Dockerfile-dev @@ -0,0 +1,6 @@ +FROM node:12 +RUN mkdir /app +WORKDIR /app +COPY package.json /app/ +RUN ["npm", "install"] +CMD ["npm","start"] \ No newline at end of file diff --git a/src/ui-client/nginx.conf b/src/ui-client/nginx.conf index 384a60542..aab73895f 100644 --- a/src/ui-client/nginx.conf +++ b/src/ui-client/nginx.conf @@ -1,14 +1,32 @@ -server { - listen 80; - index index.html index.htm; - location /api { - resolver 127.0.0.1; - proxy_set_header X-Forwarded-Host $host; - proxy_set_header X-Forwarded-Server $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_pass http://server:5001/api/$request_uri; - } - location / { - try_files $uri $uri/ =404; +events { +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + + server { + listen 80; + server_name localhost; + root /app; + + location /api { + resolver 127.0.0.11 ipv6=off; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://server:5001$request_uri; + } + + location / { + index index.html; + try_files $uri $uri/ /index.html; + } } } \ No newline at end of file diff --git a/src/ui-client/package-lock.json b/src/ui-client/package-lock.json index 5d3cdf25f..ff0de01b6 100644 --- a/src/ui-client/package-lock.json +++ b/src/ui-client/package-lock.json @@ -1,6 +1,6 @@ { "name": "ui-client", - "version": "3.9.1", + "version": "3.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2677,8 +2677,7 @@ }, "ansi-regex": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "resolved": "" }, "ansi-styles": { "version": "3.2.1", @@ -2934,11 +2933,11 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", + "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "axobject-query": { @@ -11179,9 +11178,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" } } }, @@ -11886,9 +11885,9 @@ } }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "requires": { "boolbase": "^1.0.0" } @@ -13467,9 +13466,9 @@ } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-arraybuffer": { "version": "1.0.1", @@ -13806,9 +13805,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -14821,4 +14820,4 @@ } } } -} +} \ No newline at end of file diff --git a/src/ui-client/package.json b/src/ui-client/package.json index c7078702d..3947e41c5 100644 --- a/src/ui-client/package.json +++ b/src/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "ui-client", - "version": "3.9.1", + "version": "3.10.0", "private": true, "dependencies": { "@types/d3-format": "^1.3.1", @@ -14,7 +14,7 @@ "@types/reactstrap": "^8.0.4", "@types/recharts": "^1.8.5", "@types/shortid": "0.0.29", - "axios": "^0.21.1", + "axios": "^0.21.2", "bootstrap": "^4.3.1", "brace": "^0.11.1", "hoist-non-react-statics": "^3.3.0", @@ -67,11 +67,11 @@ "source-map-loader": "^0.2.4", "typescript": "3.4.3" }, - "proxy": "http://localhost:5001", + "proxy": "http://server:5001/", "browserslist": [ ">0.2%", "not dead", "not ie < 11", "not op_mini all" ] -} +} \ No newline at end of file