From b19053166d4272c6a8a149f43aff404a6ec7fe0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 08:32:38 +0300 Subject: [PATCH 001/149] Bump fastify/github-action-merge-dependabot from 3.6.0 to 3.6.1 (#905) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.6.0 to 3.6.1. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.6.0...v3.6.1) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d60ac39c4..e8a504d70 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.6.0 + - uses: fastify/github-action-merge-dependabot@v3.6.1 with: github-token: ${{secrets.PA_TOKEN}} From 5557ddfc612729df06254d706a13ac80626e74ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 04:46:11 +0300 Subject: [PATCH 002/149] Bump webpack from 5.72.1 to 5.76.0 (#906) Bumps [webpack](https://github.com/webpack/webpack) from 5.72.1 to 5.76.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.72.1...v5.76.0) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 51 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ea8df797..caca87469 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,6 @@ "classnames": "^2.3.1", "codemirror": "^5.65.4", "crypto-browserify": "^3.12.0", - "cypress": "~12.6.0", "formik": "^2.2.6", "icheck-bootstrap": "^3.0.1", "immutable": "^4.0.0-rc.12", @@ -116,7 +115,7 @@ "sass-loader": "^13.0.2", "style-loader": "^3.3.1", "ts-jest": "^28.0.8", - "webpack": "^5.72.1", + "webpack": "^5.76.0", "webpack-bundle-analyzer": "^4.6.1", "webpack-cli": "^4.10.0", "webpack-livereload-plugin": "^3.0.2", @@ -6890,9 +6889,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -16067,9 +16066,9 @@ } }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -16089,9 +16088,9 @@ } }, "node_modules/webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -16099,11 +16098,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -16116,7 +16115,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -21898,9 +21897,9 @@ } }, "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -28683,9 +28682,9 @@ } }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -28699,9 +28698,9 @@ "dev": true }, "webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -28709,11 +28708,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -28726,7 +28725,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { diff --git a/package.json b/package.json index 008613fc3..2c72a9a2a 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "sass-loader": "^13.0.2", "style-loader": "^3.3.1", "ts-jest": "^28.0.8", - "webpack": "^5.72.1", + "webpack": "^5.76.0", "webpack-bundle-analyzer": "^4.6.1", "webpack-cli": "^4.10.0", "webpack-livereload-plugin": "^3.0.2", From 8fbbfcddd541652d70f5098286d15f3fa2774f75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 09:06:46 +0300 Subject: [PATCH 003/149] Bump fastify/github-action-merge-dependabot from 3.6.1 to 3.6.2 (#907) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.6.1 to 3.6.2. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.6.1...v3.6.2) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e8a504d70..ebfb1ccf2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.6.1 + - uses: fastify/github-action-merge-dependabot@v3.6.2 with: github-token: ${{secrets.PA_TOKEN}} From d8c888b6a41e624700d1c62a80613a461504bcb3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 09:06:42 +0300 Subject: [PATCH 004/149] Update pytz requirement from <2020.0,>=2019.1 to >=2019.1,<2024.0 (#912) Updates the requirements on [pytz](https://github.com/stub42/pytz) to permit the latest version. - [Release notes](https://github.com/stub42/pytz/releases) - [Commits](https://github.com/stub42/pytz/compare/release_2019.1...release_2023.2) --- updated-dependencies: - dependency-name: pytz dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1e33dedbe..1f9f4897a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ psycopg2-binary>=2.8.5,<3.0 PyGithub>=1.54.1,<2.0 pypika>=0.48.1,<1.0 python-dateutil>=2.8.0,<3.0 -pytz>=2019.1,<2020.0 +pytz>=2019.1,<2024.0 rest-social-auth>=6.0.0,<7.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 From 7e9f11a2fed14bc7bd1c0e435bc26fb9f5c77d0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 09:01:40 +0300 Subject: [PATCH 005/149] Update rest-social-auth requirement from <7.0,>=6.0.0 to >=6.0.0,<9.0 (#915) Updates the requirements on [rest-social-auth](https://github.com/st4lk/django-rest-social-auth) to permit the latest version. - [Release notes](https://github.com/st4lk/django-rest-social-auth/releases) - [Changelog](https://github.com/st4lk/django-rest-social-auth/blob/master/RELEASE_NOTES.md) - [Commits](https://github.com/st4lk/django-rest-social-auth/compare/v6.0.0...v8.0.0) --- updated-dependencies: - dependency-name: rest-social-auth dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1f9f4897a..a43956634 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,7 @@ PyGithub>=1.54.1,<2.0 pypika>=0.48.1,<1.0 python-dateutil>=2.8.0,<3.0 pytz>=2019.1,<2024.0 -rest-social-auth>=6.0.0,<7.0 +rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 SQLAlchemy>=1.3.2,<2.0 From 2fed85a9393c8440514a78eda18429c5c71afd67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 09:25:12 +0300 Subject: [PATCH 006/149] Update gunicorn requirement from <20.0,>=19.9.0 to >=19.9.0,<21.0 (#822) Updates the requirements on [gunicorn](https://github.com/benoitc/gunicorn) to permit the latest version. - [Release notes](https://github.com/benoitc/gunicorn/releases) - [Commits](https://github.com/benoitc/gunicorn/compare/19.9.0...20.1.0) --- updated-dependencies: - dependency-name: gunicorn dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a43956634..4cc7e9b0c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ django-cors-headers>=3.11.0,<4.0 djangorestframework>=3.11.0,<4.0 django-rest-knox>=4.1.0,<5.0 django-filter>=2.2.0,<3.0 -gunicorn>=19.9.0,<20.0 +gunicorn>=19.9.0,<21.0 importlib-metadata==4.13.0 lxml>=4.6.3,<5.0 markdown>=3.2.2,<4.0 From be700a9cde6c783c67b59383ceadc75e065d1938 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 09:03:06 +0300 Subject: [PATCH 007/149] Update coverage requirement from <5.0,>=4.5.3 to >=4.5.3,<8.0 (#916) Updates the requirements on [coverage](https://github.com/nedbat/coveragepy) to permit the latest version. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/coverage-4.5.3...7.2.2) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4cc7e9b0c..91dac14d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ beautifulsoup4>=4.9.0,<5.0 boto3>=1.14.21,<2.0 -coverage>=4.5.3,<5.0 +coverage>=4.5.3,<8.0 codecov>=2.0.15,<3.0 celery>=4.4.7,<5.0 Django>=3.1.13,<4.0 From df9a2159b727a3d496c42032bb496c2cc0f128be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 09:12:45 +0300 Subject: [PATCH 008/149] Update sqlalchemy requirement from <2.0,>=1.3.2 to >=1.3.2,<3.0 (#917) Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) --- updated-dependencies: - dependency-name: sqlalchemy dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 91dac14d8..a208de6fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,5 +24,5 @@ pytz>=2019.1,<2024.0 rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 -SQLAlchemy>=1.3.2,<2.0 +SQLAlchemy>=1.3.2,<3.0 slack_sdk>=3.13.0,<3.19.6 From c7928313bfaebd6ba514b43c3eefe02558fd6489 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 09:01:43 +0300 Subject: [PATCH 009/149] Update slack-sdk requirement from <3.19.6,>=3.13.0 to >=3.13.0,<3.20.3 (#920) Updates the requirements on [slack-sdk](https://github.com/slackapi/python-slack-sdk) to permit the latest version. - [Release notes](https://github.com/slackapi/python-slack-sdk/releases) - [Changelog](https://github.com/slackapi/python-slack-sdk/blob/main/docs-v2/changelog.html) - [Commits](https://github.com/slackapi/python-slack-sdk/compare/v3.13.0...v3.20.2) --- updated-dependencies: - dependency-name: slack-sdk dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a208de6fb..a02ab5aef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,4 @@ rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 SQLAlchemy>=1.3.2,<3.0 -slack_sdk>=3.13.0,<3.19.6 +slack_sdk>=3.13.0,<3.20.3 From 9064e4492d058b2561228a1ac080391e60435555 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 09:01:08 +0300 Subject: [PATCH 010/149] Update pandas requirement from <2.0,>=1.0.3 to >=1.0.3,<3.0 (#921) Updates the requirements on [pandas](https://github.com/pandas-dev/pandas) to permit the latest version. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/main/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.3...v2.0.0) --- updated-dependencies: - dependency-name: pandas dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a02ab5aef..12c7ba6cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ importlib-metadata==4.13.0 lxml>=4.6.3,<5.0 markdown>=3.2.2,<4.0 numpy>=1.18.4,<2.0 -pandas>=1.0.3,<2.0 +pandas>=1.0.3,<3.0 progressbar2>=3.39.3,<4.0 psycopg2>=2.8.5,<3.0 psycopg2-binary>=2.8.5,<3.0 From 602c3448ed54aab92fabd5ab54ba0b450cb70b4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 09:23:18 +0300 Subject: [PATCH 011/149] Update django-filter requirement from <3.0,>=2.2.0 to >=2.2.0,<24.0 (#911) Updates the requirements on [django-filter](https://github.com/carltongibson/django-filter) to permit the latest version. - [Release notes](https://github.com/carltongibson/django-filter/releases) - [Changelog](https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst) - [Commits](https://github.com/carltongibson/django-filter/compare/2.2.0...23.1) --- updated-dependencies: - dependency-name: django-filter dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 12c7ba6cd..5d6fa19ec 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ Django>=3.1.13,<4.0 django-cors-headers>=3.11.0,<4.0 djangorestframework>=3.11.0,<4.0 django-rest-knox>=4.1.0,<5.0 -django-filter>=2.2.0,<3.0 +django-filter>=2.2.0,<24.0 gunicorn>=19.9.0,<21.0 importlib-metadata==4.13.0 lxml>=4.6.3,<5.0 From 2d05d35f8679a019cc7ac2dd704ee6513bf3c2e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 09:02:46 +0300 Subject: [PATCH 012/149] Update slack-sdk requirement from <3.20.3,>=3.13.0 to >=3.13.0,<3.21.1 (#922) Updates the requirements on [slack-sdk](https://github.com/slackapi/python-slack-sdk) to permit the latest version. - [Release notes](https://github.com/slackapi/python-slack-sdk/releases) - [Changelog](https://github.com/slackapi/python-slack-sdk/blob/main/docs-v2/changelog.html) - [Commits](https://github.com/slackapi/python-slack-sdk/compare/v3.13.0...v3.21.0) --- updated-dependencies: - dependency-name: slack-sdk dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5d6fa19ec..c919d054e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,4 @@ rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 SQLAlchemy>=1.3.2,<3.0 -slack_sdk>=3.13.0,<3.20.3 +slack_sdk>=3.13.0,<3.21.1 From 5801e6b998c55c061d44675194c490c60178c155 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Apr 2023 09:04:48 +0300 Subject: [PATCH 013/149] Bump fastify/github-action-merge-dependabot from 3.6.2 to 3.6.4 (#926) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.6.2 to 3.6.4. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.6.2...v3.6.4) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ebfb1ccf2..457c42c89 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.6.2 + - uses: fastify/github-action-merge-dependabot@v3.6.4 with: github-token: ${{secrets.PA_TOKEN}} From 5b030ed96c9b2a5bdcbe9e6883319c8874fb99ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Apr 2023 09:01:18 +0300 Subject: [PATCH 014/149] Update slack-sdk requirement from <3.21.1,>=3.13.0 to >=3.13.0,<3.21.3 (#930) Updates the requirements on [slack-sdk](https://github.com/slackapi/python-slack-sdk) to permit the latest version. - [Release notes](https://github.com/slackapi/python-slack-sdk/releases) - [Changelog](https://github.com/slackapi/python-slack-sdk/blob/main/docs-v2/changelog.html) - [Commits](https://github.com/slackapi/python-slack-sdk/compare/v3.13.0...v3.21.2) --- updated-dependencies: - dependency-name: slack-sdk dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c919d054e..bc2dca606 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,4 @@ rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 SQLAlchemy>=1.3.2,<3.0 -slack_sdk>=3.13.0,<3.21.1 +slack_sdk>=3.13.0,<3.21.3 From 7239dec9a49f6195276d8a0601263b4e000ae93a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 04:24:14 +0300 Subject: [PATCH 015/149] Bump yaml and postcss-loader (#934) Bumps [yaml](https://github.com/eemeli/yaml) to 2.2.2 and updates ancestor dependency [postcss-loader](https://github.com/webpack-contrib/postcss-loader). These dependencies need to be updated together. Updates `yaml` from 2.2.1 to 2.2.2 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.2.1...v2.2.2) Updates `postcss-loader` from 7.0.0 to 7.2.4 - [Release notes](https://github.com/webpack-contrib/postcss-loader/releases) - [Changelog](https://github.com/webpack-contrib/postcss-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/postcss-loader/compare/v7.0.0...v7.2.4) --- updated-dependencies: - dependency-name: yaml dependency-type: indirect - dependency-name: postcss-loader dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 472 +++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 401 insertions(+), 73 deletions(-) diff --git a/package-lock.json b/package-lock.json index caca87469..df229c303 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,7 +107,7 @@ "jshint": "^2.13.5", "lint-staged": "^13.1.1", "mini-css-extract-plugin": "^2.6.1", - "postcss-loader": "^7.0.0", + "postcss-loader": "^7.2.4", "prettier": "^2.7.1", "react-test-renderer": "^18.1.0", "react-toastify": "^9.0.6", @@ -2159,6 +2159,30 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@cypress/request": { "version": "2.88.10", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", @@ -3649,6 +3673,34 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true, + "peer": true + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -3878,12 +3930,6 @@ "@types/node": "*" } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, "node_modules/@types/parse5": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", @@ -4840,6 +4886,13 @@ ], "optional": true }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "peer": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -6020,19 +6073,55 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "dev": true, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/create-ecdh": { @@ -6074,6 +6163,13 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "peer": true + }, "node_modules/crelt": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", @@ -6665,6 +6761,16 @@ "node": ">=8" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "28.1.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", @@ -11903,9 +12009,9 @@ } }, "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, "engines": { "node": ">= 8" @@ -12171,15 +12277,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/listr2": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", @@ -13489,14 +13586,15 @@ } }, "node_modules/postcss-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.0.tgz", - "integrity": "sha512-IDyttebFzTSY6DI24KuHUcBjbAev1i+RyICoPEWcAstZsj03r533uMXtDn506l6/wlsRYiS5XBdx7TpccCsyUg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.2.4.tgz", + "integrity": "sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w==", "dev": true, "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" + "cosmiconfig": "^8.1.3", + "cosmiconfig-typescript-loader": "^4.3.0", + "klona": "^2.0.6", + "semver": "^7.3.8" }, "engines": { "node": ">= 14.15.0" @@ -13507,13 +13605,23 @@ }, "peerDependencies": { "postcss": "^7.0.0 || ^8.0.1", + "ts-node": ">=10", + "typescript": ">=4", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -15714,6 +15822,73 @@ "node": ">=10" } }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -15971,6 +16146,13 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "peer": true + }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -16633,12 +16815,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { @@ -16678,6 +16860,16 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -18187,6 +18379,29 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "optional": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@cypress/request": { "version": "2.88.10", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", @@ -19338,6 +19553,34 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "peer": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "peer": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "peer": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true, + "peer": true + }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -19559,12 +19802,6 @@ "@types/node": "*" } }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, "@types/parse5": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", @@ -20301,6 +20538,13 @@ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "optional": true }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "peer": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -21204,18 +21448,41 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } } }, + "cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "dev": true, + "requires": {} + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -21257,6 +21524,13 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "peer": true + }, "crelt": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", @@ -21703,6 +21977,13 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "peer": true + }, "diff-sequences": { "version": "28.1.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", @@ -25592,9 +25873,9 @@ "dev": true }, "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true }, "lazy-ass": { @@ -25774,12 +26055,6 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true - }, - "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true } } }, @@ -26767,20 +27042,21 @@ } }, "postcss-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.0.tgz", - "integrity": "sha512-IDyttebFzTSY6DI24KuHUcBjbAev1i+RyICoPEWcAstZsj03r533uMXtDn506l6/wlsRYiS5XBdx7TpccCsyUg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.2.4.tgz", + "integrity": "sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" + "cosmiconfig": "^8.1.3", + "cosmiconfig-typescript-loader": "^4.3.0", + "klona": "^2.0.6", + "semver": "^7.3.8" }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -28399,6 +28675,44 @@ } } }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "peer": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "peer": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "peer": true + } + } + }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -28597,6 +28911,13 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "peer": true + }, "v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -29069,9 +29390,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true }, "yargs": { @@ -29105,6 +29426,13 @@ "fd-slicer": "~1.1.0" } }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "peer": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 2c72a9a2a..1632345e5 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "jshint": "^2.13.5", "lint-staged": "^13.1.1", "mini-css-extract-plugin": "^2.6.1", - "postcss-loader": "^7.0.0", + "postcss-loader": "^7.2.4", "prettier": "^2.7.1", "react-test-renderer": "^18.1.0", "react-toastify": "^9.0.6", From 723a56e6a2a9ed517b516a56e0e39f0ec516f060 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 09:06:27 +0300 Subject: [PATCH 016/149] Bump fastify/github-action-merge-dependabot from 3.6.4 to 3.6.5 (#935) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.6.4 to 3.6.5. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.6.4...v3.6.5) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 457c42c89..b99cc56f4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.6.4 + - uses: fastify/github-action-merge-dependabot@v3.6.5 with: github-token: ${{secrets.PA_TOKEN}} From db6ead7d928d5ebc344692e85934f0179fe6bbe2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 May 2023 09:01:30 +0300 Subject: [PATCH 017/149] Update slack-sdk requirement from <3.21.3,>=3.13.0 to >=3.13.0,<3.21.4 (#936) Updates the requirements on [slack-sdk](https://github.com/slackapi/python-slack-sdk) to permit the latest version. - [Release notes](https://github.com/slackapi/python-slack-sdk/releases) - [Changelog](https://github.com/slackapi/python-slack-sdk/blob/main/docs-v2/changelog.html) - [Commits](https://github.com/slackapi/python-slack-sdk/compare/v3.13.0...v3.21.3) --- updated-dependencies: - dependency-name: slack-sdk dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index bc2dca606..64a6b525c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,4 @@ rest-social-auth>=6.0.0,<9.0 six>=1.12.0,<2.0 soupsieve>=1.9,<2.0 SQLAlchemy>=1.3.2,<3.0 -slack_sdk>=3.13.0,<3.21.3 +slack_sdk>=3.13.0,<3.21.4 From 43fef1e197fb4dc1c32d37ce0909c546dfb77872 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 09:05:37 +0300 Subject: [PATCH 018/149] Bump fastify/github-action-merge-dependabot from 3.6.5 to 3.7.0 (#937) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.6.5 to 3.7.0. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.6.5...v3.7.0) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b99cc56f4..b5aa8cd35 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.6.5 + - uses: fastify/github-action-merge-dependabot@v3.7.0 with: github-token: ${{secrets.PA_TOKEN}} From 7cba320a45f22e394b30e499196d8aa82a1d6325 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 08:20:33 +0300 Subject: [PATCH 019/149] Update django-cors-headers requirement (#938) Updates the requirements on [django-cors-headers](https://github.com/adamchainz/django-cors-headers) to permit the latest version. - [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst) - [Commits](https://github.com/adamchainz/django-cors-headers/compare/3.11.0...4.0.0) --- updated-dependencies: - dependency-name: django-cors-headers dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 64a6b525c..e14f76bcb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ coverage>=4.5.3,<8.0 codecov>=2.0.15,<3.0 celery>=4.4.7,<5.0 Django>=3.1.13,<4.0 -django-cors-headers>=3.11.0,<4.0 +django-cors-headers>=3.11.0,<5.0 djangorestframework>=3.11.0,<4.0 django-rest-knox>=4.1.0,<5.0 django-filter>=2.2.0,<24.0 From 775857a2a97055239a44ebd96f7975de9ddf6544 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 May 2023 09:04:46 +0300 Subject: [PATCH 020/149] Bump fastify/github-action-merge-dependabot from 3.7.0 to 3.8.0 (#942) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.7.0 to 3.8.0. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.7.0...v3.8.0) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b5aa8cd35..ceff3a6c0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.7.0 + - uses: fastify/github-action-merge-dependabot@v3.8.0 with: github-token: ${{secrets.PA_TOKEN}} From 9e939971bc3642dad68e52b38ba2a9a78e018d0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 May 2023 09:20:28 +0300 Subject: [PATCH 021/149] Bump react-redux from 8.0.2 to 8.0.7 (#943) Bumps [react-redux](https://github.com/reduxjs/react-redux) from 8.0.2 to 8.0.7. - [Release notes](https://github.com/reduxjs/react-redux/releases) - [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/react-redux/compare/v8.0.2...v8.0.7) --- updated-dependencies: - dependency-name: react-redux dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 20 ++++++++++++-------- package.json | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index df229c303..b21649d54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "react-dom": "^18.2.0", "react-paginate": "^8.1.3", "react-querybuilder": "^5.3.1", - "react-redux": "^8.0.2", + "react-redux": "^8.0.7", "react-resize-detector": "^7.0.0", "react-router-dom": "^5.3.3", "react-transition-group": "^4.4.5", @@ -14130,9 +14130,9 @@ } }, "node_modules/react-redux": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz", - "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.7.tgz", + "integrity": "sha512-1vRQuCQI5Y2uNmrMXg81RXKiBHY3jBzvCvNmZF437O/Z9/pZ+ba2uYHbemYXb3g8rjsacBGo+/wmfrQKzMhJsg==", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -14142,14 +14142,18 @@ "use-sync-external-store": "^1.0.0" }, "peerDependencies": { + "@reduxjs/toolkit": "^1 || ^2.0.0-beta.0", "@types/react": "^16.8 || ^17.0 || ^18.0", "@types/react-dom": "^16.8 || ^17.0 || ^18.0", "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0", "react-native": ">=0.59", - "redux": "^4" + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@reduxjs/toolkit": { + "optional": true + }, "@types/react": { "optional": true }, @@ -27449,9 +27453,9 @@ } }, "react-redux": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz", - "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.7.tgz", + "integrity": "sha512-1vRQuCQI5Y2uNmrMXg81RXKiBHY3jBzvCvNmZF437O/Z9/pZ+ba2uYHbemYXb3g8rjsacBGo+/wmfrQKzMhJsg==", "requires": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", diff --git a/package.json b/package.json index 1632345e5..813f235a5 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "react-dom": "^18.2.0", "react-paginate": "^8.1.3", "react-querybuilder": "^5.3.1", - "react-redux": "^8.0.2", + "react-redux": "^8.0.7", "react-resize-detector": "^7.0.0", "react-router-dom": "^5.3.3", "react-transition-group": "^4.4.5", From 244513c9cc948cac93510716a20065b959497893 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 09:01:39 +0300 Subject: [PATCH 022/149] Bump jest-styled-components from 7.0.8 to 7.1.1 (#944) Bumps [jest-styled-components](https://github.com/styled-components/jest-styled-components) from 7.0.8 to 7.1.1. - [Release notes](https://github.com/styled-components/jest-styled-components/releases) - [Changelog](https://github.com/styled-components/jest-styled-components/blob/main/CHANGELOG.md) - [Commits](https://github.com/styled-components/jest-styled-components/compare/v7.0.8...v7.1.1) --- updated-dependencies: - dependency-name: jest-styled-components dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 79 ++++++----------------------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index b21649d54..fda47d8b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.1", - "jest-styled-components": "^7.0.8", + "jest-styled-components": "^7.1.1", "jquery-extendext": "^1.0.0", "jQuery-QueryBuilder": "^2.6.0", "jshint": "^2.13.5", @@ -5035,18 +5035,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -6209,17 +6197,6 @@ "node": "*" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "node_modules/css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -11325,12 +11302,12 @@ } }, "node_modules/jest-styled-components": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.0.8.tgz", - "integrity": "sha512-0KE54d0yIzKcvtOv8eikyjG3rFRtKYUyQovaoha3nondtZzXYGB3bhsvYgEegU08Iry0ndWx2+g9f5ZzD4I+0Q==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.1.1.tgz", + "integrity": "sha512-OUq31R5CivBF8oy81dnegNQrRW13TugMol/Dz6ZnFfEyo03exLASod7YGwyHGuayYlKmCstPtz0RQ1+NrAbIIA==", "dev": true, "dependencies": { - "css": "^3.0.0" + "@adobe/css-tools": "^4.0.1" }, "engines": { "node": ">= 12" @@ -15008,17 +14985,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -20660,12 +20626,6 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "optional": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -21568,17 +21528,6 @@ "randomfill": "^1.0.3" } }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -25363,12 +25312,12 @@ } }, "jest-styled-components": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.0.8.tgz", - "integrity": "sha512-0KE54d0yIzKcvtOv8eikyjG3rFRtKYUyQovaoha3nondtZzXYGB3bhsvYgEegU08Iry0ndWx2+g9f5ZzD4I+0Q==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/jest-styled-components/-/jest-styled-components-7.1.1.tgz", + "integrity": "sha512-OUq31R5CivBF8oy81dnegNQrRW13TugMol/Dz6ZnFfEyo03exLASod7YGwyHGuayYlKmCstPtz0RQ1+NrAbIIA==", "dev": true, "requires": { - "css": "^3.0.0" + "@adobe/css-tools": "^4.0.1" } }, "jest-util": { @@ -28086,16 +28035,6 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", diff --git a/package.json b/package.json index 813f235a5..a7da2d94e 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.1", - "jest-styled-components": "^7.0.8", + "jest-styled-components": "^7.1.1", "jquery-extendext": "^1.0.0", "jQuery-QueryBuilder": "^2.6.0", "jshint": "^2.13.5", From 89b478d7826156cdc5c099848c3b58e59b145cdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jun 2023 09:07:50 +0300 Subject: [PATCH 023/149] Bump fastify/github-action-merge-dependabot from 3.8.0 to 3.9.0 (#951) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.8.0 to 3.9.0. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.8.0...v3.9.0) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ceff3a6c0..0b2639240 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.8.0 + - uses: fastify/github-action-merge-dependabot@v3.9.0 with: github-token: ${{secrets.PA_TOKEN}} From b29c257241abb48b404d722f386e1972472746ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:50:27 -0700 Subject: [PATCH 024/149] Update gunicorn requirement from <21.0,>=19.9.0 to >=19.9.0,<22.0 (#960) Updates the requirements on [gunicorn](https://github.com/benoitc/gunicorn) to permit the latest version. - [Release notes](https://github.com/benoitc/gunicorn/releases) - [Commits](https://github.com/benoitc/gunicorn/compare/19.9.0...21.0.1) --- updated-dependencies: - dependency-name: gunicorn dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e14f76bcb..80433ba91 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ django-cors-headers>=3.11.0,<5.0 djangorestframework>=3.11.0,<4.0 django-rest-knox>=4.1.0,<5.0 django-filter>=2.2.0,<24.0 -gunicorn>=19.9.0,<21.0 +gunicorn>=19.9.0,<22.0 importlib-metadata==4.13.0 lxml>=4.6.3,<5.0 markdown>=3.2.2,<4.0 From 673f6d9f5f760a0859b1d0549a9f26b5156554ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 22:16:55 -0700 Subject: [PATCH 025/149] Bump word-wrap from 1.2.3 to 1.2.4 (#961) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index fda47d8b5..5b907bdeb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16659,9 +16659,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "engines": { "node": ">=0.10.0" } @@ -29246,9 +29246,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==" }, "wrap-ansi": { "version": "7.0.0", From 4ecec4e30482a7573f660831f3a750196b9d2b4a Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 20 Jul 2023 14:07:47 +0300 Subject: [PATCH 026/149] Use an environment variable for a dynamic API base URL --- frontend/src/config.ts | 5 ++++ frontend/src/utils/api.ts | 56 ++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 frontend/src/config.ts diff --git a/frontend/src/config.ts b/frontend/src/config.ts new file mode 100644 index 000000000..d62055a05 --- /dev/null +++ b/frontend/src/config.ts @@ -0,0 +1,5 @@ +const config: { BASE_URL: string } = { + BASE_URL: 'http://localhost/', +}; + +export default config; diff --git a/frontend/src/utils/api.ts b/frontend/src/utils/api.ts index dabbb8348..443c0cbde 100644 --- a/frontend/src/utils/api.ts +++ b/frontend/src/utils/api.ts @@ -1,31 +1,33 @@ +import config from '../config'; + export const api = { routes: { - LOGIN: '/api/auth/login/', - LOGOUT: '/api/auth/logout/', - USERS: '/api/users/', - SOURCES: '/api/sources/', - DATASETS: '/api/datasets/', - MY_DATASETS: '/api/datasets/mine/', - FETCH_DATASET_HISTORY: '/api/dataset/history/', - SINGLE_DATASET: '/api/dataset/', - DATASET_ALIAS: '/api/dataset/alias/', - PREVIEW_SINGLE_DATASET: '/api/dataset/preview/', - EXPORT: '/api/export/', - CHANGE_PASSWORD: '/api/change_password/', - VIEW_SCHEDULED_EVENTS: '/api/scheduled_event/', - FETCH_RUN_INSTANCES: '/api/scheduled_event/{id}/run_instances/', - CREATE_SCHEDULED_INSTANCE: '/api/scheduled_event/{scheduleId}/run_instances/', - UPDATE_TABLE: '/api/tables/update/', - DOWNLOAD_TABLE: '/api/tables/download/', - FETCH_SOURCE_DATASETS: '/api/source/datasets/', - FETCH_MY_SOURCE_DATASETS: '/api/source/datasets/mine/', - FETCH_SOURCE_HISTORY: '/api/source/history/', - FROZEN_DATA: '/api/frozendata/', - DOWNLOAD_FROZEN_DATA: '/api/tables/download/{table}/archives/', - SAVED_QUERYSETS: '/api/savedquerysets/', - SINGLE_SAVED_QUERYSET: '/api/savedqueryset/', - DOWNLOAD_SAVED_QUERYSET: '/api/tables/download/{table}/dataset/', - FETCH_OPERATION: '/api/operations/{id}', - DATASET_QUERY: '/api/dataset/query/', + LOGIN: `${config.BASE_URL}/api/auth/login/`, + LOGOUT: `${config.BASE_URL}/api/auth/logout/`, + USERS: `${config.BASE_URL}/api/users/`, + SOURCES: `${config.BASE_URL}/api/sources/`, + DATASETS: `${config.BASE_URL}/api/datasets/`, + MY_DATASETS: `${config.BASE_URL}/api/datasets/mine/`, + FETCH_DATASET_HISTORY: `${config.BASE_URL}/api/dataset/history/`, + SINGLE_DATASET: `${config.BASE_URL}/api/dataset/`, + DATASET_ALIAS: `${config.BASE_URL}/api/dataset/alias/`, + PREVIEW_SINGLE_DATASET: `${config.BASE_URL}/api/dataset/preview/`, + EXPORT: `${config.BASE_URL}/api/export/`, + CHANGE_PASSWORD: `${config.BASE_URL}/api/change_password/`, + VIEW_SCHEDULED_EVENTS: `${config.BASE_URL}/api/scheduled_event/`, + FETCH_RUN_INSTANCES: `${config.BASE_URL}/api/scheduled_event/{id}/run_instances/`, + CREATE_SCHEDULED_INSTANCE: `${config.BASE_URL}/api/scheduled_event/{scheduleId}/run_instances/`, + UPDATE_TABLE: `${config.BASE_URL}/api/tables/update/`, + DOWNLOAD_TABLE: `${config.BASE_URL}/api/tables/download/`, + FETCH_SOURCE_DATASETS: `${config.BASE_URL}/api/source/datasets/`, + FETCH_MY_SOURCE_DATASETS: `${config.BASE_URL}/api/source/datasets/mine/`, + FETCH_SOURCE_HISTORY: `${config.BASE_URL}/api/source/history/`, + FROZEN_DATA: `${config.BASE_URL}/api/frozendata/`, + DOWNLOAD_FROZEN_DATA: `${config.BASE_URL}/api/tables/download/{table}/archives/`, + SAVED_QUERYSETS: `${config.BASE_URL}/api/savedquerysets/`, + SINGLE_SAVED_QUERYSET: `${config.BASE_URL}/api/savedqueryset/`, + DOWNLOAD_SAVED_QUERYSET: `${config.BASE_URL}/api/tables/download/{table}/dataset/`, + FETCH_OPERATION: `${config.BASE_URL}/api/operations/{id}`, + DATASET_QUERY: `${config.BASE_URL}/api/dataset/query/`, }, }; From 332cd3ac1e35739d1efdf74acddcd209a60278c7 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Tue, 25 Jul 2023 14:40:46 +0300 Subject: [PATCH 027/149] Create axios config instance --- frontend/src/config.ts | 10 +++-- frontend/src/utils/api.ts | 56 ++++++++++++++-------------- package-lock.json | 77 +++++++++++++++++++++++++++++++++++++++ package.json | 2 + webpack.config.js | 2 + 5 files changed, 114 insertions(+), 33 deletions(-) diff --git a/frontend/src/config.ts b/frontend/src/config.ts index d62055a05..5d6193e36 100644 --- a/frontend/src/config.ts +++ b/frontend/src/config.ts @@ -1,5 +1,7 @@ -const config: { BASE_URL: string } = { - BASE_URL: 'http://localhost/', -}; +import axios from 'axios'; -export default config; +const axiosConfig = axios.create({ + baseURL: process.env.BASE_URL, +}); + +export default axiosConfig; diff --git a/frontend/src/utils/api.ts b/frontend/src/utils/api.ts index 443c0cbde..dabbb8348 100644 --- a/frontend/src/utils/api.ts +++ b/frontend/src/utils/api.ts @@ -1,33 +1,31 @@ -import config from '../config'; - export const api = { routes: { - LOGIN: `${config.BASE_URL}/api/auth/login/`, - LOGOUT: `${config.BASE_URL}/api/auth/logout/`, - USERS: `${config.BASE_URL}/api/users/`, - SOURCES: `${config.BASE_URL}/api/sources/`, - DATASETS: `${config.BASE_URL}/api/datasets/`, - MY_DATASETS: `${config.BASE_URL}/api/datasets/mine/`, - FETCH_DATASET_HISTORY: `${config.BASE_URL}/api/dataset/history/`, - SINGLE_DATASET: `${config.BASE_URL}/api/dataset/`, - DATASET_ALIAS: `${config.BASE_URL}/api/dataset/alias/`, - PREVIEW_SINGLE_DATASET: `${config.BASE_URL}/api/dataset/preview/`, - EXPORT: `${config.BASE_URL}/api/export/`, - CHANGE_PASSWORD: `${config.BASE_URL}/api/change_password/`, - VIEW_SCHEDULED_EVENTS: `${config.BASE_URL}/api/scheduled_event/`, - FETCH_RUN_INSTANCES: `${config.BASE_URL}/api/scheduled_event/{id}/run_instances/`, - CREATE_SCHEDULED_INSTANCE: `${config.BASE_URL}/api/scheduled_event/{scheduleId}/run_instances/`, - UPDATE_TABLE: `${config.BASE_URL}/api/tables/update/`, - DOWNLOAD_TABLE: `${config.BASE_URL}/api/tables/download/`, - FETCH_SOURCE_DATASETS: `${config.BASE_URL}/api/source/datasets/`, - FETCH_MY_SOURCE_DATASETS: `${config.BASE_URL}/api/source/datasets/mine/`, - FETCH_SOURCE_HISTORY: `${config.BASE_URL}/api/source/history/`, - FROZEN_DATA: `${config.BASE_URL}/api/frozendata/`, - DOWNLOAD_FROZEN_DATA: `${config.BASE_URL}/api/tables/download/{table}/archives/`, - SAVED_QUERYSETS: `${config.BASE_URL}/api/savedquerysets/`, - SINGLE_SAVED_QUERYSET: `${config.BASE_URL}/api/savedqueryset/`, - DOWNLOAD_SAVED_QUERYSET: `${config.BASE_URL}/api/tables/download/{table}/dataset/`, - FETCH_OPERATION: `${config.BASE_URL}/api/operations/{id}`, - DATASET_QUERY: `${config.BASE_URL}/api/dataset/query/`, + LOGIN: '/api/auth/login/', + LOGOUT: '/api/auth/logout/', + USERS: '/api/users/', + SOURCES: '/api/sources/', + DATASETS: '/api/datasets/', + MY_DATASETS: '/api/datasets/mine/', + FETCH_DATASET_HISTORY: '/api/dataset/history/', + SINGLE_DATASET: '/api/dataset/', + DATASET_ALIAS: '/api/dataset/alias/', + PREVIEW_SINGLE_DATASET: '/api/dataset/preview/', + EXPORT: '/api/export/', + CHANGE_PASSWORD: '/api/change_password/', + VIEW_SCHEDULED_EVENTS: '/api/scheduled_event/', + FETCH_RUN_INSTANCES: '/api/scheduled_event/{id}/run_instances/', + CREATE_SCHEDULED_INSTANCE: '/api/scheduled_event/{scheduleId}/run_instances/', + UPDATE_TABLE: '/api/tables/update/', + DOWNLOAD_TABLE: '/api/tables/download/', + FETCH_SOURCE_DATASETS: '/api/source/datasets/', + FETCH_MY_SOURCE_DATASETS: '/api/source/datasets/mine/', + FETCH_SOURCE_HISTORY: '/api/source/history/', + FROZEN_DATA: '/api/frozendata/', + DOWNLOAD_FROZEN_DATA: '/api/tables/download/{table}/archives/', + SAVED_QUERYSETS: '/api/savedquerysets/', + SINGLE_SAVED_QUERYSET: '/api/savedqueryset/', + DOWNLOAD_SAVED_QUERYSET: '/api/tables/download/{table}/dataset/', + FETCH_OPERATION: '/api/operations/{id}', + DATASET_QUERY: '/api/dataset/query/', }, }; diff --git a/package-lock.json b/package-lock.json index 5b907bdeb..27c6d7033 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "classnames": "^2.3.1", "codemirror": "^5.65.4", "crypto-browserify": "^3.12.0", + "dotenv": "^16.3.1", "formik": "^2.2.6", "icheck-bootstrap": "^3.0.1", "immutable": "^4.0.0-rc.12", @@ -89,6 +90,7 @@ "core-js": "^3.22.6", "css-loader": "^6.7.3", "dot": "^1.1.3", + "dotenv-webpack": "^8.0.1", "eslint": "^7.30.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^3.4.0", @@ -6889,6 +6891,50 @@ "dottojs": "bin/dot-packer" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "dependencies": { + "dotenv": "^8.2.0" + } + }, + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-webpack": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz", + "integrity": "sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w==", + "dev": true, + "dependencies": { + "dotenv-defaults": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -22055,6 +22101,37 @@ "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==", "dev": true }, + "dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" + }, + "dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "requires": { + "dotenv": "^8.2.0" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + } + } + }, + "dotenv-webpack": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz", + "integrity": "sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w==", + "dev": true, + "requires": { + "dotenv-defaults": "^2.0.2" + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", diff --git a/package.json b/package.json index a7da2d94e..9559eeb3e 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "core-js": "^3.22.6", "css-loader": "^6.7.3", "dot": "^1.1.3", + "dotenv-webpack": "^8.0.1", "eslint": "^7.30.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^3.4.0", @@ -125,6 +126,7 @@ "classnames": "^2.3.1", "codemirror": "^5.65.4", "crypto-browserify": "^3.12.0", + "dotenv": "^16.3.1", "formik": "^2.2.6", "icheck-bootstrap": "^3.0.1", "immutable": "^4.0.0-rc.12", diff --git a/webpack.config.js b/webpack.config.js index 203fd5c56..bd6e66b60 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,6 +3,7 @@ const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const LiveReloadPlugin = require('webpack-livereload-plugin'); +const Dotenv = require('dotenv-webpack'); module.exports = { mode: 'development', @@ -42,5 +43,6 @@ module.exports = { }), // new BundleAnalyzerPlugin(), new LiveReloadPlugin(), + new Dotenv(), ], }; From 5b60742ffa1a983c9985471d08f00113f2ad562e Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 26 Jul 2023 16:05:43 +0300 Subject: [PATCH 028/149] Replace axios references with axiosConfig --- .../components/AccountModal/AccountModal.tsx | 5 +++-- .../OperationDataTable/OperationDataTable.tsx | 5 +++-- .../utils/index.ts | 6 +++--- .../ScheduledEventsTableCard/utils/index.ts | 4 ++-- .../ScheduledEventsTableRow/utils/index.ts | 4 ++-- frontend/src/layouts/MainLayout.tsx | 7 ++++--- .../AdvancedQueryBuilder/utils/operations.ts | 6 +++--- .../pages/DataSourceQueries/utils/index.ts | 4 ++-- .../src/pages/QueryBuilder/QueryBuilder.tsx | 5 +++-- frontend/src/pages/QueryData/utils/index.ts | 4 ++-- frontend/src/sagas/operations.ts | 9 +++++---- frontend/src/sagas/sources.ts | 7 ++++--- frontend/src/utils/cache/operation.ts | 4 ++-- frontend/src/utils/history.ts | 19 ++++++++++--------- frontend/src/utils/hooks/operations.ts | 13 +++++++------ frontend/src/utils/hooks/sources.ts | 7 ++++--- frontend/src/utils/update.ts | 5 +++-- 17 files changed, 62 insertions(+), 52 deletions(-) diff --git a/frontend/src/components/AccountModal/AccountModal.tsx b/frontend/src/components/AccountModal/AccountModal.tsx index 41aea99a8..e64713d97 100644 --- a/frontend/src/components/AccountModal/AccountModal.tsx +++ b/frontend/src/components/AccountModal/AccountModal.tsx @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import * as React from 'react'; import { Alert, Modal } from 'react-bootstrap'; import { connect, MapDispatchToProps } from 'react-redux'; @@ -8,6 +8,7 @@ import { TokenState } from '../../reducers/token'; import { ReduxStore } from '../../store'; import { api } from '../../utils'; import { ChangePasswordFields, ChangePasswordForm } from '../ChangePasswordForm'; +import axiosConfig from '../../config'; interface ActionProps { actions: typeof ModalActions; } @@ -27,7 +28,7 @@ const AccountModal: React.FC = (props) => { const onSuccess = (values: ChangePasswordFields) => { const { token } = props; if (token) { - axios + axiosConfig .request({ url: api.routes.CHANGE_PASSWORD, method: 'post', diff --git a/frontend/src/components/OperationDataTable/OperationDataTable.tsx b/frontend/src/components/OperationDataTable/OperationDataTable.tsx index 067a932ee..0ec7dc6e5 100644 --- a/frontend/src/components/OperationDataTable/OperationDataTable.tsx +++ b/frontend/src/components/OperationDataTable/OperationDataTable.tsx @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import { List } from 'immutable'; import * as localForage from 'localforage'; import React, { FunctionComponent, KeyboardEvent, useEffect, useState } from 'react'; @@ -8,6 +8,7 @@ import { OperationDataMap } from '../../types/operations'; import { OperationColumn } from '../../types/sources'; import { api, formatString, localForageKeys } from '../../utils'; import { BasicModal, ModalMessage } from '../BasicModal'; +import axiosConfig from '../../config'; interface OperationDataTableProps { list: List; @@ -69,7 +70,7 @@ export const OperationDataTable: FunctionComponent = ({ if (event.key.toLowerCase() === 'enter') { const alias = event.currentTarget.value; localForage.getItem(localForageKeys.API_KEY).then((token) => { - axios + axiosConfig .request({ url: `${api.routes.DATASET_ALIAS}${column.id}/`, method: 'put', diff --git a/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts b/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts index 870dd27c2..4b75dd5d5 100644 --- a/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts +++ b/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts @@ -1,8 +1,8 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import { RunInstanceStatus } from '../../../pages/ScheduledEvents'; import { ScheduledEventRunHistory } from '../../../types/scheduledEvents'; import { api, localForageKeys } from '../../../utils'; +import axiosConfig from '../../../config'; export const LIMIT = 10; const BASEPATH = api.routes.FETCH_RUN_INSTANCES; @@ -16,7 +16,7 @@ export const fetchScheduledEventRunHistory = async ( Authorization: `token ${token}`, }; - return await axios(`${BASEPATH.replace('{id}', eventId.toString())}`, { headers }); + return await axiosConfig(`${BASEPATH.replace('{id}', eventId.toString())}`, { headers }); }; export const fetchDataPerPage = async ( @@ -37,7 +37,7 @@ export const fetchDataPerPage = async ( }; const offset = currentPage === 1 ? 0 : (currentPage - 1) * limit; - return await axios( + return await axiosConfig( `${BASEPATH.replace( '{id}', eventId.toString(), diff --git a/frontend/src/components/ScheduledEventsTableCard/utils/index.ts b/frontend/src/components/ScheduledEventsTableCard/utils/index.ts index fc67000c5..358327571 100644 --- a/frontend/src/components/ScheduledEventsTableCard/utils/index.ts +++ b/frontend/src/components/ScheduledEventsTableCard/utils/index.ts @@ -1,7 +1,7 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import { ScheduledEvent } from '../../../types/scheduledEvents'; import { api, localForageKeys } from '../../../utils'; +import axiosConfig from '../../../config'; const BASEPATH = api.routes.VIEW_SCHEDULED_EVENTS; @@ -23,5 +23,5 @@ export const fetchDataPerPage = async ( }; const offset = currentPage === 1 ? 0 : (currentPage - 1) * limit; - return await axios(`${BASEPATH}?limit=${limit}&offset=${offset}`, { headers }); + return await axiosConfig(`${BASEPATH}?limit=${limit}&offset=${offset}`, { headers }); }; diff --git a/frontend/src/components/ScheduledEventsTableRow/utils/index.ts b/frontend/src/components/ScheduledEventsTableRow/utils/index.ts index dd6120514..a44036a67 100644 --- a/frontend/src/components/ScheduledEventsTableRow/utils/index.ts +++ b/frontend/src/components/ScheduledEventsTableRow/utils/index.ts @@ -1,7 +1,7 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import { Moment } from 'moment'; import { api, localForageKeys } from '../../../utils'; +import axiosConfig from '../../../config'; interface RunInstancePayload { start_at: Moment; @@ -33,7 +33,7 @@ export const createRunInstance = async ( ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - return await axios.request({ + return await axiosConfig.request({ url: api.routes.CREATE_SCHEDULED_INSTANCE.replace('{scheduleId}', `${scheduleId}`), method: 'post', headers: { diff --git a/frontend/src/layouts/MainLayout.tsx b/frontend/src/layouts/MainLayout.tsx index c20404cb9..d2c2bfc29 100644 --- a/frontend/src/layouts/MainLayout.tsx +++ b/frontend/src/layouts/MainLayout.tsx @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import React, { ReactElement } from 'react'; import { Dropdown, Modal, Nav, Navbar } from 'react-bootstrap'; @@ -33,6 +33,7 @@ import { User, UserState } from '../reducers/user'; import { ReduxStore } from '../store'; import { OperationMap } from '../types/operations'; import { api, localForageKeys } from '../utils'; +import axiosConfig from '../config'; interface ActionProps { actions: typeof UserActions & typeof TokenActions & typeof ModalActions; } @@ -336,7 +337,7 @@ class MainLayout extends React.Component { .getItem(localForageKeys.API_KEY) .then((token) => { if (token) { - axios + axiosConfig .request({ url: api.routes.LOGOUT, method: 'post', @@ -367,7 +368,7 @@ class MainLayout extends React.Component { }; private validateToken(token: string, user: User): void { - axios + axiosConfig .request({ url: `${api.routes.USERS}${user.id}/`, method: 'get', diff --git a/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts b/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts index 3fd8380a8..886ac0fe6 100644 --- a/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts +++ b/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts @@ -1,7 +1,7 @@ -import axios from 'axios'; import { Operation, OperationMap } from '../../../types/operations'; import { api } from '../../../utils'; import { clearOperationsCache } from '../../../utils/cache'; +import axiosConfig from '../../../config'; export const saveOperation = async (operation: OperationMap, token: string): Promise => { if (!operation) { @@ -10,7 +10,7 @@ export const saveOperation = async (operation: OperationMap, token: string): Pro const id = operation.get('id'); const url = id ? `${api.routes.SINGLE_DATASET}${id}/` : api.routes.DATASETS; const data: Operation = operation.toJS() as unknown as Operation; - const response = await axios.request({ + const response = await axiosConfig.request({ url, method: id ? 'put' : 'post', headers: { @@ -27,7 +27,7 @@ export const saveOperation = async (operation: OperationMap, token: string): Pro }; export const deleteOperation = async (operationID: string, token: string): Promise => { - const response = await axios.request({ + const response = await axiosConfig.request({ url: `${api.routes.SINGLE_DATASET}${operationID}/`, method: 'delete', headers: { diff --git a/frontend/src/pages/DataSourceQueries/utils/index.ts b/frontend/src/pages/DataSourceQueries/utils/index.ts index 2112736e5..3d51227be 100644 --- a/frontend/src/pages/DataSourceQueries/utils/index.ts +++ b/frontend/src/pages/DataSourceQueries/utils/index.ts @@ -1,6 +1,6 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import { api, localForageKeys } from '../../../utils'; +import axiosConfig from '../../../config'; const BASEPATH = api.routes.FETCH_SOURCE_DATASETS; @@ -23,5 +23,5 @@ export const fetchQueriesOnDataset = async (id: number): Promise => Authorization: `token ${token}`, }; - return await axios(`${BASEPATH}${id}`, { headers }); + return await axiosConfig(`${BASEPATH}${id}`, { headers }); }; diff --git a/frontend/src/pages/QueryBuilder/QueryBuilder.tsx b/frontend/src/pages/QueryBuilder/QueryBuilder.tsx index 1750d5cc4..3db2ccc8e 100644 --- a/frontend/src/pages/QueryBuilder/QueryBuilder.tsx +++ b/frontend/src/pages/QueryBuilder/QueryBuilder.tsx @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import classNames from 'classnames'; import { fromJS, List, Map } from 'immutable'; import React, { FunctionComponent, useEffect, useState } from 'react'; @@ -31,6 +31,7 @@ import { fetchOperationDataPreview } from '../../utils/hooks/operations'; import * as pageActions from './actions'; import './QueryBuilder.scss'; import { queryBuilderReducerId, QueryBuilderState } from './reducers'; +import axiosConfig from '../../config'; interface ActionProps { actions: typeof sourcesActions & @@ -204,7 +205,7 @@ const QueryBuilder: FunctionComponent = (props) => { operation_steps: updatedSteps.toJS() as unknown as List, }; if (props.token) { - axios + axiosConfig .request({ url, method: id ? 'put' : 'post', diff --git a/frontend/src/pages/QueryData/utils/index.ts b/frontend/src/pages/QueryData/utils/index.ts index 1ef004bf0..3c797c8a3 100644 --- a/frontend/src/pages/QueryData/utils/index.ts +++ b/frontend/src/pages/QueryData/utils/index.ts @@ -1,7 +1,7 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import { api, localForageKeys } from '../../../utils'; import moment from 'moment'; +import axiosConfig from '../../../config'; const BASEPATH = api.routes.FETCH_OPERATION; @@ -24,7 +24,7 @@ export const fetchOperationById = async (id: number): Promise => { Authorization: `token ${token}`, }; - return await axios(`${BASEPATH.replace('{id}', id.toString())}`, { headers }); + return await axiosConfig(`${BASEPATH.replace('{id}', id.toString())}`, { headers }); }; export const isCacheExpired = async (id: number): Promise => { diff --git a/frontend/src/sagas/operations.ts b/frontend/src/sagas/operations.ts index ee80ba9e8..c3ae1678f 100644 --- a/frontend/src/sagas/operations.ts +++ b/frontend/src/sagas/operations.ts @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import { DELETE_OPERATION, FETCH_OPERATION, @@ -23,6 +23,7 @@ import { } from '../actions/operations'; import { fetchActiveSource } from '../actions/sources'; import { isOperationsCacheExpired } from '../utils/cache'; +import axiosConfig from '../config'; function* fetchOperations({ payload }: OperationsAction) { try { @@ -57,7 +58,7 @@ function* fetchOperations({ payload }: OperationsAction) { if (fetch) { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse> = yield axios + const { status, data }: AxiosResponse> = yield axiosConfig .request({ url: payload.link || @@ -98,7 +99,7 @@ function* fetchOperations({ payload }: OperationsAction) { function* fetchOperation({ payload }: OperationsAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = yield axios + const { status, data }: AxiosResponse = yield axiosConfig .request({ url: `${api.routes.SINGLE_DATASET}${payload.id}/`, method: 'get', @@ -131,7 +132,7 @@ function* fetchOperation({ payload }: OperationsAction) { function* deleteOperation({ payload }: OperationsAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status }: AxiosResponse = yield axios + const { status }: AxiosResponse = yield axiosConfig .request({ url: `${api.routes.SINGLE_DATASET}${payload.id}/`, method: 'delete', diff --git a/frontend/src/sagas/sources.ts b/frontend/src/sagas/sources.ts index cc13f2478..5c0dcceb3 100644 --- a/frontend/src/sagas/sources.ts +++ b/frontend/src/sagas/sources.ts @@ -1,5 +1,5 @@ import { SET_ACTIVE_SOURCE } from '../pages/DataSources/reducers'; -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import { put, takeLatest } from 'redux-saga/effects'; import 'regenerator-runtime/runtime'; @@ -16,12 +16,13 @@ import { Source, SourceMap } from '../types/sources'; import { api, localForageKeys } from '../utils'; import { setToken } from '../actions/token'; import { setActiveSource } from '../actions/sources'; +import axiosConfig from '../config'; function* fetchSources({ payload }: SourcesAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); const url = `${api.routes.SOURCES}?limit=${payload.limit}&offset=${payload.offset}&search=${payload.search}&frozen=${payload.frozen}`; - const { status, data }: AxiosResponse> = yield axios + const { status, data }: AxiosResponse> = yield axiosConfig .request({ url: payload.link || url, method: 'get', @@ -61,7 +62,7 @@ function* fetchSource({ payload }: SourcesAction) { } try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse> = yield axios + const { status, data }: AxiosResponse> = yield axiosConfig .request({ url: `${api.routes.SOURCES}${sourceId}/`, method: 'get', diff --git a/frontend/src/utils/cache/operation.ts b/frontend/src/utils/cache/operation.ts index d02c372bc..6dec8f364 100644 --- a/frontend/src/utils/cache/operation.ts +++ b/frontend/src/utils/cache/operation.ts @@ -1,4 +1,3 @@ -import axios from 'axios'; import * as localForage from 'localforage'; import moment from 'moment'; import { localForageKeys } from '..'; @@ -6,6 +5,7 @@ import { fetchOperationById } from '../../pages/QueryData/utils'; import { FetchOptions } from '../../types/api'; import { OperationData } from '../../types/operations'; import { OperationDataAPIResponse } from '../../types/operations'; +import axiosConfig from '../../config'; export interface QueryResult { data: OperationDataAPIResponse; @@ -65,7 +65,7 @@ export const fetchOperations = async (path: string): Promise => { Authorization: `token ${token}`, }; - return await axios(path, { headers }); + return await axiosConfig(path, { headers }); }; export const isOperationsCacheExpired = async ( diff --git a/frontend/src/utils/history.ts b/frontend/src/utils/history.ts index c5a2f7edc..3777c31fa 100644 --- a/frontend/src/utils/history.ts +++ b/frontend/src/utils/history.ts @@ -1,9 +1,10 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import { api, localForageKeys } from '.'; import { FrozenData } from '../components/SourceHistoryListItem/utils'; import { SavedQueryData } from '../components/DatasetHistoryCard/utils/types'; +import axiosConfig from '../config'; const SOURCE_HISTORY_BASEPATH = api.routes.FETCH_SOURCE_HISTORY; const OPERATION_HISTORY_BASEPATH = api.routes.FETCH_DATASET_HISTORY; @@ -30,7 +31,7 @@ export const fetchDataSourceHistory = async ( Authorization: `token ${token}`, }; - return await axios( + return await axiosConfig( `${SOURCE_HISTORY_BASEPATH}${id}?limit=${options.limit || 10}&offset=${options.offset || 0}`, { headers }, ); @@ -43,12 +44,12 @@ export const fetchFrozenData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axios.request({ + const response = await axiosConfig.request({ url: api.routes.FROZEN_DATA, method: 'post', headers: { @@ -63,7 +64,7 @@ export const createFrozenData = async (data: FrozenData): Promise export const deleteFrozeData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axios.request({ + const response = await axiosConfig.request({ url: `${api.routes.FROZEN_DATA}${id}`, method: 'delete', headers: { @@ -85,7 +86,7 @@ export const fetchOperationHistory = async ( Authorization: `token ${token}`, }; - return await axios( + return await axiosConfig( `${OPERATION_HISTORY_BASEPATH}${id}?limit=${options.limit || 10}&offset=${options.offset || 0}`, { headers }, ); @@ -98,12 +99,12 @@ export const fetchSavedQueryData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axios.request({ + const response = await axiosConfig.request({ url: api.routes.SAVED_QUERYSETS, method: 'post', headers: { @@ -118,7 +119,7 @@ export const createSavedQueryData = async (data: SavedQueryData): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axios.request({ + const response = await axiosConfig.request({ url: `${api.routes.SINGLE_SAVED_QUERYSET}${id}`, method: 'delete', headers: { diff --git a/frontend/src/utils/hooks/operations.ts b/frontend/src/utils/hooks/operations.ts index 6b85d8764..2bf38f7a8 100644 --- a/frontend/src/utils/hooks/operations.ts +++ b/frontend/src/utils/hooks/operations.ts @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import { fromJS } from 'immutable'; import * as localForage from 'localforage'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; @@ -15,6 +15,7 @@ import { OperationStep, } from '../../types/operations'; import { getCachedOperationData } from '../cache'; +import axiosConfig from '../../config'; interface OperationDataHookOptions { payload: FetchOptions; @@ -66,7 +67,7 @@ const handleDataResult = (status: number, data: OperationDataResult): FetchRespo const fetchOperationData = async (payload: FetchOptions): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axios + const { status, data }: AxiosResponse = await axiosConfig .request({ url: `${BASEURL}data/${payload.id}/?limit=${payload.limit}&offset=${payload.offset}`, method: 'get', @@ -86,7 +87,7 @@ export const fetchOperationDataPreview = async ( steps: OperationStep[], ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axios + const { status, data }: AxiosResponse = await axiosConfig .request({ url: PREVIEWBASEURL, method: 'post', @@ -161,7 +162,7 @@ export const useOperation = (id?: number, fetch = false, immutable = true): UseO const fetchOperation = () => { setLoading(true); - axios + axiosConfig .request({ url: `${api.routes.SINGLE_DATASET}${id}`, method: 'get', @@ -234,7 +235,7 @@ export const useOperationQuery = (operation?: OperationMap): UseOperationQueryRe setLoading(true); const config = operation.get('advanced_config') as AdvancedQueryOptionsMap; if (config && token) { - axios + axiosConfig .request({ url: `${api.routes.DATASET_QUERY}`, method: 'post', @@ -290,7 +291,7 @@ export const previewAdvancedDatasetData = async ( options: AdvancedQueryOptions, ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axios + const { status, data }: AxiosResponse = await axiosConfig .request({ url: PREVIEWBASEURL, method: 'post', diff --git a/frontend/src/utils/hooks/sources.ts b/frontend/src/utils/hooks/sources.ts index a507b5545..8df168c2b 100644 --- a/frontend/src/utils/hooks/sources.ts +++ b/frontend/src/utils/hooks/sources.ts @@ -1,4 +1,4 @@ -import axios, { AxiosResponse } from 'axios'; +import { AxiosResponse } from 'axios'; import { fromJS, List } from 'immutable'; import * as localForage from 'localforage'; import { useEffect, useState } from 'react'; @@ -7,6 +7,7 @@ import { OperationMap } from '../../types/operations'; import { Source, SourceMap } from '../../types/sources'; import { api, getSourceIDFromOperation, localForageKeys } from '../../utils'; import { fetchCachedSources, updateSourcesCache } from '../../utils/cache'; +import axiosConfig from '../../config'; interface Options { limit: number; offset: number; @@ -37,7 +38,7 @@ export const useSources = (options: Options = defaultOptions, fetch = false): Li const url = `${api.routes.SOURCES}?limit=${options.limit}&offset=${options.offset}&search=${ options.search || '' }&frozen=${options.frozen}`; - axios + axiosConfig .request({ url: options.link || url, method: 'get', @@ -94,7 +95,7 @@ export const useSource = (id?: number, fetch = false): UseSourceResult => { const fetchSource = () => { setLoading(true); - axios + axiosConfig .request({ url: `${api.routes.SOURCES}${id}`, method: 'get', diff --git a/frontend/src/utils/update.ts b/frontend/src/utils/update.ts index fade415e0..fa09492a1 100644 --- a/frontend/src/utils/update.ts +++ b/frontend/src/utils/update.ts @@ -1,9 +1,10 @@ -import axios, { AxiosError } from 'axios'; +import { AxiosError } from 'axios'; import * as localForage from 'localforage'; import { DropdownItemProps } from 'semantic-ui-react'; import { CSVData, CSVDataOnly } from '../components/FileInput'; import { api } from './api'; import { localForageKeys } from './localForage'; +import axiosConfig from '../config'; export interface UpdateTable { name: string; @@ -262,7 +263,7 @@ export const updateTable = async (table: UpdateTable, data: CSVData): Promise(localForageKeys.API_KEY); try { - const response = await axios.request({ + const response = await axiosConfig.request({ url, method: 'put', headers: { From 1c04ef793c55efb61686ee609f2a27f7bd8c633d Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 10:23:06 +0300 Subject: [PATCH 029/149] Set the default baseURL in the index file --- .../components/AccountModal/AccountModal.tsx | 5 ++--- .../OperationDataTable/OperationDataTable.tsx | 5 ++--- .../utils/index.ts | 6 +++--- .../ScheduledEventsTableCard/utils/index.ts | 4 ++-- .../ScheduledEventsTableRow/utils/index.ts | 4 ++-- frontend/src/config.ts | 7 ------- frontend/src/index.ts | 3 +++ frontend/src/layouts/MainLayout.tsx | 7 +++---- .../AdvancedQueryBuilder/utils/operations.ts | 6 +++--- .../pages/DataSourceQueries/utils/index.ts | 4 ++-- .../src/pages/QueryBuilder/QueryBuilder.tsx | 5 ++--- frontend/src/pages/QueryData/utils/index.ts | 4 ++-- frontend/src/sagas/operations.ts | 9 ++++----- frontend/src/sagas/sources.ts | 7 +++---- frontend/src/utils/cache/operation.ts | 4 ++-- frontend/src/utils/history.ts | 19 +++++++++---------- frontend/src/utils/hooks/operations.ts | 13 ++++++------- frontend/src/utils/hooks/sources.ts | 7 +++---- frontend/src/utils/update.ts | 5 ++--- 19 files changed, 55 insertions(+), 69 deletions(-) delete mode 100644 frontend/src/config.ts diff --git a/frontend/src/components/AccountModal/AccountModal.tsx b/frontend/src/components/AccountModal/AccountModal.tsx index e64713d97..41aea99a8 100644 --- a/frontend/src/components/AccountModal/AccountModal.tsx +++ b/frontend/src/components/AccountModal/AccountModal.tsx @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import * as React from 'react'; import { Alert, Modal } from 'react-bootstrap'; import { connect, MapDispatchToProps } from 'react-redux'; @@ -8,7 +8,6 @@ import { TokenState } from '../../reducers/token'; import { ReduxStore } from '../../store'; import { api } from '../../utils'; import { ChangePasswordFields, ChangePasswordForm } from '../ChangePasswordForm'; -import axiosConfig from '../../config'; interface ActionProps { actions: typeof ModalActions; } @@ -28,7 +27,7 @@ const AccountModal: React.FC = (props) => { const onSuccess = (values: ChangePasswordFields) => { const { token } = props; if (token) { - axiosConfig + axios .request({ url: api.routes.CHANGE_PASSWORD, method: 'post', diff --git a/frontend/src/components/OperationDataTable/OperationDataTable.tsx b/frontend/src/components/OperationDataTable/OperationDataTable.tsx index 0ec7dc6e5..067a932ee 100644 --- a/frontend/src/components/OperationDataTable/OperationDataTable.tsx +++ b/frontend/src/components/OperationDataTable/OperationDataTable.tsx @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import { List } from 'immutable'; import * as localForage from 'localforage'; import React, { FunctionComponent, KeyboardEvent, useEffect, useState } from 'react'; @@ -8,7 +8,6 @@ import { OperationDataMap } from '../../types/operations'; import { OperationColumn } from '../../types/sources'; import { api, formatString, localForageKeys } from '../../utils'; import { BasicModal, ModalMessage } from '../BasicModal'; -import axiosConfig from '../../config'; interface OperationDataTableProps { list: List; @@ -70,7 +69,7 @@ export const OperationDataTable: FunctionComponent = ({ if (event.key.toLowerCase() === 'enter') { const alias = event.currentTarget.value; localForage.getItem(localForageKeys.API_KEY).then((token) => { - axiosConfig + axios .request({ url: `${api.routes.DATASET_ALIAS}${column.id}/`, method: 'put', diff --git a/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts b/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts index 4b75dd5d5..e5713cf74 100644 --- a/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts +++ b/frontend/src/components/ScheduledEventsRunHistoryTableCard/utils/index.ts @@ -2,7 +2,7 @@ import * as localForage from 'localforage'; import { RunInstanceStatus } from '../../../pages/ScheduledEvents'; import { ScheduledEventRunHistory } from '../../../types/scheduledEvents'; import { api, localForageKeys } from '../../../utils'; -import axiosConfig from '../../../config'; +import axios from 'axios'; export const LIMIT = 10; const BASEPATH = api.routes.FETCH_RUN_INSTANCES; @@ -16,7 +16,7 @@ export const fetchScheduledEventRunHistory = async ( Authorization: `token ${token}`, }; - return await axiosConfig(`${BASEPATH.replace('{id}', eventId.toString())}`, { headers }); + return await axios(`${BASEPATH.replace('{id}', eventId.toString())}`, { headers }); }; export const fetchDataPerPage = async ( @@ -37,7 +37,7 @@ export const fetchDataPerPage = async ( }; const offset = currentPage === 1 ? 0 : (currentPage - 1) * limit; - return await axiosConfig( + return await axios( `${BASEPATH.replace( '{id}', eventId.toString(), diff --git a/frontend/src/components/ScheduledEventsTableCard/utils/index.ts b/frontend/src/components/ScheduledEventsTableCard/utils/index.ts index 358327571..69dac4197 100644 --- a/frontend/src/components/ScheduledEventsTableCard/utils/index.ts +++ b/frontend/src/components/ScheduledEventsTableCard/utils/index.ts @@ -1,7 +1,7 @@ import * as localForage from 'localforage'; import { ScheduledEvent } from '../../../types/scheduledEvents'; import { api, localForageKeys } from '../../../utils'; -import axiosConfig from '../../../config'; +import axios from 'axios'; const BASEPATH = api.routes.VIEW_SCHEDULED_EVENTS; @@ -23,5 +23,5 @@ export const fetchDataPerPage = async ( }; const offset = currentPage === 1 ? 0 : (currentPage - 1) * limit; - return await axiosConfig(`${BASEPATH}?limit=${limit}&offset=${offset}`, { headers }); + return await axios(`${BASEPATH}?limit=${limit}&offset=${offset}`, { headers }); }; diff --git a/frontend/src/components/ScheduledEventsTableRow/utils/index.ts b/frontend/src/components/ScheduledEventsTableRow/utils/index.ts index a44036a67..694efa514 100644 --- a/frontend/src/components/ScheduledEventsTableRow/utils/index.ts +++ b/frontend/src/components/ScheduledEventsTableRow/utils/index.ts @@ -1,7 +1,7 @@ import * as localForage from 'localforage'; import { Moment } from 'moment'; import { api, localForageKeys } from '../../../utils'; -import axiosConfig from '../../../config'; +import axios from 'axios'; interface RunInstancePayload { start_at: Moment; @@ -33,7 +33,7 @@ export const createRunInstance = async ( ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - return await axiosConfig.request({ + return await axios.request({ url: api.routes.CREATE_SCHEDULED_INSTANCE.replace('{scheduleId}', `${scheduleId}`), method: 'post', headers: { diff --git a/frontend/src/config.ts b/frontend/src/config.ts deleted file mode 100644 index 5d6193e36..000000000 --- a/frontend/src/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import axios from 'axios'; - -const axiosConfig = axios.create({ - baseURL: process.env.BASE_URL, -}); - -export default axiosConfig; diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 9b2ba7f7a..865d86d44 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1 +1,4 @@ +import axios from 'axios'; import './App'; + +axios.defaults.baseURL = process.env.BASE_URL; diff --git a/frontend/src/layouts/MainLayout.tsx b/frontend/src/layouts/MainLayout.tsx index d2c2bfc29..c20404cb9 100644 --- a/frontend/src/layouts/MainLayout.tsx +++ b/frontend/src/layouts/MainLayout.tsx @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import React, { ReactElement } from 'react'; import { Dropdown, Modal, Nav, Navbar } from 'react-bootstrap'; @@ -33,7 +33,6 @@ import { User, UserState } from '../reducers/user'; import { ReduxStore } from '../store'; import { OperationMap } from '../types/operations'; import { api, localForageKeys } from '../utils'; -import axiosConfig from '../config'; interface ActionProps { actions: typeof UserActions & typeof TokenActions & typeof ModalActions; } @@ -337,7 +336,7 @@ class MainLayout extends React.Component { .getItem(localForageKeys.API_KEY) .then((token) => { if (token) { - axiosConfig + axios .request({ url: api.routes.LOGOUT, method: 'post', @@ -368,7 +367,7 @@ class MainLayout extends React.Component { }; private validateToken(token: string, user: User): void { - axiosConfig + axios .request({ url: `${api.routes.USERS}${user.id}/`, method: 'get', diff --git a/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts b/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts index 886ac0fe6..3fd8380a8 100644 --- a/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts +++ b/frontend/src/pages/AdvancedQueryBuilder/utils/operations.ts @@ -1,7 +1,7 @@ +import axios from 'axios'; import { Operation, OperationMap } from '../../../types/operations'; import { api } from '../../../utils'; import { clearOperationsCache } from '../../../utils/cache'; -import axiosConfig from '../../../config'; export const saveOperation = async (operation: OperationMap, token: string): Promise => { if (!operation) { @@ -10,7 +10,7 @@ export const saveOperation = async (operation: OperationMap, token: string): Pro const id = operation.get('id'); const url = id ? `${api.routes.SINGLE_DATASET}${id}/` : api.routes.DATASETS; const data: Operation = operation.toJS() as unknown as Operation; - const response = await axiosConfig.request({ + const response = await axios.request({ url, method: id ? 'put' : 'post', headers: { @@ -27,7 +27,7 @@ export const saveOperation = async (operation: OperationMap, token: string): Pro }; export const deleteOperation = async (operationID: string, token: string): Promise => { - const response = await axiosConfig.request({ + const response = await axios.request({ url: `${api.routes.SINGLE_DATASET}${operationID}/`, method: 'delete', headers: { diff --git a/frontend/src/pages/DataSourceQueries/utils/index.ts b/frontend/src/pages/DataSourceQueries/utils/index.ts index 3d51227be..3119b4a2c 100644 --- a/frontend/src/pages/DataSourceQueries/utils/index.ts +++ b/frontend/src/pages/DataSourceQueries/utils/index.ts @@ -1,6 +1,6 @@ import * as localForage from 'localforage'; import { api, localForageKeys } from '../../../utils'; -import axiosConfig from '../../../config'; +import axios from 'axios'; const BASEPATH = api.routes.FETCH_SOURCE_DATASETS; @@ -23,5 +23,5 @@ export const fetchQueriesOnDataset = async (id: number): Promise => Authorization: `token ${token}`, }; - return await axiosConfig(`${BASEPATH}${id}`, { headers }); + return await axios(`${BASEPATH}${id}`, { headers }); }; diff --git a/frontend/src/pages/QueryBuilder/QueryBuilder.tsx b/frontend/src/pages/QueryBuilder/QueryBuilder.tsx index 3db2ccc8e..1750d5cc4 100644 --- a/frontend/src/pages/QueryBuilder/QueryBuilder.tsx +++ b/frontend/src/pages/QueryBuilder/QueryBuilder.tsx @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import classNames from 'classnames'; import { fromJS, List, Map } from 'immutable'; import React, { FunctionComponent, useEffect, useState } from 'react'; @@ -31,7 +31,6 @@ import { fetchOperationDataPreview } from '../../utils/hooks/operations'; import * as pageActions from './actions'; import './QueryBuilder.scss'; import { queryBuilderReducerId, QueryBuilderState } from './reducers'; -import axiosConfig from '../../config'; interface ActionProps { actions: typeof sourcesActions & @@ -205,7 +204,7 @@ const QueryBuilder: FunctionComponent = (props) => { operation_steps: updatedSteps.toJS() as unknown as List, }; if (props.token) { - axiosConfig + axios .request({ url, method: id ? 'put' : 'post', diff --git a/frontend/src/pages/QueryData/utils/index.ts b/frontend/src/pages/QueryData/utils/index.ts index 3c797c8a3..1837178d9 100644 --- a/frontend/src/pages/QueryData/utils/index.ts +++ b/frontend/src/pages/QueryData/utils/index.ts @@ -1,7 +1,7 @@ import * as localForage from 'localforage'; import { api, localForageKeys } from '../../../utils'; import moment from 'moment'; -import axiosConfig from '../../../config'; +import axios from 'axios'; const BASEPATH = api.routes.FETCH_OPERATION; @@ -24,7 +24,7 @@ export const fetchOperationById = async (id: number): Promise => { Authorization: `token ${token}`, }; - return await axiosConfig(`${BASEPATH.replace('{id}', id.toString())}`, { headers }); + return await axios(`${BASEPATH.replace('{id}', id.toString())}`, { headers }); }; export const isCacheExpired = async (id: number): Promise => { diff --git a/frontend/src/sagas/operations.ts b/frontend/src/sagas/operations.ts index c3ae1678f..ee80ba9e8 100644 --- a/frontend/src/sagas/operations.ts +++ b/frontend/src/sagas/operations.ts @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import { DELETE_OPERATION, FETCH_OPERATION, @@ -23,7 +23,6 @@ import { } from '../actions/operations'; import { fetchActiveSource } from '../actions/sources'; import { isOperationsCacheExpired } from '../utils/cache'; -import axiosConfig from '../config'; function* fetchOperations({ payload }: OperationsAction) { try { @@ -58,7 +57,7 @@ function* fetchOperations({ payload }: OperationsAction) { if (fetch) { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse> = yield axiosConfig + const { status, data }: AxiosResponse> = yield axios .request({ url: payload.link || @@ -99,7 +98,7 @@ function* fetchOperations({ payload }: OperationsAction) { function* fetchOperation({ payload }: OperationsAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = yield axiosConfig + const { status, data }: AxiosResponse = yield axios .request({ url: `${api.routes.SINGLE_DATASET}${payload.id}/`, method: 'get', @@ -132,7 +131,7 @@ function* fetchOperation({ payload }: OperationsAction) { function* deleteOperation({ payload }: OperationsAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status }: AxiosResponse = yield axiosConfig + const { status }: AxiosResponse = yield axios .request({ url: `${api.routes.SINGLE_DATASET}${payload.id}/`, method: 'delete', diff --git a/frontend/src/sagas/sources.ts b/frontend/src/sagas/sources.ts index 5c0dcceb3..cc13f2478 100644 --- a/frontend/src/sagas/sources.ts +++ b/frontend/src/sagas/sources.ts @@ -1,5 +1,5 @@ import { SET_ACTIVE_SOURCE } from '../pages/DataSources/reducers'; -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import { put, takeLatest } from 'redux-saga/effects'; import 'regenerator-runtime/runtime'; @@ -16,13 +16,12 @@ import { Source, SourceMap } from '../types/sources'; import { api, localForageKeys } from '../utils'; import { setToken } from '../actions/token'; import { setActiveSource } from '../actions/sources'; -import axiosConfig from '../config'; function* fetchSources({ payload }: SourcesAction) { try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); const url = `${api.routes.SOURCES}?limit=${payload.limit}&offset=${payload.offset}&search=${payload.search}&frozen=${payload.frozen}`; - const { status, data }: AxiosResponse> = yield axiosConfig + const { status, data }: AxiosResponse> = yield axios .request({ url: payload.link || url, method: 'get', @@ -62,7 +61,7 @@ function* fetchSource({ payload }: SourcesAction) { } try { const token: string = yield localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse> = yield axiosConfig + const { status, data }: AxiosResponse> = yield axios .request({ url: `${api.routes.SOURCES}${sourceId}/`, method: 'get', diff --git a/frontend/src/utils/cache/operation.ts b/frontend/src/utils/cache/operation.ts index 6dec8f364..2e28c7c54 100644 --- a/frontend/src/utils/cache/operation.ts +++ b/frontend/src/utils/cache/operation.ts @@ -5,7 +5,7 @@ import { fetchOperationById } from '../../pages/QueryData/utils'; import { FetchOptions } from '../../types/api'; import { OperationData } from '../../types/operations'; import { OperationDataAPIResponse } from '../../types/operations'; -import axiosConfig from '../../config'; +import axios from 'axios'; export interface QueryResult { data: OperationDataAPIResponse; @@ -65,7 +65,7 @@ export const fetchOperations = async (path: string): Promise => { Authorization: `token ${token}`, }; - return await axiosConfig(path, { headers }); + return await axios(path, { headers }); }; export const isOperationsCacheExpired = async ( diff --git a/frontend/src/utils/history.ts b/frontend/src/utils/history.ts index 3777c31fa..c5a2f7edc 100644 --- a/frontend/src/utils/history.ts +++ b/frontend/src/utils/history.ts @@ -1,10 +1,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import * as localForage from 'localforage'; import { api, localForageKeys } from '.'; import { FrozenData } from '../components/SourceHistoryListItem/utils'; import { SavedQueryData } from '../components/DatasetHistoryCard/utils/types'; -import axiosConfig from '../config'; const SOURCE_HISTORY_BASEPATH = api.routes.FETCH_SOURCE_HISTORY; const OPERATION_HISTORY_BASEPATH = api.routes.FETCH_DATASET_HISTORY; @@ -31,7 +30,7 @@ export const fetchDataSourceHistory = async ( Authorization: `token ${token}`, }; - return await axiosConfig( + return await axios( `${SOURCE_HISTORY_BASEPATH}${id}?limit=${options.limit || 10}&offset=${options.offset || 0}`, { headers }, ); @@ -44,12 +43,12 @@ export const fetchFrozenData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axiosConfig.request({ + const response = await axios.request({ url: api.routes.FROZEN_DATA, method: 'post', headers: { @@ -64,7 +63,7 @@ export const createFrozenData = async (data: FrozenData): Promise export const deleteFrozeData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axiosConfig.request({ + const response = await axios.request({ url: `${api.routes.FROZEN_DATA}${id}`, method: 'delete', headers: { @@ -86,7 +85,7 @@ export const fetchOperationHistory = async ( Authorization: `token ${token}`, }; - return await axiosConfig( + return await axios( `${OPERATION_HISTORY_BASEPATH}${id}?limit=${options.limit || 10}&offset=${options.offset || 0}`, { headers }, ); @@ -99,12 +98,12 @@ export const fetchSavedQueryData = async (id: number): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axiosConfig.request({ + const response = await axios.request({ url: api.routes.SAVED_QUERYSETS, method: 'post', headers: { @@ -119,7 +118,7 @@ export const createSavedQueryData = async (data: SavedQueryData): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const response = await axiosConfig.request({ + const response = await axios.request({ url: `${api.routes.SINGLE_SAVED_QUERYSET}${id}`, method: 'delete', headers: { diff --git a/frontend/src/utils/hooks/operations.ts b/frontend/src/utils/hooks/operations.ts index 2bf38f7a8..6b85d8764 100644 --- a/frontend/src/utils/hooks/operations.ts +++ b/frontend/src/utils/hooks/operations.ts @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import { fromJS } from 'immutable'; import * as localForage from 'localforage'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; @@ -15,7 +15,6 @@ import { OperationStep, } from '../../types/operations'; import { getCachedOperationData } from '../cache'; -import axiosConfig from '../../config'; interface OperationDataHookOptions { payload: FetchOptions; @@ -67,7 +66,7 @@ const handleDataResult = (status: number, data: OperationDataResult): FetchRespo const fetchOperationData = async (payload: FetchOptions): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axiosConfig + const { status, data }: AxiosResponse = await axios .request({ url: `${BASEURL}data/${payload.id}/?limit=${payload.limit}&offset=${payload.offset}`, method: 'get', @@ -87,7 +86,7 @@ export const fetchOperationDataPreview = async ( steps: OperationStep[], ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axiosConfig + const { status, data }: AxiosResponse = await axios .request({ url: PREVIEWBASEURL, method: 'post', @@ -162,7 +161,7 @@ export const useOperation = (id?: number, fetch = false, immutable = true): UseO const fetchOperation = () => { setLoading(true); - axiosConfig + axios .request({ url: `${api.routes.SINGLE_DATASET}${id}`, method: 'get', @@ -235,7 +234,7 @@ export const useOperationQuery = (operation?: OperationMap): UseOperationQueryRe setLoading(true); const config = operation.get('advanced_config') as AdvancedQueryOptionsMap; if (config && token) { - axiosConfig + axios .request({ url: `${api.routes.DATASET_QUERY}`, method: 'post', @@ -291,7 +290,7 @@ export const previewAdvancedDatasetData = async ( options: AdvancedQueryOptions, ): Promise => { const token = await localForage.getItem(localForageKeys.API_KEY); - const { status, data }: AxiosResponse = await axiosConfig + const { status, data }: AxiosResponse = await axios .request({ url: PREVIEWBASEURL, method: 'post', diff --git a/frontend/src/utils/hooks/sources.ts b/frontend/src/utils/hooks/sources.ts index 8df168c2b..a507b5545 100644 --- a/frontend/src/utils/hooks/sources.ts +++ b/frontend/src/utils/hooks/sources.ts @@ -1,4 +1,4 @@ -import { AxiosResponse } from 'axios'; +import axios, { AxiosResponse } from 'axios'; import { fromJS, List } from 'immutable'; import * as localForage from 'localforage'; import { useEffect, useState } from 'react'; @@ -7,7 +7,6 @@ import { OperationMap } from '../../types/operations'; import { Source, SourceMap } from '../../types/sources'; import { api, getSourceIDFromOperation, localForageKeys } from '../../utils'; import { fetchCachedSources, updateSourcesCache } from '../../utils/cache'; -import axiosConfig from '../../config'; interface Options { limit: number; offset: number; @@ -38,7 +37,7 @@ export const useSources = (options: Options = defaultOptions, fetch = false): Li const url = `${api.routes.SOURCES}?limit=${options.limit}&offset=${options.offset}&search=${ options.search || '' }&frozen=${options.frozen}`; - axiosConfig + axios .request({ url: options.link || url, method: 'get', @@ -95,7 +94,7 @@ export const useSource = (id?: number, fetch = false): UseSourceResult => { const fetchSource = () => { setLoading(true); - axiosConfig + axios .request({ url: `${api.routes.SOURCES}${id}`, method: 'get', diff --git a/frontend/src/utils/update.ts b/frontend/src/utils/update.ts index fa09492a1..fade415e0 100644 --- a/frontend/src/utils/update.ts +++ b/frontend/src/utils/update.ts @@ -1,10 +1,9 @@ -import { AxiosError } from 'axios'; +import axios, { AxiosError } from 'axios'; import * as localForage from 'localforage'; import { DropdownItemProps } from 'semantic-ui-react'; import { CSVData, CSVDataOnly } from '../components/FileInput'; import { api } from './api'; import { localForageKeys } from './localForage'; -import axiosConfig from '../config'; export interface UpdateTable { name: string; @@ -263,7 +262,7 @@ export const updateTable = async (table: UpdateTable, data: CSVData): Promise(localForageKeys.API_KEY); try { - const response = await axiosConfig.request({ + const response = await axios.request({ url, method: 'put', headers: { From e09d882c3e28d158131e3dea9a56fe6b61c98cf2 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 13:52:01 +0300 Subject: [PATCH 030/149] Move axios default baseURL configuration to App.tsx --- frontend/src/App.tsx | 3 +++ frontend/src/index.ts | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index accab168a..ce845e990 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -5,6 +5,7 @@ import { Routes } from './Routes'; import 'core-js/stable'; import './styles/main.scss'; +import axios from 'axios'; localForage.config({ driver: localForage.LOCALSTORAGE, @@ -12,6 +13,8 @@ localForage.config({ storeName: 'ddw-store', }); +axios.defaults.baseURL = process.env.API_BASE_URL; + const wrapper = document.getElementById('app'); if (wrapper) { const root = createRoot(wrapper); diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 865d86d44..9b2ba7f7a 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1,4 +1 @@ -import axios from 'axios'; import './App'; - -axios.defaults.baseURL = process.env.BASE_URL; From 11b7f495424d57b3ba0cba9afabe55439f0c8077 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 14:01:39 +0300 Subject: [PATCH 031/149] Add API_BASE_URL to the environment section of web services --- docker-compose.dev.yml | 13 +++++++------ docker-compose.yml | 15 ++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index aac2e78b1..66ffa2582 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -15,13 +15,13 @@ services: context: . dockerfile: Dockerfile_spotlights_dev expose: - - "8000" + - '8000' # Replace below path with the path to your ddw-external-api repo # e.g export SPOTLIGHTS_REPO_PATH=/path/to/ddw-external-api volumes: - - "${SPOTLIGHTS_REPO_PATH}:/src/ddw-external-api" + - '${SPOTLIGHTS_REPO_PATH}:/src/ddw-external-api' ports: - - "8000:8000" + - '8000:8000' depends_on: - db networks: @@ -31,9 +31,9 @@ services: context: . dockerfile: Dockerfile volumes: - - ".:/src" + - '.:/src' expose: - - "80" + - '80' depends_on: - db environment: @@ -43,9 +43,10 @@ services: - DJANGO_SECRET_KEY - GITHUB_TOKEN - CELERY_BROKER_URL=amqp://admin:ddw_analyst_ui@rabbitmq:5672/myvhost + - API_BASE_URL command: bash -c "export DJANGO_DEV='True' && python manage.py runserver 0.0.0.0:80" ports: - - "80:80" + - '80:80' networks: - ddw_net diff --git a/docker-compose.yml b/docker-compose.yml index bf266edd7..f0dafdbce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.3" +version: '3.3' services: db: @@ -14,9 +14,9 @@ services: context: . dockerfile: Dockerfile volumes: - - ".:/src" + - '.:/src' expose: - - "80" + - '80' depends_on: - db environment: @@ -32,6 +32,7 @@ services: - SLACK_BOT_TOKEN - SLACK_CHANNEL_ID - BASE_URL + - API_BASE_URL networks: - ddw_net spotlights: @@ -39,7 +40,7 @@ services: context: . dockerfile: Dockerfile_spotlights_api expose: - - "8000" + - '8000' depends_on: - db networks: @@ -47,8 +48,8 @@ services: nginx: image: nginx:latest ports: - - "80:80" - - "443:443" + - '80:80' + - '443:443' environment: - VIRTUAL_HOST=ddw.devinit.org volumes: @@ -56,7 +57,7 @@ services: - ./static:/static - ./ssl:/etc/ssl/ restart: always - command: "/bin/sh -c 'while :; do sleep 12h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" + command: '/bin/sh -c ''while :; do sleep 12h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"''' depends_on: - web networks: From 796580f9dfeb11a232b6de6a2122b2fc07f3f7cb Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 14:36:08 +0300 Subject: [PATCH 032/149] Update the README with dynamic API base URL setup --- README.md | 106 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index c5ec4359a..fba01d4e2 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,40 @@ # DDW Analyst UI + The new and improved DDW Analyst UI interface ## Setup - ### Docker Deployment -1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User +1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User docker-compose down` `docker volume rm metadata2 -2. Create a persistent dev volume +2. Create a persistent dev volume docker volume create --name=metadata2 -3. Create a self-signed certificate +3. Create a self-signed certificate mkdir -p ssl && openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ssl/privkey.pem -out ssl/fullchain.pem -4. Build your app +4. Build your app docker-compose up --build -d -5. Fetch CSV files from GitHub +5. Fetch CSV files from GitHub docker-compose exec web python manage.py update_csv_files -6. Migrate the database. +6. Migrate the database. docker-compose exec web python manage.py migrate -7. Load test data +7. Load test data docker-compose exec web python manage.py loaddata test_data` `docker-compose exec web python manage.py loaddata --database=datasets test_datasets -8. Alternatively, load the real data +8. Alternatively, load the real data export FTSUSER=X` `export FTSPASS=Y` `docker-compose exec web data_updates/completed_scripts.sh @@ -58,30 +58,28 @@ The new and improved DDW Analyst UI interface docker-compose restart - ### Import CSV Files -1. Manually run management command to download csv files: +1. Manually run management command to download csv files: docker-compose exec web python manage.py update_csv_files -2. Create a scheduled event to periodically download updates from the git repo. The bash script is `update_csv_files.sh` - -3. The git hub repo with csv files can be found [here](https://github.com/devinit/ddw-data-update-configs) +2. Create a scheduled event to periodically download updates from the git repo. The bash script is `update_csv_files.sh` +3. The git hub repo with csv files can be found [here](https://github.com/devinit/ddw-data-update-configs) ### Development Database To create a test development DB, for local development (e.g. virtualenv steps below) -1. Ensure the line that normally appears as `local all postgres peer` in `pg_hba.conf` instead reads `local all postgres trust` +1. Ensure the line that normally appears as `local all postgres peer` in `pg_hba.conf` instead reads `local all postgres trust` 2. Run script `./dev-db-setup.sh` 3. A database **analyst_ui** will be created in your local postgres instance. 4. Access sample database through default postgres user using - `psql -d postgres` + `psql -d postgres` - `\c analyst_ui` + `\c analyst_ui` 5. For additional users, edit script **analyst_ui_users.sql** adding the username that you need 6. Run script to grant permissions to all the schemas and tables of analyst_ui @@ -91,10 +89,10 @@ To create a test development DB, for local development (e.g. virtualenv steps be **Prerequisites** - - python - - virtualenv - - NodeJS - - postgreSQL +- python +- virtualenv +- NodeJS +- postgreSQL 1. Initialise a virtual environment `virtualenv env` 2. Activate & enter virtualenv environment `source env/bin/activate` @@ -110,38 +108,39 @@ To create a test development DB, for local development (e.g. virtualenv steps be ### Docker Development -1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User: +1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User: docker-compose down docker volume rm metadata2 -2. Create a persistent dev volume: + +2. Create a persistent dev volume: docker volume create --name=metadata2 -3. Create a self-signed certificate: +3. Create a self-signed certificate: mkdir -p ssl && openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ssl/privkey.pem -out ssl/fullchain.pem -4. Build & run your app with the dev docker config: +4. Build & run your app with the dev docker config: docker-compose -f docker-compose.dev.yml up --build -5. Fetch CSV files from GitHub +5. Fetch CSV files from GitHub docker-compose -f docker-compose.dev.yml exec web python manage.py update_csv_files -6. Migrate the database: +6. Migrate the database: docker-compose -f docker-compose.dev.yml exec web python manage.py migrate -7. Load test data: +7. Load test data: docker-compose -f docker-compose.dev.yml exec web python manage.py loaddata test_data docker-compose -f docker-compose.dev.yml exec web python manage.py loaddata --database=datasets test_datasets -8. Alternatively, you can acquire a db dump of the live data (binary) and import it into your database: +8. Alternatively, you can acquire a db dump of the live data (binary) and import it into your database: docker-compose -f docker-compose.dev.yml exec db psql -U analyst_ui_user -d analyst_ui -c 'drop schema public CASCADE;' docker-compose -f docker-compose.dev.yml exec db psql -U analyst_ui_user -d analyst_ui -c 'create schema public;' @@ -173,36 +172,36 @@ Configure a cronjob to run the `run-schedules.sh` script which in turn runs the * * * * * /root/run-schedules.sh >/root/cron-logs.txt 2>&1 ### Freeze/Unfreeze and Save Queryset features + Make sure the following schemas are created; - `archives` i.e `CREATE SCHEMA archives;` - `dataset` i.e `CREATE SCHEMA dataset;` ### FTS Precode feature set up and use + On first run (i.e if you have used a database dump without FTS Precoded tables included or a clean DB set up) run the following scripts; + 1. `docker-compose exec web data_updates/manual_data.sh` 2. `docker-compose exec web data_updates/manual_data_fts.sh` which adds the FTS metadata into the DB The above should only be run once, on initial deployment of the feature, and only if using a clean and fresh DB set up with no data or using a DB dump that does not include the FTS metadata -To pull the latest FTS updates from the APIs, we shall run -3. `docker-compose exec web data_updates/fts.sh`. Note that at this point the analyst may download the updated codelists and edit them, then re-upload them using the https://ddw.devinit.org/update/ feature +To pull the latest FTS updates from the APIs, we shall run 3. `docker-compose exec web data_updates/fts.sh`. Note that at this point the analyst may download the updated codelists and edit them, then re-upload them using the https://ddw.devinit.org/update/ feature -To precode and join the dependency tables, we shall run: -4. `docker-compose exec web data_updates/fts_precode.sh`. This should be run everytime there is a change made to the codelist entries or everytime the script in 3 above is run. +To precode and join the dependency tables, we shall run: 4. `docker-compose exec web data_updates/fts_precode.sh`. This should be run everytime there is a change made to the codelist entries or everytime the script in 3 above is run. -To update the manual FTS tables with missing codelist items, we shall finally run the below script -5. `docker-compose exec web data_updates/fts_diff.sh` +To update the manual FTS tables with missing codelist items, we shall finally run the below script 5. `docker-compose exec web data_updates/fts_diff.sh` We can run 4 and 5 above in one step by using: `docker-compose exec web data_updates/finalise_precode.sh` This will be the preferred way of running them from the front end as a scheduled event. NOTE: + 1. All the above scripts should be run in that exact order on first run / deployment. 2. After any update (i.e after running the script in 3 above, or an analyst using the https://ddw.devinit.org/update/ feature) is made to the codelists, run `docker-compose exec web data_updates/finalise_precode.sh` which combines 4 and 5 into one step. This can be run from the `Scheduled Events` on the front end. - ### End-To-End Testing This is set up to run with [Cypress](https://www.cypress.io/). @@ -220,46 +219,47 @@ If you're using Postman for testing the REST api, you can use the following setu 1. Make sure you have an environment set for your collection. 2. `POST` to `http://localhost:8000/api/auth/login/` with `Basic Auth` and the Username and Password. 3. Paste this code in `Tests` which will save the token to the environment. + ``` var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("token", jsonData.token); ``` -4. In the Headers of your subsequent posts, send the Header `Authorization: Token {{token}}` +4. In the Headers of your subsequent posts, send the Header `Authorization: Token {{token}}` ### Letsencrypt certificates generation 1. If certbot has not been installed already, install certbot by following commands - ``` - sudo add-apt-repository ppa:certbot/certbot - sudo apt-get install certbot - ``` + +``` +sudo add-apt-repository ppa:certbot/certbot +sudo apt-get install certbot +``` 2. Run below script to generate certificates -`certbot renew --dry-run --webroot -w /root/ddw-analyst-ui/static/letsencrypt` + `certbot renew --dry-run --webroot -w /root/ddw-analyst-ui/static/letsencrypt` 3. If the command above is run successfully copy certificates to the ssl folder of ddw app - ``` - cp -f /etc/letsencrypt/live/ddw.devinit.org/privkey.pem /root/ddw-analyst-ui/ssl/ - cp -f /etc/letsencrypt/live/ddw.devinit.org/fullchain.pem /root/ddw-analyst-ui/ssl/ - ``` - From ddw-analyst-ui root folder, reload nginx so that certificates are picked - `docker-compose exec ddw-analyst-ui_nginx_1 nginx reload` +``` +cp -f /etc/letsencrypt/live/ddw.devinit.org/privkey.pem /root/ddw-analyst-ui/ssl/ +cp -f /etc/letsencrypt/live/ddw.devinit.org/fullchain.pem /root/ddw-analyst-ui/ssl/ + +``` + +From ddw-analyst-ui root folder, reload nginx so that certificates are picked +`docker-compose exec ddw-analyst-ui_nginx_1 nginx reload` 4. Check if there is a cron job set to renew certificates. If there is non add the cron task below. This will try to renew the certificate twice a day every day `0 */12 * * * /root/ddw-analyst-ui/certbot.sh >/dev/null 2>&1` - ### API Documentation Read more [here](./core/docs/API.md) - ### Management Commands - ### Deployment 1. Create a release branch with a name format `release/v[VERSION NUMBER]` @@ -267,3 +267,7 @@ Read more [here](./core/docs/API.md) 3. Create a GitHub release with a name format `v[VERSION NUMBER]` - this will deploy to production 4. Create PR from release branch to master/main 5. Merge in release branch to master/main + +### Dynamic API base URL setup + +Add an `API_BASE_URL` in the `.env` file and assign it either a localhost, staging, or production url to test with staging or live data without needing to deploy the code on staging or live. From 5e3685999d469ad606f644cc4a1ed03cbfd69530 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 17:09:51 +0300 Subject: [PATCH 033/149] Undo auto formatted lines in README --- README.md | 102 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index fba01d4e2..730a11359 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,40 @@ # DDW Analyst UI - The new and improved DDW Analyst UI interface ## Setup + ### Docker Deployment -1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User +1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User docker-compose down` `docker volume rm metadata2 -2. Create a persistent dev volume +2. Create a persistent dev volume docker volume create --name=metadata2 -3. Create a self-signed certificate +3. Create a self-signed certificate mkdir -p ssl && openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ssl/privkey.pem -out ssl/fullchain.pem -4. Build your app +4. Build your app docker-compose up --build -d -5. Fetch CSV files from GitHub +5. Fetch CSV files from GitHub docker-compose exec web python manage.py update_csv_files -6. Migrate the database. +6. Migrate the database. docker-compose exec web python manage.py migrate -7. Load test data +7. Load test data docker-compose exec web python manage.py loaddata test_data` `docker-compose exec web python manage.py loaddata --database=datasets test_datasets -8. Alternatively, load the real data +8. Alternatively, load the real data export FTSUSER=X` `export FTSPASS=Y` `docker-compose exec web data_updates/completed_scripts.sh @@ -58,28 +58,30 @@ The new and improved DDW Analyst UI interface docker-compose restart + ### Import CSV Files -1. Manually run management command to download csv files: +1. Manually run management command to download csv files: docker-compose exec web python manage.py update_csv_files -2. Create a scheduled event to periodically download updates from the git repo. The bash script is `update_csv_files.sh` +2. Create a scheduled event to periodically download updates from the git repo. The bash script is `update_csv_files.sh` + +3. The git hub repo with csv files can be found [here](https://github.com/devinit/ddw-data-update-configs) -3. The git hub repo with csv files can be found [here](https://github.com/devinit/ddw-data-update-configs) ### Development Database To create a test development DB, for local development (e.g. virtualenv steps below) -1. Ensure the line that normally appears as `local all postgres peer` in `pg_hba.conf` instead reads `local all postgres trust` +1. Ensure the line that normally appears as `local all postgres peer` in `pg_hba.conf` instead reads `local all postgres trust` 2. Run script `./dev-db-setup.sh` 3. A database **analyst_ui** will be created in your local postgres instance. 4. Access sample database through default postgres user using - `psql -d postgres` + `psql -d postgres` - `\c analyst_ui` + `\c analyst_ui` 5. For additional users, edit script **analyst_ui_users.sql** adding the username that you need 6. Run script to grant permissions to all the schemas and tables of analyst_ui @@ -89,10 +91,10 @@ To create a test development DB, for local development (e.g. virtualenv steps be **Prerequisites** -- python -- virtualenv -- NodeJS -- postgreSQL + - python + - virtualenv + - NodeJS + - postgreSQL 1. Initialise a virtual environment `virtualenv env` 2. Activate & enter virtualenv environment `source env/bin/activate` @@ -108,39 +110,38 @@ To create a test development DB, for local development (e.g. virtualenv steps be ### Docker Development -1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User: +1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User: docker-compose down docker volume rm metadata2 - -2. Create a persistent dev volume: +2. Create a persistent dev volume: docker volume create --name=metadata2 -3. Create a self-signed certificate: +3. Create a self-signed certificate: mkdir -p ssl && openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ssl/privkey.pem -out ssl/fullchain.pem -4. Build & run your app with the dev docker config: +4. Build & run your app with the dev docker config: docker-compose -f docker-compose.dev.yml up --build -5. Fetch CSV files from GitHub +5. Fetch CSV files from GitHub docker-compose -f docker-compose.dev.yml exec web python manage.py update_csv_files -6. Migrate the database: +6. Migrate the database: docker-compose -f docker-compose.dev.yml exec web python manage.py migrate -7. Load test data: +7. Load test data: docker-compose -f docker-compose.dev.yml exec web python manage.py loaddata test_data docker-compose -f docker-compose.dev.yml exec web python manage.py loaddata --database=datasets test_datasets -8. Alternatively, you can acquire a db dump of the live data (binary) and import it into your database: +8. Alternatively, you can acquire a db dump of the live data (binary) and import it into your database: docker-compose -f docker-compose.dev.yml exec db psql -U analyst_ui_user -d analyst_ui -c 'drop schema public CASCADE;' docker-compose -f docker-compose.dev.yml exec db psql -U analyst_ui_user -d analyst_ui -c 'create schema public;' @@ -172,36 +173,36 @@ Configure a cronjob to run the `run-schedules.sh` script which in turn runs the * * * * * /root/run-schedules.sh >/root/cron-logs.txt 2>&1 ### Freeze/Unfreeze and Save Queryset features - Make sure the following schemas are created; - `archives` i.e `CREATE SCHEMA archives;` - `dataset` i.e `CREATE SCHEMA dataset;` ### FTS Precode feature set up and use - On first run (i.e if you have used a database dump without FTS Precoded tables included or a clean DB set up) run the following scripts; - 1. `docker-compose exec web data_updates/manual_data.sh` 2. `docker-compose exec web data_updates/manual_data_fts.sh` which adds the FTS metadata into the DB The above should only be run once, on initial deployment of the feature, and only if using a clean and fresh DB set up with no data or using a DB dump that does not include the FTS metadata -To pull the latest FTS updates from the APIs, we shall run 3. `docker-compose exec web data_updates/fts.sh`. Note that at this point the analyst may download the updated codelists and edit them, then re-upload them using the https://ddw.devinit.org/update/ feature +To pull the latest FTS updates from the APIs, we shall run +3. `docker-compose exec web data_updates/fts.sh`. Note that at this point the analyst may download the updated codelists and edit them, then re-upload them using the https://ddw.devinit.org/update/ feature -To precode and join the dependency tables, we shall run: 4. `docker-compose exec web data_updates/fts_precode.sh`. This should be run everytime there is a change made to the codelist entries or everytime the script in 3 above is run. +To precode and join the dependency tables, we shall run: +4. `docker-compose exec web data_updates/fts_precode.sh`. This should be run everytime there is a change made to the codelist entries or everytime the script in 3 above is run. -To update the manual FTS tables with missing codelist items, we shall finally run the below script 5. `docker-compose exec web data_updates/fts_diff.sh` +To update the manual FTS tables with missing codelist items, we shall finally run the below script +5. `docker-compose exec web data_updates/fts_diff.sh` We can run 4 and 5 above in one step by using: `docker-compose exec web data_updates/finalise_precode.sh` This will be the preferred way of running them from the front end as a scheduled event. NOTE: - 1. All the above scripts should be run in that exact order on first run / deployment. 2. After any update (i.e after running the script in 3 above, or an analyst using the https://ddw.devinit.org/update/ feature) is made to the codelists, run `docker-compose exec web data_updates/finalise_precode.sh` which combines 4 and 5 into one step. This can be run from the `Scheduled Events` on the front end. + ### End-To-End Testing This is set up to run with [Cypress](https://www.cypress.io/). @@ -219,47 +220,46 @@ If you're using Postman for testing the REST api, you can use the following setu 1. Make sure you have an environment set for your collection. 2. `POST` to `http://localhost:8000/api/auth/login/` with `Basic Auth` and the Username and Password. 3. Paste this code in `Tests` which will save the token to the environment. - ``` var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("token", jsonData.token); ``` - 4. In the Headers of your subsequent posts, send the Header `Authorization: Token {{token}}` + ### Letsencrypt certificates generation 1. If certbot has not been installed already, install certbot by following commands - -``` -sudo add-apt-repository ppa:certbot/certbot -sudo apt-get install certbot -``` + ``` + sudo add-apt-repository ppa:certbot/certbot + sudo apt-get install certbot + ``` 2. Run below script to generate certificates - `certbot renew --dry-run --webroot -w /root/ddw-analyst-ui/static/letsencrypt` +`certbot renew --dry-run --webroot -w /root/ddw-analyst-ui/static/letsencrypt` 3. If the command above is run successfully copy certificates to the ssl folder of ddw app + ``` + cp -f /etc/letsencrypt/live/ddw.devinit.org/privkey.pem /root/ddw-analyst-ui/ssl/ + cp -f /etc/letsencrypt/live/ddw.devinit.org/fullchain.pem /root/ddw-analyst-ui/ssl/ -``` -cp -f /etc/letsencrypt/live/ddw.devinit.org/privkey.pem /root/ddw-analyst-ui/ssl/ -cp -f /etc/letsencrypt/live/ddw.devinit.org/fullchain.pem /root/ddw-analyst-ui/ssl/ - -``` - -From ddw-analyst-ui root folder, reload nginx so that certificates are picked -`docker-compose exec ddw-analyst-ui_nginx_1 nginx reload` + ``` + From ddw-analyst-ui root folder, reload nginx so that certificates are picked + `docker-compose exec ddw-analyst-ui_nginx_1 nginx reload` 4. Check if there is a cron job set to renew certificates. If there is non add the cron task below. This will try to renew the certificate twice a day every day `0 */12 * * * /root/ddw-analyst-ui/certbot.sh >/dev/null 2>&1` + ### API Documentation Read more [here](./core/docs/API.md) + ### Management Commands + ### Deployment 1. Create a release branch with a name format `release/v[VERSION NUMBER]` From 10ddcc16b8fc0022e9aaf07eefa0762c55b316bd Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 27 Jul 2023 17:20:44 +0300 Subject: [PATCH 034/149] Undo auto formatted lines in docker-compose files --- docker-compose.dev.yml | 12 ++++++------ docker-compose.yml | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 66ffa2582..85ff2d058 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -15,13 +15,13 @@ services: context: . dockerfile: Dockerfile_spotlights_dev expose: - - '8000' + - "8000" # Replace below path with the path to your ddw-external-api repo # e.g export SPOTLIGHTS_REPO_PATH=/path/to/ddw-external-api volumes: - - '${SPOTLIGHTS_REPO_PATH}:/src/ddw-external-api' + - "${SPOTLIGHTS_REPO_PATH}:/src/ddw-external-api" ports: - - '8000:8000' + - "8000:8000" depends_on: - db networks: @@ -31,9 +31,9 @@ services: context: . dockerfile: Dockerfile volumes: - - '.:/src' + - ".:/src" expose: - - '80' + - "80" depends_on: - db environment: @@ -46,7 +46,7 @@ services: - API_BASE_URL command: bash -c "export DJANGO_DEV='True' && python manage.py runserver 0.0.0.0:80" ports: - - '80:80' + - "80:80" networks: - ddw_net diff --git a/docker-compose.yml b/docker-compose.yml index f0dafdbce..11beb9764 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.3' +version: "3.3" services: db: @@ -14,9 +14,9 @@ services: context: . dockerfile: Dockerfile volumes: - - '.:/src' + - ".:/src" expose: - - '80' + - "80" depends_on: - db environment: @@ -40,7 +40,7 @@ services: context: . dockerfile: Dockerfile_spotlights_api expose: - - '8000' + - "8000" depends_on: - db networks: @@ -48,8 +48,8 @@ services: nginx: image: nginx:latest ports: - - '80:80' - - '443:443' + - "80:80" + - "443:443" environment: - VIRTUAL_HOST=ddw.devinit.org volumes: @@ -57,7 +57,7 @@ services: - ./static:/static - ./ssl:/etc/ssl/ restart: always - command: '/bin/sh -c ''while :; do sleep 12h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"''' + command: "/bin/sh -c 'while :; do sleep 12h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" depends_on: - web networks: From 39c85516c2855495ce0971b3260292ae839e8589 Mon Sep 17 00:00:00 2001 From: akmiller01 Date: Wed, 9 Aug 2023 12:23:04 -0400 Subject: [PATCH 035/149] Fix donor by recip summation --- data_updates/Python/oecd_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_updates/Python/oecd_data.py b/data_updates/Python/oecd_data.py index efa6c09dc..f57b1f1f5 100644 --- a/data_updates/Python/oecd_data.py +++ b/data_updates/Python/oecd_data.py @@ -123,7 +123,7 @@ recip_data2['Donor Name'] = recip_data2['Donor Name'].replace(['Non-DAC'],['Non-DAC donors (total)']) recip_data2['Donor Name'] = recip_data2['Donor Name'].replace(['Multilateral'],['Multilateral donors (total)']) -recip_data3 = recip_data2.groupby(["Donor Name","Purpose Name","Recipient Name","Year"]).agg({"USD Disbursement Deflated":"sum"}).reset_index() +recip_data3 = recip_data2.groupby(["Purpose Name","Recipient Name","Year"]).agg({"USD Disbursement Deflated":"sum"}).reset_index() recip_data3['Donor Name'] = 'All donors (total)' recip_data = pd.concat([recip_data1, recip_data2]).reset_index(drop=True) From 0947aea42a11dce266584fb975b24eac0f0d0ffe Mon Sep 17 00:00:00 2001 From: Thatcher Kaliisa Date: Mon, 14 Aug 2023 13:41:52 +0300 Subject: [PATCH 036/149] Conditionally set api base url --- frontend/src/App.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index ce845e990..a6fb72789 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -13,7 +13,9 @@ localForage.config({ storeName: 'ddw-store', }); -axios.defaults.baseURL = process.env.API_BASE_URL; +if (process.env.API_BASE_URL) { + axios.defaults.baseURL = process.env.API_BASE_URL; +} const wrapper = document.getElementById('app'); if (wrapper) { From f00068b25a8f27dacf2f92ff609d09f62622a581 Mon Sep 17 00:00:00 2001 From: Thatcher Kaliisa Date: Mon, 14 Aug 2023 13:45:25 +0300 Subject: [PATCH 037/149] Include base url setting under the frontend setup --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 730a11359..444a1b30c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The new and improved DDW Analyst UI interface ### Docker Deployment -1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User +1. Make sure you're starting with a clean DB volume, so Docker knows to create the new User docker-compose down` `docker volume rm metadata2 @@ -162,7 +162,11 @@ To create a test development DB, for local development (e.g. virtualenv steps be npm install -12. Start frontend dev environment which watches and collects static files: +12. Dynamic API base URL setting + + Add an `API_BASE_URL` in the `.env` file and assign it either a localhost, staging, or production url. If not set, this defaults to the url of the current environment in which the application is running. + +13. Start frontend dev environment which watches and collects static files: npm start @@ -267,7 +271,3 @@ Read more [here](./core/docs/API.md) 3. Create a GitHub release with a name format `v[VERSION NUMBER]` - this will deploy to production 4. Create PR from release branch to master/main 5. Merge in release branch to master/main - -### Dynamic API base URL setup - -Add an `API_BASE_URL` in the `.env` file and assign it either a localhost, staging, or production url to test with staging or live data without needing to deploy the code on staging or live. From 5596344809dc48a0f61178ccb9ace8a7a2cfbdee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 14:06:55 +0300 Subject: [PATCH 038/149] Bump tough-cookie and @cypress/request (#971) Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) and [@cypress/request](https://github.com/cypress-io/request). These dependencies needed to be updated together. Updates `tough-cookie` from 4.0.0 to 4.1.3 - [Release notes](https://github.com/salesforce/tough-cookie/releases) - [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md) - [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3) Updates `@cypress/request` from 2.88.10 to 2.88.12 - [Release notes](https://github.com/cypress-io/request/releases) - [Changelog](https://github.com/cypress-io/request/blob/master/CHANGELOG.md) - [Commits](https://github.com/cypress-io/request/compare/v2.88.10...v2.88.12) --- updated-dependencies: - dependency-name: tough-cookie dependency-type: indirect - dependency-name: "@cypress/request" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 202 +++++++++++++++++++++++++++------------------- 1 file changed, 118 insertions(+), 84 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27c6d7033..514e4a31d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2186,9 +2186,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "optional": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -2204,9 +2204,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -5633,7 +5633,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "devOptional": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -8094,7 +8094,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "devOptional": true }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -8150,7 +8150,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "devOptional": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -8733,7 +8733,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, + "devOptional": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -8774,7 +8774,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -11840,29 +11840,6 @@ "node": ">= 6" } }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jsdom/node_modules/ws": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", @@ -13057,7 +13034,7 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13919,12 +13896,18 @@ } }, "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "devOptional": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/query-string": { @@ -13944,6 +13927,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "devOptional": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14513,6 +14502,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "devOptional": true + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -14941,7 +14936,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -15756,16 +15751,27 @@ } }, "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "devOptional": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">=0.8" + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "devOptional": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/tr46": { @@ -16135,6 +16141,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "devOptional": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/use-sync-external-store": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz", @@ -18419,9 +18435,9 @@ } }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "optional": true, "requires": { "aws-sign2": "~0.7.0", @@ -18437,9 +18453,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" } @@ -21128,7 +21144,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "devOptional": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -22996,7 +23012,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "devOptional": true }, "function.prototype.name": { "version": "1.1.5", @@ -23037,7 +23053,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "devOptional": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -23480,7 +23496,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, + "devOptional": true, "requires": { "function-bind": "^1.1.1" } @@ -23509,7 +23525,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "devOptional": true }, "has-tostringtag": { "version": "1.0.0", @@ -25762,23 +25778,6 @@ "mime-types": "^2.1.12" } }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "ws": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", @@ -26666,7 +26665,7 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true + "devOptional": true }, "object-keys": { "version": "1.1.1", @@ -27297,10 +27296,13 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "devOptional": true + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "devOptional": true, + "requires": { + "side-channel": "^1.0.4" + } }, "query-string": { "version": "7.1.1", @@ -27313,6 +27315,12 @@ "strict-uri-encode": "^2.0.0" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "devOptional": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -27747,6 +27755,12 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "devOptional": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -28047,7 +28061,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "devOptional": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -28650,13 +28664,23 @@ "dev": true }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "devOptional": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "devOptional": true + } } }, "tr46": { @@ -28909,6 +28933,16 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "devOptional": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "use-sync-external-store": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz", From 6122dfadf881cdb6dc7afaec5ba76f680381ea92 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 9 Aug 2023 12:38:43 +0300 Subject: [PATCH 039/149] Visit the dataset url and use two click commands to delete a frozen dataset --- frontend/cypress/integration/datasets.cy.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/cypress/integration/datasets.cy.js b/frontend/cypress/integration/datasets.cy.js index 239ca9382..cfab34068 100644 --- a/frontend/cypress/integration/datasets.cy.js +++ b/frontend/cypress/integration/datasets.cy.js @@ -184,7 +184,9 @@ describe('The Datasets Pages', () => { }); it('makes a copy of my dataset', () => { - cy.intercept('/api/datasets/mine/?limit=10&offset=0&search=', { fixture: 'datasets' }).as('getMyDatasets'); + cy.intercept('/api/datasets/mine/?limit=10&offset=0&search=', { fixture: 'datasets' }).as( + 'getMyDatasets', + ); cy.visit('/'); cy.wait('@getMyDatasets'); checkCopiedDataset('be.checked'); @@ -276,6 +278,11 @@ describe('The Datasets Pages', () => { }); it('deletes a frozen dataset', () => { + cy.intercept(`/api/dataset/history/*/?limit=10&offset=0`).as('getFrozenDatasets'); + + cy.visit('/datasets/'); + cy.get('.dataset-row').eq(0).contains('Versions').click({ force: true }); + // Get initial frozen datasets row count cy.get('[data-testid="datasetRows"]') .its('length') @@ -284,7 +291,10 @@ describe('The Datasets Pages', () => { }); // Delete frozen dataset - cy.get('[data-testid="frozen-dataset-delete-button"]').first().dblclick({ force: true }); + cy.get('[data-testid="frozen-dataset-delete-button"]') + .first() + .click({ force: true }) + .click({ force: true }); cy.get('@datasetRowNumber').then((datasetRowNumber) => { cy.get('[data-testid="datasetRows"]').should('have.length', datasetRowNumber - 1); }); From 777667f74dedbb9d7a98e204dfecd78335b51ad7 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 9 Aug 2023 12:48:53 +0300 Subject: [PATCH 040/149] Remove unnecessary wait and add a delay when typing in search bar --- frontend/cypress/integration/datasets.cy.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/cypress/integration/datasets.cy.js b/frontend/cypress/integration/datasets.cy.js index cfab34068..ec7bf745c 100644 --- a/frontend/cypress/integration/datasets.cy.js +++ b/frontend/cypress/integration/datasets.cy.js @@ -88,8 +88,7 @@ describe('The Datasets Pages', () => { cy.wait('@datasets').then((res) => { cy.get('.search').first().click({ force: true }); - cy.wait(4000); - cy.get('.search').first().type('FTS dependency codenames{enter}'); + cy.get('.search').first().type('FTS dependency codenames{enter}', { delay: 200 }); cy.url().should('eq', `${Cypress.config('baseUrl')}/datasets/?page=1&source=43`); cy.get('.text').eq(1).should('have.text', 'FTS dependency codenames'); cy.getAccessToken().then((token) => { From 95e94139e6c6c34787fb7bfa500dda8ce4f310a9 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Fri, 11 Aug 2023 12:56:04 +0300 Subject: [PATCH 041/149] Add delay to type command to fix timeout error in queryBuilder.select.cy file --- frontend/cypress/support/commands.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/cypress/support/commands.js b/frontend/cypress/support/commands.js index 5fb8b3d4e..e1ee2871f 100644 --- a/frontend/cypress/support/commands.js +++ b/frontend/cypress/support/commands.js @@ -35,12 +35,11 @@ Cypress.Commands.add('login', (email, password) => { Cypress.Commands.add('fillOperationForm', (name, description, dataSource = 'CRS ISO codes') => { // Visit query builder type name and choose datasource cy.visit('/queries/build'); - cy.wait(5000); cy.get('[name="name"]').focus().type(name); cy.get('[name="description"]').focus().type(description); cy.get('[data-testid="active-data-source"]') .click({ force: true }) - .type(`${dataSource}{downarrow}{downarrow}{enter}`); + .type(`${dataSource}{downarrow}{downarrow}{enter}`, { delay: 300 }); cy.get('.item', { timeout: 10000 }).eq(0).click({ force: true }); }); From 0dcfa3c7fff72e0bbf2f0278ac866eb937edfb23 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Mon, 14 Aug 2023 12:13:43 +0300 Subject: [PATCH 042/149] Fix timeout error --- .../cypress/integration/dataSources.cy.js | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/frontend/cypress/integration/dataSources.cy.js b/frontend/cypress/integration/dataSources.cy.js index 9594d294f..eded92ca5 100644 --- a/frontend/cypress/integration/dataSources.cy.js +++ b/frontend/cypress/integration/dataSources.cy.js @@ -124,26 +124,35 @@ describe('The Data Sources Page', () => { }); it('downloads a successfully frozen data source', () => { - cy.wait(100); - cy.get('.dataset-row') + cy.intercept('api/sources/?limit=10&offset=0&search=&frozen=0').as('datasources'); + cy.visit('/sources'); + cy.get('[data-testid="sources-table-search"]').type('FTS ISO codes{enter}'); + cy.get('[data-testid="sources-table-row"]') .first() - .then((row) => { - const badge = row.find('[data-testid="frozen-data-status"]'); - if (badge[0].innerHTML === 'Completed') { - cy.document().then((doc) => { - const frozenDatasetUrl = doc - .querySelector('[data-testid="frozen-source-download-button"]') - .getAttribute('href'); - cy.request({ - url: `${Cypress.config('baseUrl')}${frozenDatasetUrl}`, - encoding: 'base64', - }).then((response) => { - expect(response.status).to.equal(200); - }); + .then(($element) => { + cy.wrap($element).contains('Versions').click(); + cy.get('.dataset-row') + .first() + .then((row) => { + const badge = row.find('[data-testid="frozen-data-status"]'); + if (badge[0].innerHTML === 'Completed') { + cy.document().then((doc) => { + const frozenDatasetUrl = doc + .querySelector('[data-testid="frozen-source-download-button"]') + .getAttribute('href'); + cy.request({ + url: `${Cypress.config('baseUrl')}${frozenDatasetUrl}`, + encoding: 'base64', + }).then((response) => { + expect(response.status).to.equal(200); + }); + }); + } else if (['Completed', 'Pending'].includes(badge[0].innerHTML)) { + cy.get(row.find('[data-testid="frozen-source-download-button"]')).should( + 'not.exist', + ); + } }); - } else if (['Completed', 'Pending'].includes(badge[0].innerHTML)) { - cy.get(row.find('[data-testid="frozen-source-download-button"]')).should('not.exist'); - } }); }); From 8621a794139c0ee2897aca7ef7fc3752ab086abe Mon Sep 17 00:00:00 2001 From: Wakibi Chris Date: Wed, 16 Aug 2023 12:14:05 +0300 Subject: [PATCH 043/149] Fix CI deployment --- .github/workflows/CI.yml | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0b2639240..5f970f082 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -6,6 +6,7 @@ on: - "*" branches: - "develop" + - "fix/scp-action" pull_request: branches: - "*" @@ -111,7 +112,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set env for develop branch - if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') + if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') || endsWith(github.ref, '/scp-action') run: | echo "HOST=${{ secrets.DEV_HOST }}" >> $GITHUB_ENV echo "USERNAME=${{ secrets.DEV_USER }}" >> $GITHUB_ENV @@ -132,32 +133,30 @@ jobs: run: echo VERSION=$(echo $GITHUB_REF | cut -d / -f 3) >> $GITHUB_OUTPUT - name: copy deploy scripts to dev server - if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') - uses: appleboy/scp-action@master - env: - HOST: ${{ env.HOST }} - USERNAME: ${{ env.USERNAME }} - PORT: ${{ secrets.PORT }} - KEY: ${{ secrets.KEY }} + if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') || endsWith(github.ref, '/scp-action') + uses: appleboy/scp-action@v0.1.4 with: + host: ${{ env.HOST }} + username: ${{ env.USERNAME }} + post: ${{ secrets.PORT }} + key: ${{ secrets.KEY }} source: "deploy_script.sh,deploy.sh" target: "." - name: copy deploy script to production server if: startsWith(github.ref, 'refs/tags/v') && !endsWith(github.ref, '-beta') - uses: appleboy/scp-action@master - env: - HOST: ${{ env.HOST }} - USERNAME: ${{ env.USERNAME }} - PORT: ${{ secrets.PORT }} - KEY: ${{ secrets.KEY }} + uses: appleboy/scp-action@v0.1.4 with: + host: ${{ env.HOST }} + username: ${{ env.USERNAME }} + port: ${{ secrets.PORT }} + key: ${{ secrets.KEY }} source: "deploy.sh" target: "." - name: ssh into remote dev server for develop branch if: endsWith(github.ref, '/develop') - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -170,7 +169,7 @@ jobs: - name: ssh into remote dev server for beta tag if: endsWith(github.ref, '-beta') - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -186,7 +185,7 @@ jobs: - name: ssh into remote production server if: startsWith(github.ref, 'refs/tags/v') && !endsWith(github.ref, '-beta') - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -201,7 +200,7 @@ jobs: ./deploy.sh $version - name: Build JS - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} From 6c7d43fbf97a5432ecaed5fdabbafab0c95f0428 Mon Sep 17 00:00:00 2001 From: Wakibi Chris Date: Wed, 16 Aug 2023 12:26:11 +0300 Subject: [PATCH 044/149] Attempt to install scp-action branch --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5f970f082..c070ab529 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -107,7 +107,7 @@ jobs: if: contains(' refs/heads/develop - ', github.ref) || startsWith(github.ref, 'refs/tags/v') + ', github.ref) || startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, '/scp-action') steps: - uses: actions/checkout@v3 From 1ea408c84e0f1a2f109e5241f5e50573d7010ec7 Mon Sep 17 00:00:00 2001 From: Wakibi Chris Date: Wed, 16 Aug 2023 12:38:06 +0300 Subject: [PATCH 045/149] Fix version name --- .github/workflows/CI.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index c070ab529..d14b1c29b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -156,7 +156,7 @@ jobs: - name: ssh into remote dev server for develop branch if: endsWith(github.ref, '/develop') - uses: appleboy/ssh-action@1.0.0 + uses: appleboy/ssh-action@v1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -169,7 +169,7 @@ jobs: - name: ssh into remote dev server for beta tag if: endsWith(github.ref, '-beta') - uses: appleboy/ssh-action@1.0.0 + uses: appleboy/ssh-action@v1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -185,7 +185,7 @@ jobs: - name: ssh into remote production server if: startsWith(github.ref, 'refs/tags/v') && !endsWith(github.ref, '-beta') - uses: appleboy/ssh-action@1.0.0 + uses: appleboy/ssh-action@v1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} @@ -200,7 +200,7 @@ jobs: ./deploy.sh $version - name: Build JS - uses: appleboy/ssh-action@1.0.0 + uses: appleboy/ssh-action@v1.0.0 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} From b46fdb2a399fda3e432a81d835403eea91c1d277 Mon Sep 17 00:00:00 2001 From: Wakibi Chris Date: Wed, 16 Aug 2023 12:48:39 +0300 Subject: [PATCH 046/149] Remove debugging branch --- .github/workflows/CI.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d14b1c29b..79f5947be 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -6,7 +6,6 @@ on: - "*" branches: - "develop" - - "fix/scp-action" pull_request: branches: - "*" @@ -107,12 +106,12 @@ jobs: if: contains(' refs/heads/develop - ', github.ref) || startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, '/scp-action') + ', github.ref) || startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v3 - name: Set env for develop branch - if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') || endsWith(github.ref, '/scp-action') + if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') run: | echo "HOST=${{ secrets.DEV_HOST }}" >> $GITHUB_ENV echo "USERNAME=${{ secrets.DEV_USER }}" >> $GITHUB_ENV @@ -133,12 +132,12 @@ jobs: run: echo VERSION=$(echo $GITHUB_REF | cut -d / -f 3) >> $GITHUB_OUTPUT - name: copy deploy scripts to dev server - if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') || endsWith(github.ref, '/scp-action') + if: endsWith(github.ref, '/develop') || endsWith(github.ref, '-beta') uses: appleboy/scp-action@v0.1.4 with: host: ${{ env.HOST }} username: ${{ env.USERNAME }} - post: ${{ secrets.PORT }} + port: ${{ secrets.PORT }} key: ${{ secrets.KEY }} source: "deploy_script.sh,deploy.sh" target: "." From a7dd9e7ad14129e0a393982450a24959b6e03223 Mon Sep 17 00:00:00 2001 From: Thatcher Kaliisa Date: Wed, 16 Aug 2023 15:02:31 +0300 Subject: [PATCH 047/149] Replace repo with schema field in delete_archive method --- core/query.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/query.py b/core/query.py index a6aa1194a..77a0c67f8 100644 --- a/core/query.py +++ b/core/query.py @@ -50,7 +50,7 @@ def delete_archive(id): frozen_data = FrozenData.objects.get(pk=id) table_name = frozen_data.frozen_db_table # Delete from sources table and operation steps - frozen_source = Source.objects.filter(repo='archives', active_mirror_name=table_name) + frozen_source = Source.objects.filter(schema='archives', active_mirror_name=table_name) operation_step_qs = OperationStep.objects.filter(source_id__in=frozen_source) operation = Operation.objects.filter(pk__in=operation_step_qs.values_list('operation_id', flat=True)) operation.delete() From eeee22de18839405ad752c73f09b027636c139b8 Mon Sep 17 00:00:00 2001 From: Thatcher Kaliisa Date: Wed, 16 Aug 2023 17:19:06 +0300 Subject: [PATCH 048/149] Delete frozen column maps before deleting frozen source --- core/query.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/query.py b/core/query.py index 77a0c67f8..501b882de 100644 --- a/core/query.py +++ b/core/query.py @@ -3,7 +3,7 @@ from django.db import transaction from core.pypika_utils import QueryBuilder from data.db_manager import fetch_data, analyse_query, run_query -from core.models import FrozenData, OperationStep, Source, Operation, FrozenData +from core.models import FrozenData, OperationStep, Source, Operation, FrozenData, SourceColumnMap from pypika import Table, Query from pypika import functions as pypika_fn from core.pypika_fts_utils import TableQueryBuilder @@ -52,9 +52,13 @@ def delete_archive(id): # Delete from sources table and operation steps frozen_source = Source.objects.filter(schema='archives', active_mirror_name=table_name) operation_step_qs = OperationStep.objects.filter(source_id__in=frozen_source) + frozen_column_maps = SourceColumnMap.objects.filter(source_id__in=frozen_source) operation = Operation.objects.filter(pk__in=operation_step_qs.values_list('operation_id', flat=True)) operation.delete() operation_step_qs.delete() + #Delete frozen column maps before deleting frozen source + for column_map in frozen_column_maps: + column_map.delete() frozen_source.delete() frozen_data.delete() query_builder = TableQueryBuilder(table_name, "archives") From 8c4693f9d18ad5bcd18ea57c954da3adc42bcc49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 08:28:05 +0300 Subject: [PATCH 049/149] Bump fastify/github-action-merge-dependabot from 3.9.0 to 3.9.1 (#977) Bumps [fastify/github-action-merge-dependabot](https://github.com/fastify/github-action-merge-dependabot) from 3.9.0 to 3.9.1. - [Release notes](https://github.com/fastify/github-action-merge-dependabot/releases) - [Commits](https://github.com/fastify/github-action-merge-dependabot/compare/v3.9.0...v3.9.1) --- updated-dependencies: - dependency-name: fastify/github-action-merge-dependabot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 79f5947be..b7a269421 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -95,7 +95,7 @@ jobs: pull-requests: write contents: write steps: - - uses: fastify/github-action-merge-dependabot@v3.9.0 + - uses: fastify/github-action-merge-dependabot@v3.9.1 with: github-token: ${{secrets.PA_TOKEN}} From 3de80e4cf626573a373379b06da62082d678a6e0 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 16 Aug 2023 15:13:50 +0300 Subject: [PATCH 050/149] Modify pathname, fix basic/advanced switch button text --- .../OperationTabContainer/OperationTabContainer.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx b/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx index 452b2031e..7c2861861 100644 --- a/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx +++ b/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx @@ -51,6 +51,10 @@ const OperationTabContainer: FunctionComponent = (props) => { } }; + const modifyPath = (path: string) => { + return path.replace(/\/\d+\/?$/, '/'); + }; + return ( @@ -86,7 +90,8 @@ const OperationTabContainer: FunctionComponent = (props) => { onClick={() => handleSwitchButton()} style={{ position: 'absolute', right: 9, top: -20 }} > - Switch to {location.pathname === '/queries/build/' ? 'Advanced' : 'Basic'} Query Builder + Switch to {modifyPath(location.pathname) === '/queries/build/' ? 'Advanced' : 'Basic'} + Query Builder Date: Tue, 22 Aug 2023 12:11:21 +0300 Subject: [PATCH 051/149] Add space between Advanced/Basic and Query text --- .../components/OperationTabContainer/OperationTabContainer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx b/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx index 7c2861861..ca58da96f 100644 --- a/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx +++ b/frontend/src/components/OperationTabContainer/OperationTabContainer.tsx @@ -90,7 +90,7 @@ const OperationTabContainer: FunctionComponent = (props) => { onClick={() => handleSwitchButton()} style={{ position: 'absolute', right: 9, top: -20 }} > - Switch to {modifyPath(location.pathname) === '/queries/build/' ? 'Advanced' : 'Basic'} + Switch to {modifyPath(location.pathname) === '/queries/build/' ? 'Advanced' : 'Basic'}{' '} Query Builder From 1ec68ac2549d0cf537fd6674badd6dae1ab567ab Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 17 Aug 2023 12:14:21 +0300 Subject: [PATCH 052/149] Fix assertion error --- frontend/cypress/integration/datasets.cy.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/cypress/integration/datasets.cy.js b/frontend/cypress/integration/datasets.cy.js index ec7bf745c..c2cb788a0 100644 --- a/frontend/cypress/integration/datasets.cy.js +++ b/frontend/cypress/integration/datasets.cy.js @@ -206,7 +206,7 @@ describe('The Datasets Pages', () => { it('views data in datasets', () => { cy.fixture('datasets').then((datasets) => { - cy.intercept('/api/datasets/mine/?limit=10&offset=0&search=', datasets); + cy.intercept('/api/datasets/mine/?limit=10&offset=0&search=', datasets).as('datasets'); }); cy.fixture('datasetTableData').then((data) => { cy.intercept('/api/dataset/data/346', data); @@ -214,6 +214,7 @@ describe('The Datasets Pages', () => { // View dataset data in tabular form cy.visit('/'); + cy.wait('@datasets'); cy.get('.dataset-row') .eq(16) .then(($datasetRow) => { From c33e55f86a69f7f90bd16b9754cd57f800e71a19 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Mon, 21 Aug 2023 14:44:31 +0300 Subject: [PATCH 053/149] Force double click to delete a frozen data source --- frontend/cypress/integration/dataSources.cy.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/cypress/integration/dataSources.cy.js b/frontend/cypress/integration/dataSources.cy.js index eded92ca5..7fe5ee72e 100644 --- a/frontend/cypress/integration/dataSources.cy.js +++ b/frontend/cypress/integration/dataSources.cy.js @@ -203,7 +203,10 @@ describe('The Data Sources Page', () => { cy.get('[data-testid="frozen-data-description"]') .first() .contains('End-to-end test freeze data source'); - cy.get('[data-testid="frozen-data-delete-button"]').first().dblclick({ force: true }); + cy.get('[data-testid="frozen-data-delete-button"]') + .first() + .click({ force: true }) + .click({ force: true }); // Check row count after deleting cy.get('@dataSourceRowNumber').then((dataSourceRowNumber) => { From 6d396008fef6b08d7405256fd600eb8b21a4cf45 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Tue, 22 Aug 2023 08:26:45 +0300 Subject: [PATCH 054/149] Remove versions action for frozen data sources --- .../components/SourcesTable/SourcesTable.tsx | 2 ++ .../SourcesTableCard/SourcesTableCard.tsx | 7 ++++++- .../SourcesTableRow/SourcesTableRow.tsx | 19 +++++++++++-------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/SourcesTable/SourcesTable.tsx b/frontend/src/components/SourcesTable/SourcesTable.tsx index 0b9f82bef..c9ad2c68f 100644 --- a/frontend/src/components/SourcesTable/SourcesTable.tsx +++ b/frontend/src/components/SourcesTable/SourcesTable.tsx @@ -11,6 +11,7 @@ import { SourcesTableRow } from '../SourcesTableRow'; interface SourcesTableProps { sources: List; activeSource?: SourceMap; + value: number; } export const SourcesTable: FunctionComponent = (props) => { const [showModal, setShowModal] = useState(false); @@ -41,6 +42,7 @@ export const SourcesTable: FunctionComponent = (props) => { onShowDatasets={onShowDatasets} onShowMetadata={onShowMetadata} onShowHistory={onShowHistory} + value={props.value} /> )); } diff --git a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx index cf95d2f1d..9afae60d0 100644 --- a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx +++ b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx @@ -21,6 +21,7 @@ interface ComponentProps { offset: number; links?: LinksMap; count: number; + value: number; } type SourcesTableCardProps = ComponentProps; type TableFilters = { @@ -136,7 +137,11 @@ export const SourcesTableCard: FunctionComponent = (props - + {renderPagination()} diff --git a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx index 6d7c30f53..ada077f6f 100644 --- a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx +++ b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx @@ -9,6 +9,7 @@ export interface SourcesTableRowProps { onShowDatasets: (source: SourceMap) => void; onShowMetadata: (source: SourceMap) => void; onShowHistory: (source: SourceMap) => void; + value: number; } const StyledTD = styled.td` @@ -45,14 +46,16 @@ export const SourcesTableRow: FunctionComponent = ({ sourc > Datasets - + {props.value === 0 && ( + + )} From 18d675d641a1f695b9048ea1958a90f79384d15b Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 23 Aug 2023 14:16:10 +0300 Subject: [PATCH 055/149] Test that versions button is hidden --- frontend/cypress/integration/dataSources.cy.js | 17 +++++++++++++++++ .../SourcesTableCard/SourcesTableCard.tsx | 1 + 2 files changed, 18 insertions(+) diff --git a/frontend/cypress/integration/dataSources.cy.js b/frontend/cypress/integration/dataSources.cy.js index 7fe5ee72e..d68c7f213 100644 --- a/frontend/cypress/integration/dataSources.cy.js +++ b/frontend/cypress/integration/dataSources.cy.js @@ -91,6 +91,23 @@ describe('The Data Sources Page', () => { }); }); + it('versions button is hidden for frozen data sources', () => { + cy.visit('/sources'); + cy.get('[data-testid="sources-dropdown-filter"]').type('frozen{enter}'); + cy.get('[data-testid="sources-table-row"]') + .first() + .then(() => { + cy.get('[data-testid="source-table-row-actions"]').should('not.contain', 'Versions'); + }); + + cy.get('[data-testid="sources-dropdown-filter"]').type('all{enter}'); + cy.get('[data-testid="sources-table-row"]') + .first() + .then(() => { + cy.get('[data-testid="source-table-row-actions"]').should('not.contain', 'Versions'); + }); + }); + xit('actions buttons function properly', () => { // TODO: add test }); diff --git a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx index 9afae60d0..80a3ec6ef 100644 --- a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx +++ b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx @@ -132,6 +132,7 @@ export const SourcesTableCard: FunctionComponent = (props value={frozenQuery} options={dropDownValues} onChange={onFilterByFrozenDataSource} + data-testid="sources-dropdown-filter" /> From d2288fc470ad27bdf981800e3e4a20462130abc6 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Fri, 25 Aug 2023 16:32:15 +0300 Subject: [PATCH 056/149] Test that it filters by dropdown selection --- .../cypress/integration/dataSources.cy.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/frontend/cypress/integration/dataSources.cy.js b/frontend/cypress/integration/dataSources.cy.js index d68c7f213..93bb9c73f 100644 --- a/frontend/cypress/integration/dataSources.cy.js +++ b/frontend/cypress/integration/dataSources.cy.js @@ -108,6 +108,36 @@ describe('The Data Sources Page', () => { }); }); + it('filters by dropdown selection', () => { + cy.intercept('api/sources/?limit=10&offset=0&search=&frozen=0').as('datasources'); + + cy.visit('/sources'); + cy.url().should('eq', `${Cypress.config('baseUrl')}/sources/`); + + cy.wait('@datasources').then((res) => { + cy.get('[data-testid="sources-dropdown-filter"]').type('frozen{enter}'); + cy.url().should('eq', `${Cypress.config('baseUrl')}/sources/?frozen=1`); + cy.get('[data-testid="sources-dropdown-filter"] > .divider').should( + 'contain', + 'Frozen Sources', + ); + + cy.getAccessToken().then((token) => { + if (token) { + const options = { + url: `${Cypress.config('baseUrl')}/api/sources/?&offset=0&frozen=1`, + headers: { + Authorization: `token ${token.replaceAll('"', '')}`, + }, + }; + cy.request(options).then((response) => { + expect(res.response.body.count).to.not.equal(response.body.count); + }); + } + }); + }); + }); + xit('actions buttons function properly', () => { // TODO: add test }); From 2c159a1c2d4e3b5c15bbb6ad44a70e9d4303186b Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Fri, 25 Aug 2023 21:26:25 +0300 Subject: [PATCH 057/149] Set value property to optional --- frontend/src/components/SourcesTable/SourcesTable.tsx | 4 ++-- frontend/src/components/SourcesTableCard/SourcesTableCard.tsx | 2 +- frontend/src/components/SourcesTableRow/SourcesTableRow.tsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/SourcesTable/SourcesTable.tsx b/frontend/src/components/SourcesTable/SourcesTable.tsx index c9ad2c68f..715ad9f26 100644 --- a/frontend/src/components/SourcesTable/SourcesTable.tsx +++ b/frontend/src/components/SourcesTable/SourcesTable.tsx @@ -11,7 +11,7 @@ import { SourcesTableRow } from '../SourcesTableRow'; interface SourcesTableProps { sources: List; activeSource?: SourceMap; - value: number; + value?: number; } export const SourcesTable: FunctionComponent = (props) => { const [showModal, setShowModal] = useState(false); @@ -42,7 +42,7 @@ export const SourcesTable: FunctionComponent = (props) => { onShowDatasets={onShowDatasets} onShowMetadata={onShowMetadata} onShowHistory={onShowHistory} - value={props.value} + value={props.value as number} /> )); } diff --git a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx index 80a3ec6ef..81c90b296 100644 --- a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx +++ b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx @@ -21,7 +21,7 @@ interface ComponentProps { offset: number; links?: LinksMap; count: number; - value: number; + value?: number; } type SourcesTableCardProps = ComponentProps; type TableFilters = { diff --git a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx index ada077f6f..e94a90f6b 100644 --- a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx +++ b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx @@ -9,7 +9,7 @@ export interface SourcesTableRowProps { onShowDatasets: (source: SourceMap) => void; onShowMetadata: (source: SourceMap) => void; onShowHistory: (source: SourceMap) => void; - value: number; + value?: number; } const StyledTD = styled.td` From 06b0386b5976799d28a6c5b68fac5a299fac6082 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Wed, 30 Aug 2023 11:09:04 +0300 Subject: [PATCH 058/149] Update unit tests --- .../__tests__/SourcesTable.spec.tsx | 8 +++--- .../__tests__/SourcesTableRow.spec.tsx | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx b/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx index 0217e9bdc..f8a26ed1a 100644 --- a/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx +++ b/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx @@ -38,7 +38,7 @@ afterEach(cleanup); test('renders correctly with default props', () => { const renderer = TestRenderer.create( - , + , ).toJSON(); expect(renderer).toMatchSnapshot(); @@ -46,7 +46,7 @@ test('renders correctly with default props', () => { test('renders an empty table if no sources are provided', () => { const renderer = TestRenderer.create( - , + , ).toJSON(); expect(renderer).toMatchSnapshot(); @@ -54,7 +54,7 @@ test('renders an empty table if no sources are provided', () => { test('renders correctly when the sources are updated', () => { const { container, rerender } = render( - , + , ); sourcesList = sourcesList.push( source @@ -63,7 +63,7 @@ test('renders correctly when the sources are updated', () => { .set('indicator_acronym', 'DAC1') .set('last_updated_on', new Date('August 19, 2018 23:15:30').toISOString()), ); - rerender(); + rerender(); expect(container).toMatchSnapshot(); }); diff --git a/frontend/src/components/SourcesTableRow/__tests__/SourcesTableRow.spec.tsx b/frontend/src/components/SourcesTableRow/__tests__/SourcesTableRow.spec.tsx index b6d7de231..0032db6ea 100644 --- a/frontend/src/components/SourcesTableRow/__tests__/SourcesTableRow.spec.tsx +++ b/frontend/src/components/SourcesTableRow/__tests__/SourcesTableRow.spec.tsx @@ -18,6 +18,19 @@ const props: SourcesTableRowProps = { onShowDatasets: jest.fn(), onShowMetadata: jest.fn(), onShowHistory: jest.fn(), + value: 0, +}; + +const props1: SourcesTableRowProps = { + source: Map({ + indicator: 'Frozen Common Reporting Standard End-to-end test freeze data source 20230822', + indicator_acronym: 'crs', + last_updated_on: '2023-08-22T08:38:29.764694Z', + }) as SourceMap, + onShowDatasets: jest.fn(), + onShowMetadata: jest.fn(), + onShowHistory: jest.fn(), + value: 1, }; test('renders correctly with the default props', () => { @@ -73,3 +86,16 @@ test('history button responds to click events', () => { expect(props.onShowHistory).toHaveBeenCalled(); }); + +test('history button is hidden for frozen sources', () => { + const table = document.createElement('table'); + const tableBody = document.createElement('tbody'); + table.appendChild(tableBody); + const { getByTestId } = render(, { + container: document.body.appendChild(tableBody), + }); + + const actions = getByTestId('source-table-row-actions') as HTMLElement; + expect(actions).toBeDefined(); + expect(actions).not.toContain('Versions'); +}); From 9e77940fbb3ad30625581ebc9c24f84ed601d8e1 Mon Sep 17 00:00:00 2001 From: APIYOJENNIFER Date: Thu, 31 Aug 2023 12:53:59 +0300 Subject: [PATCH 059/149] Rename value to sourceFilterValue --- frontend/src/components/SourcesTable/SourcesTable.tsx | 4 ++-- .../SourcesTable/__tests__/SourcesTable.spec.tsx | 8 ++++---- .../src/components/SourcesTableCard/SourcesTableCard.tsx | 4 ++-- .../src/components/SourcesTableRow/SourcesTableRow.tsx | 4 ++-- .../SourcesTableRow/__tests__/SourcesTableRow.spec.tsx | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/SourcesTable/SourcesTable.tsx b/frontend/src/components/SourcesTable/SourcesTable.tsx index 715ad9f26..37c7a0e86 100644 --- a/frontend/src/components/SourcesTable/SourcesTable.tsx +++ b/frontend/src/components/SourcesTable/SourcesTable.tsx @@ -11,7 +11,7 @@ import { SourcesTableRow } from '../SourcesTableRow'; interface SourcesTableProps { sources: List; activeSource?: SourceMap; - value?: number; + sourceFilterValue?: number; } export const SourcesTable: FunctionComponent = (props) => { const [showModal, setShowModal] = useState(false); @@ -42,7 +42,7 @@ export const SourcesTable: FunctionComponent = (props) => { onShowDatasets={onShowDatasets} onShowMetadata={onShowMetadata} onShowHistory={onShowHistory} - value={props.value as number} + sourceFilterValue={props.sourceFilterValue as number} /> )); } diff --git a/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx b/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx index f8a26ed1a..8572d8504 100644 --- a/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx +++ b/frontend/src/components/SourcesTable/__tests__/SourcesTable.spec.tsx @@ -38,7 +38,7 @@ afterEach(cleanup); test('renders correctly with default props', () => { const renderer = TestRenderer.create( - , + , ).toJSON(); expect(renderer).toMatchSnapshot(); @@ -46,7 +46,7 @@ test('renders correctly with default props', () => { test('renders an empty table if no sources are provided', () => { const renderer = TestRenderer.create( - , + , ).toJSON(); expect(renderer).toMatchSnapshot(); @@ -54,7 +54,7 @@ test('renders an empty table if no sources are provided', () => { test('renders correctly when the sources are updated', () => { const { container, rerender } = render( - , + , ); sourcesList = sourcesList.push( source @@ -63,7 +63,7 @@ test('renders correctly when the sources are updated', () => { .set('indicator_acronym', 'DAC1') .set('last_updated_on', new Date('August 19, 2018 23:15:30').toISOString()), ); - rerender(); + rerender(); expect(container).toMatchSnapshot(); }); diff --git a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx index 81c90b296..abb7bb23e 100644 --- a/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx +++ b/frontend/src/components/SourcesTableCard/SourcesTableCard.tsx @@ -21,7 +21,7 @@ interface ComponentProps { offset: number; links?: LinksMap; count: number; - value?: number; + sourceFilterValue?: number; } type SourcesTableCardProps = ComponentProps; type TableFilters = { @@ -141,7 +141,7 @@ export const SourcesTableCard: FunctionComponent = (props {renderPagination()} diff --git a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx index e94a90f6b..b3c76681c 100644 --- a/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx +++ b/frontend/src/components/SourcesTableRow/SourcesTableRow.tsx @@ -9,7 +9,7 @@ export interface SourcesTableRowProps { onShowDatasets: (source: SourceMap) => void; onShowMetadata: (source: SourceMap) => void; onShowHistory: (source: SourceMap) => void; - value?: number; + sourceFilterValue?: number; } const StyledTD = styled.td` @@ -46,7 +46,7 @@ export const SourcesTableRow: FunctionComponent = ({ sourc > Datasets - {props.value === 0 && ( + {props.sourceFilterValue === 0 && (