From 1280f92f0c39dcd961f8890cc08cbb399f3cccaa Mon Sep 17 00:00:00 2001 From: matsjs Date: Wed, 9 Jun 2021 09:49:50 +0200 Subject: [PATCH 01/31] fix: fixes header language and styling --- src/app/app-nav-bar/app-nav-bar.tsx | 8 ++++---- src/app/app-nav-bar/styled.ts | 14 +++++++++++--- src/components/dropdown-menu/styled.ts | 5 +++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/app/app-nav-bar/app-nav-bar.tsx b/src/app/app-nav-bar/app-nav-bar.tsx index ab970290d..de19e714d 100644 --- a/src/app/app-nav-bar/app-nav-bar.tsx +++ b/src/app/app-nav-bar/app-nav-bar.tsx @@ -30,7 +30,7 @@ interface Props { onChangeLanguage: (language: string) => void; } -const transportItems = ( +const transportItems = () => ( <>
  • {localization.menu.aboutNap} @@ -58,7 +58,7 @@ const transportItems = ( ); -const fdkItems = ( +const fdkItems = () => ( <>
  • @@ -142,7 +142,7 @@ export const AppNavBar: FC = onChangeLanguage => ( - {isTransportportal ? transportItems : fdkItems} + {isTransportportal ? transportItems() : fdkItems()} = onChangeLanguage => ( caret title={localization.app.menu} > - {isTransportportal ? transportItems : fdkItems} + {isTransportportal ? transportItems() : fdkItems()} {languageButtons(onChangeLanguage)} diff --git a/src/app/app-nav-bar/styled.ts b/src/app/app-nav-bar/styled.ts index ff6c8a899..a49658afb 100644 --- a/src/app/app-nav-bar/styled.ts +++ b/src/app/app-nav-bar/styled.ts @@ -83,14 +83,22 @@ const NavigationLinks = styled.ul` margin-right: 1em; font-size: ${theme.fontSize('FS16')}; - & > li * { + & li { ${() => isTransportportal ? css` - color: ${theme.colour(Colour.NEUTRAL, 'N0')}; + & > a, + & > a > div, + & > button { + color: ${theme.colour(Colour.NEUTRAL, 'N0')}; + } ` : css` - color: ${theme.colour(Colour.NEUTRAL, 'N70')}; + & > a, + & > a > div, + & > button { + color: ${theme.colour(Colour.NEUTRAL, 'N70')}; + } `} } diff --git a/src/components/dropdown-menu/styled.ts b/src/components/dropdown-menu/styled.ts index 86b43678c..1dcacdf26 100644 --- a/src/components/dropdown-menu/styled.ts +++ b/src/components/dropdown-menu/styled.ts @@ -105,7 +105,12 @@ const Dropdown = styled.ul` background-color: ${({ theme: t }) => t.extendedColors.neutralLight}; } + > a { + color: ${theme.colour(Colour.NEUTRAL, 'N70')}; + } + > button { + color: ${theme.colour(Colour.NEUTRAL, 'N70')}; border: none; background-color: transparent; width: 100%; From 1c699dbd4aee988fecb2e8725ffa8bf149755649 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Thu, 24 Jun 2021 15:05:14 +0200 Subject: [PATCH 02/31] chore: add cell padding --- src/components/markdown/styled.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/markdown/styled.ts b/src/components/markdown/styled.ts index a006711c4..ad39edc83 100644 --- a/src/components/markdown/styled.ts +++ b/src/components/markdown/styled.ts @@ -22,6 +22,10 @@ const ReactMarkdown = styled(ReactMarkdownBase)` list-style: none; margin-left: 0; } + + table td { + padding-right: 10px; + } `; export default { From de385552141009af8762eabc2bdd9d8ae5a513c8 Mon Sep 17 00:00:00 2001 From: Hans Olav Sund Date: Tue, 29 Jun 2021 12:55:04 +0200 Subject: [PATCH 03/31] chore: updated prod deploy to main branch --- .github/workflows/deploy-prod.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-prod.yaml b/.github/workflows/deploy-prod.yaml index 62d621add..e73dcc617 100644 --- a/.github/workflows/deploy-prod.yaml +++ b/.github/workflows/deploy-prod.yaml @@ -3,7 +3,7 @@ name: Deploy to production on: push: branches: - - master + - main workflow_dispatch: jobs: @@ -21,7 +21,7 @@ jobs: service_account_key: ${{ secrets.GCP_SA_DIGDIR_FDK_GCR_KEY }} - name: Configure docker to use the gcloud command-line tool as a credential helper - run: gcloud auth configure-docker + run: gcloud auth configure-docker eu.gcr.io - name: Build Docker image run: docker build . -t eu.gcr.io/digdir-fdk-infra/fdk-portal:$GITHUB_SHA -t eu.gcr.io/digdir-fdk-infra/fdk-portal:latest --build-arg GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} From 5ee836d1a69eeb4db4a19ca30ca99222694f32e2 Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Thu, 1 Jul 2021 14:53:35 +0200 Subject: [PATCH 04/31] chore: add dotenv and prettierrc (#957) --- .env.example | 11 +++++++++++ .gitignore | 5 ++++- .prettierrc | 7 +++++++ src/config.js | 14 -------------- 4 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 .env.example create mode 100644 .prettierrc diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..7a4ec8c50 --- /dev/null +++ b/.env.example @@ -0,0 +1,11 @@ +SEARCH_API_HOST=https://www.staging.fellesdatakatalog.digdir.no +SEARCH_FULLTEXT_HOST=https://search.staging.fellesdatakatalog.digdir.no +CMS_API_HOST=https://cms-fellesdatakatalog.digdir.no +ORGANIZATION_HOST=https://organization-bff.staging.fellesdatakatalog.digdir.no +ORGANIZATION_CATALOGUE_HOST=https://organization-catalogue.staging.fellesdatakatalog.digdir.no +REPORT_API_HOST=https://reports-bff.staging.fellesdatakatalog.digdir.no +METADATA_QUALITY_ASSESSMENT_API_HOST=https://metadata-quality.staging.fellesdatakatalog.digdir.no +FDK_REGISTRATION_BASE_URI=https://registrering.staging.fellesdatakatalog.digdir.no +ADMIN_GUI_BASE_URI=https://admin.staging.fellesdatakatalog.digdir.no +INFORMATIONMODEL_HARVESTER_HOST=https://informationmodels.staging.fellesdatakatalog.digdir.no +FDK_COMMUNITY_BASE_URI=https://community.staging.fellesdatakatalog.digdir.no/ diff --git a/.gitignore b/.gitignore index 30ff0c59a..4bc8e838b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,7 @@ coverage *.iml .DS_Store .idea -.project \ No newline at end of file +.project + +# Environment files +.env \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..d3176aba4 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "endOfLine": "auto" +} diff --git a/src/config.js b/src/config.js index fee25d223..e4de7c57a 100644 --- a/src/config.js +++ b/src/config.js @@ -5,20 +5,6 @@ const env = window.env || { USE_DEMO_LOGO: true }; -// override all env variables to staging (inspired by https://www.staging.fellesdatakatalog.digdir.no/config.js) -// env.SEARCH_API_HOST = 'https://www.staging.fellesdatakatalog.digdir.no'; -// env.SEARCH_HOST = 'https://www.staging.fellesdatakatalog.digdir.no'; -// env.SEARCH_FULLTEXT_HOST = 'https://search.staging.fellesdatakatalog.digdir.no'; -// env.CMS_API_HOST = 'https://cms-fellesdatakatalog.digdir.no'; -// env.ORGANIZATION_HOST = -// 'https://organization-bff.staging.fellesdatakatalog.digdir.no'; -// env.ORGANIZATION_CATALOGUE_HOST = -// 'https://organization-catalogue.staging.fellesdatakatalog.digdir.no'; -// env.REPORT_API_HOST = 'https://reports-bff.staging.fellesdatakatalog.digdir.no'; -// env.METADATA_QUALITY_ASSESSMENT_API_HOST = -// 'https://metadata-quality.staging.fellesdatakatalog.digdir.no'; -// env.USE_DEMO_LOGO = true; - const searchApi = { host: env.SEARCH_API_HOST || '', // in ut1 and st1, search api requires basic authentication From 829aeff8e0020bf16f4d130ab7333597e4d8a910 Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Fri, 2 Jul 2021 10:21:40 +0200 Subject: [PATCH 05/31] feat: add news article v2 with graphql code generator (#956) --- .env.example | 1 + .eslintignore | 2 + .gitattributes | 1 + .prettierrc | 1 + codegen.yml | 16 + config.template.js | 1 + docker-compose.yml | 1 + package-lock.json | 3189 ++++++++++++++++- package.json | 10 +- src/api/generated/cms/graphql.ts | 1417 ++++++++ src/app/app.test.jsx | 1 + src/config.js | 1 + src/constants/constants.js | 1 + src/entrypoints/main/index.tsx | 18 +- .../news-article-page.tsx | 68 + .../news-article-page-v2/news-article.graphql | 12 + 16 files changed, 4556 insertions(+), 184 deletions(-) create mode 100644 .gitattributes create mode 100644 codegen.yml create mode 100644 src/api/generated/cms/graphql.ts create mode 100644 src/pages/news-article-page-v2/news-article-page.tsx create mode 100644 src/pages/news-article-page-v2/news-article.graphql diff --git a/.env.example b/.env.example index 7a4ec8c50..93bbcc316 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,7 @@ SEARCH_API_HOST=https://www.staging.fellesdatakatalog.digdir.no SEARCH_FULLTEXT_HOST=https://search.staging.fellesdatakatalog.digdir.no CMS_API_HOST=https://cms-fellesdatakatalog.digdir.no +FDK_CMS_BASE_URI=https://cms.fellesdatakatalog.digdir.no ORGANIZATION_HOST=https://organization-bff.staging.fellesdatakatalog.digdir.no ORGANIZATION_CATALOGUE_HOST=https://organization-catalogue.staging.fellesdatakatalog.digdir.no REPORT_API_HOST=https://reports-bff.staging.fellesdatakatalog.digdir.no diff --git a/.eslintignore b/.eslintignore index 2e8af7955..bb283c05a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -11,3 +11,5 @@ resources .lintstagedrc package-lock.json + +src/api/generated \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..4a2be2ea9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +src/api/generated/** linguist-generated=true \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index d3176aba4..b0d6f0e22 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,7 @@ { "semi": true, "singleQuote": true, + "jsxSingleQuote": true, "trailingComma": "none", "arrowParens": "avoid", "endOfLine": "auto" diff --git a/codegen.yml b/codegen.yml new file mode 100644 index 000000000..b22119866 --- /dev/null +++ b/codegen.yml @@ -0,0 +1,16 @@ +overwrite: true +hooks: + afterOneFileWrite: + - prettier --write +generates: + ./src/api/generated/cms/graphql.ts: + schema: https://cms.fellesdatakatalog.digdir.no/graphql + documents: src/**/*.graphql + config: + withHooks: true + withComponent: false + withHOC: false + plugins: + - typescript + - typescript-operations + - typescript-react-apollo \ No newline at end of file diff --git a/config.template.js b/config.template.js index d7b0d5056..273a4a2d5 100644 --- a/config.template.js +++ b/config.template.js @@ -8,6 +8,7 @@ window.env = { USE_DEMO_LOGO: '$USE_DEMO_LOGO', SEARCH_FULLTEXT_HOST: '$SEARCH_FULLTEXT_HOST', CMS_API_HOST: '$CMS_API_HOST', + FDK_CMS_BASE_URI: '$FDK_CMS_BASE_URI', ORGANIZATION_HOST: '$ORGANIZATION_HOST', ORGANIZATION_CATALOGUE_HOST: '$ORGANIZATION_CATALOGUE_HOST', REPORT_API_HOST: '$REPORT_API_HOST', diff --git a/docker-compose.yml b/docker-compose.yml index 9ac242936..85cb83959 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: - SEARCH_API_HOST=https://www.staging.fellesdatakatalog.digdir.no - SEARCH_FULLTEXT_HOST=https://search.staging.fellesdatakatalog.digdir.no - CMS_API_HOST=https://cms-fellesdatakatalog.digdir.no + - FDK_CMS_BASE_URI=https://cms.fellesdatakatalog.digdir.no - ORGANIZATION_HOST=https://organization-bff.staging.fellesdatakatalog.digdir.no - ORGANIZATION_CATALOGUE_HOST=https://organization-catalogue.staging.fellesdatakatalog.digdir.no - REPORT_API_HOST=https://reports-bff.staging.fellesdatakatalog.digdir.no diff --git a/package-lock.json b/package-lock.json index 816f74fec..e4564af53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,50 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@apollo/client": { + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.3.20.tgz", + "integrity": "sha512-hS7UmBwJweudw/J3M0RAcusMHNiRuGqkRH6g91PM2ev8cXScIMdXr/++9jo7wD1nAITMCMF4HQQ3LFaw/Or0Bw==", + "requires": { + "@graphql-typed-document-node/core": "^3.0.0", + "@types/zen-observable": "^0.8.0", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "fast-json-stable-stringify": "^2.0.0", + "graphql-tag": "^2.12.0", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.0", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.7.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.14" + }, + "dependencies": { + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" + } + } + }, + "@ardatan/aggregate-error": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", + "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==", + "dev": true, + "requires": { + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", @@ -595,6 +639,23 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-flow": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + } + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -818,6 +879,24 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + } + } + }, "@babel/plugin-transform-for-of": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", @@ -1869,6 +1948,40 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, + "@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", + "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "dev": true, + "requires": { + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" + }, + "dependencies": { + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "@eslint/eslintrc": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", @@ -2147,84 +2260,68 @@ } } }, - "@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@graphql-codegen/cli": { + "version": "1.21.5", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-1.21.5.tgz", + "integrity": "sha512-w3SovNJ9qtMhFLAdPZeCdGvHXDgfdb53mueWDTyncOt04m+tohVnY4qExvyKLTN5zlGxrA/5ubp2x8Az0xQarA==", + "dev": true, + "requires": { + "@graphql-codegen/core": "1.17.10", + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-tools/apollo-engine-loader": "^6.2.5", + "@graphql-tools/code-file-loader": "^6.3.1", + "@graphql-tools/git-loader": "^6.2.6", + "@graphql-tools/github-loader": "^6.2.5", + "@graphql-tools/graphql-file-loader": "^6.2.7", + "@graphql-tools/json-file-loader": "^6.2.6", + "@graphql-tools/load": "^6.2.8", + "@graphql-tools/prisma-loader": "^6.3.0", + "@graphql-tools/url-loader": "^6.10.1", + "@graphql-tools/utils": "^7.9.1", + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "change-case-all": "1.0.14", + "chokidar": "^3.5.1", + "common-tags": "^1.8.0", + "cosmiconfig": "^7.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "detect-indent": "^6.0.0", + "glob": "^7.1.6", + "graphql-config": "^3.3.0", + "inquirer": "^7.3.3", + "is-glob": "^4.0.1", + "json-to-pretty-yaml": "^1.2.2", + "latest-version": "5.1.0", + "listr": "^0.14.3", + "listr-update-renderer": "^0.5.0", + "log-symbols": "^4.0.0", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "~2.2.0", + "valid-url": "^1.0.9", + "wrap-ansi": "^7.0.0", + "yaml": "^1.10.0", + "yargs": "^17.0.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "type-fest": "^0.21.3" } }, - "locate-path": { + "ansi-regex": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "dependencies": { + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2244,6 +2341,32 @@ "supports-color": "^7.1.0" } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2259,88 +2382,1093 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "escape-string-regexp": "^1.0.5" } - } - } - }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { - "type-fest": "^0.21.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" } }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "@graphql-codegen/core": { + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-1.17.10.tgz", + "integrity": "sha512-RA3umgVDs/RI/+ztHh+H4GfJxrJUfWJQqoAkMfX4qPTVO5qsy3R4vPudE0oP8w+kFbL8dFsRfAAPUZxI4jV/hQ==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-tools/merge": "^6.2.14", + "@graphql-tools/utils": "^7.9.1", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-codegen/fragment-matcher": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/fragment-matcher/-/fragment-matcher-2.0.1.tgz", + "integrity": "sha512-CUHmeunK2xz9P5XBOPYeJwuQCa/7YnwmXJzuLMs+6fKa43KlFTTmpzYHh4p4Hx2lHAsZUpuWSD9/KSptvSG4aA==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.2", + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-codegen/plugin-helpers": { + "version": "1.18.7", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.18.7.tgz", + "integrity": "sha512-8ICOrXlsvyL1dpVz8C9b7H31d4DJpDd75WfjMn6Xjqz81Ah8xDn1Bi+7YXRCCILCBmvI94k6fi8qpsIVhFBBjQ==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.9.1", + "common-tags": "1.8.0", + "import-from": "3.0.0", + "lodash": "~4.17.0", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-codegen/typescript": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-1.22.3.tgz", + "integrity": "sha512-qLSnVN2g/UxxzhRWHZcHw/Xkvx5wZh0RDzmg9MjAlPnDwAI89jg/ljKDwtTOfN+F6M8W4gQ9mjkWd6NxBQRgXw==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-codegen/visitor-plugin-common": "1.21.2", + "auto-bind": "~4.0.0", + "tslib": "~2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "@graphql-codegen/typescript-operations": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-1.18.2.tgz", + "integrity": "sha512-AF9OCNBq0HuW3C5nsO11+53fgFGE40lNUtjSIJocvMcstEKvHx4GrzYO0XIpZsjRPrnyds00Y5xTSynLqB0XxA==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-codegen/typescript": "^1.22.3", + "@graphql-codegen/visitor-plugin-common": "1.21.2", + "auto-bind": "~4.0.0", + "tslib": "~2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "@graphql-codegen/typescript-react-apollo": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-react-apollo/-/typescript-react-apollo-2.2.7.tgz", + "integrity": "sha512-s7j+ZCzNdkt/d6NxbSYKXAonFHWwcrYkFrGQ6N+FoCtsP/WaGf57glMyzpewuKGJiNugNsMjv/cpDKoc0j/QPw==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-codegen/visitor-plugin-common": "1.21.2", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "tslib": "~2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "@graphql-codegen/visitor-plugin-common": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.21.2.tgz", + "integrity": "sha512-Bb5P2Hw7f+lNWfazjcGwVcX434stNd7/EhgA+S2Ro0Bn1xVCK/WL0IHT2TGb+pf6/lWg3Y+J9wo2aOKkqDHT6A==", + "dev": true, + "requires": { + "@graphql-codegen/plugin-helpers": "^1.18.7", + "@graphql-tools/optimize": "^1.0.1", + "@graphql-tools/relay-operation-optimizer": "^6.3.0", + "array.prototype.flatmap": "^1.2.4", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "@graphql-tools/apollo-engine-loader": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-6.2.5.tgz", + "integrity": "sha512-CE4uef6PyxtSG+7OnLklIr2BZZDgjO89ZXK47EKdY7jQy/BQD/9o+8SxPsgiBc+2NsDJH2I6P/nqoaJMOEat6g==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.0.0", + "cross-fetch": "3.0.6", + "tslib": "~2.0.1" + }, + "dependencies": { + "cross-fetch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-tools/batch-execute": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz", + "integrity": "sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.7.0", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/code-file-loader": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-6.3.1.tgz", + "integrity": "sha512-ZJimcm2ig+avgsEOWWVvAaxZrXXhiiSZyYYOJi0hk9wh5BxZcLUNKkTp6EFnZE/jmGUwuos3pIjUD3Hwi3Bwhg==", + "dev": true, + "requires": { + "@graphql-tools/graphql-tag-pluck": "^6.5.1", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "@graphql-tools/delegate": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz", + "integrity": "sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==", + "dev": true, + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/batch-execute": "^7.1.2", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.7.1", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/git-loader": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-6.2.6.tgz", + "integrity": "sha512-ooQTt2CaG47vEYPP3CPD+nbA0F+FYQXfzrB1Y1ABN9K3d3O2RK3g8qwslzZaI8VJQthvKwt0A95ZeE4XxteYfw==", + "dev": true, + "requires": { + "@graphql-tools/graphql-tag-pluck": "^6.2.6", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "@graphql-tools/github-loader": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-6.2.5.tgz", + "integrity": "sha512-DLuQmYeNNdPo8oWus8EePxWCfCAyUXPZ/p1PWqjrX/NGPyH2ZObdqtDAfRHztljt0F/qkBHbGHCEk2TKbRZTRw==", + "dev": true, + "requires": { + "@graphql-tools/graphql-tag-pluck": "^6.2.6", + "@graphql-tools/utils": "^7.0.0", + "cross-fetch": "3.0.6", + "tslib": "~2.0.1" + }, + "dependencies": { + "cross-fetch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-tools/graphql-file-loader": { + "version": "6.2.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz", + "integrity": "sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==", + "dev": true, + "requires": { + "@graphql-tools/import": "^6.2.6", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "@graphql-tools/graphql-tag-pluck": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.5.1.tgz", + "integrity": "sha512-7qkm82iFmcpb8M6/yRgzjShtW6Qu2OlCSZp8uatA3J0eMl87TxyJoUmL3M3UMMOSundAK8GmoyNVFUrueueV5Q==", + "dev": true, + "requires": { + "@babel/parser": "7.12.16", + "@babel/traverse": "7.12.13", + "@babel/types": "7.12.13", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", + "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==", + "dev": true + }, + "@babel/traverse": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", + "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", + "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "@graphql-tools/import": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz", + "integrity": "sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw==", + "dev": true, + "requires": { + "resolve-from": "5.0.0", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/json-file-loader": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz", + "integrity": "sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-tools/load": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz", + "integrity": "sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==", + "dev": true, + "requires": { + "@graphql-tools/merge": "^6.2.12", + "@graphql-tools/utils": "^7.5.0", + "globby": "11.0.3", + "import-from": "3.0.0", + "is-glob": "4.0.1", + "p-limit": "3.1.0", + "tslib": "~2.2.0", + "unixify": "1.0.0", + "valid-url": "1.0.9" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/merge": { + "version": "6.2.14", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz", + "integrity": "sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow==", + "dev": true, + "requires": { + "@graphql-tools/schema": "^7.0.0", + "@graphql-tools/utils": "^7.7.0", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/optimize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz", + "integrity": "sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w==", + "dev": true, + "requires": { + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-tools/prisma-loader": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-6.3.0.tgz", + "integrity": "sha512-9V3W/kzsFBmUQqOsd96V4a4k7Didz66yh/IK89B1/rrvy9rYj+ULjEqR73x9BYZ+ww9FV8yP8LasWAJwWaqqJQ==", + "dev": true, + "requires": { + "@graphql-tools/url-loader": "^6.8.2", + "@graphql-tools/utils": "^7.0.0", + "@types/http-proxy-agent": "^2.0.2", + "@types/js-yaml": "^4.0.0", + "@types/json-stable-stringify": "^1.0.32", + "@types/jsonwebtoken": "^8.5.0", + "chalk": "^4.1.0", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "graphql-request": "^3.3.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "isomorphic-fetch": "^3.0.0", + "js-yaml": "^4.0.0", + "json-stable-stringify": "^1.0.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.20", + "replaceall": "^0.1.6", + "scuid": "^1.1.0", + "tslib": "~2.1.0", + "yaml-ast-parser": "^0.0.43" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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 + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "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" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "@graphql-tools/relay-operation-optimizer": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.3.0.tgz", + "integrity": "sha512-Or3UgRvkY9Fq1AAx7q38oPqFmTepLz7kp6wDHKyR0ceG7AvHv5En22R12mAeISInbhff4Rpwgf6cE8zHRu6bCw==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.1.0", + "relay-compiler": "10.1.0", + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "@graphql-tools/schema": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz", + "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==", + "dev": true, + "requires": { + "@graphql-tools/utils": "^7.1.2", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/url-loader": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz", + "integrity": "sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==", + "dev": true, + "requires": { + "@graphql-tools/delegate": "^7.0.1", + "@graphql-tools/utils": "^7.9.0", + "@graphql-tools/wrap": "^7.0.4", + "@microsoft/fetch-event-source": "2.0.1", + "@types/websocket": "1.0.2", + "abort-controller": "3.0.0", + "cross-fetch": "3.1.4", + "extract-files": "9.0.0", + "form-data": "4.0.0", + "graphql-ws": "^4.4.1", + "is-promise": "4.0.0", + "isomorphic-ws": "4.0.1", + "lodash": "4.17.21", + "meros": "1.1.4", + "subscriptions-transport-ws": "^0.9.18", + "sync-fetch": "0.3.0", + "tslib": "~2.2.0", + "valid-url": "1.0.9", + "ws": "7.4.5" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + }, + "ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "dev": true + } + } + }, + "@graphql-tools/utils": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", + "dev": true, + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.2", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-tools/wrap": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz", + "integrity": "sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==", + "dev": true, + "requires": { + "@graphql-tools/delegate": "^7.1.5", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.8.1", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } + } + }, + "@graphql-typed-document-node/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz", + "integrity": "sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==" + }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2708,6 +3836,12 @@ } } }, + "@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==", + "dev": true + }, "@microsoft/load-themed-styles": { "version": "1.10.171", "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.171.tgz", @@ -2832,6 +3966,21 @@ "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.1.0.tgz", "integrity": "sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==" }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -2850,6 +3999,15 @@ "@sinonjs/commons": "^1.7.0" } }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@testing-library/dom": { "version": "7.31.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.0.tgz", @@ -3239,6 +4397,15 @@ "@types/node": "*" } }, + "@types/http-proxy-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-proxy-agent/-/http-proxy-agent-2.0.2.tgz", + "integrity": "sha512-2S6IuBRhqUnH1/AUx9k8KWtY3Esg4eqri946MnxTG5HwehF1S5mqLln8fcyMiuQkY72p2gH3W+rIPqp5li0LyQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -3273,18 +4440,39 @@ "pretty-format": "^26.0.0" } }, + "@types/js-yaml": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.1.tgz", + "integrity": "sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA==", + "dev": true + }, "@types/json-schema": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, + "@types/json-stable-stringify": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz", + "integrity": "sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/jsonwebtoken": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.2.tgz", + "integrity": "sha512-X8BOCkp+WJVNYCYIBugREtVZa4Y09Or9HDx6xqRZem5F8jJV8FuJgNessXyMuv9+U8pjnvdezASwU28uw+1scw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/lodash": { "version": "4.14.170", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.170.tgz", @@ -3632,9 +4820,18 @@ "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", "dev": true, "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "@types/websocket": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", + "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", + "dev": true, + "requires": { + "@types/node": "*" } }, "@types/yargs": { @@ -3652,6 +4849,11 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", "dev": true }, + "@types/zen-observable": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.2.tgz", + "integrity": "sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg==" + }, "@typescript-eslint/eslint-plugin": { "version": "4.25.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", @@ -4092,6 +5294,51 @@ "integrity": "sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg==", "dev": true }, + "@wry/context": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.0.tgz", + "integrity": "sha512-sAgendOXR8dM7stJw3FusRxFHF/ZinU0lffsA2YTyyIOfic86JX02qlPqPVqJNZJPAxFt+2EE8bvq6ZlS0Kf+Q==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@wry/equality": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.1.tgz", + "integrity": "sha512-FZKbdpbcVcbDxQrKcaBClNsQaMg9nof1RKM7mReJe5DKUzM5u8S7T+PqwNqvib5O2j2xxF1R4p5O3+b6baTrbw==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@wry/trie": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.0.tgz", + "integrity": "sha512-Yw1akIogPhAT6XPYsRHlZZIS0tIGmAl9EYXHi2scf7LPKKqdqmow/Hu4kEqP2cJR3EjaU/9L0ZlAjFf3hFxmug==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -4310,6 +5557,12 @@ "color-convert": "^1.9.0" } }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -4531,6 +5784,12 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -4599,6 +5858,12 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -4796,6 +6061,12 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true + }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -4816,6 +6087,41 @@ "@babel/plugin-syntax-top-level-await": "^7.8.3" } }, + "babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, "babel-preset-jest": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", @@ -4826,6 +6132,12 @@ "babel-preset-current-node-syntax": "^1.0.0" } }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, "bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -5070,6 +6382,12 @@ "ieee754": "^1.2.1" } }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -5105,6 +6423,38 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, "cachedir": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz", @@ -5177,6 +6527,25 @@ "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.5.tgz", "integrity": "sha512-mAjKJPIyP0xqqv6IAkvso07StOmz6cmGtNDg3pXCSzXVZOqka7StIkAhJl/zHOi4M2CgpYfD6aeRWbnrmtvBEA==" }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "capture-exit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", @@ -5214,6 +6583,52 @@ } } }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "requires": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -5554,6 +6969,15 @@ } } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5681,6 +7105,12 @@ } } }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -5774,6 +7204,25 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -5888,6 +7337,15 @@ "serialize-javascript": "^5.0.1" }, "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5958,6 +7416,15 @@ "yaml": "^1.10.0" } }, + "cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "dev": true, + "requires": { + "@iarna/toml": "^2.2.5" + } + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -6285,6 +7752,24 @@ "whatwg-url": "^8.0.0" } }, + "dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==", + "dev": true + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -6329,6 +7814,15 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -6353,6 +7847,12 @@ "regexp.prototype.flags": "^1.2.0" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -6374,6 +7874,12 @@ "ip-regex": "^2.1.0" } }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -6509,6 +8015,12 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, "deserialize-json-api": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/deserialize-json-api/-/deserialize-json-api-1.4.0.tgz", @@ -6740,12 +8252,24 @@ "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6756,6 +8280,15 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6768,6 +8301,12 @@ "integrity": "sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw==", "dev": true }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, "emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -8225,6 +9764,12 @@ } } }, + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", + "dev": true + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -8271,8 +9816,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -8312,6 +9856,27 @@ "bser": "2.1.1" } }, + "fbjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", + "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true + }, "fetch-blob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", @@ -8898,15 +10463,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", - "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -8985,12 +10541,100 @@ "minimatch": "~3.0.2" } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, + "graphql": { + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.1.tgz", + "integrity": "sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw==" + }, + "graphql-config": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz", + "integrity": "sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw==", + "dev": true, + "requires": { + "@endemolshinegroup/cosmiconfig-typescript-loader": "3.0.2", + "@graphql-tools/graphql-file-loader": "^6.0.0", + "@graphql-tools/json-file-loader": "^6.0.0", + "@graphql-tools/load": "^6.0.0", + "@graphql-tools/merge": "^6.0.0", + "@graphql-tools/url-loader": "^6.0.0", + "@graphql-tools/utils": "^7.0.0", + "cosmiconfig": "7.0.0", + "cosmiconfig-toml-loader": "1.0.0", + "minimatch": "3.0.4", + "string-env-interpolation": "1.0.1" + } + }, + "graphql-request": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz", + "integrity": "sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.6", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "graphql-tag": { + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.4.tgz", + "integrity": "sha512-VV1U4O+9x99EkNpNmCUV5RZwq6MnK4+pGbRYWG+lA/m3uo7TSqJF81OkcOP148gFP6fzdl7JWYBrwWVTS9jXww==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "graphql-ws": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz", + "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -9225,6 +10869,24 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -9455,6 +11117,12 @@ "entities": "^2.0.0" } }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -9630,6 +11298,15 @@ } } }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -9773,6 +11450,16 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -9971,6 +11658,23 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" }, + "is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -9995,6 +11699,15 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -10036,6 +11749,12 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, "is-regex": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", @@ -10051,6 +11770,15 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -10093,12 +11821,38 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -10138,6 +11892,22 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -10219,6 +11989,12 @@ "istanbul-lib-report": "^3.0.0" } }, + "iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", + "dev": true + }, "jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", @@ -11867,6 +13643,12 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -11891,6 +13673,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -11903,6 +13694,16 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha1-9M0L0KXo/h3yWq9boRiwmf2ZLVs=", + "dev": true, + "requires": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + } + }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -11933,6 +13734,12 @@ "universalify": "^2.0.0" } }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "jsonld": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-5.2.0.tgz", @@ -11950,6 +13757,32 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -11972,6 +13805,36 @@ "object.assign": "^4.1.2" } }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -12035,6 +13898,15 @@ "language-subtag-registry": "~0.3.2" } }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -12196,6 +14068,234 @@ } } }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, "listr2": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.8.2.tgz", @@ -12423,11 +14523,29 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, "lodash.isarray": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz", "integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM=" }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, "lodash.isempty": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", @@ -12439,11 +14557,29 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, "lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", @@ -12456,6 +14592,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -12721,6 +14863,29 @@ } } }, + "lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -13045,6 +15210,12 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "meros": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", + "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -13147,6 +15318,12 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -13704,9 +15881,9 @@ }, "dependencies": { "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true } } @@ -13873,6 +16050,12 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -14008,6 +16191,12 @@ "boolbase": "^1.0.0" } }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -14239,6 +16428,15 @@ } } }, + "optimism": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", + "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", + "requires": { + "@wry/context": "^0.6.0", + "@wry/trie": "^0.3.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -14268,6 +16466,12 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -14322,6 +16526,18 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -14362,6 +16578,17 @@ "is-hexadecimal": "^1.0.0" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -14434,11 +16661,23 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } }, "path-exists": { "version": "3.0.0", @@ -14470,6 +16709,21 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, "path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -14754,6 +17008,12 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "prettier": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", @@ -14846,6 +17106,15 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, "prompts": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", @@ -15026,6 +17295,26 @@ } } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, "rdf-canonize": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.0.0.tgz", @@ -15688,6 +17977,24 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -15711,20 +18018,234 @@ } } }, - "rehype-raw": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz", - "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==", + "rehype-raw": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz", + "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==", + "requires": { + "hast-util-raw": "^6.1.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "relay-compiler": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-10.1.0.tgz", + "integrity": "sha512-HPqc3N3tNgEgUH5+lTr5lnLbgnsZMt+MRiyS0uAVNhuPY2It0X1ZJG+9qdA3L9IqKFUNwVn6zTO7RArjMZbARQ==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@babel/generator": "^7.5.0", + "@babel/parser": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.3.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "nullthrows": "^1.1.1", + "relay-runtime": "10.1.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "relay-runtime": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-10.1.0.tgz", + "integrity": "sha512-bxznLnQ1ST6APN/cFi7l0FpjbZVchWQjjhj9mAuJBuUqNNCh9uV+UTRhpQF7Q8ycsPp19LHTpVyGhYb0ustuRQ==", + "dev": true, "requires": { - "hast-util-raw": "^6.1.0" + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0" } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, "remark-gfm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", @@ -15750,12 +18271,24 @@ "mdast-util-to-hast": "^10.2.0" } }, + "remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, + "remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", + "dev": true + }, "renderkid": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", @@ -15848,6 +18381,12 @@ "is-finite": "^1.0.0" } }, + "replaceall": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/replaceall/-/replaceall-0.1.6.tgz", + "integrity": "sha1-gdgax663LX9cSUKt8ml6MiBojY4=", + "dev": true + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -16046,6 +18585,15 @@ } } }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -16406,6 +18954,12 @@ } } }, + "scuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", + "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", + "dev": true + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -16485,6 +19039,25 @@ } } }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -16669,6 +19242,12 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=", + "dev": true + }, "sirv": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.11.tgz", @@ -16735,6 +19314,24 @@ } } }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -17080,6 +19677,23 @@ "readable-stream": "^3.0.0" } }, + "sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -17212,6 +19826,12 @@ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true }, + "string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true + }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -17441,6 +20061,27 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" }, + "subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "dev": true, + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + }, + "dependencies": { + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -17574,9 +20215,9 @@ }, "dependencies": { "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true } } @@ -17631,12 +20272,57 @@ } } }, + "swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "sync-fetch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz", + "integrity": "sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==", + "dev": true, + "requires": { + "buffer": "^5.7.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "table": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", @@ -17877,6 +20563,23 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -17917,6 +20620,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -17998,6 +20707,21 @@ "glob": "^7.1.2" } }, + "ts-invariant": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.7.5.tgz", + "integrity": "sha512-qfVyqTYWEqADMtncLqwpUdMjMSXnsqOeqGtj1LeJNFDjz8oqZ1YxLEp29YCOq65z0LgEiERqQ8ThVjnfibJNpg==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, "ts-jest": { "version": "26.5.6", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", @@ -18120,6 +20844,12 @@ } } }, + "ts-log": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz", + "integrity": "sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w==", + "dev": true + }, "ts-node": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.0.0.tgz", @@ -18259,6 +20989,12 @@ "typescript-compare": "^0.0.2" } }, + "ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "dev": true + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -18271,6 +21007,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -18398,6 +21140,26 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", + "dev": true, + "requires": { + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -18462,6 +21224,40 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -18555,6 +21351,15 @@ "requires-port": "^1.0.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -18612,6 +21417,12 @@ "source-map": "^0.7.3" } }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18627,6 +21438,12 @@ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, + "value-or-promise": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", + "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==", + "dev": true + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -19133,13 +21950,12 @@ }, "dependencies": { "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "^4.0.1" }, "dependencies": { "is-glob": { @@ -19511,6 +22327,12 @@ "iconv-lite": "0.4.24" } }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", @@ -19678,6 +22500,12 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, + "yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -19690,6 +22518,11 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/package.json b/package.json index 4e3137a62..066634728 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,8 @@ "clean:coverage": "rm -rf coverage", "bundle:analyse": "run-s build:webpack:stats", "commit": "git-cz", - "prepare": "husky install" + "prepare": "husky install", + "generate:types": "graphql-codegen" }, "config": { "commitizen": { @@ -50,6 +51,7 @@ "trim-newlines": "^3.0.1" }, "dependencies": { + "@apollo/client": "^3.3.20", "@fellesdatakatalog/button": "^0.2.3", "@fellesdatakatalog/expansion-panel": "^0.2.0", "@fellesdatakatalog/external-footer": "^0.1.15", @@ -68,6 +70,7 @@ "deserialize-json-api": "^1.4.0", "designsystemet": "git+https://git@github.com/Informasjonsforvaltning/designsystemet.git#1.4.25", "font-awesome": "^4.7.0", + "graphql": "^15.5.1", "html-react-parser": "^1.2.6", "immutable": "^4.0.0-rc.12", "lodash": "^4.17.21", @@ -119,6 +122,11 @@ "@babel/preset-react": "^7.13.13", "@commitlint/cli": "^12.1.4", "@commitlint/config-conventional": "^12.1.4", + "@graphql-codegen/cli": "^1.21.5", + "@graphql-codegen/fragment-matcher": "^2.0.1", + "@graphql-codegen/typescript": "^1.22.3", + "@graphql-codegen/typescript-operations": "^1.18.2", + "@graphql-codegen/typescript-react-apollo": "^2.2.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^11.2.7", diff --git a/src/api/generated/cms/graphql.ts b/src/api/generated/cms/graphql.ts new file mode 100644 index 000000000..f6a4adbd9 --- /dev/null +++ b/src/api/generated/cms/graphql.ts @@ -0,0 +1,1417 @@ +import { gql } from '@apollo/client'; +import * as Apollo from '@apollo/client'; +export type Maybe = T | null; +export type Exact = { + [K in keyof T]: T[K]; +}; +export type MakeOptional = Omit & + { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & + { [SubKey in K]: Maybe }; +const defaultOptions = {}; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + Date: any; + /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + DateTime: any; + /** Input type for dynamic zone Content of FancyArticle */ + FancyArticleContentDynamicZoneInput: any; + /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ + JSON: any; + /** The `Long` scalar type represents 52-bit integers */ + Long: any; + /** A time string with format: HH:mm:ss.SSS */ + Time: any; + /** The `Upload` scalar type represents a file upload. */ + Upload: any; +}; + +export type AdminUser = { + __typename?: 'AdminUser'; + id: Scalars['ID']; + username?: Maybe; + firstname: Scalars['String']; + lastname: Scalars['String']; +}; + +export type Article = { + __typename?: 'Article'; + id: Scalars['ID']; + created_at: Scalars['DateTime']; + updated_at: Scalars['DateTime']; + title: Scalars['String']; + featureImage?: Maybe; + content: Scalars['String']; + locale?: Maybe; + published_at?: Maybe; + localizations?: Maybe>>; +}; + +export type ArticleLocalizationsArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type ArticleAggregator = { + __typename?: 'ArticleAggregator'; + count?: Maybe; + totalCount?: Maybe; +}; + +export type ArticleConnection = { + __typename?: 'ArticleConnection'; + values?: Maybe>>; + groupBy?: Maybe; + aggregate?: Maybe; +}; + +export type ArticleConnectionContent = { + __typename?: 'ArticleConnectionContent'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionCreated_At = { + __typename?: 'ArticleConnectionCreated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionFeatureImage = { + __typename?: 'ArticleConnectionFeatureImage'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionId = { + __typename?: 'ArticleConnectionId'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionLocale = { + __typename?: 'ArticleConnectionLocale'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionPublished_At = { + __typename?: 'ArticleConnectionPublished_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionTitle = { + __typename?: 'ArticleConnectionTitle'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleConnectionUpdated_At = { + __typename?: 'ArticleConnectionUpdated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type ArticleGroupBy = { + __typename?: 'ArticleGroupBy'; + id?: Maybe>>; + created_at?: Maybe>>; + updated_at?: Maybe>>; + title?: Maybe>>; + featureImage?: Maybe>>; + content?: Maybe>>; + locale?: Maybe>>; + published_at?: Maybe>>; +}; + +export type ArticleInput = { + title: Scalars['String']; + featureImage?: Maybe; + content: Scalars['String']; + localizations?: Maybe>>; + locale?: Maybe; + published_at?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type ComponentBasicImage = { + __typename?: 'ComponentBasicImage'; + id: Scalars['ID']; + alternativeText?: Maybe; + style?: Maybe; + media?: Maybe>>; +}; + +export type ComponentBasicImageMediaArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type ComponentBasicImageInput = { + media?: Maybe>>; + alternativeText?: Maybe; + style?: Maybe; +}; + +export type ComponentBasicParagraph = { + __typename?: 'ComponentBasicParagraph'; + id: Scalars['ID']; + Content?: Maybe; +}; + +export type ComponentBasicParagraphInput = { + Content?: Maybe; +}; + +export type ComponentBasicQuote = { + __typename?: 'ComponentBasicQuote'; + id: Scalars['ID']; + content?: Maybe; + author?: Maybe; +}; + +export type ComponentBasicQuoteInput = { + content?: Maybe; + author?: Maybe; +}; + +export enum Enum_Componentbasicimage_Style { + None = 'none', + FullSize = 'fullSize', + Left = 'left', + Right = 'right' +} + +export type FancyArticle = { + __typename?: 'FancyArticle'; + id: Scalars['ID']; + created_at: Scalars['DateTime']; + updated_at: Scalars['DateTime']; + title?: Maybe; + Content?: Maybe>>; + locale?: Maybe; + published_at?: Maybe; + localizations?: Maybe>>; +}; + +export type FancyArticleLocalizationsArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type FancyArticleAggregator = { + __typename?: 'FancyArticleAggregator'; + count?: Maybe; + totalCount?: Maybe; +}; + +export type FancyArticleConnection = { + __typename?: 'FancyArticleConnection'; + values?: Maybe>>; + groupBy?: Maybe; + aggregate?: Maybe; +}; + +export type FancyArticleConnectionCreated_At = { + __typename?: 'FancyArticleConnectionCreated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleConnectionId = { + __typename?: 'FancyArticleConnectionId'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleConnectionLocale = { + __typename?: 'FancyArticleConnectionLocale'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleConnectionPublished_At = { + __typename?: 'FancyArticleConnectionPublished_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleConnectionTitle = { + __typename?: 'FancyArticleConnectionTitle'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleConnectionUpdated_At = { + __typename?: 'FancyArticleConnectionUpdated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type FancyArticleContentDynamicZone = + | ComponentBasicQuote + | ComponentBasicImage + | ComponentBasicParagraph; + +export type FancyArticleGroupBy = { + __typename?: 'FancyArticleGroupBy'; + id?: Maybe>>; + created_at?: Maybe>>; + updated_at?: Maybe>>; + title?: Maybe>>; + locale?: Maybe>>; + published_at?: Maybe>>; +}; + +export type FancyArticleInput = { + title?: Maybe; + Content?: Maybe>; + localizations?: Maybe>>; + locale?: Maybe; + published_at?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type FileInfoInput = { + name?: Maybe; + alternativeText?: Maybe; + caption?: Maybe; +}; + +export type FileInput = { + name: Scalars['String']; + alternativeText?: Maybe; + caption?: Maybe; + width?: Maybe; + height?: Maybe; + formats?: Maybe; + hash: Scalars['String']; + ext?: Maybe; + mime: Scalars['String']; + size: Scalars['Float']; + url: Scalars['String']; + previewUrl?: Maybe; + provider: Scalars['String']; + provider_metadata?: Maybe; + related?: Maybe>>; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type I18NLocale = { + __typename?: 'I18NLocale'; + id: Scalars['ID']; + created_at: Scalars['DateTime']; + updated_at: Scalars['DateTime']; + name?: Maybe; + code?: Maybe; +}; + +export type InputId = { + id: Scalars['ID']; +}; + +export type LocaleInput = { + name?: Maybe; + code?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type Morph = + | UsersPermissionsMe + | UsersPermissionsMeRole + | UsersPermissionsLoginPayload + | UserPermissionsPasswordPayload + | Article + | ArticleConnection + | ArticleAggregator + | ArticleGroupBy + | ArticleConnectionId + | ArticleConnectionCreated_At + | ArticleConnectionUpdated_At + | ArticleConnectionTitle + | ArticleConnectionFeatureImage + | ArticleConnectionContent + | ArticleConnectionLocale + | ArticleConnectionPublished_At + | CreateArticlePayload + | UpdateArticlePayload + | DeleteArticlePayload + | FancyArticle + | FancyArticleConnection + | FancyArticleAggregator + | FancyArticleGroupBy + | FancyArticleConnectionId + | FancyArticleConnectionCreated_At + | FancyArticleConnectionUpdated_At + | FancyArticleConnectionTitle + | FancyArticleConnectionLocale + | FancyArticleConnectionPublished_At + | CreateFancyArticlePayload + | UpdateFancyArticlePayload + | DeleteFancyArticlePayload + | I18NLocale + | UploadFile + | UploadFileConnection + | UploadFileAggregator + | UploadFileAggregatorSum + | UploadFileAggregatorAvg + | UploadFileAggregatorMin + | UploadFileAggregatorMax + | UploadFileGroupBy + | UploadFileConnectionId + | UploadFileConnectionCreated_At + | UploadFileConnectionUpdated_At + | UploadFileConnectionName + | UploadFileConnectionAlternativeText + | UploadFileConnectionCaption + | UploadFileConnectionWidth + | UploadFileConnectionHeight + | UploadFileConnectionFormats + | UploadFileConnectionHash + | UploadFileConnectionExt + | UploadFileConnectionMime + | UploadFileConnectionSize + | UploadFileConnectionUrl + | UploadFileConnectionPreviewUrl + | UploadFileConnectionProvider + | UploadFileConnectionProvider_Metadata + | DeleteFilePayload + | UsersPermissionsPermission + | UsersPermissionsRole + | UsersPermissionsRoleConnection + | UsersPermissionsRoleAggregator + | UsersPermissionsRoleGroupBy + | UsersPermissionsRoleConnectionId + | UsersPermissionsRoleConnectionName + | UsersPermissionsRoleConnectionDescription + | UsersPermissionsRoleConnectionType + | CreateRolePayload + | UpdateRolePayload + | DeleteRolePayload + | UsersPermissionsUser + | UsersPermissionsUserConnection + | UsersPermissionsUserAggregator + | UsersPermissionsUserGroupBy + | UsersPermissionsUserConnectionId + | UsersPermissionsUserConnectionCreated_At + | UsersPermissionsUserConnectionUpdated_At + | UsersPermissionsUserConnectionUsername + | UsersPermissionsUserConnectionEmail + | UsersPermissionsUserConnectionProvider + | UsersPermissionsUserConnectionConfirmed + | UsersPermissionsUserConnectionBlocked + | UsersPermissionsUserConnectionRole + | CreateUserPayload + | UpdateUserPayload + | DeleteUserPayload + | ComponentBasicImage + | ComponentBasicParagraph + | ComponentBasicQuote; + +export type Mutation = { + __typename?: 'Mutation'; + createArticle?: Maybe; + updateArticle?: Maybe; + deleteArticle?: Maybe; + createFancyArticle?: Maybe; + updateFancyArticle?: Maybe; + deleteFancyArticle?: Maybe; + /** Delete one file */ + deleteFile?: Maybe; + /** Create a new role */ + createRole?: Maybe; + /** Update an existing role */ + updateRole?: Maybe; + /** Delete an existing role */ + deleteRole?: Maybe; + /** Create a new user */ + createUser?: Maybe; + /** Update an existing user */ + updateUser?: Maybe; + /** Delete an existing user */ + deleteUser?: Maybe; + createArticleLocalization: Article; + createFancyArticleLocalization: FancyArticle; + upload: UploadFile; + multipleUpload: Array>; + updateFileInfo: UploadFile; + login: UsersPermissionsLoginPayload; + register: UsersPermissionsLoginPayload; + forgotPassword?: Maybe; + resetPassword?: Maybe; + emailConfirmation?: Maybe; +}; + +export type MutationCreateArticleArgs = { + input?: Maybe; +}; + +export type MutationUpdateArticleArgs = { + input?: Maybe; +}; + +export type MutationDeleteArticleArgs = { + input?: Maybe; +}; + +export type MutationCreateFancyArticleArgs = { + input?: Maybe; +}; + +export type MutationUpdateFancyArticleArgs = { + input?: Maybe; +}; + +export type MutationDeleteFancyArticleArgs = { + input?: Maybe; +}; + +export type MutationDeleteFileArgs = { + input?: Maybe; +}; + +export type MutationCreateRoleArgs = { + input?: Maybe; +}; + +export type MutationUpdateRoleArgs = { + input?: Maybe; +}; + +export type MutationDeleteRoleArgs = { + input?: Maybe; +}; + +export type MutationCreateUserArgs = { + input?: Maybe; +}; + +export type MutationUpdateUserArgs = { + input?: Maybe; +}; + +export type MutationDeleteUserArgs = { + input?: Maybe; +}; + +export type MutationCreateArticleLocalizationArgs = { + input: UpdateArticleInput; +}; + +export type MutationCreateFancyArticleLocalizationArgs = { + input: UpdateFancyArticleInput; +}; + +export type MutationUploadArgs = { + refId?: Maybe; + ref?: Maybe; + field?: Maybe; + source?: Maybe; + info?: Maybe; + file: Scalars['Upload']; +}; + +export type MutationMultipleUploadArgs = { + refId?: Maybe; + ref?: Maybe; + field?: Maybe; + source?: Maybe; + files: Array>; +}; + +export type MutationUpdateFileInfoArgs = { + id: Scalars['ID']; + info: FileInfoInput; +}; + +export type MutationLoginArgs = { + input: UsersPermissionsLoginInput; +}; + +export type MutationRegisterArgs = { + input: UsersPermissionsRegisterInput; +}; + +export type MutationForgotPasswordArgs = { + email: Scalars['String']; +}; + +export type MutationResetPasswordArgs = { + password: Scalars['String']; + passwordConfirmation: Scalars['String']; + code: Scalars['String']; +}; + +export type MutationEmailConfirmationArgs = { + confirmation: Scalars['String']; +}; + +export enum PublicationState { + Live = 'LIVE', + Preview = 'PREVIEW' +} + +export type Query = { + __typename?: 'Query'; + article?: Maybe
    ; + articles?: Maybe>>; + articlesConnection?: Maybe; + fancyArticle?: Maybe; + fancyArticles?: Maybe>>; + fancyArticlesConnection?: Maybe; + files?: Maybe>>; + filesConnection?: Maybe; + role?: Maybe; + /** Retrieve all the existing roles. You can't apply filters on this query. */ + roles?: Maybe>>; + rolesConnection?: Maybe; + user?: Maybe; + users?: Maybe>>; + usersConnection?: Maybe; + me?: Maybe; +}; + +export type QueryArticleArgs = { + id: Scalars['ID']; + publicationState?: Maybe; +}; + +export type QueryArticlesArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + publicationState?: Maybe; + locale?: Maybe; +}; + +export type QueryArticlesConnectionArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + locale?: Maybe; +}; + +export type QueryFancyArticleArgs = { + id: Scalars['ID']; + publicationState?: Maybe; +}; + +export type QueryFancyArticlesArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + publicationState?: Maybe; + locale?: Maybe; +}; + +export type QueryFancyArticlesConnectionArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + locale?: Maybe; +}; + +export type QueryFilesArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + publicationState?: Maybe; +}; + +export type QueryFilesConnectionArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type QueryRoleArgs = { + id: Scalars['ID']; + publicationState?: Maybe; +}; + +export type QueryRolesArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + publicationState?: Maybe; +}; + +export type QueryRolesConnectionArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type QueryUserArgs = { + id: Scalars['ID']; + publicationState?: Maybe; +}; + +export type QueryUsersArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; + publicationState?: Maybe; +}; + +export type QueryUsersConnectionArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type RoleInput = { + name: Scalars['String']; + description?: Maybe; + type?: Maybe; + permissions?: Maybe>>; + users?: Maybe>>; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type UploadFile = { + __typename?: 'UploadFile'; + id: Scalars['ID']; + created_at: Scalars['DateTime']; + updated_at: Scalars['DateTime']; + name: Scalars['String']; + alternativeText?: Maybe; + caption?: Maybe; + width?: Maybe; + height?: Maybe; + formats?: Maybe; + hash: Scalars['String']; + ext?: Maybe; + mime: Scalars['String']; + size: Scalars['Float']; + url: Scalars['String']; + previewUrl?: Maybe; + provider: Scalars['String']; + provider_metadata?: Maybe; + related?: Maybe>>; +}; + +export type UploadFileRelatedArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type UploadFileAggregator = { + __typename?: 'UploadFileAggregator'; + count?: Maybe; + totalCount?: Maybe; + sum?: Maybe; + avg?: Maybe; + min?: Maybe; + max?: Maybe; +}; + +export type UploadFileAggregatorAvg = { + __typename?: 'UploadFileAggregatorAvg'; + width?: Maybe; + height?: Maybe; + size?: Maybe; +}; + +export type UploadFileAggregatorMax = { + __typename?: 'UploadFileAggregatorMax'; + width?: Maybe; + height?: Maybe; + size?: Maybe; +}; + +export type UploadFileAggregatorMin = { + __typename?: 'UploadFileAggregatorMin'; + width?: Maybe; + height?: Maybe; + size?: Maybe; +}; + +export type UploadFileAggregatorSum = { + __typename?: 'UploadFileAggregatorSum'; + width?: Maybe; + height?: Maybe; + size?: Maybe; +}; + +export type UploadFileConnection = { + __typename?: 'UploadFileConnection'; + values?: Maybe>>; + groupBy?: Maybe; + aggregate?: Maybe; +}; + +export type UploadFileConnectionAlternativeText = { + __typename?: 'UploadFileConnectionAlternativeText'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionCaption = { + __typename?: 'UploadFileConnectionCaption'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionCreated_At = { + __typename?: 'UploadFileConnectionCreated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionExt = { + __typename?: 'UploadFileConnectionExt'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionFormats = { + __typename?: 'UploadFileConnectionFormats'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionHash = { + __typename?: 'UploadFileConnectionHash'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionHeight = { + __typename?: 'UploadFileConnectionHeight'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionId = { + __typename?: 'UploadFileConnectionId'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionMime = { + __typename?: 'UploadFileConnectionMime'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionName = { + __typename?: 'UploadFileConnectionName'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionPreviewUrl = { + __typename?: 'UploadFileConnectionPreviewUrl'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionProvider = { + __typename?: 'UploadFileConnectionProvider'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionProvider_Metadata = { + __typename?: 'UploadFileConnectionProvider_metadata'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionSize = { + __typename?: 'UploadFileConnectionSize'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionUpdated_At = { + __typename?: 'UploadFileConnectionUpdated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionUrl = { + __typename?: 'UploadFileConnectionUrl'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileConnectionWidth = { + __typename?: 'UploadFileConnectionWidth'; + key?: Maybe; + connection?: Maybe; +}; + +export type UploadFileGroupBy = { + __typename?: 'UploadFileGroupBy'; + id?: Maybe>>; + created_at?: Maybe>>; + updated_at?: Maybe>>; + name?: Maybe>>; + alternativeText?: Maybe>>; + caption?: Maybe>>; + width?: Maybe>>; + height?: Maybe>>; + formats?: Maybe>>; + hash?: Maybe>>; + ext?: Maybe>>; + mime?: Maybe>>; + size?: Maybe>>; + url?: Maybe>>; + previewUrl?: Maybe>>; + provider?: Maybe>>; + provider_metadata?: Maybe< + Array> + >; +}; + +export type UserInput = { + username: Scalars['String']; + email: Scalars['String']; + provider?: Maybe; + password?: Maybe; + resetPasswordToken?: Maybe; + confirmationToken?: Maybe; + confirmed?: Maybe; + blocked?: Maybe; + role?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type UserPermissionsPasswordPayload = { + __typename?: 'UserPermissionsPasswordPayload'; + ok: Scalars['Boolean']; +}; + +export type UsersPermissionsLoginInput = { + identifier: Scalars['String']; + password: Scalars['String']; + provider?: Maybe; +}; + +export type UsersPermissionsLoginPayload = { + __typename?: 'UsersPermissionsLoginPayload'; + jwt?: Maybe; + user: UsersPermissionsMe; +}; + +export type UsersPermissionsMe = { + __typename?: 'UsersPermissionsMe'; + id: Scalars['ID']; + username: Scalars['String']; + email: Scalars['String']; + confirmed?: Maybe; + blocked?: Maybe; + role?: Maybe; +}; + +export type UsersPermissionsMeRole = { + __typename?: 'UsersPermissionsMeRole'; + id: Scalars['ID']; + name: Scalars['String']; + description?: Maybe; + type?: Maybe; +}; + +export type UsersPermissionsPermission = { + __typename?: 'UsersPermissionsPermission'; + id: Scalars['ID']; + type: Scalars['String']; + controller: Scalars['String']; + action: Scalars['String']; + enabled: Scalars['Boolean']; + policy?: Maybe; + role?: Maybe; +}; + +export type UsersPermissionsRegisterInput = { + username: Scalars['String']; + email: Scalars['String']; + password: Scalars['String']; +}; + +export type UsersPermissionsRole = { + __typename?: 'UsersPermissionsRole'; + id: Scalars['ID']; + name: Scalars['String']; + description?: Maybe; + type?: Maybe; + permissions?: Maybe>>; + users?: Maybe>>; +}; + +export type UsersPermissionsRolePermissionsArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type UsersPermissionsRoleUsersArgs = { + sort?: Maybe; + limit?: Maybe; + start?: Maybe; + where?: Maybe; +}; + +export type UsersPermissionsRoleAggregator = { + __typename?: 'UsersPermissionsRoleAggregator'; + count?: Maybe; + totalCount?: Maybe; +}; + +export type UsersPermissionsRoleConnection = { + __typename?: 'UsersPermissionsRoleConnection'; + values?: Maybe>>; + groupBy?: Maybe; + aggregate?: Maybe; +}; + +export type UsersPermissionsRoleConnectionDescription = { + __typename?: 'UsersPermissionsRoleConnectionDescription'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsRoleConnectionId = { + __typename?: 'UsersPermissionsRoleConnectionId'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsRoleConnectionName = { + __typename?: 'UsersPermissionsRoleConnectionName'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsRoleConnectionType = { + __typename?: 'UsersPermissionsRoleConnectionType'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsRoleGroupBy = { + __typename?: 'UsersPermissionsRoleGroupBy'; + id?: Maybe>>; + name?: Maybe>>; + description?: Maybe>>; + type?: Maybe>>; +}; + +export type UsersPermissionsUser = { + __typename?: 'UsersPermissionsUser'; + id: Scalars['ID']; + created_at: Scalars['DateTime']; + updated_at: Scalars['DateTime']; + username: Scalars['String']; + email: Scalars['String']; + provider?: Maybe; + confirmed?: Maybe; + blocked?: Maybe; + role?: Maybe; +}; + +export type UsersPermissionsUserAggregator = { + __typename?: 'UsersPermissionsUserAggregator'; + count?: Maybe; + totalCount?: Maybe; +}; + +export type UsersPermissionsUserConnection = { + __typename?: 'UsersPermissionsUserConnection'; + values?: Maybe>>; + groupBy?: Maybe; + aggregate?: Maybe; +}; + +export type UsersPermissionsUserConnectionBlocked = { + __typename?: 'UsersPermissionsUserConnectionBlocked'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionConfirmed = { + __typename?: 'UsersPermissionsUserConnectionConfirmed'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionCreated_At = { + __typename?: 'UsersPermissionsUserConnectionCreated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionEmail = { + __typename?: 'UsersPermissionsUserConnectionEmail'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionId = { + __typename?: 'UsersPermissionsUserConnectionId'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionProvider = { + __typename?: 'UsersPermissionsUserConnectionProvider'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionRole = { + __typename?: 'UsersPermissionsUserConnectionRole'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionUpdated_At = { + __typename?: 'UsersPermissionsUserConnectionUpdated_at'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserConnectionUsername = { + __typename?: 'UsersPermissionsUserConnectionUsername'; + key?: Maybe; + connection?: Maybe; +}; + +export type UsersPermissionsUserGroupBy = { + __typename?: 'UsersPermissionsUserGroupBy'; + id?: Maybe>>; + created_at?: Maybe>>; + updated_at?: Maybe>>; + username?: Maybe>>; + email?: Maybe>>; + provider?: Maybe>>; + confirmed?: Maybe>>; + blocked?: Maybe>>; + role?: Maybe>>; +}; + +export type CreateArticleInput = { + data?: Maybe; +}; + +export type CreateArticlePayload = { + __typename?: 'createArticlePayload'; + article?: Maybe
    ; +}; + +export type CreateFancyArticleInput = { + data?: Maybe; +}; + +export type CreateFancyArticlePayload = { + __typename?: 'createFancyArticlePayload'; + fancyArticle?: Maybe; +}; + +export type CreateRoleInput = { + data?: Maybe; +}; + +export type CreateRolePayload = { + __typename?: 'createRolePayload'; + role?: Maybe; +}; + +export type CreateUserInput = { + data?: Maybe; +}; + +export type CreateUserPayload = { + __typename?: 'createUserPayload'; + user?: Maybe; +}; + +export type DeleteArticleInput = { + where?: Maybe; +}; + +export type DeleteArticlePayload = { + __typename?: 'deleteArticlePayload'; + article?: Maybe
    ; +}; + +export type DeleteFancyArticleInput = { + where?: Maybe; +}; + +export type DeleteFancyArticlePayload = { + __typename?: 'deleteFancyArticlePayload'; + fancyArticle?: Maybe; +}; + +export type DeleteFileInput = { + where?: Maybe; +}; + +export type DeleteFilePayload = { + __typename?: 'deleteFilePayload'; + file?: Maybe; +}; + +export type DeleteRoleInput = { + where?: Maybe; +}; + +export type DeleteRolePayload = { + __typename?: 'deleteRolePayload'; + role?: Maybe; +}; + +export type DeleteUserInput = { + where?: Maybe; +}; + +export type DeleteUserPayload = { + __typename?: 'deleteUserPayload'; + user?: Maybe; +}; + +export type EditArticleInput = { + title?: Maybe; + featureImage?: Maybe; + content?: Maybe; + localizations?: Maybe>>; + locale?: Maybe; + published_at?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type EditComponentBasicImageInput = { + id?: Maybe; + media?: Maybe>>; + alternativeText?: Maybe; + style?: Maybe; +}; + +export type EditComponentBasicParagraphInput = { + id?: Maybe; + Content?: Maybe; +}; + +export type EditComponentBasicQuoteInput = { + id?: Maybe; + content?: Maybe; + author?: Maybe; +}; + +export type EditFancyArticleInput = { + title?: Maybe; + Content?: Maybe>; + localizations?: Maybe>>; + locale?: Maybe; + published_at?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type EditFileInput = { + name?: Maybe; + alternativeText?: Maybe; + caption?: Maybe; + width?: Maybe; + height?: Maybe; + formats?: Maybe; + hash?: Maybe; + ext?: Maybe; + mime?: Maybe; + size?: Maybe; + url?: Maybe; + previewUrl?: Maybe; + provider?: Maybe; + provider_metadata?: Maybe; + related?: Maybe>>; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type EditLocaleInput = { + name?: Maybe; + code?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type EditRoleInput = { + name?: Maybe; + description?: Maybe; + type?: Maybe; + permissions?: Maybe>>; + users?: Maybe>>; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type EditUserInput = { + username?: Maybe; + email?: Maybe; + provider?: Maybe; + password?: Maybe; + resetPasswordToken?: Maybe; + confirmationToken?: Maybe; + confirmed?: Maybe; + blocked?: Maybe; + role?: Maybe; + created_by?: Maybe; + updated_by?: Maybe; +}; + +export type UpdateArticleInput = { + where?: Maybe; + data?: Maybe; +}; + +export type UpdateArticlePayload = { + __typename?: 'updateArticlePayload'; + article?: Maybe
    ; +}; + +export type UpdateFancyArticleInput = { + where?: Maybe; + data?: Maybe; +}; + +export type UpdateFancyArticlePayload = { + __typename?: 'updateFancyArticlePayload'; + fancyArticle?: Maybe; +}; + +export type UpdateRoleInput = { + where?: Maybe; + data?: Maybe; +}; + +export type UpdateRolePayload = { + __typename?: 'updateRolePayload'; + role?: Maybe; +}; + +export type UpdateUserInput = { + where?: Maybe; + data?: Maybe; +}; + +export type UpdateUserPayload = { + __typename?: 'updateUserPayload'; + user?: Maybe; +}; + +export type GetArticleQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + +export type GetArticleQuery = { __typename?: 'Query' } & { + article?: Maybe< + { __typename?: 'Article' } & Pick< + Article, + 'title' | 'content' | 'locale' | 'published_at' | 'updated_at' + > & { + featureImage?: Maybe< + { __typename?: 'UploadFile' } & Pick + >; + } + >; +}; + +export const GetArticleDocument = gql` + query GetArticle($id: ID!) { + article(id: $id) { + title + featureImage { + url + } + content + locale + published_at + updated_at + } + } +`; + +/** + * __useGetArticleQuery__ + * + * To run a query within a React component, call `useGetArticleQuery` and pass it any options that fit your needs. + * When your component renders, `useGetArticleQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetArticleQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetArticleQuery( + baseOptions: Apollo.QueryHookOptions< + GetArticleQuery, + GetArticleQueryVariables + > +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useQuery( + GetArticleDocument, + options + ); +} +export function useGetArticleLazyQuery( + baseOptions?: Apollo.LazyQueryHookOptions< + GetArticleQuery, + GetArticleQueryVariables + > +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useLazyQuery( + GetArticleDocument, + options + ); +} +export type GetArticleQueryHookResult = ReturnType; +export type GetArticleLazyQueryHookResult = ReturnType< + typeof useGetArticleLazyQuery +>; +export type GetArticleQueryResult = Apollo.QueryResult< + GetArticleQuery, + GetArticleQueryVariables +>; diff --git a/src/app/app.test.jsx b/src/app/app.test.jsx index 489fcdb80..fa6b2b655 100644 --- a/src/app/app.test.jsx +++ b/src/app/app.test.jsx @@ -3,6 +3,7 @@ import { shallow } from 'enzyme'; import { App } from './app'; test('should render App correctly', () => { + global.fetch = {}; const wrapper = shallow( {}} />); expect(wrapper).toMatchSnapshot(); }); diff --git a/src/config.js b/src/config.js index e4de7c57a..37659a5a7 100644 --- a/src/config.js +++ b/src/config.js @@ -30,6 +30,7 @@ const config = { useDemoLogo: env.USE_DEMO_LOGO, searchFullTextApi: { host: env.SEARCH_FULLTEXT_HOST }, cmsApi: { host: env.CMS_API_HOST }, + cmsV2Api: { host: env.FDK_CMS_BASE_URI }, organizationsApi: { host: env.ORGANIZATION_HOST }, organizationsCatalogApi: { host: env.ORGANIZATION_CATALOGUE_HOST }, reportApi: { host: env.REPORT_API_HOST }, diff --git a/src/constants/constants.js b/src/constants/constants.js index 1eedf58f8..c6dbef4cf 100644 --- a/src/constants/constants.js +++ b/src/constants/constants.js @@ -12,6 +12,7 @@ export const PATHNAME_REPORTS = '/reports'; export const PATHNAME_ABOUT = '/about'; export const PATHNAME_ABOUT_REGISTRATION = '/about-registration'; export const PATHNAME_NEWS_ARTICLE = '/news'; +export const PATHNAME_NEWS_ARTICLE_V2 = '/news-v2'; export const PATHNAME_NEWS_ARCHIVE = '/news-archive'; export const HITS_PER_PAGE = 10; export const PATHNAME_HOME_NAP = diff --git a/src/entrypoints/main/index.tsx b/src/entrypoints/main/index.tsx index d1d03d84f..e07b696f4 100755 --- a/src/entrypoints/main/index.tsx +++ b/src/entrypoints/main/index.tsx @@ -6,6 +6,7 @@ import { render } from 'react-dom'; import { Provider } from 'react-redux'; import { BrowserRouter, Route } from 'react-router-dom'; import ThemeProvider from '@fellesdatakatalog/theme'; +import { ApolloClient, ApolloProvider, InMemoryCache } from '@apollo/client'; import LoggingProvider from '../../providers/logging'; @@ -17,6 +18,11 @@ import GlobalStyles from '../../app/styles'; import Analytics from '../../components/analytics'; +const client = new ApolloClient({ + uri: `${getConfig().cmsV2Api}/graphql`, + cache: new InMemoryCache() +}); + const store = configureStore(getConfig().store); const theme = getConfig().themeNap ? themeNAP : themeFDK; @@ -25,11 +31,13 @@ render( - - - - - + + + + + + + , document.getElementById('root') diff --git a/src/pages/news-article-page-v2/news-article-page.tsx b/src/pages/news-article-page-v2/news-article-page.tsx new file mode 100644 index 000000000..fc709d229 --- /dev/null +++ b/src/pages/news-article-page-v2/news-article-page.tsx @@ -0,0 +1,68 @@ +import React, { FC, memo } from 'react'; +import { useParams } from 'react-router-dom'; +import { compose } from 'redux'; +import Moment from 'react-moment'; +import { useGetArticleQuery } from '../../api/generated/cms/graphql'; +import ErrorPage from '../../components/error-page'; +import withErrorBoundary from '../../components/with-error-boundary'; +import localization from '../../lib/localization'; +// import Article from '../../components/article/components/article/article.component'; +import SC from '../../components/article/components/article/styled'; +import Markdown from '../../components/markdown'; + +const NewsArticlePage: FC = () => { + const { id } = useParams<{ id: string }>(); + + const { data, loading } = useGetArticleQuery({ + variables: { id } + }); + + if (loading) { + return
    Laster
    ; + } + + if (!data || !data.article) { + return
    404
    ; + } + + const { article } = data; + + return ( +
    + +
    +
    + {article.published_at && ( + + {localization.published} + {article.published_at} + {article.updated_at && ( + <> + +  {' / '} + {localization.lastChanged}{' '} + + {article.updated_at} + + )} + + )} + + {article.title && {article.title}} + + {/* {abstract && ( + {parse(sanitizeHtml(abstract))} + )} */} + + + {article.content} + +
    +
    +
    +
    + ); +}; + +const enhance = compose(withErrorBoundary(ErrorPage)); +export const NewsArticlePageV2 = enhance(memo(NewsArticlePage)); diff --git a/src/pages/news-article-page-v2/news-article.graphql b/src/pages/news-article-page-v2/news-article.graphql new file mode 100644 index 000000000..1f9d45399 --- /dev/null +++ b/src/pages/news-article-page-v2/news-article.graphql @@ -0,0 +1,12 @@ +query GetArticle($id: ID!) { + article(id: $id) { + title + featureImage { + url + } + content + locale + published_at + updated_at + } +} \ No newline at end of file From 5dce2f1354252044601e3e3c1f4dbdea0597c5ab Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Fri, 2 Jul 2021 11:51:10 +0200 Subject: [PATCH 06/31] feat: add missing routes (#970) --- src/app/__snapshots__/app.test.jsx.snap | 5 +++++ src/app/app.jsx | 7 +++++++ src/config.js | 1 + src/entrypoints/main/index.tsx | 2 +- src/env.ts | 3 ++- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app/__snapshots__/app.test.jsx.snap b/src/app/__snapshots__/app.test.jsx.snap index 6b1e8b83c..ee4a137dd 100644 --- a/src/app/__snapshots__/app.test.jsx.snap +++ b/src/app/__snapshots__/app.test.jsx.snap @@ -203,6 +203,11 @@ exports[`should render App correctly 1`] = ` exact={true} path="/news/:id" /> + { @@ -129,6 +131,11 @@ export function App({ language, onChangeLanguage }) { path={`${PATHNAME_NEWS_ARTICLE}/:id`} component={NewsArticle} /> + Date: Tue, 6 Jul 2021 11:16:34 +0200 Subject: [PATCH 07/31] fix: support empty string as fallback language --- src/lib/translateText.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/translateText.js b/src/lib/translateText.js index fa37835fd..72e07baf7 100644 --- a/src/lib/translateText.js +++ b/src/lib/translateText.js @@ -16,6 +16,7 @@ export function getTranslateText(textObj, language) { textObj.no || textObj.nn || textObj.en || + textObj[''] || null ); } From ebc4752ecbbb74a7482ee436202860b3efdbe325 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Tue, 6 Jul 2021 12:14:07 +0200 Subject: [PATCH 08/31] chore: revert "chore: add dotenv and prettierrc (#957)" --- .env.example | 12 ------------ .gitignore | 5 +---- src/config.js | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 16 deletions(-) delete mode 100644 .env.example diff --git a/.env.example b/.env.example deleted file mode 100644 index 93bbcc316..000000000 --- a/.env.example +++ /dev/null @@ -1,12 +0,0 @@ -SEARCH_API_HOST=https://www.staging.fellesdatakatalog.digdir.no -SEARCH_FULLTEXT_HOST=https://search.staging.fellesdatakatalog.digdir.no -CMS_API_HOST=https://cms-fellesdatakatalog.digdir.no -FDK_CMS_BASE_URI=https://cms.fellesdatakatalog.digdir.no -ORGANIZATION_HOST=https://organization-bff.staging.fellesdatakatalog.digdir.no -ORGANIZATION_CATALOGUE_HOST=https://organization-catalogue.staging.fellesdatakatalog.digdir.no -REPORT_API_HOST=https://reports-bff.staging.fellesdatakatalog.digdir.no -METADATA_QUALITY_ASSESSMENT_API_HOST=https://metadata-quality.staging.fellesdatakatalog.digdir.no -FDK_REGISTRATION_BASE_URI=https://registrering.staging.fellesdatakatalog.digdir.no -ADMIN_GUI_BASE_URI=https://admin.staging.fellesdatakatalog.digdir.no -INFORMATIONMODEL_HARVESTER_HOST=https://informationmodels.staging.fellesdatakatalog.digdir.no -FDK_COMMUNITY_BASE_URI=https://community.staging.fellesdatakatalog.digdir.no/ diff --git a/.gitignore b/.gitignore index 4bc8e838b..30ff0c59a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,4 @@ coverage *.iml .DS_Store .idea -.project - -# Environment files -.env \ No newline at end of file +.project \ No newline at end of file diff --git a/src/config.js b/src/config.js index 69bb03e49..843cb3ebf 100644 --- a/src/config.js +++ b/src/config.js @@ -6,6 +6,20 @@ const env = window.env || { USE_DEMO_LOGO: true }; +// override all env variables to staging (inspired by https://www.staging.fellesdatakatalog.digdir.no/config.js) +// env.SEARCH_API_HOST = 'https://www.staging.fellesdatakatalog.digdir.no'; +// env.SEARCH_HOST = 'https://www.staging.fellesdatakatalog.digdir.no'; +// env.SEARCH_FULLTEXT_HOST = 'https://search.staging.fellesdatakatalog.digdir.no'; +// env.CMS_API_HOST = 'https://cms-fellesdatakatalog.digdir.no'; +// env.ORGANIZATION_HOST = +// 'https://organization-bff.staging.fellesdatakatalog.digdir.no'; +// env.ORGANIZATION_CATALOGUE_HOST = +// 'https://organization-catalogue.staging.fellesdatakatalog.digdir.no'; +// env.REPORT_API_HOST = 'https://reports-bff.staging.fellesdatakatalog.digdir.no'; +// env.METADATA_QUALITY_ASSESSMENT_API_HOST = +// 'https://metadata-quality.staging.fellesdatakatalog.digdir.no'; +// env.USE_DEMO_LOGO = true; + const searchApi = { host: env.SEARCH_API_HOST || '', // in ut1 and st1, search api requires basic authentication From a3a0505b25acdf38ba0475cf1c459dd2e28a5f00 Mon Sep 17 00:00:00 2001 From: matsjs Date: Mon, 5 Jul 2021 12:08:55 +0200 Subject: [PATCH 09/31] fix: do not link skolem, hide null version --- .../information-model-details-page/index.tsx | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/components/information-model-details-page/index.tsx b/src/components/information-model-details-page/index.tsx index 2869e7c84..2db4f638e 100755 --- a/src/components/information-model-details-page/index.tsx +++ b/src/components/information-model-details-page/index.tsx @@ -231,6 +231,9 @@ const InformationModelDetailsPage: FC = ({ }; }, [informationModel?.id]); + const uriIsSkolemized = (uri: string) => + new RegExp('.well-known/skolem').test(uri); + return renderPage ? ( = ({ value={hasFormats.map( ({ uri, title: formatTitle, format }) => ( - - {translate(formatTitle) ?? uri} - + {uri && !uriIsSkolemized(uri) ? ( + + {translate(formatTitle) ?? uri} + + ) : ( + translate(formatTitle) ?? uri + )} {format && ( {translations.format}:{' '} @@ -436,13 +443,19 @@ const InformationModelDetailsPage: FC = ({ versionInfo }) => ( - - {translate(isProfileOfTitle) ?? uri} - -
    - {translations.infoMod.version}: - {versionInfo} -
    + {uri && !uriIsSkolemized(uri) ? ( + + {translate(isProfileOfTitle) ?? uri} + + ) : ( + translate(isProfileOfTitle) ?? uri + )} + {versionInfo && ( +
    + {translations.infoMod.version}: + {versionInfo} +
    + )} {isProfileOfSeeAlso && isProfileOfSeeAlso.length > 0 && (
    {translations.infoMod.seeAlso}:
    @@ -468,13 +481,19 @@ const InformationModelDetailsPage: FC = ({ versionInfo }) => ( - - {translate(conformsToTitle) ?? uri} - -
    - {translations.infoMod.version}: - {versionInfo} -
    + {uri && !uriIsSkolemized(uri) ? ( + + {translate(conformsToTitle) ?? uri} + + ) : ( + translate(conformsToTitle) ?? uri + )} + {versionInfo && ( +
    + {translations.infoMod.version}: + {versionInfo} +
    + )} {conformsToSeeAlso && conformsToSeeAlso.length > 0 && (
    {translations.infoMod.seeAlso}:
    )} From 2c5b4026694a10f81d60e06f1ad77ce9794cd9ed Mon Sep 17 00:00:00 2001 From: matsjs Date: Tue, 6 Jul 2021 14:53:52 +0200 Subject: [PATCH 10/31] fix: add null safety for fulltext queries --- src/api/search-fulltext-api/all-entities.ts | 2 +- src/api/search-fulltext-api/concepts.ts | 7 +++++-- src/api/search-fulltext-api/dataservices.ts | 8 ++++++-- src/api/search-fulltext-api/datasets.ts | 7 +++++-- src/api/search-fulltext-api/events.ts | 7 +++++-- src/api/search-fulltext-api/informationmodels.ts | 8 +++++--- src/api/search-fulltext-api/public-services-and-events.ts | 2 +- src/api/search-fulltext-api/public-services.ts | 7 +++++-- src/components/with-concept/redux/saga.ts | 4 +--- src/components/with-data-service/redux/saga.ts | 4 +--- src/components/with-dataset/redux/saga.ts | 3 +-- src/components/with-event/redux/saga.ts | 4 +--- src/components/with-public-service/redux/saga.ts | 4 +--- 13 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/api/search-fulltext-api/all-entities.ts b/src/api/search-fulltext-api/all-entities.ts index 9bf6eb75c..0a18a3684 100644 --- a/src/api/search-fulltext-api/all-entities.ts +++ b/src/api/search-fulltext-api/all-entities.ts @@ -6,4 +6,4 @@ export const searchAllEntities = (body: any) => export const getRecentEntities = () => searchFullTextApiGet('/recent'); export const extractEntities = (searchResponse: any) => - searchResponse.hits ?? []; + searchResponse?.hits ?? []; diff --git a/src/api/search-fulltext-api/concepts.ts b/src/api/search-fulltext-api/concepts.ts index 918f25f9e..0759e146d 100644 --- a/src/api/search-fulltext-api/concepts.ts +++ b/src/api/search-fulltext-api/concepts.ts @@ -1,5 +1,6 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; +import { Concept } from '../../types'; const mapSorting = ({ sortfield }: any) => sortfield === 'harvest.firstHarvested' @@ -59,7 +60,8 @@ const mapFilters = ({ export const searchConcepts = (body: any) => searchFullTextApiPost('/concepts', body); -export const extractConcepts = ({ hits = [] }: any) => hits; +export const extractConcepts = (searchResponse: any) => + searchResponse?.hits ?? []; export const extractConceptAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? []; @@ -75,4 +77,5 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ filters: mapFilters(params) }); -export const extractFirstConcept = ({ hits = [] }: any) => hits[0]; +export const extractFirstConcept = (searchResponse: any): Concept | undefined => + searchResponse?.hits?.[0]; diff --git a/src/api/search-fulltext-api/dataservices.ts b/src/api/search-fulltext-api/dataservices.ts index f284f398e..9df295553 100755 --- a/src/api/search-fulltext-api/dataservices.ts +++ b/src/api/search-fulltext-api/dataservices.ts @@ -1,5 +1,6 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; +import { DataService } from '../../types'; const mapSorting = ({ sortfield }: any) => sortfield === 'harvest.firstHarvested' @@ -86,7 +87,8 @@ const mapFilters = ({ export const searchDataServices = (body: any) => searchFullTextApiPost('/dataservices', body); -export const extractDataServices = ({ hits = [] }: any) => hits; +export const extractDataServices = (searchResponse: any) => + searchResponse?.hits ?? []; export const extractDataServiceAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? []; @@ -102,4 +104,6 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ filters: mapFilters(params) }); -export const extractFirstDataService = ({ hits = [] }: any) => hits[0]; +export const extractFirstDataService = ( + searchResponse: any +): DataService | undefined => searchResponse?.hits?.[0]; diff --git a/src/api/search-fulltext-api/datasets.ts b/src/api/search-fulltext-api/datasets.ts index e710b6cd6..9eb652317 100644 --- a/src/api/search-fulltext-api/datasets.ts +++ b/src/api/search-fulltext-api/datasets.ts @@ -1,6 +1,7 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; import { getConfig } from '../../config'; +import { Dataset } from '../../types'; export const searchDatasets = (body: any) => searchFullTextApiPost('/datasets', body); @@ -152,7 +153,8 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ filters: mapFilters(params) }); -export const extractDatasets = ({ hits = [] }: any) => hits; +export const extractDatasets = (searchResponse: any) => + searchResponse?.hits ?? []; export const extractDatasetAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? []; @@ -160,4 +162,5 @@ export const extractDatasetAggregations = (searchResponse: any) => export const extractDatasetsTotal = (searchResponse: any) => searchResponse?.page?.totalElements ?? 0; -export const extractFirstDataset = ({ hits = [] }: any) => hits[0]; +export const extractFirstDataset = (searchResponse: any): Dataset | undefined => + searchResponse?.hits?.[0]; diff --git a/src/api/search-fulltext-api/events.ts b/src/api/search-fulltext-api/events.ts index ba19bdb70..fa31ad6b0 100644 --- a/src/api/search-fulltext-api/events.ts +++ b/src/api/search-fulltext-api/events.ts @@ -1,5 +1,6 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; +import { Event } from '../../types'; const mapSorting = ({ sortfield }: any) => sortfield === 'harvest.firstHarvested' @@ -41,7 +42,8 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ filters: mapFilters(params) }); -export const extractEvents = (searchResponse: any) => searchResponse.hits ?? []; +export const extractEvents = (searchResponse: any) => + searchResponse?.hits ?? []; export const extractEventsAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? {}; @@ -49,4 +51,5 @@ export const extractEventsAggregations = (searchResponse: any) => export const extractEventsPage = (searchResponse: any) => searchResponse.page ?? {}; -export const extractFirstEvent = ({ hits = [] }: any) => hits[0]; +export const extractFirstEvent = (searchResponse: any): Event | undefined => + searchResponse?.hits?.[0]; diff --git a/src/api/search-fulltext-api/informationmodels.ts b/src/api/search-fulltext-api/informationmodels.ts index 7bf122fb0..edf92296d 100644 --- a/src/api/search-fulltext-api/informationmodels.ts +++ b/src/api/search-fulltext-api/informationmodels.ts @@ -1,5 +1,6 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; +import { InformationModel } from '../../types'; export const searchInformationModels = (body: any) => searchFullTextApiPost('/informationmodels', body); @@ -88,10 +89,11 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => { }; export const extractInformationModels = (searchResponse: any) => - searchResponse.hits ?? []; + searchResponse?.hits ?? []; export const extractInformationModelsAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? []; -export const extractFirstInformationModel = ({ hits: [hit = {}] = [] }: any) => - hit; +export const extractFirstInformationModel = ( + searchResponse: any +): InformationModel | undefined => searchResponse?.hits?.[0]; diff --git a/src/api/search-fulltext-api/public-services-and-events.ts b/src/api/search-fulltext-api/public-services-and-events.ts index 3064fc6dc..23ef644c3 100644 --- a/src/api/search-fulltext-api/public-services-and-events.ts +++ b/src/api/search-fulltext-api/public-services-and-events.ts @@ -67,7 +67,7 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ }); export const extractPublicServicesAndEvents = (searchResponse: any) => - searchResponse.hits ?? []; + searchResponse?.hits ?? []; export const extractPublicServicesAndEventsAggregations = ( searchResponse: any diff --git a/src/api/search-fulltext-api/public-services.ts b/src/api/search-fulltext-api/public-services.ts index 386880ad5..414c9bf0c 100644 --- a/src/api/search-fulltext-api/public-services.ts +++ b/src/api/search-fulltext-api/public-services.ts @@ -1,5 +1,6 @@ import { searchFullTextApiPost } from './host'; import { normalizeAggregations } from '../../lib/normalizeAggregations'; +import { PublicService } from '../../types'; const mapSorting = ({ sortfield }: any) => sortfield === 'harvest.firstHarvested' @@ -106,7 +107,7 @@ export const paramsToSearchBody = ({ q, page, size, ...params }: any) => ({ }); export const extractPublicServices = (searchResponse: any) => - searchResponse.hits ?? []; + searchResponse?.hits ?? []; export const extractPublicServicesAggregations = (searchResponse: any) => normalizeAggregations(searchResponse).aggregations ?? {}; @@ -114,4 +115,6 @@ export const extractPublicServicesAggregations = (searchResponse: any) => export const extractPublicServicesPage = (searchResponse: any) => searchResponse.page ?? {}; -export const extractFirstPublicService = ({ hits = [] }: any) => hits[0]; +export const extractFirstPublicService = ( + searchResponse: any +): PublicService | undefined => searchResponse?.hits?.[0]; diff --git a/src/components/with-concept/redux/saga.ts b/src/components/with-concept/redux/saga.ts index 09cbce96b..c7bdfa4e0 100755 --- a/src/components/with-concept/redux/saga.ts +++ b/src/components/with-concept/redux/saga.ts @@ -11,8 +11,6 @@ import { extractFirstConcept } from '../../../api/search-fulltext-api/concepts'; -import type { Concept } from '../../../types'; - function* getConceptRequested({ payload: { id } }: ReturnType) { @@ -21,7 +19,7 @@ function* getConceptRequested({ searchConcepts, paramsToSearchBody({ id }) ); - const concept = extractFirstConcept(data) as Concept; + const concept = extractFirstConcept(data); if (concept) { yield put(actions.getConceptSucceeded(concept)); diff --git a/src/components/with-data-service/redux/saga.ts b/src/components/with-data-service/redux/saga.ts index 932934a5a..1997debab 100755 --- a/src/components/with-data-service/redux/saga.ts +++ b/src/components/with-data-service/redux/saga.ts @@ -11,8 +11,6 @@ import { extractFirstDataService } from '../../../api/search-fulltext-api/dataservices'; -import type { DataService } from '../../../types'; - function* getDataServiceRequested({ payload: { id } }: ReturnType) { @@ -21,7 +19,7 @@ function* getDataServiceRequested({ searchDataServices, paramsToSearchBody({ id }) ); - const dataService = extractFirstDataService(data) as DataService; + const dataService = extractFirstDataService(data); if (dataService) { yield put(actions.getDataServiceSucceeded(dataService)); diff --git a/src/components/with-dataset/redux/saga.ts b/src/components/with-dataset/redux/saga.ts index cbf8893a2..7beab1589 100755 --- a/src/components/with-dataset/redux/saga.ts +++ b/src/components/with-dataset/redux/saga.ts @@ -2,7 +2,6 @@ import { all, call, put, takeLatest } from 'redux-saga/effects'; import { GET_DATASET_REQUESTED } from './action-types'; import * as actions from './actions'; -import { Dataset } from '../../../types'; import { searchDatasets, paramsToSearchBody, @@ -17,7 +16,7 @@ function* getDatasetRequested({ try { const params = paramsToSearchBody({ id }); const data: Record = yield call(searchDatasets, params); - const dataset = extractFirstDataset(data) as Dataset; + const dataset = extractFirstDataset(data); if (dataset) { yield put(actions.getDatasetSucceeded(dataset)); diff --git a/src/components/with-event/redux/saga.ts b/src/components/with-event/redux/saga.ts index c229bbc0c..d19bf33b8 100644 --- a/src/components/with-event/redux/saga.ts +++ b/src/components/with-event/redux/saga.ts @@ -11,8 +11,6 @@ import { import LoggingService, { Severity } from '../../../services/logging'; -import type { Event } from '../../../types'; - function* getEventRequested({ payload: { id } }: ReturnType) { @@ -21,7 +19,7 @@ function* getEventRequested({ searchEvents, paramsToSearchBody({ id }) ); - const event = extractFirstEvent(data) as Event; + const event = extractFirstEvent(data); if (event) { yield put(actions.getEventSucceeded(event)); diff --git a/src/components/with-public-service/redux/saga.ts b/src/components/with-public-service/redux/saga.ts index 209ea97f3..72eb8201f 100644 --- a/src/components/with-public-service/redux/saga.ts +++ b/src/components/with-public-service/redux/saga.ts @@ -11,8 +11,6 @@ import { import LoggingService, { Severity } from '../../../services/logging'; -import { PublicService } from '../../../types'; - function* getPublicServiceRequested({ payload: { id } }: ReturnType) { @@ -21,7 +19,7 @@ function* getPublicServiceRequested({ searchPublicServices, paramsToSearchBody({ id }) ); - const publicService = extractFirstPublicService(data) as PublicService; + const publicService = extractFirstPublicService(data); if (publicService) { yield put(actions.getPublicServiceSucceeded(publicService)); From 99946b72f5c1857535924168287b0c5c6ac9ccf1 Mon Sep 17 00:00:00 2001 From: matsjs Date: Tue, 6 Jul 2021 17:00:56 +0200 Subject: [PATCH 11/31] chore: update news list styling --- src/components/news-list/styled.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/news-list/styled.ts b/src/components/news-list/styled.ts index 8fa2792d9..69a22484a 100644 --- a/src/components/news-list/styled.ts +++ b/src/components/news-list/styled.ts @@ -1,14 +1,17 @@ import styled from 'styled-components'; -import { Link as LinkBase } from 'react-router-dom'; +import LinkBase from '@fellesdatakatalog/link'; +import { theme as themeFDK } from '@fellesdatakatalog/theme'; const NewsList = styled.div` display: flex; flex-flow: column; + color: ${({ theme }) => theme.extendedColors.neutralDarker} !important; `; const Link = styled(LinkBase)` - color: ${({ theme }) => theme.extendedColors.neutralDarker} !important; - text-decoration: underline; + font-size: ${themeFDK.fontSize('FS16')}; + font-weight: ${themeFDK.fontWeight('FW700')}; + margin-top: ${themeFDK.spacing('S8')}; `; export default { From f5244ad282cde376fabb0ceaad398840fef708e5 Mon Sep 17 00:00:00 2001 From: matsjs Date: Tue, 6 Jul 2021 17:01:55 +0200 Subject: [PATCH 12/31] fix: user uploaded avatar --- src/components/community/user/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/community/user/index.tsx b/src/components/community/user/index.tsx index e2efe39c6..87ea31c92 100644 --- a/src/components/community/user/index.tsx +++ b/src/components/community/user/index.tsx @@ -15,7 +15,7 @@ interface Props { const User: FC = ({ user }) => ( {user.picture ? ( - + ) : ( {user['icon:text']} )} From 3fcb32977e648110732b2134d6dfc74076d2b717 Mon Sep 17 00:00:00 2001 From: matsjs Date: Tue, 6 Jul 2021 17:02:59 +0200 Subject: [PATCH 13/31] feat: adds datalandsbyen home link --- src/l10n/en.json | 1 + src/l10n/nb.json | 1 + src/l10n/nn.json | 1 + src/pages/main-page/components/header/styled.ts | 14 +++++++++++++- src/pages/main-page/main-page-pure.tsx | 13 ++++++------- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/l10n/en.json b/src/l10n/en.json index bfa95214d..6c251c595 100644 --- a/src/l10n/en.json +++ b/src/l10n/en.json @@ -875,6 +875,7 @@ "sampleData": "Example data", "community": { "title": "Data Community", + "seeLatest": "Latests posts from the ", "seeMore": "See more recent posts", "subtitle": { "link": "our data community.", diff --git a/src/l10n/nb.json b/src/l10n/nb.json index e08c41ce5..7df21a975 100644 --- a/src/l10n/nb.json +++ b/src/l10n/nb.json @@ -873,6 +873,7 @@ "sampleData": "Eksempeldata", "community": { "title": "Datalandsbyen", + "seeLatest": "Siste saker fra", "seeMore": "Se flere nylige innlegg", "subtitle": { "link": "datalandsbyen.", diff --git a/src/l10n/nn.json b/src/l10n/nn.json index 969ef66a4..9d77065e5 100644 --- a/src/l10n/nn.json +++ b/src/l10n/nn.json @@ -874,6 +874,7 @@ "sampleData": "Eksempeldata", "community": { "title": "Datalandsbyen", + "seeLatest": "Siste saker frĂĄ", "seeMore": "SjĂĄ fleire nylege innlegg", "subtitle": { "link": "datalandsbyen.", diff --git a/src/pages/main-page/components/header/styled.ts b/src/pages/main-page/components/header/styled.ts index dfcb5a8d6..bc57b4418 100644 --- a/src/pages/main-page/components/header/styled.ts +++ b/src/pages/main-page/components/header/styled.ts @@ -3,12 +3,24 @@ import styled from 'styled-components'; const Header = styled.h2` font-size: 3rem; font-weight: 600; - margin-bottom: 1em; + margin-top: 1em; + margin-bottom: 0.25em; text-align: center; @media (min-width: 992px) { text-align: left; } + + & > a { + font-size: inherit; + font-weight: inherit; + margin: none; + + & svg { + height: 3rem; + width: 3rem; + } + } `; export default { diff --git a/src/pages/main-page/main-page-pure.tsx b/src/pages/main-page/main-page-pure.tsx index f45a45627..ca26925ab 100644 --- a/src/pages/main-page/main-page-pure.tsx +++ b/src/pages/main-page/main-page-pure.tsx @@ -60,14 +60,15 @@ const MainPage: FC = ({
    - - {localization.sort.modified} - + {localization.sort.modified}
    - {localization.community.title} + {localization.community.seeLatest} + + {localization.community.title} + {posts.length > 0 ? ( @@ -79,9 +80,7 @@ const MainPage: FC = ({ ) : null} - - {localization.news} - + {localization.news} From 110ae9dc642c52777ef47457bbce9ae73376912e Mon Sep 17 00:00:00 2001 From: matsjs Date: Wed, 7 Jul 2021 14:44:21 +0200 Subject: [PATCH 14/31] chore: add external icon to community links --- src/app/app-nav-bar/app-nav-bar.tsx | 4 ++-- .../details-page/components/community-topics/index.tsx | 6 +++--- src/l10n/en.json | 2 +- src/l10n/nb.json | 2 +- src/l10n/nn.json | 2 +- src/pages/main-page/main-page-pure.tsx | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/app-nav-bar/app-nav-bar.tsx b/src/app/app-nav-bar/app-nav-bar.tsx index de19e714d..27aa7b60c 100644 --- a/src/app/app-nav-bar/app-nav-bar.tsx +++ b/src/app/app-nav-bar/app-nav-bar.tsx @@ -51,7 +51,7 @@ const transportItems = () => (
  • - + {localization.menu.community}
  • @@ -91,7 +91,7 @@ const fdkItems = () => (
  • - + {localization.menu.community}
  • diff --git a/src/components/details-page/components/community-topics/index.tsx b/src/components/details-page/components/community-topics/index.tsx index 501a60aea..29f889c73 100644 --- a/src/components/details-page/components/community-topics/index.tsx +++ b/src/components/details-page/components/community-topics/index.tsx @@ -26,7 +26,7 @@ const CommunityTopics: FC = ({ entityType, topics }) => {topics.length === 1 ? translations.community.subtitle.mention : translations.community.subtitle.mentionPlural} - + {translations.community.subtitle.link} @@ -37,9 +37,9 @@ const CommunityTopics: FC = ({ entityType, topics }) => ) : ( {translations.community.subtitle.empty[entityType]} - + {translations.community.subtitle.link} - + ); diff --git a/src/l10n/en.json b/src/l10n/en.json index 6c251c595..0d74cb289 100644 --- a/src/l10n/en.json +++ b/src/l10n/en.json @@ -878,7 +878,7 @@ "seeLatest": "Latests posts from the ", "seeMore": "See more recent posts", "subtitle": { - "link": "our data community.", + "link": "our data community", "mention": " thread in our ", "mentionPlural": " threads in our ", "empty": { diff --git a/src/l10n/nb.json b/src/l10n/nb.json index 7df21a975..8e7553b1d 100644 --- a/src/l10n/nb.json +++ b/src/l10n/nb.json @@ -876,7 +876,7 @@ "seeLatest": "Siste saker fra", "seeMore": "Se flere nylige innlegg", "subtitle": { - "link": "datalandsbyen.", + "link": "datalandsbyen", "mention": " innlegg i ", "mentionPlural": " innlegg i ", "empty": { diff --git a/src/l10n/nn.json b/src/l10n/nn.json index 9d77065e5..4d0c2edcf 100644 --- a/src/l10n/nn.json +++ b/src/l10n/nn.json @@ -877,7 +877,7 @@ "seeLatest": "Siste saker frĂĄ", "seeMore": "SjĂĄ fleire nylege innlegg", "subtitle": { - "link": "datalandsbyen.", + "link": "datalandsbyen", "mention": " innlegg i ", "mentionPlural": " innlegg i ", "empty": { diff --git a/src/pages/main-page/main-page-pure.tsx b/src/pages/main-page/main-page-pure.tsx index ca26925ab..de8de3923 100644 --- a/src/pages/main-page/main-page-pure.tsx +++ b/src/pages/main-page/main-page-pure.tsx @@ -75,7 +75,7 @@ const MainPage: FC = ({ {posts.slice(0, 3).map(post => ( ))} - + {localization.community.seeMore} From fe966217c4d23558f1b825b090b38ae62f54bb61 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Wed, 7 Jul 2021 14:59:09 +0200 Subject: [PATCH 15/31] fix: korrigering nynorsk --- src/l10n/nn.json | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/l10n/nn.json b/src/l10n/nn.json index 4d0c2edcf..fe0202ff0 100644 --- a/src/l10n/nn.json +++ b/src/l10n/nn.json @@ -22,8 +22,8 @@ "filter": "Filter", "openFilter": "Opne søkefilter", "public": "Offentleg", - "restricted": "Begrensa offentlegheit", - "non_public": "Unntatt offentlegheit", + "restricted": "Avgrensa offentlegheit", + "non_public": "Unnteken offentlegheit", "open_data": "Opne data", "unknown": "Ukjend", "newsFromDatakatalogenOnTwitter": "Nytt fra Datakatalogen pĂĄ Twitter", @@ -334,10 +334,10 @@ "authorityCode": { "public": "Offentleg", "restricted": "Avgrensa offentlegheit", - "nonPublic": "Unntatt offentlegheit", + "nonPublic": "Unnteken offentlegheit", "publicDetailsLabel": "Datasettet kan deles offentleg", "restrictedDetailsLabel": "Datasettet har avgrensa offentlegheit", - "nonPublicDetailsLabel": "Datasettet er unntatt offentlegheit" + "nonPublicDetailsLabel": "Datasettet er unnteken offentlegheit" } }, "sample": "Eksempeldata", @@ -386,7 +386,7 @@ "aggregation": { "public": "Datasett som er offentleg", "restricted": "Datasett med avgrensa offentlegheit", - "nonPublic": "Datasett som er unntatt offentlegheit", + "nonPublic": "Datasett som er unnteken offentlegheit", "accessRightsUnknown": "Datasett med ukjend tilgangsnivĂĄ", "openDataset": "datasett er opne", "openDatasetDescription": "Opne datasett er datasett som er offentleg tilgjengeleg og har distribusjonar med open lisens.", @@ -571,7 +571,6 @@ "collection": "Samling", "composition": "Komposisjon", "relation": "Relasjonseigenskap" - }, "restriction": { "valueLength": "Lengde", @@ -610,8 +609,8 @@ "responsible": "Ansvarleg: {publisher}", "openData": "Opne data", "publicData": "Kan deles offentleg", - "restrictedData": "Begrensa offentlegheit", - "nonPublicData": "Unntatt offentlegheit", + "restrictedData": "Avgrensa offentlegheit", + "nonPublicData": "Unnteken offentlegheit", "menu": { "title": "GĂĄ til" }, @@ -710,12 +709,12 @@ "event": "Andre som relaterer til denne hendinga" }, "subtitle": { - "dataset":"Datasett", - "dataservice":"Datateneste", - "concept":"Omgrep", - "informationmodel":"Informasjonsmodell", - "public_service":"Teneste", - "event":"Hending" + "dataset": "Datasett", + "dataservice": "Datateneste", + "concept": "Omgrep", + "informationmodel": "Informasjonsmodell", + "public_service": "Teneste", + "event": "Hending" }, "referenceType": "relasjonstype" } @@ -854,13 +853,13 @@ "rss": "RSS", "atom": "Atom" }, - "errorPage":{ - "serverError":{ + "errorPage": { + "serverError": { "title": "Dette er flautt...", "content1": "Det har visst skjedd noko teknisk krøll i enden vĂĄr.", "content2": "Vi jobbar med ĂĄ retta opp feilen. Prøv igjen om ei lita stund." }, - "clientError":{ + "clientError": { "title": "Vi beklagar!", "content1": "Vi finn ikkje sidan du leitar etter.", "content2": "GĂĄ tilbake til ", @@ -888,7 +887,7 @@ "public_service": "Denne tenesta er ikkje omtalt i ", "event": "Denne hendinga er ikkje omtalt i " }, - "content" : { + "content": { "dataset": "Dette datasettet er omtalt i ", "dataservice": "Denne datatenesta er omtalt i ", "concept": "Dette omgrepet er omtalt i ", @@ -898,7 +897,7 @@ } }, "timeago": { - "postPrefix" : "skrev for ", + "postPrefix": "skrev for ", "singular": { "seconds": "Nokre fĂĄ sekund sidan", "minutes": "Eitt minutt sidan", From 13700cbedbc3d9f5b2a4fa6b5fa40633d78f27af Mon Sep 17 00:00:00 2001 From: matsjs Date: Wed, 7 Jul 2021 17:06:31 +0200 Subject: [PATCH 16/31] fix: null handling --- .../search-box/hits-stats/hits-stats.component.test.tsx | 7 ++++++- .../search-box/hits-stats/hits-stats.component.tsx | 8 ++++---- src/pages/search-page/search-page-pure.tsx | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/pages/search-page/search-box/hits-stats/hits-stats.component.test.tsx b/src/pages/search-page/search-box/hits-stats/hits-stats.component.test.tsx index 2db2fbf07..94475cc1c 100644 --- a/src/pages/search-page/search-box/hits-stats/hits-stats.component.test.tsx +++ b/src/pages/search-page/search-box/hits-stats/hits-stats.component.test.tsx @@ -14,7 +14,12 @@ test('should render HitsStats correctly with hits ', () => { }); test('should render HitsStats correctly when no hits', () => { - const defaultProps = {}; + const defaultProps = { + countDatasets: 0, + countApis: 0, + countTerms: 0, + countInformationModels: 0 + }; const wrapper = shallow(); expect(wrapper).toMatchSnapshot(); }); diff --git a/src/pages/search-page/search-box/hits-stats/hits-stats.component.tsx b/src/pages/search-page/search-box/hits-stats/hits-stats.component.tsx index d4d5ab83d..a270bf29f 100644 --- a/src/pages/search-page/search-box/hits-stats/hits-stats.component.tsx +++ b/src/pages/search-page/search-box/hits-stats/hits-stats.component.tsx @@ -3,10 +3,10 @@ import React, { FC } from 'react'; import localization from '../../../../lib/localization'; interface Props { - countDatasets?: number; - countTerms?: number; - countApis?: number; - countInformationModels?: number; + countDatasets: number; + countTerms: number; + countApis: number; + countInformationModels: number; } export const HitsStats: FC = ({ diff --git a/src/pages/search-page/search-page-pure.tsx b/src/pages/search-page/search-page-pure.tsx index d9df858f4..4eaea5df5 100644 --- a/src/pages/search-page/search-page-pure.tsx +++ b/src/pages/search-page/search-page-pure.tsx @@ -157,10 +157,10 @@ const SearchPage: FC = ({ Date: Thu, 8 Jul 2021 11:36:11 +0200 Subject: [PATCH 17/31] fix: add error boundary to markdown component (chrome translate bug) --- src/components/markdown/index.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/components/markdown/index.tsx b/src/components/markdown/index.tsx index a37538d2f..6da62bb64 100644 --- a/src/components/markdown/index.tsx +++ b/src/components/markdown/index.tsx @@ -1,10 +1,16 @@ import React, { FC } from 'react'; +import { compose } from 'redux'; import gfm from 'remark-gfm'; import rehypeRaw from 'rehype-raw'; +import parse from 'html-react-parser'; +import sanitizeHtml from 'sanitize-html'; + import SC from './styled'; +import withErrorBoundary from '../with-error-boundary'; + interface Props { allowHtml?: boolean; children: string; @@ -16,6 +22,12 @@ const Markdown: FC = ({ allowHtml, children }) => {children} ) : ( - {children} + + {children} + ); -export default Markdown; + +const Fallback: FC = ({ allowHtml, children }) => + allowHtml ? <>{parse(sanitizeHtml(children))} : <>{children}; + +export default compose(withErrorBoundary(Fallback))(Markdown); From 7752be1722ad6ad657bccfbca12df96974094a38 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Thu, 8 Jul 2021 12:13:03 +0200 Subject: [PATCH 18/31] chore: updated search-hit snapshot --- .../__snapshots__/search-hit.component.test.tsx.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/search-hit/components/search-hit/__tests__/__snapshots__/search-hit.component.test.tsx.snap b/src/components/search-hit/components/search-hit/__tests__/__snapshots__/search-hit.component.test.tsx.snap index 07b3323a2..ce94dd247 100644 --- a/src/components/search-hit/components/search-hit/__tests__/__snapshots__/search-hit.component.test.tsx.snap +++ b/src/components/search-hit/components/search-hit/__tests__/__snapshots__/search-hit.component.test.tsx.snap @@ -25,9 +25,9 @@ exports[`SearchHit component should render with properties 1`] = ` lineHeight={20} visibleLines={4} > - + Test datasett beskrivelse - + `; From 1f9cde590bd93607905f675f441b9f82e64b98c9 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Thu, 15 Jul 2021 12:47:08 +0200 Subject: [PATCH 19/31] chore: disable markup error logging --- src/components/markdown/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/markdown/index.tsx b/src/components/markdown/index.tsx index 6da62bb64..fdcefd086 100644 --- a/src/components/markdown/index.tsx +++ b/src/components/markdown/index.tsx @@ -30,4 +30,4 @@ const Markdown: FC = ({ allowHtml, children }) => const Fallback: FC = ({ allowHtml, children }) => allowHtml ? <>{parse(sanitizeHtml(children))} : <>{children}; -export default compose(withErrorBoundary(Fallback))(Markdown); +export default compose(withErrorBoundary(Fallback, false))(Markdown); From 48e069d5f19e97ed2bf5189fa34a44959502c369 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Wed, 17 Nov 2021 08:32:51 +0100 Subject: [PATCH 20/31] feat: support for plain preview --- package-lock.json | 13 ++++ package.json | 3 +- src/components/dataset-details-page/index.tsx | 1 + .../__tests__/index.test.tsx | 41 ++++++++-- .../components/dataset-distribution/index.tsx | 16 +++- .../components/preview/index.tsx | 53 +++++++++++-- .../components/preview/styled.ts | 76 ++++++++++++++++--- src/types/domain.d.ts | 7 +- 8 files changed, 183 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f67e907e..f35e0371e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25227,12 +25227,25 @@ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true }, + "xml-formatter": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-2.5.1.tgz", + "integrity": "sha512-qJwnz5uNMs4mc7jX3UH80taCK4BHnXX91MvByple+iOS2P1eNeifGAfPnKuteyHg8pehbhTBHPBunGOQ53nKdQ==", + "requires": { + "xml-parser-xo": "^3.1.2" + } + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xml-parser-xo": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-3.1.2.tgz", + "integrity": "sha512-Qyttmiy305unyg1ONpArT4FPDL3J+ohXWpMI1ecopClGMw53lCRHJ4FV/fVYHFU6qfEzMV0frqSlNaLo2dw15Q==" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", diff --git a/package.json b/package.json index 0dda7eaa0..7798e213f 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,8 @@ "rehype-raw": "^5.1.0", "remark-gfm": "^1.0.0", "sanitize-html": "^2.4.0", - "styled-components": "^5.3.1" + "styled-components": "^5.3.1", + "xml-formatter": "^2.5.1" }, "devDependencies": { "@babel/core": "^7.15.5", diff --git a/src/components/dataset-details-page/index.tsx b/src/components/dataset-details-page/index.tsx index dcd28f690..722153956 100755 --- a/src/components/dataset-details-page/index.tsx +++ b/src/components/dataset-details-page/index.tsx @@ -331,6 +331,7 @@ const DatasetDetailsPage: FC = ({ {distributions.map((distribution, index) => ( diff --git a/src/components/dataset-distribution/components/dataset-distribution/__tests__/index.test.tsx b/src/components/dataset-distribution/components/dataset-distribution/__tests__/index.test.tsx index adf83d7d7..853668b02 100755 --- a/src/components/dataset-distribution/components/dataset-distribution/__tests__/index.test.tsx +++ b/src/components/dataset-distribution/components/dataset-distribution/__tests__/index.test.tsx @@ -81,7 +81,10 @@ describe('DatasetDistribution component', () => { queryByTestId, queryAllByTestId, rerender - } = renderWithTheme(, { theme }); + } = renderWithTheme( + , + { theme } + ); let datasetDistributionRootElement = getByTestId(testIds.root); let datasetDistributionSummaryElement = getByTestId(testIds.summary); @@ -105,7 +108,12 @@ describe('DatasetDistribution component', () => { expect(datasetDistributionDetailElements).toHaveLength(1); expect(datasetDistributionMoreInfoElement).not.toBeInTheDocument(); - rerender(); + rerender( + + ); datasetDistributionRootElement = getByTestId(testIds.root); datasetDistributionSummaryElement = getByTestId(testIds.summary); @@ -134,7 +142,12 @@ describe('DatasetDistribution component', () => { expect(datasetDistributionDetailElements).toHaveLength(0); expect(datasetDistributionMoreInfoElement).not.toBeInTheDocument(); - rerender(); + rerender( + + ); datasetDistributionRootElement = getByTestId(testIds.root); datasetDistributionSummaryElement = getByTestId(testIds.summary); @@ -164,7 +177,10 @@ describe('DatasetDistribution component', () => { expect(datasetDistributionMoreInfoElement).not.toBeInTheDocument(); rerender( - + ); datasetDistributionRootElement = getByTestId(testIds.root); @@ -202,6 +218,7 @@ describe('DatasetDistribution component', () => { rerender( { ); rerender( { rerender( { ); rerender( { rerender( { rerender( { rerender( { it('must not be expanded by default', () => { const { container, getByTestId, queryByTestId, queryAllByTestId } = - renderWithTheme(, { theme }); + renderWithTheme( + , + { theme } + ); const datasetDistributionRootElement = getByTestId(testIds.root); const datasetDistributionSummaryElement = getByTestId(testIds.summary); @@ -677,7 +703,10 @@ describe('DatasetDistribution component', () => { getAllByTestId, queryByTestId, queryAllByTestId - } = renderWithTheme(, { theme }); + } = renderWithTheme( + , + { theme } + ); let datasetDistributionRootElement = getByTestId(testIds.root); let datasetDistributionSummaryElement = getByTestId(testIds.summary); diff --git a/src/components/dataset-distribution/components/dataset-distribution/index.tsx b/src/components/dataset-distribution/components/dataset-distribution/index.tsx index 384988fff..729932266 100755 --- a/src/components/dataset-distribution/components/dataset-distribution/index.tsx +++ b/src/components/dataset-distribution/components/dataset-distribution/index.tsx @@ -23,16 +23,23 @@ import SC from './styled'; import testIds from './test-ids'; -import { AccessService, Distribution, License } from '../../../../types'; +import { + AccessService, + Distribution, + License, + TextLanguage +} from '../../../../types'; interface ExternalProps { accessServices?: AccessService[]; + datasetTitle: Partial; distribution: Partial; } interface Props extends ExternalProps {} const DatasetDistribution: FC = ({ + datasetTitle, distribution: { title, description, @@ -170,6 +177,13 @@ const DatasetDistribution: FC = ({ )} {downloadURL && showPreview && ( contentType.includes('xml'); +const isJSON = (contentType: string) => contentType.includes('json'); + +const beautifyJSON = (jsonString: string) => { + const jsonObject = JSON.parse(jsonString); + return JSON.stringify(jsonObject, null, 2); +}; + const Preview: FC = ({ + title, + subtitle, downloadURL, rowCount, isOpen, @@ -33,14 +47,22 @@ const Preview: FC = ({ }) => { const getColumns = (): any => { const { - table: { header } + table: { header, rows } } = datasetPreview; return header?.columns.map((column: string, index) => ({ key: `column-${index}`, name: column, resizable: true, - sortable: true + sortable: true, + width: + rows.reduce( + (length, row) => + row.columns[index]?.length > length + ? row.columns[index].length + : length, + column.length + ) * 10 })); }; @@ -82,18 +104,37 @@ const Preview: FC = ({ - handleOnClose()}> - Lukk - + + {title} + {subtitle} + + + handleOnClose()}> + Lukk + + + {isLoadingDatasetPreview && ( )} - {datasetPreview && !isLoadingDatasetPreview && ( + {datasetPreview?.table && !isLoadingDatasetPreview && ( )} + {datasetPreview?.plain && + !datasetPreview?.table && + !isLoadingDatasetPreview && + isXML(datasetPreview.plain.contentType) && ( + {xmlFormat(datasetPreview.plain.value)} + )} + {datasetPreview?.plain && + !datasetPreview?.table && + !isLoadingDatasetPreview && + isJSON(datasetPreview.plain.contentType) && ( + {beautifyJSON(datasetPreview.plain.value)} + )} {!(datasetPreview || isLoadingDatasetPreview) && ( {translations.dataset.distribution.previewFailure} diff --git a/src/components/dataset-distribution/components/preview/styled.ts b/src/components/dataset-distribution/components/preview/styled.ts index e8a568c45..750598731 100755 --- a/src/components/dataset-distribution/components/preview/styled.ts +++ b/src/components/dataset-distribution/components/preview/styled.ts @@ -1,10 +1,14 @@ import styled from 'styled-components'; +import { theme, Colour } from '@fellesdatakatalog/theme'; + import ClearIconBase from '../../../../images/icon-clear.svg'; +const onMobileView = '@media (max-width: 900px)'; + const Modal = styled.div<{ show?: boolean }>` z-index: 9999999; - display: ${({ show }) => (show ? 'block' : 'none')}; + display: ${({ show }) => (show ? 'flex' : 'none')}; position: fixed; top: 0; left: 0; @@ -29,31 +33,69 @@ const Container = styled.div` & > div:last-child { flex-grow: 1; } + + ${onMobileView} { + padding: 1rem; + } `; const Header = styled.div` display: flex; - justify-content: flex-end; - padding-bottom: 2rem; + margin-bottom: ${theme.spacing('S4')}; + ${onMobileView} { + flex-direction: column; + } +`; + +const TitleHeader = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + width: 100%; +`; + +const Title = styled.h2` + flex-grow: 1; + margin-bottom: ${theme.spacing('S4')}; + font-size: ${theme.fontSize('FS20')}; + ${onMobileView} { + font-size: ${theme.fontSize('FS14')}; + } +`; + +const Subtitle = styled.h3` + font-size: ${theme.fontSize('FS16')}; + margin-bottom: ${theme.spacing('S4')}; + ${onMobileView} { + font-size: ${theme.fontSize('FS12')}; + } `; const ClearIcon = styled(ClearIconBase)` - width: 15px; - height: 15px; + width: 20px; + height: 20px; + margin-right: ${theme.spacing('S4')}; & > path { - fill: ${({ theme: t }) => t.extendedColors.neutralLightest}; + fill: ${theme.colour(Colour.NEUTRAL, 'N70')}; + } +`; + +const ButtonContainer = styled.div` + ${onMobileView} { + order: -1; } `; const CloseButton = styled.button` - background-color: ${({ theme }) => theme.extendedColors.buttonPrimary2}; - color: ${({ theme }) => theme.extendedColors.neutralLightest}; + display: flex; + align-items: center; + background-color: ${theme.colour(Colour.BLUE, 'B20')}; + color: ${theme.colour(Colour.NEUTRAL, 'N70')}; border: none; - border-radius: 5px; - padding: 0.5em; - min-width: 100px; + padding: ${theme.spacing('S10')}; cursor: pointer; + white-space: nowrap; `; const Center = styled.div` @@ -67,11 +109,21 @@ const Center = styled.div` } `; +const Plain = styled.pre` + height: 100%; + overflow: scroll; +`; + export default { Modal, Container, + ButtonContainer, Header, + Title, + TitleHeader, + Subtitle, ClearIcon, CloseButton, - Center + Center, + Plain }; diff --git a/src/types/domain.d.ts b/src/types/domain.d.ts index d419bb68b..52241c9cc 100644 --- a/src/types/domain.d.ts +++ b/src/types/domain.d.ts @@ -932,7 +932,12 @@ export interface DctStandard { export interface DatasetPreview { table: PreviewTable; - plain: string; + plain: PreviewPlain; +} + +export interface PreviewPlain { + value: string; + contentType: string; } export interface PreviewTable { From 78433dd449e45d7be7d36da8603d8b47243bd11f Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Mon, 22 Nov 2021 10:08:55 +0100 Subject: [PATCH 21/31] chore: audit fix --- audit-resolve.json | 82 ++++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/audit-resolve.json b/audit-resolve.json index a7f120b6c..eb1742c8d 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -1,64 +1,74 @@ { "decisions": { - "1002531|rdflib>xmldom": { + "1005067|rdflib>xmldom": { "decision": "ignore", - "madeAt": 1633673382488, - "expiresAt": 1638278110831 + "madeAt": 1637571640128, + "expiresAt": 1640163608254 }, - "1002901|@fellesdatakatalog/internal-footer>@fellesdatakatalog/skatteetaten-frontend-components>react-i18next>html-parse-stringify2": { + "1005417|@fellesdatakatalog/internal-footer>@fellesdatakatalog/skatteetaten-frontend-components>react-i18next>html-parse-stringify2": { "decision": "ignore", - "madeAt": 1633673392906, - "expiresAt": 1638278110831 + "madeAt": 1637571642912, + "expiresAt": 1640163608254 }, - "1002401|@graphql-codegen/cli>listr-update-renderer>log-update>wrap-ansi>strip-ansi>ansi-regex": { + "1006724|node-sass>request>http-signature>jsprim>json-schema": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637571659572, + "expiresAt": 1640163608254 }, - "1002401|@graphql-codegen/cli>listr-update-renderer>log-update>wrap-ansi>string-width>strip-ansi>ansi-regex": { + "1006724|node-sass>node-gyp>request>http-signature>jsprim>json-schema": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637571659572, + "expiresAt": 1640163608254 }, - "1002401|@graphql-codegen/cli>listr>listr-update-renderer>log-update>wrap-ansi>string-width>strip-ansi>ansi-regex": { + "1004946|node-sass>npmlog>gauge>wide-align>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572092189, + "expiresAt": 1640164082482 }, - "1002401|commitizen>inquirer>string-width>strip-ansi>ansi-regex": { + "1004946|node-sass>node-gyp>npmlog>gauge>wide-align>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572092189, + "expiresAt": 1640164082482 }, - "1002401|commitizen>inquirer>strip-ansi>ansi-regex": { + "1004946|@graphql-codegen/cli>listr-update-renderer>log-update>wrap-ansi>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 }, - "1002401|node-sass>sass-graph>yargs>string-width>strip-ansi>ansi-regex": { + "1004946|@graphql-codegen/cli>listr-update-renderer>log-update>wrap-ansi>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 }, - "1002401|node-sass>sass-graph>yargs>cliui>string-width>strip-ansi>ansi-regex": { + "1004946|@graphql-codegen/cli>listr>listr-update-renderer>log-update>wrap-ansi>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 }, - "1002401|node-sass>sass-graph>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { + "1004946|commitizen>inquirer>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 }, - "1002401|node-sass>npmlog>gauge>wide-align>string-width>strip-ansi>ansi-regex": { + "1004946|commitizen>inquirer>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 }, - "1002401|node-sass>node-gyp>npmlog>gauge>wide-align>string-width>strip-ansi>ansi-regex": { + "1004946|node-sass>sass-graph>yargs>string-width>strip-ansi>ansi-regex": { "decision": "ignore", - "madeAt": 1634301113077, - "expiresAt": 1636893065238 + "madeAt": 1637572097574, + "expiresAt": 1640164082482 + }, + "1004946|node-sass>sass-graph>yargs>cliui>string-width>strip-ansi>ansi-regex": { + "decision": "ignore", + "madeAt": 1637572097574, + "expiresAt": 1640164082482 + }, + "1004946|node-sass>sass-graph>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { + "decision": "ignore", + "madeAt": 1637572097574, + "expiresAt": 1640164082482 } }, "rules": {}, From fda56928528fd6546782f918d8d02f2a85344a46 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Mon, 31 Jan 2022 10:25:03 +0100 Subject: [PATCH 22/31] chore: support channel boolean type and env --- src/api/generated/cms/graphql.ts | 82 +++++++++++++++++-- .../pages/publishing-page/index.tsx | 10 ++- .../pages/service-messages-page/index.tsx | 11 ++- .../strapi/graphql/service-message.graphql | 17 +++- 4 files changed, 102 insertions(+), 18 deletions(-) diff --git a/src/api/generated/cms/graphql.ts b/src/api/generated/cms/graphql.ts index a4c2dc1ea..3e43cbc1e 100644 --- a/src/api/generated/cms/graphql.ts +++ b/src/api/generated/cms/graphql.ts @@ -211,6 +211,11 @@ export enum Enum_Servicemessage_Channel { Registreringsportal = 'Registreringsportal' } +export enum Enum_Servicemessage_Environment { + Production = 'production', + Staging = 'staging' +} + export enum Enum_Servicemessage_Message_Type { Error = 'ERROR', Info = 'INFO', @@ -388,8 +393,12 @@ export type Morph = | ServiceMessageAggregator | ServiceMessageConnection | ServiceMessageConnectionChannel + | ServiceMessageConnectionChannel_Adminportal + | ServiceMessageConnectionChannel_Publiseringportal + | ServiceMessageConnectionChannel_Registreringportal | ServiceMessageConnectionCreated_At | ServiceMessageConnectionDescription + | ServiceMessageConnectionEnvironment | ServiceMessageConnectionId | ServiceMessageConnectionLocale | ServiceMessageConnectionMessage_Type @@ -788,8 +797,12 @@ export type RoleInput = { export type ServiceMessage = { __typename?: 'ServiceMessage'; channel: Enum_Servicemessage_Channel; + channel_adminportal?: Maybe; + channel_publiseringportal?: Maybe; + channel_registreringportal?: Maybe; created_at: Scalars['DateTime']; description?: Maybe; + environment: Enum_Servicemessage_Environment; id: Scalars['ID']; locale?: Maybe; localizations?: Maybe>>; @@ -828,6 +841,24 @@ export type ServiceMessageConnectionChannel = { key?: Maybe; }; +export type ServiceMessageConnectionChannel_Adminportal = { + __typename?: 'ServiceMessageConnectionChannel_adminportal'; + connection?: Maybe; + key?: Maybe; +}; + +export type ServiceMessageConnectionChannel_Publiseringportal = { + __typename?: 'ServiceMessageConnectionChannel_publiseringportal'; + connection?: Maybe; + key?: Maybe; +}; + +export type ServiceMessageConnectionChannel_Registreringportal = { + __typename?: 'ServiceMessageConnectionChannel_registreringportal'; + connection?: Maybe; + key?: Maybe; +}; + export type ServiceMessageConnectionCreated_At = { __typename?: 'ServiceMessageConnectionCreated_at'; connection?: Maybe; @@ -840,6 +871,12 @@ export type ServiceMessageConnectionDescription = { key?: Maybe; }; +export type ServiceMessageConnectionEnvironment = { + __typename?: 'ServiceMessageConnectionEnvironment'; + connection?: Maybe; + key?: Maybe; +}; + export type ServiceMessageConnectionId = { __typename?: 'ServiceMessageConnectionId'; connection?: Maybe; @@ -897,8 +934,18 @@ export type ServiceMessageConnectionValid_To = { export type ServiceMessageGroupBy = { __typename?: 'ServiceMessageGroupBy'; channel?: Maybe>>; + channel_adminportal?: Maybe< + Array> + >; + channel_publiseringportal?: Maybe< + Array> + >; + channel_registreringportal?: Maybe< + Array> + >; created_at?: Maybe>>; description?: Maybe>>; + environment?: Maybe>>; id?: Maybe>>; locale?: Maybe>>; message_type?: Maybe>>; @@ -914,8 +961,12 @@ export type ServiceMessageGroupBy = { export type ServiceMessageInput = { channel: Enum_Servicemessage_Channel; + channel_adminportal?: InputMaybe; + channel_publiseringportal?: InputMaybe; + channel_registreringportal?: InputMaybe; created_by?: InputMaybe; description?: InputMaybe; + environment?: InputMaybe; locale?: InputMaybe; localizations?: InputMaybe>>; message_type: Enum_Servicemessage_Message_Type; @@ -1532,8 +1583,12 @@ export type EditRoleInput = { export type EditServiceMessageInput = { channel?: InputMaybe; + channel_adminportal?: InputMaybe; + channel_publiseringportal?: InputMaybe; + channel_registreringportal?: InputMaybe; created_by?: InputMaybe; description?: InputMaybe; + environment?: InputMaybe; locale?: InputMaybe; localizations?: InputMaybe>>; message_type?: InputMaybe; @@ -1633,8 +1688,9 @@ export type GetArticleQuery = { }; export type GetServiceMessagesQueryVariables = Exact<{ - channel?: InputMaybe; today?: InputMaybe; + channelPubliseringPortal?: InputMaybe; + env?: InputMaybe; }>; export type GetServiceMessagesQuery = { @@ -1648,9 +1704,10 @@ export type GetServiceMessagesQuery = { valid_from: any; valid_to?: any | null | undefined; message_type: Enum_Servicemessage_Message_Type; - channel: Enum_Servicemessage_Channel; short_description: string; description?: string | null | undefined; + environment: Enum_Servicemessage_Environment; + channel_publiseringportal?: boolean | null | undefined; } | null | undefined @@ -1673,7 +1730,6 @@ export type GetServiceMessageQuery = { valid_from: any; valid_to?: any | null | undefined; message_type: Enum_Servicemessage_Message_Type; - channel: Enum_Servicemessage_Channel; short_description: string; description?: string | null | undefined; } @@ -1745,9 +1801,18 @@ export type GetArticleQueryResult = Apollo.QueryResult< GetArticleQueryVariables >; export const GetServiceMessagesDocument = gql` - query GetServiceMessages($channel: String, $today: DateTime) { + query GetServiceMessages( + $today: DateTime + $channelPubliseringPortal: Boolean + $env: String + ) { serviceMessages( - where: { channel: $channel, valid_from_lte: $today, valid_to_gte: $today } + where: { + valid_from_lte: $today + valid_to_gte: $today + channel_publiseringportal: $channelPubliseringPortal + environment: $env + } sort: "valid_from:desc" ) { id @@ -1755,9 +1820,10 @@ export const GetServiceMessagesDocument = gql` valid_from valid_to message_type - channel short_description description + environment + channel_publiseringportal } } `; @@ -1774,8 +1840,9 @@ export const GetServiceMessagesDocument = gql` * @example * const { data, loading, error } = useGetServiceMessagesQuery({ * variables: { - * channel: // value for 'channel' * today: // value for 'today' + * channelPubliseringPortal: // value for 'channelPubliseringPortal' + * env: // value for 'env' * }, * }); */ @@ -1821,7 +1888,6 @@ export const GetServiceMessageDocument = gql` valid_from valid_to message_type - channel short_description description } diff --git a/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx b/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx index 6dd704d8c..e8d5dacb5 100755 --- a/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx +++ b/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx @@ -8,8 +8,7 @@ import env from '../../../../../../env'; import Translation from '../../../../../../components/translation'; import { useGetServiceMessagesQuery, - ServiceMessage, - Enum_Servicemessage_Channel + ServiceMessage } from '../../../../../../api/generated/cms/graphql'; import ServiceMessages from '../../../../../../components/service-messages'; @@ -32,8 +31,11 @@ const PublishingPage: FC = ({ match: { url } }) => { ); const { data } = useGetServiceMessagesQuery({ variables: { - channel: Enum_Servicemessage_Channel.Publiseringsportal, - today: new Date(now_utc) + today: new Date(now_utc), + channelPubliseringPortal: true, + env: window.location.hostname.match('localhost|staging') + ? 'staging' + : 'production' } }); const serviceMessages = data?.serviceMessages as ServiceMessage[]; diff --git a/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx b/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx index 21c631dc4..88c6117c1 100644 --- a/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx +++ b/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx @@ -26,10 +26,17 @@ const ServiceMessagesPage: FC = () => { const handleShowAll = () => { history.push(`${PATHNAME_PUBLISHING}/service-messages?all`); }; - const showAll = location.search.includes('all'); + const isStaging = window.location.hostname.match('localhost|staging'); const { data } = useGetServiceMessagesQuery({ - variables: showAll ? {} : { today: moment(Date.now()).format() }, + variables: showAll + ? { + env: isStaging ? 'staging' : 'production' + } + : { + today: moment(Date.now()).format(), + env: isStaging ? 'staging' : 'production' + }, skip: false }); diff --git a/src/services/api/strapi/graphql/service-message.graphql b/src/services/api/strapi/graphql/service-message.graphql index 4505667b4..d7b8c3c1d 100644 --- a/src/services/api/strapi/graphql/service-message.graphql +++ b/src/services/api/strapi/graphql/service-message.graphql @@ -1,6 +1,15 @@ -query GetServiceMessages($channel: String, $today: DateTime) { +query GetServiceMessages( + $today: DateTime + $channelPubliseringPortal: Boolean + $env: String +) { serviceMessages( - where: { channel: $channel, valid_from_lte: $today, valid_to_gte: $today } + where: { + valid_from_lte: $today + valid_to_gte: $today + channel_publiseringportal: $channelPubliseringPortal + environment: $env + } sort: "valid_from:desc" ) { id @@ -8,9 +17,10 @@ query GetServiceMessages($channel: String, $today: DateTime) { valid_from valid_to message_type - channel short_description description + environment + channel_publiseringportal } } @@ -21,7 +31,6 @@ query GetServiceMessage($id: ID!) { valid_from valid_to message_type - channel short_description description } From fa8672ea3ccc296916bca615f3a9d729f8eaebbd Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Mon, 31 Jan 2022 14:58:58 +0100 Subject: [PATCH 23/31] chore: use Enum_Servicemessage_Environment --- .../router/publishing/pages/publishing-page/index.tsx | 7 ++++--- .../publishing/pages/service-messages-page/index.tsx | 9 ++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx b/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx index e8d5dacb5..2f9e7207a 100755 --- a/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx +++ b/src/entrypoints/publishing/router/publishing/pages/publishing-page/index.tsx @@ -8,7 +8,8 @@ import env from '../../../../../../env'; import Translation from '../../../../../../components/translation'; import { useGetServiceMessagesQuery, - ServiceMessage + ServiceMessage, + Enum_Servicemessage_Environment } from '../../../../../../api/generated/cms/graphql'; import ServiceMessages from '../../../../../../components/service-messages'; @@ -34,8 +35,8 @@ const PublishingPage: FC = ({ match: { url } }) => { today: new Date(now_utc), channelPubliseringPortal: true, env: window.location.hostname.match('localhost|staging') - ? 'staging' - : 'production' + ? Enum_Servicemessage_Environment.Staging + : Enum_Servicemessage_Environment.Production } }); const serviceMessages = data?.serviceMessages as ServiceMessage[]; diff --git a/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx b/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx index 88c6117c1..e86f431ee 100644 --- a/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx +++ b/src/entrypoints/publishing/router/publishing/pages/service-messages-page/index.tsx @@ -6,6 +6,7 @@ import { Severity } from '@fellesdatakatalog/alert'; import moment from 'moment'; import Translation from '../../../../../../components/translation'; import { + Enum_Servicemessage_Environment, ServiceMessage, useGetServiceMessagesQuery } from '../../../../../../api/generated/cms/graphql'; @@ -27,15 +28,17 @@ const ServiceMessagesPage: FC = () => { history.push(`${PATHNAME_PUBLISHING}/service-messages?all`); }; const showAll = location.search.includes('all'); - const isStaging = window.location.hostname.match('localhost|staging'); + const serviceMessageEnv = window.location.hostname.match('localhost|staging') + ? Enum_Servicemessage_Environment.Staging + : Enum_Servicemessage_Environment.Production; const { data } = useGetServiceMessagesQuery({ variables: showAll ? { - env: isStaging ? 'staging' : 'production' + env: serviceMessageEnv } : { today: moment(Date.now()).format(), - env: isStaging ? 'staging' : 'production' + env: serviceMessageEnv }, skip: false }); From faee7644d96ddbf52055f42a9c89cd8fc580d183 Mon Sep 17 00:00:00 2001 From: Jeff Reiffers Date: Tue, 1 Feb 2022 14:00:40 +0100 Subject: [PATCH 24/31] fix: use custom render for sparqlpage route --- src/app/__snapshots__/app.test.jsx.snap | 16 +++++++--------- src/app/app.jsx | 19 +++++++++++++------ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/app/__snapshots__/app.test.jsx.snap b/src/app/__snapshots__/app.test.jsx.snap index e9bd19c48..35c72455b 100644 --- a/src/app/__snapshots__/app.test.jsx.snap +++ b/src/app/__snapshots__/app.test.jsx.snap @@ -8,7 +8,9 @@ exports[`should render App correctly 1`] = ` onChangeLanguage={[Function]} /> - + - + - + {routes.main @@ -138,7 +137,7 @@ export function App({ language, onChangeLanguage }) { })} - + {routes.main .filter( path => @@ -154,9 +153,17 @@ export function App({ language, onChangeLanguage }) { PATHNAME_ORGANIZATIONS ].includes(path) ) - .map(path => ( - - ))} + .map(path => + path === PATHNAME_SPARQL ? ( + } + /> + ) : ( + + ) + )} } /> From ccdac903b1a5d1a8c514f113ba1f924b2ba0c974 Mon Sep 17 00:00:00 2001 From: Hege Aalvik <48259307+hegeaal@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:22:08 +0200 Subject: [PATCH 25/31] Chore/update deps (#1769) --- package-lock.json | 57 +++++++++++++---------------------------------- package.json | 6 ++--- 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76dad3c00..701db77eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "react-router-breadcrumbs-hoc": "^4.1.0", "react-router-dom": "^5.3.4", "react-scroll": "^1.8.9", - "react-select": "^5.7.4", + "react-select": "^5.7.5", "reactstrap": "^9.1.5", "redux": "^4.2.1", "redux-api-middleware": "^3.2.1", @@ -138,7 +138,7 @@ "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^7.2.14", + "fork-ts-checker-webpack-plugin": "^8.0.0", "html-webpack-plugin": "^5.5.0", "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", @@ -161,7 +161,7 @@ "ts-node": "^10.9.1", "typescript": "^4.9.4", "url-loader": "^4.1.1", - "webpack": "^5.87.0", + "webpack": "^5.88.2", "webpack-bundle-analyzer": "^4.8.0", "webpack-cli": "^5.0.1", "webpack-dev-server": "^4.15.1", @@ -175,9 +175,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -13433,9 +13433,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.2.14", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.14.tgz", - "integrity": "sha512-Tg2feh/n8k486KX0EbXVUfJj3j0xnnbKYTJw0fnIb2QdV0+lblOYZSal5ed9hARoWVwKeOC7sYE2EakSRLo5ZA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", @@ -13457,13 +13457,7 @@ }, "peerDependencies": { "typescript": ">3.6.0", - "vue-template-compiler": "*", "webpack": "^5.11.0" - }, - "peerDependenciesMeta": { - "vue-template-compiler": { - "optional": true - } } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { @@ -22332,9 +22326,9 @@ } }, "node_modules/react-select": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.4.tgz", - "integrity": "sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ==", + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", + "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -25803,9 +25797,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.87.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", - "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -26248,27 +26242,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", diff --git a/package.json b/package.json index 7e2b2e8d6..43ff1066c 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "react-router-breadcrumbs-hoc": "^4.1.0", "react-router-dom": "^5.3.4", "react-scroll": "^1.8.9", - "react-select": "^5.7.4", + "react-select": "^5.7.5", "reactstrap": "^9.1.5", "redux": "^4.2.1", "redux-api-middleware": "^3.2.1", @@ -179,7 +179,7 @@ "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^7.2.14", + "fork-ts-checker-webpack-plugin": "^8.0.0", "html-webpack-plugin": "^5.5.0", "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", @@ -202,7 +202,7 @@ "ts-node": "^10.9.1", "typescript": "^4.9.4", "url-loader": "^4.1.1", - "webpack": "^5.87.0", + "webpack": "^5.88.2", "webpack-bundle-analyzer": "^4.8.0", "webpack-cli": "^5.0.1", "webpack-dev-server": "^4.15.1", From cfd8dfbd6842403be1dd07420e732e737ce61107 Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Tue, 3 Oct 2023 12:15:06 +0200 Subject: [PATCH 26/31] feat: page setup --- src/app/app.jsx | 7 +++++-- src/constants/constants.js | 1 + src/pages/requests/index.tsx | 4 ++++ src/pages/requests/styled.ts | 1 + src/routes.ts | 6 ++++-- 5 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 src/pages/requests/index.tsx create mode 100755 src/pages/requests/styled.ts diff --git a/src/app/app.jsx b/src/app/app.jsx index d4028008f..82c5015c2 100644 --- a/src/app/app.jsx +++ b/src/app/app.jsx @@ -46,7 +46,8 @@ import { PATHNAME_ABOUT_CONCEPTS, PATHNAME_ABOUT_INFORMATIONMODELS, PATHNAME_AI, - PATHNAME_TRANSPORT + PATHNAME_TRANSPORT, + PATHNAME_REQUESTS } from '../constants/constants'; import ScrollToTop from '../components/scroll-to-top'; import { getConfig } from '../config'; @@ -58,6 +59,7 @@ import { CmsArticlePage } from '../pages/cms-article-page/cms-article-page'; import OrganizationsRouter from '../pages/organizations'; import InformationPage from '../pages/cms-information-page'; import TransportPage from '../pages/cms-transport-page'; +import RequestsPage from '../pages/requests'; import { AiProjectPage } from '../pages/ai-project-page'; import { parseSearchParams } from '../lib/location-history-helper'; import routes from '../routes'; @@ -113,7 +115,8 @@ export function App({ language, onChangeLanguage }) { [PATHNAME_ABOUT_CONCEPTS]: InformationPage, [PATHNAME_ABOUT_INFORMATIONMODELS]: InformationPage, [PATHNAME_AI]: AiProjectPage, - [PATHNAME_TRANSPORT]: TransportPage + [PATHNAME_TRANSPORT]: TransportPage, + [PATHNAME_REQUESTS]: RequestsPage }; return ( diff --git a/src/constants/constants.js b/src/constants/constants.js index 59cde63b1..a21e967eb 100644 --- a/src/constants/constants.js +++ b/src/constants/constants.js @@ -34,6 +34,7 @@ export const PATHNAME_AI = '/kunstig-intelligens'; export const EXTERNAL_AI_PAGE = 'https://www.digdir.no/kunstig-intelligens/kunstig-intelligens-i-offentlig-sektor/4276'; export const PATHNAME_TRANSPORT = '/transport'; +export const PATHNAME_REQUESTS = '/requests'; export const PARAGRAPH__BODY = 'paragraph--body'; export const PARAGRAPH__IMAGE = 'paragraph--image'; diff --git a/src/pages/requests/index.tsx b/src/pages/requests/index.tsx new file mode 100644 index 000000000..e7fb73dd1 --- /dev/null +++ b/src/pages/requests/index.tsx @@ -0,0 +1,4 @@ +import React from 'react'; + +const RequestsPage = () =>
    ; +export default RequestsPage; diff --git a/src/pages/requests/styled.ts b/src/pages/requests/styled.ts new file mode 100755 index 000000000..ff8b4c563 --- /dev/null +++ b/src/pages/requests/styled.ts @@ -0,0 +1 @@ +export default {}; diff --git a/src/routes.ts b/src/routes.ts index 52adb35c7..9529bc315 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -26,7 +26,8 @@ import { PATHNAME_ABOUT_CONCEPTS, PATHNAME_ABOUT_INFORMATIONMODELS, PATHNAME_AI, - PATHNAME_TRANSPORT + PATHNAME_TRANSPORT, + PATHNAME_REQUESTS } from './constants/constants'; const routes: any = { @@ -61,7 +62,8 @@ const routes: any = { PATHNAME_ABOUT_CONCEPTS, PATHNAME_ABOUT_INFORMATIONMODELS, PATHNAME_AI, - PATHNAME_TRANSPORT + PATHNAME_TRANSPORT, + PATHNAME_REQUESTS ], publishing: [ PATHNAME_PUBLISHING, From 1a5f58db620b328d3054573164e081a196e76aa0 Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Tue, 3 Oct 2023 13:59:38 +0200 Subject: [PATCH 27/31] feat: add digdir design system --- package-lock.json | 99 +++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 + src/app/app.jsx | 1 + 3 files changed, 95 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 701db77eb..c3dc3c64c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,8 @@ "license": "Apache-2.0", "dependencies": { "@apollo/client": "^3.8.3", + "@digdir/design-system-react": "^0.27.0", + "@digdir/design-system-tokens": "^0.7.0", "@emotion/styled": "^11.10.5", "@fellesdatakatalog/alert": "^0.3.6", "@fellesdatakatalog/button": "^0.2.10", @@ -180,6 +182,11 @@ "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, + "node_modules/@altinn/figma-design-tokens": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@altinn/figma-design-tokens/-/figma-design-tokens-6.0.1.tgz", + "integrity": "sha512-8MbIZDZdDzeYwvQ1DaRUoVd6VkWjax/mlbq1haABwv0WX8++L426O9g2wg9YtZ+WeIa3JUSOhbiXMgpTVcXBDQ==" + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -2870,6 +2877,27 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@digdir/design-system-react": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@digdir/design-system-react/-/design-system-react-0.27.0.tgz", + "integrity": "sha512-w4PUb6ZFso1YOXa9EDVjsNvodpN6JABMmBifNjnXrg7lDF6CUFeqcq6Fn1jiFPj9bW8bLY/2fiVGJ7RwlAE0ow==", + "dependencies": { + "@altinn/figma-design-tokens": "^6.0.1", + "@digdir/design-system-tokens": "^0.7.0", + "@floating-ui/react": "0.25.2", + "@navikt/aksel-icons": "^3.2.4", + "react-number-format": "5.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@digdir/design-system-tokens": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@digdir/design-system-tokens/-/design-system-tokens-0.7.0.tgz", + "integrity": "sha512-6DwU6+KciZ8r0EZSBq0puSLlR5q5rejr95u6OLcdGCvUoQvr26j3ks/wk3Q/1MoPd/FM1hNgDmeu7neoTvYfSQ==" + }, "node_modules/@digitalbazaar/http-client": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-1.2.0.tgz", @@ -3261,18 +3289,53 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.4.tgz", - "integrity": "sha512-FPFLbg2b06MIw1dqk2SOEMAMX3xlrreGjcui5OTxfBDtaKTmh0kioOVjT8gcfl58juawL/yF+S+gnq8aUYQx/Q==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } }, "node_modules/@floating-ui/dom": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.0.12.tgz", - "integrity": "sha512-HeG/wHoa2laUHlDX3xkzqlUqliAfa+zqV04LaKIwNCmCNaW2p0fQi4/Kd0LB4GdFoJ2UllLFq5gWnXAd67lg7w==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", "dependencies": { - "@floating-ui/core": "^1.0.4" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, + "node_modules/@floating-ui/react": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.25.2.tgz", + "integrity": "sha512-3e10G9LFOgl32/SMWLBOwT7oVCtB+d5zBsU2GxTSVOvRgZexwno5MlYbc0BaXr+TR5EEGpqe9tg9OUbjlrVRnQ==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.1", + "@floating-ui/utils": "^0.1.1", + "tabbable": "^6.0.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "node_modules/@fluentui/date-time-utilities": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.5.tgz", @@ -6239,6 +6302,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/@navikt/aksel-icons": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@navikt/aksel-icons/-/aksel-icons-3.4.2.tgz", + "integrity": "sha512-9fj+Jb4UrX3SDDzqJpKP3fvizdxtACIFNXgDiPaP/N/61pbeY4tZz/zrtWGtExLpDeg7dAyaiFH/hfo7nBg6nw==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -22176,6 +22244,18 @@ "react": "^16.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-number-format": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.2.2.tgz", + "integrity": "sha512-wCh64Z1HCwXcO2dbgkeYIaB+Rmp/fcsH8kAeRtUkc46dv1pIrgDjie2WkOqKBw8YqyqhwNdYgNFNQuuY+iGJ/g==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-paginate": { "version": "8.1.4", "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-8.1.4.tgz", @@ -24397,6 +24477,11 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", diff --git a/package.json b/package.json index 43ff1066c..e06d4b537 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,8 @@ }, "dependencies": { "@apollo/client": "^3.8.3", + "@digdir/design-system-react": "^0.27.0", + "@digdir/design-system-tokens": "^0.7.0", "@emotion/styled": "^11.10.5", "@fellesdatakatalog/alert": "^0.3.6", "@fellesdatakatalog/button": "^0.2.10", diff --git a/src/app/app.jsx b/src/app/app.jsx index 82c5015c2..fbda08b88 100644 --- a/src/app/app.jsx +++ b/src/app/app.jsx @@ -3,6 +3,7 @@ import { Redirect, Route, Switch } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import PropTypes from 'prop-types'; import cx from 'classnames'; +import '@digdir/design-system-tokens/brand/digdir/tokens.css'; import localization from '../lib/localization'; import { MainPage } from '../pages/main-page/main-page'; import { SearchPage } from '../pages/search-page/search-page'; From 5f1a53f5e5e165d1c917716f532ccc594036900c Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Tue, 3 Oct 2023 14:11:29 +0200 Subject: [PATCH 28/31] feat: banner component --- src/components/banner/index.tsx | 27 ++++++++++ src/components/banner/styled.ts | 63 +++++++++++++++++++++++ src/components/banner/svg/ellipse-1.svg | 3 ++ src/components/banner/svg/rectangle-1.svg | 3 ++ 4 files changed, 96 insertions(+) create mode 100644 src/components/banner/index.tsx create mode 100644 src/components/banner/styled.ts create mode 100644 src/components/banner/svg/ellipse-1.svg create mode 100644 src/components/banner/svg/rectangle-1.svg diff --git a/src/components/banner/index.tsx b/src/components/banner/index.tsx new file mode 100644 index 000000000..51bc0101c --- /dev/null +++ b/src/components/banner/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import type { FC } from 'react'; +import { Heading } from '@digdir/design-system-react'; +import SC from './styled'; + +import EllipseSVG from './svg/ellipse-1.svg'; +import RectangleSVG from './svg/rectangle-1.svg'; + +interface Props { + title: string; +} + +const Banner: FC = ({ title }) => ( + + + + + + {title} + + + + + +); + +export default Banner; diff --git a/src/components/banner/styled.ts b/src/components/banner/styled.ts new file mode 100644 index 000000000..1bf6901a4 --- /dev/null +++ b/src/components/banner/styled.ts @@ -0,0 +1,63 @@ +import styled from 'styled-components'; + +const Container = styled.div` + position: relative; + display: flex; + width: 100%; + align-items: flex-start; + color: #2d3741; + background-color: #ffffff; + overflow-wrap: break-word; + height: 160px; +`; + +const TitleContainer = styled.div` + display: flex; + width: 100%; + overflow-wrap: break-word; + flex-grow: 1; + align-self: center; + justify-content: center; +`; + +const SvgEllipse = styled.div` + position: absolute; + padding-top: 1.6rem; + + @media screen and (max-width: 600px) { + .svgEllipse { + display: none; + } + } + + @media (max-width: 1620px) { + .svgEllipse { + position: relative; + } +`; + +const SvgRectangle = styled.div` + position: absolute; + right: 100px; + padding-bottom: 1.6rem; + + @media screen and (max-width: 940px) { + .svgRectangle { + display: none; + } + } + + @media screen and (max-width: 940px) { + .svgRectangle { + display: none; + position: relative; + } + } +`; + +export default { + SvgRectangle, + SvgEllipse, + Container, + TitleContainer +}; diff --git a/src/components/banner/svg/ellipse-1.svg b/src/components/banner/svg/ellipse-1.svg new file mode 100644 index 000000000..df665fb1c --- /dev/null +++ b/src/components/banner/svg/ellipse-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/banner/svg/rectangle-1.svg b/src/components/banner/svg/rectangle-1.svg new file mode 100644 index 000000000..ca21d9366 --- /dev/null +++ b/src/components/banner/svg/rectangle-1.svg @@ -0,0 +1,3 @@ + + + From 3f67acb317eb00f89ef4309484796c1703f7277b Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Thu, 5 Oct 2023 16:17:22 +0200 Subject: [PATCH 29/31] feat: fetch request data and display in rows --- src/api/community-api/search.ts | 4 ++ src/components/with-community/index.tsx | 10 +++- .../with-community/redux/action-types.ts | 4 ++ .../with-community/redux/actions.ts | 36 +++++++++++++- .../with-community/redux/reducer.ts | 11 ++++- src/components/with-community/redux/saga.ts | 29 ++++++++++-- src/pages/requests/index.tsx | 47 +++++++++++++++++-- src/pages/requests/styled.ts | 45 +++++++++++++++++- src/types/domain.d.ts | 21 +++++++++ 9 files changed, 193 insertions(+), 14 deletions(-) diff --git a/src/api/community-api/search.ts b/src/api/community-api/search.ts index b85e5555d..c2117309c 100644 --- a/src/api/community-api/search.ts +++ b/src/api/community-api/search.ts @@ -24,6 +24,10 @@ export const getRecentPosts = (term: CommunityTerm) => .get(`${FDK_COMMUNITY_BASE_URI}/api/recent/posts/${term}`) .then(({ data }) => data); +export const getRequests = () => + axios + .get(`${FDK_COMMUNITY_BASE_URI}/api/category/6`) + .then(({ data }) => data); export const extractTopicsFromSearch = ( searchResponse: any ): CommunityTopic[] => { diff --git a/src/components/with-community/index.tsx b/src/components/with-community/index.tsx index 34fcc616d..1f60cb002 100644 --- a/src/components/with-community/index.tsx +++ b/src/components/with-community/index.tsx @@ -4,13 +4,18 @@ import { connect } from 'react-redux'; import * as actions from './redux/actions'; -import type { CommunityPost, CommunityTopic } from '../../types'; +import type { + CommunityPost, + CommunityRequestCategory, + CommunityTopic +} from '../../types'; export interface Props { topics: CommunityTopic[]; multiplePages: boolean; posts: CommunityPost[]; communityActions: typeof actions; + requests: CommunityRequestCategory; } const withCommunity = (Component: ComponentType) => { @@ -19,7 +24,8 @@ const withCommunity = (Component: ComponentType) => { const mapStateToProps = (state: any) => ({ topics: state.CommunityReducer.get('topics').toJS(), multiplePages: state.CommunityReducer.get('multiplePages'), - posts: state.CommunityReducer.get('posts').toJS() + posts: state.CommunityReducer.get('posts').toJS(), + requests: state.CommunityReducer.get('requests').toJS() }); const mapDispatchToProps = (dispatch: Dispatch) => ({ diff --git a/src/components/with-community/redux/action-types.ts b/src/components/with-community/redux/action-types.ts index 37ceb6928..f711add72 100644 --- a/src/components/with-community/redux/action-types.ts +++ b/src/components/with-community/redux/action-types.ts @@ -8,3 +8,7 @@ export const GET_RECENT_POSTS_FAILED = 'GET_RECENT_POSTS_FAILED' as const; export const RESET_TOPICS = 'RESET_TOPICS' as const; export const RESET_POSTS = 'RESET_POSTS' as const; + +export const GET_REQUESTS = 'GET_REQUESTS' as const; +export const GET_REQUESTS_SUCCEEDED = 'GET_REQUESTS_SUCCEEDED' as const; +export const GET_REQUESTS_FAILED = 'GET_REQUESTS_FAILED' as const; diff --git a/src/components/with-community/redux/actions.ts b/src/components/with-community/redux/actions.ts index b073e6e39..f3af3ae1b 100644 --- a/src/components/with-community/redux/actions.ts +++ b/src/components/with-community/redux/actions.ts @@ -6,10 +6,17 @@ import { GET_RECENT_POSTS_SUCCEEDED, GET_RECENT_POSTS_FAILED, RESET_TOPICS, - RESET_POSTS + RESET_POSTS, + GET_REQUESTS, + GET_REQUESTS_FAILED, + GET_REQUESTS_SUCCEEDED } from './action-types'; -import type { CommunityPost, CommunityTopic } from '../../../types'; +import type { + CommunityPost, + CommunityRequestCategory, + CommunityTopic +} from '../../../types'; import { CommunityTerm } from '../../../types/enums'; export function searchTopicsRequested(queryTerm: string) { @@ -69,6 +76,31 @@ export function getRecentPostsFailed(message: string) { } }; } +export function getCommunityRequests() { + return { + type: GET_REQUESTS + }; +} + +export function getCommunityRequestsSucceeded( + requests: CommunityRequestCategory +) { + return { + type: GET_REQUESTS_SUCCEEDED, + payload: { + requests + } + }; +} + +export function getCommunityRequestsFailed(message: string) { + return { + type: GET_REQUESTS_FAILED, + payload: { + message + } + }; +} export function resetTopics() { return { diff --git a/src/components/with-community/redux/reducer.ts b/src/components/with-community/redux/reducer.ts index 920f1a10a..1d6e29a62 100644 --- a/src/components/with-community/redux/reducer.ts +++ b/src/components/with-community/redux/reducer.ts @@ -9,7 +9,9 @@ import { GET_RECENT_POSTS_SUCCEEDED, GET_RECENT_POSTS_FAILED, RESET_TOPICS, - RESET_POSTS + RESET_POSTS, + GET_REQUESTS, + GET_REQUESTS_SUCCEEDED } from './action-types'; import type { Actions } from '../../../types'; @@ -17,7 +19,8 @@ import type { Actions } from '../../../types'; const initialState = fromJS({ topics: [], multiplePages: false, - posts: [] + posts: [], + requests: {} }); export default function reducer( @@ -41,6 +44,10 @@ export default function reducer( case GET_RECENT_POSTS_FAILED: case RESET_POSTS: return state.set('posts', fromJS([])); + case GET_REQUESTS: + return state.set('requests', fromJS([])); + case GET_REQUESTS_SUCCEEDED: + return state.set('requests', fromJS(action.payload.requests)); default: return state; } diff --git a/src/components/with-community/redux/saga.ts b/src/components/with-community/redux/saga.ts index 06df1a02d..0c6e19db3 100644 --- a/src/components/with-community/redux/saga.ts +++ b/src/components/with-community/redux/saga.ts @@ -2,7 +2,8 @@ import { all, call, put, takeLatest } from 'redux-saga/effects'; import { SEARCH_TOPICS_REQUESTED, - GET_RECENT_POSTS_REQUESTED + GET_RECENT_POSTS_REQUESTED, + GET_REQUESTS } from './action-types'; import * as actions from './actions'; @@ -11,10 +12,15 @@ import { getRecentPosts, getTopicById, pruneNodebbTemplateTags, - searchCommunity + searchCommunity, + getRequests } from '../../../api/community-api/search'; -import type { CommunityPost, CommunityTopic } from '../../../types'; +import type { + CommunityPost, + CommunityRequestCategory, + CommunityTopic +} from '../../../types'; function* searchTopicsRequested({ payload: { queryTerm } @@ -60,9 +66,24 @@ function* recentPostsRequested({ } } +function* getCommunityRequests() { + try { + const requests: CommunityRequestCategory = yield call(getRequests); + + if (requests !== null && requests !== undefined) { + yield put(actions.getCommunityRequestsSucceeded(requests)); + } else { + yield put(actions.getCommunityRequestsFailed('')); + } + } catch (e: any) { + yield put(actions.getCommunityRequestsFailed(e.message)); + } +} + export default function* saga() { yield all([ takeLatest(SEARCH_TOPICS_REQUESTED, searchTopicsRequested), - takeLatest(GET_RECENT_POSTS_REQUESTED, recentPostsRequested) + takeLatest(GET_RECENT_POSTS_REQUESTED, recentPostsRequested), + takeLatest(GET_REQUESTS, getCommunityRequests) ]); } diff --git a/src/pages/requests/index.tsx b/src/pages/requests/index.tsx index e7fb73dd1..3663d0689 100644 --- a/src/pages/requests/index.tsx +++ b/src/pages/requests/index.tsx @@ -1,4 +1,45 @@ -import React from 'react'; +import React, { FC, useEffect } from 'react'; +import withCommunity, { + Props as CommunityProps +} from '../../components/with-community'; +import { compose } from 'redux'; +import withErrorBoundary from '../../components/with-error-boundary'; +import ErrorPage from '../error-page'; +import SC from './styled'; +import { formatDate } from '../../lib/date-utils'; -const RequestsPage = () =>
    ; -export default RequestsPage; +interface Props extends CommunityProps {} + +const RequestsPage: FC = ({ + requests, + communityActions: { getCommunityRequests } +}) => { + useEffect(() => { + getCommunityRequests(); + }, []); + + return ( +
    + + Etterspørsler fra Datalandsbyen + Dato + Antall stemmer + Antall visninger + + {requests?.topics && + requests.topics.map(topic => ( + + {topic.title} + + {formatDate(new Date(topic.timestampISO))} + + {topic.upvotes} + {topic.viewcount} + + ))} +
    + ); +}; + +const enhance = compose(withCommunity, withErrorBoundary(ErrorPage)); +export default enhance(RequestsPage); diff --git a/src/pages/requests/styled.ts b/src/pages/requests/styled.ts index ff8b4c563..625ee773b 100755 --- a/src/pages/requests/styled.ts +++ b/src/pages/requests/styled.ts @@ -1 +1,44 @@ -export default {}; +import styled from 'styled-components'; + +const RequestRow = styled.div` + display: flex; + background-color: white; + width: 100%; + height: 90px; + margin-bottom: 10px; + border-radius: 8px; + border: solid 1px #d5d7d9; + padding-left: 37px; + padding-right: 37px; + align-items: center; + font-size: 18px; +`; + +const RequestsTitleRow = styled.div` + background-color: #d2eafd; + height: 57px; + border-radius: 8px; + display: flex; + align-items: center; + padding-left: 37px; + padding-right: 37px; + font-weight: bold; +`; + +const RequestTitle = styled.div` + width: 50%; + font-weight: bold; +`; + +const RequestInfo = styled.div` + width: 16%; + display: flex; + justify-content: center; +`; + +export default { + RequestRow, + RequestsTitleRow, + RequestTitle, + RequestInfo +}; diff --git a/src/types/domain.d.ts b/src/types/domain.d.ts index 818ec234e..ea0f257b1 100644 --- a/src/types/domain.d.ts +++ b/src/types/domain.d.ts @@ -1019,6 +1019,27 @@ export interface CommunityPost { multiplePages: boolean; } +export interface CommunityRequestCategory { + description: string; + name: string; + post_count: number; + topics: CommunityRequest[]; +} + +export interface CommunityRequest { + cid: number; + timestamp: number; + lastposttime: number; + lastposttimeISO: Date; + timestampISO: Date; + postcount: number; + title: string; + viewcount: number; + postercount: number; + downvotes: number; + upvotes: number; +} + export interface CommunityTeaser { pid: number; uid: number; From 5c4a5512c2e1d89221f30c5b9b840c23ac50c4c6 Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Thu, 5 Oct 2023 16:27:33 +0200 Subject: [PATCH 30/31] chore: test --- src/pages/requests/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/requests/index.tsx b/src/pages/requests/index.tsx index 3663d0689..e0dade296 100644 --- a/src/pages/requests/index.tsx +++ b/src/pages/requests/index.tsx @@ -1,8 +1,8 @@ import React, { FC, useEffect } from 'react'; +import { compose } from 'redux'; import withCommunity, { Props as CommunityProps } from '../../components/with-community'; -import { compose } from 'redux'; import withErrorBoundary from '../../components/with-error-boundary'; import ErrorPage from '../error-page'; import SC from './styled'; @@ -35,6 +35,7 @@ const RequestsPage: FC = ({ {topic.upvotes} {topic.viewcount} +

    test

    ))}
    From ee5d9478fb14f919294cf7ad928e025c39298151 Mon Sep 17 00:00:00 2001 From: Hege Aalvik Date: Thu, 5 Oct 2023 16:33:51 +0200 Subject: [PATCH 31/31] fix: remove test --- src/pages/requests/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/requests/index.tsx b/src/pages/requests/index.tsx index e0dade296..3197a182e 100644 --- a/src/pages/requests/index.tsx +++ b/src/pages/requests/index.tsx @@ -35,7 +35,6 @@ const RequestsPage: FC = ({ {topic.upvotes} {topic.viewcount} -

    test

    ))}