From 5346da001ee5a505b015076c362c9d1116fc618a Mon Sep 17 00:00:00 2001 From: Ben <109954107+builditben@users.noreply.github.com> Date: Wed, 1 Mar 2023 14:20:22 +0000 Subject: [PATCH] chore: Extract core and reference the extracted package (#1497) --- .github/workflows/pull-request.yml | 7 - .github/workflows/push-main.yml | 2 - .github/workflows/push-production.yml | 2 - README.md | 2 +- api.planx.uk/Dockerfile | 5 - api.planx.uk/README.md | 3 +- api.planx.uk/client/index.ts | 2 +- api.planx.uk/package.json | 2 +- api.planx.uk/pnpm-lock.yaml | 12 +- api.planx.uk/shared/core-1.0.0.tgz | Bin 18313 -> 0 bytes core/.eslintrc | 19 - core/.gitignore | 2 - core/README.md | 12 - core/package.json | 32 - core/pnpm-lock.yaml | 1086 ------------------------- core/scripts/build-and-install.sh | 42 - core/src/document-templates.ts | 21 - core/src/flow.ts | 70 -- core/src/graphql.ts | 13 - core/src/index.ts | 59 -- core/src/team.ts | 73 -- core/src/user.ts | 33 - core/tsconfig.json | 21 - e2e/install-dependencies.sh | 1 - e2e/package.json | 2 +- e2e/pnpm-lock.yaml | 23 +- e2e/src/context.ts | 2 +- editor.planx.uk/README.md | 3 +- editor.planx.uk/package.json | 2 +- editor.planx.uk/pnpm-lock.yaml | 12 +- editor.planx.uk/shared/core-1.0.0.tgz | Bin 18313 -> 0 bytes editor.planx.uk/src/client/index.ts | 2 +- 32 files changed, 46 insertions(+), 1521 deletions(-) delete mode 100644 api.planx.uk/shared/core-1.0.0.tgz delete mode 100644 core/.eslintrc delete mode 100644 core/.gitignore delete mode 100644 core/README.md delete mode 100644 core/package.json delete mode 100644 core/pnpm-lock.yaml delete mode 100755 core/scripts/build-and-install.sh delete mode 100644 core/src/document-templates.ts delete mode 100644 core/src/flow.ts delete mode 100644 core/src/graphql.ts delete mode 100644 core/src/index.ts delete mode 100644 core/src/team.ts delete mode 100644 core/src/user.ts delete mode 100644 core/tsconfig.json delete mode 100644 editor.planx.uk/shared/core-1.0.0.tgz diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 5514833073..eb15b0c449 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -124,8 +124,6 @@ jobs: node-version: ${{ env.NODE_VERSION }} cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" - - run: pnpm distribute ../api.planx.uk - working-directory: core - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: api.planx.uk @@ -162,8 +160,6 @@ jobs: node-version: ${{ env.NODE_VERSION }} cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" - - run: pnpm distribute ../${{ env.EDITOR_DIRECTORY }} - working-directory: core - run: pnpm install --frozen-lockfile working-directory: ${{ env.EDITOR_DIRECTORY }} - run: pnpm build @@ -194,9 +190,6 @@ jobs: node-version: ${{ env.NODE_VERSION }} cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" - - run: pnpm distribute ../${{ env.EDITOR_DIRECTORY }} - if: steps.cache-react-build-assets.outputs.cache-hit != 'true' - working-directory: core - run: pnpm install --frozen-lockfile if: steps.cache-react-build-assets.outputs.cache-hit != 'true' working-directory: ${{ env.EDITOR_DIRECTORY }} diff --git a/.github/workflows/push-main.yml b/.github/workflows/push-main.yml index ab1d78c74a..6577ca7ee5 100644 --- a/.github/workflows/push-main.yml +++ b/.github/workflows/push-main.yml @@ -48,8 +48,6 @@ jobs: ${{ runner.os }}-build- ${{ runner.os }}- - run: npm install -g pnpm@${{ env.PNPM_VERSION }} - - run: pnpm distribute ../editor.planx.uk - working-directory: core - run: pnpm install --frozen-lockfile working-directory: editor.planx.uk - run: pnpm build diff --git a/.github/workflows/push-production.yml b/.github/workflows/push-production.yml index 4d439f180c..052bab92dc 100644 --- a/.github/workflows/push-production.yml +++ b/.github/workflows/push-production.yml @@ -48,8 +48,6 @@ jobs: ${{ runner.os }}-build- ${{ runner.os }}- - run: npm install -g pnpm@${{ env.PNPM_VERSION }} - - run: pnpm distribute ../editor.planx.uk - working-directory: core - run: pnpm install --frozen-lockfile working-directory: editor.planx.uk - run: pnpm build diff --git a/README.md b/README.md index def48abc21..ceaf7b51aa 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ planx-new is a monorepo containing our full application stack. Here's a quick su 1. Clone this repository. You'll need to get some additional environment variable files that aren't published here. Find instructions for copying these in 1password under the AWS Staging IAM user role entry -1. Run `pnpm docker:up` from the project root to get everything (postgres, sharedb, api and hasura server processes) up and running and `pnpm docker:down` to stop all services. `pnpm docker:down-hard` will remove volumes (i.e. database data) and can be a useful hard reset when necessary. +1. Run `pnpm docker:up` from the project root to get everything (postgres, sharedb, api and hasura server processes) up and running and `pnpm docker:down` to stop all services. `pnpm docker:destroy` will remove volumes (i.e. database data) and can be a useful hard reset when necessary. 1. Move into the hasura directory `cd ../hasura.planx.uk` & install dependencies `pnpm i`. diff --git a/api.planx.uk/Dockerfile b/api.planx.uk/Dockerfile index a4d1c08d8d..2380a2572f 100644 --- a/api.planx.uk/Dockerfile +++ b/api.planx.uk/Dockerfile @@ -7,11 +7,6 @@ RUN apk add --no-cache git # required for fetching git dependencies WORKDIR /api RUN npm install -g pnpm@7.8.0 -# install cachable shared package -COPY shared ./shared -RUN pnpm install ./shared/core* -RUN cd node_modules/core && pnpm install && pnpm build - # update package cache using lockfile # see https://pnpm.io/cli/fetch COPY pnpm-lock.yaml ./ diff --git a/api.planx.uk/README.md b/api.planx.uk/README.md index cbf3d3c47d..32e4d3bf17 100644 --- a/api.planx.uk/README.md +++ b/api.planx.uk/README.md @@ -24,7 +24,8 @@ Run tests `pnpm test` Development notes: - - if you need to test or pull new changes from @opensystemslab/planx-document-templates, make sure to update the commit hash in package.json first + - if you need to test or pull new changes from @opensystemslab/planx-document-templates or @opensystemslab/planx-core, make sure to update the commit hash in package.json first + - you can also use `pnpm link {{local relative path to @opensystemslab/planx-document-templates or @opensystemslab/planx-core}}` to manage local development changes these packages without having to reinstall. If you do this, remember to also run `pnpm unlink` to unlink the local directory and then also update the commit hash to point to the most recent version of the package. ## Prior art diff --git a/api.planx.uk/client/index.ts b/api.planx.uk/client/index.ts index 4c5cd3d708..4727e71c09 100644 --- a/api.planx.uk/client/index.ts +++ b/api.planx.uk/client/index.ts @@ -1,4 +1,4 @@ -import { CoreDomainClient } from "core"; +import { CoreDomainClient } from "@opensystemslab/planx-core"; /** * core doesn't expose a graphql interface like the graphql/hasura clients do * instead, they encapsulates query and business logic to only expose declarative interfaces diff --git a/api.planx.uk/package.json b/api.planx.uk/package.json index cc0394d591..99c65d0afb 100644 --- a/api.planx.uk/package.json +++ b/api.planx.uk/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@airbrake/node": "^2.1.7", + "@opensystemslab/planx-core": "git://github.com/theopensystemslab/planx-core.git#5e932c3", "@opensystemslab/planx-document-templates": "git://github.com/theopensystemslab/planx-document-templates#e0642be", "adm-zip": "^0.5.9", "aws-sdk": "^2.1180.0", @@ -35,7 +36,6 @@ "passport": "^0.5.3", "passport-google-oauth20": "^2.0.0", "pino-noir": "^2.2.1", - "core": "file:shared/core-1.0.0.tgz", "slack-notify": "^2.0.3", "string-to-stream": "^3.0.1" }, diff --git a/api.planx.uk/pnpm-lock.yaml b/api.planx.uk/pnpm-lock.yaml index fd6bd6fedb..5b25e937fd 100644 --- a/api.planx.uk/pnpm-lock.yaml +++ b/api.planx.uk/pnpm-lock.yaml @@ -10,6 +10,7 @@ specifiers: '@airbrake/node': ^2.1.7 '@babel/core': ^7.19.6 '@babel/preset-typescript': ^7.18.6 + '@opensystemslab/planx-core': git://github.com/theopensystemslab/planx-core.git#5e932c3 '@opensystemslab/planx-document-templates': git://github.com/theopensystemslab/planx-document-templates#e0642be '@types/adm-zip': ^0.5.0 '@types/body-parser': ^1.19.2 @@ -35,7 +36,6 @@ specifiers: body-parser: ^1.20.0 cookie-parser: ^1.4.6 cookie-session: ^1.4.0 - core: file:shared/core-1.0.0.tgz cors: ^2.8.5 csv-stringify: ^6.2.0 date-fns: ^2.29.1 @@ -82,6 +82,7 @@ specifiers: dependencies: '@airbrake/node': 2.1.7 + '@opensystemslab/planx-core': github.com/theopensystemslab/planx-core/5e932c3 '@opensystemslab/planx-document-templates': github.com/theopensystemslab/planx-document-templates/e0642be_@babel+core@7.19.6 adm-zip: 0.5.9 aws-sdk: 2.1180.0 @@ -89,7 +90,6 @@ dependencies: body-parser: 1.20.0 cookie-parser: 1.4.6 cookie-session: 1.4.0 - core: file:shared/core-1.0.0.tgz cors: 2.8.5 csv-stringify: 6.2.0 date-fns: 2.29.1 @@ -7905,11 +7905,13 @@ packages: engines: {node: '>=10'} dev: true - file:shared/core-1.0.0.tgz: - resolution: {integrity: sha512-v6pEVoInNOtknuWwAqZp+KHie9aLDSVKipUuFtklEGufKye/Rj7b7duAOnFhWSGuShVRo3qKk8WBR9MMq7H21g==, tarball: file:shared/core-1.0.0.tgz} - name: core + github.com/theopensystemslab/planx-core/5e932c3: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5e932c3} + name: '@opensystemslab/planx-core' version: 1.0.0 engines: {node: ^16, pnpm: ^7.8.0} + prepare: true + requiresBuild: true dependencies: graphql: 16.6.0 graphql-request: 5.1.0_graphql@16.6.0 diff --git a/api.planx.uk/shared/core-1.0.0.tgz b/api.planx.uk/shared/core-1.0.0.tgz deleted file mode 100644 index 7f099306d82355b587fb3f33ac7e7bfc483823a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18313 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.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.1 - globals: 13.18.0 - ignore: 5.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@graphql-typed-document-node/core/3.1.1_graphql@16.6.0: - resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - graphql: 16.6.0 - dev: false - - /@humanwhocodes/config-array/0.11.7: - resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer/1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.14.0 - dev: true - - /@types/json-schema/7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - - /@types/lodash.kebabcase/4.1.7: - resolution: {integrity: sha512-qzrcpK5uiADZ9OyZaegalM0b9Y3WetoBQ04RAtP3xZFGC5ul1UxmbjZ3j6suCh0BDkvgQmoMh8t5e9cVrdJYMw==} - dependencies: - '@types/lodash': 4.14.191 - dev: true - - /@types/lodash/4.14.191: - resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - dev: true - - /@types/node/18.11.11: - resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} - dev: true - - /@types/semver/7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: true - - /@typescript-eslint/eslint-plugin/5.45.1_tdm6ms4ntwhlpozn7kjqrhum74: - resolution: {integrity: sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.45.1_s5ps7njkmjlaqajutnox5ntcla - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/type-utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla - '@typescript-eslint/utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla - debug: 4.3.4 - eslint: 8.29.0 - ignore: 5.2.1 - natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser/5.45.1_s5ps7njkmjlaqajutnox5ntcla: - resolution: {integrity: sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 - debug: 4.3.4 - eslint: 8.29.0 - typescript: 4.9.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager/5.45.1: - resolution: {integrity: sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/visitor-keys': 5.45.1 - dev: true - - /@typescript-eslint/type-utils/5.45.1_s5ps7njkmjlaqajutnox5ntcla: - resolution: {integrity: sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 - '@typescript-eslint/utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla - debug: 4.3.4 - eslint: 8.29.0 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types/5.45.1: - resolution: {integrity: sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/typescript-estree/5.45.1_typescript@4.9.3: - resolution: {integrity: sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/visitor-keys': 5.45.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils/5.45.1_s5ps7njkmjlaqajutnox5ntcla: - resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 - eslint: 8.29.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.29.0 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys/5.45.1: - resolution: {integrity: sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.45.1 - eslint-visitor-keys: 3.3.0 - dev: true - - /acorn-jsx/5.3.2_acorn@8.8.1: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.1 - dev: true - - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /cross-fetch/3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} - dependencies: - node-fetch: 2.6.7 - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /deep-is/0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-scope/5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.29.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.29.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint/8.29.0: - resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 1.3.3 - '@humanwhocodes/config-array': 0.11.7 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.29.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.18.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.1 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.2.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 - eslint-visitor-keys: 3.3.0 - dev: true - - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse/4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /extract-files/9.0.0: - resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} - engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob/3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq/1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} - dependencies: - reusify: 1.0.4 - dev: true - - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache/3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - dev: true - - /flatted/3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals/13.18.0: - resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.1 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /grapheme-splitter/1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /graphql-request/5.1.0_graphql@16.6.0: - resolution: {integrity: sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==} - peerDependencies: - graphql: 14 - 16 - dependencies: - '@graphql-typed-document-node/core': 3.1.1_graphql@16.6.0 - cross-fetch: 3.1.5 - extract-files: 9.0.0 - form-data: 3.0.1 - graphql: 16.6.0 - transitivePeerDependencies: - - encoding - dev: false - - /graphql/16.6.0: - resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: false - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /ignore/5.2.1: - resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} - engines: {node: '>= 4'} - dev: true - - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /js-sdsl/4.2.0: - resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} - dev: true - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.kebabcase/4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - dev: false - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /natural-compare-lite/1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /optionator/0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettier/2.8.0: - resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - dev: true - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /tslib/1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tsutils/3.21.0_typescript@4.9.3: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 4.9.3 - dev: true - - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /typescript/4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.1.1 - dev: true - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /word-wrap/1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true diff --git a/core/scripts/build-and-install.sh b/core/scripts/build-and-install.sh deleted file mode 100755 index ce2e929a49..0000000000 --- a/core/scripts/build-and-install.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -cd $(dirname "$0") - -cd ../ - -project_root=$(pwd) - -# get target from arg ($1) or use defaults -target=${1:-../api.planx.uk ../editor.planx.uk} - -# ensure build is up-to-date -pnpm build - -# package for distribution -pack=$(pnpm pack) - -echo -echo distributing ${pack} to ${target} -echo - -for destination in ${target} -do - mkdir -p ${destination}/shared - - # remove any previous version - rm -rf ${destination}/node_modules/core - rm -rf ${destination}/shared/core* - - # install a current build - cp -f ${pack} ${destination}/shared - cd ${destination} - pnpm add ./shared/${pack} - cd ${destination}/node_modules/core - pnpm install --frozen-lockfile - pnpm build - cd ${project_root} - - echo installed into ${destination} -done - -# clean-up -rm -f ${pack} diff --git a/core/src/document-templates.ts b/core/src/document-templates.ts deleted file mode 100644 index e2537b2bf2..0000000000 --- a/core/src/document-templates.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { gql } from "graphql-request"; -import type { GraphQLClient } from "graphql-request"; - -export async function getDocumentTemplateNames( - client: GraphQLClient, - flowId: string -): Promise { - const { flow_document_templates: response } = await client.request( - gql` - query GetDocumentTemplateNames($flowId: uuid!) { - flow_document_templates(where: {flow: {_eq: $flowId}}) { - document_template - } - } - `, - { flowId } - ); - return response.map( - (data: { document_template: string }) => data.document_template - ); -} diff --git a/core/src/flow.ts b/core/src/flow.ts deleted file mode 100644 index 55c4d5f018..0000000000 --- a/core/src/flow.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { gql } from "graphql-request"; -import type { GraphQLClient } from "graphql-request"; - -export async function createFlow( - client: GraphQLClient, - args: { teamId: number; slug: string; data?: object } -): Promise { - const { insert_flows_one: response } = await client.request( - gql` - mutation CreateFlow($teamId: Int!, $flowSlug: String!, $data: jsonb) { - insert_flows_one(object: { team_id: $teamId, slug: $flowSlug, data: $data, version: 1 }) { - id - } - } - `, - { - teamId: args.teamId, - flowSlug: args.slug, - data: args.data, - } - ); - await createAssociatedOperation(client, { flowId: response.id }); - return response.id; -} - -export async function publishFlow( - client: GraphQLClient, - args: { flow: { id: string; data: object }; publisherId: number } -): Promise { - const { insert_published_flows_one: response } = await client.request( - gql` - mutation InsertPublishedFlow( - $publishedFlow: published_flows_insert_input!, - ) { - insert_published_flows_one( - object: $publishedFlow - ) { - id - } - } - `, - { - publishedFlow: { - flow_id: args.flow.id, - data: args.flow.data, - publisher_id: args.publisherId, - }, - } - ); - - return response.id; -} - -// Add a row to `operations` for an inserted flow, otherwise ShareDB throws a silent error when opening the flow in the UI -async function createAssociatedOperation( - client: GraphQLClient, - args: { flowId: string } -): Promise { - const { insert_operations_one: response } = await client.request( - gql` - mutation InsertOperation ($flowId: uuid!, $data: jsonb = {}) { - insert_operations_one(object: { flow_id: $flowId, version: 1, data: $data }) { - id - } - } - `, - { flowId: args.flowId } - ); - return response.id; -} diff --git a/core/src/graphql.ts b/core/src/graphql.ts deleted file mode 100644 index e465882426..0000000000 --- a/core/src/graphql.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { GraphQLClient } from "graphql-request"; - -export function graphQLClient({ - url, - secret, -}: { - url: string; - secret?: string | undefined; -}): GraphQLClient { - let headers = {}; - if (secret) headers = { "X-Hasura-Admin-Secret": secret }; - return new GraphQLClient(url, { headers }); -} diff --git a/core/src/index.ts b/core/src/index.ts deleted file mode 100644 index a6403f9930..0000000000 --- a/core/src/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import slugify from "lodash.kebabcase"; -import { graphQLClient } from "./graphql"; -import { createUser } from "./user"; -import { createTeam } from "./team"; -import { createFlow, publishFlow } from "./flow"; -import type { GraphQLClient } from "graphql-request"; -import { getDocumentTemplateNames } from "./document-templates"; - -const defaultURL = process.env.HASURA_GRAPHQL_URL; - -export class CoreDomainClient { - client: GraphQLClient; - - constructor(args: { - hasuraSecret?: string | undefined; - targetURL?: string | undefined; - }) { - const url: string = args.targetURL ? args.targetURL : defaultURL!; - this.client = graphQLClient({ url, secret: args.hasuraSecret }); - } - - async createUser(args: { - firstName: string; - lastName: string; - email: string; - }): Promise { - return createUser(this.client, args); - } - - async createTeam(args: { - name: string; - slug: string | undefined; - logo: string; - primaryColor: string; - homepage: string; - }): Promise { - const slug = args.slug ? args.slug : slugify(args.name); - return createTeam(this.client, { ...args, slug }); - } - - async createFlow(args: { - teamId: number; - slug: string; - data?: object; - }): Promise { - return createFlow(this.client, args); - } - - async publishFlow(args: { - flow: { id: string; data: object }; - publisherId: number; - }): Promise { - return publishFlow(this.client, args); - } - - async getDocumentTemplateNames(flowId: string): Promise { - return getDocumentTemplateNames(this.client, flowId); - } -} diff --git a/core/src/team.ts b/core/src/team.ts deleted file mode 100644 index ce39533a9c..0000000000 --- a/core/src/team.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { gql } from "graphql-request"; -import type { GraphQLClient } from "graphql-request"; - -const defaultNotifyPersonalisation = { - notify_personalisation: { - helpEmail: "example@council.gov.uk", - helpPhone: "(01234) 567890", - emailReplyToId: "727d48fa-cb8a-42f9-b8b2-55032f3bb451", - helpOpeningHours: "Monday - Friday, 9am - 5pm", - }, -}; - -const defaultSettings = { - settings: { - homepage: "https://example.com", - externalPlanningSite: { - url: "https://planningportal.co.uk", - name: "Planning Portal", - }, - }, -}; - -export async function createTeam( - client: GraphQLClient, - args: { - name: string; - slug: string; - logo: string; - primaryColor: string; - homepage: string; - } -): Promise { - const input = { - name: args.name, - slug: args.slug, - theme: { - logo: args.logo, - primary: args.primaryColor, - }, - settings: { - ...defaultSettings, - homepage: args.homepage, - }, - notify_personalisation: JSON.stringify({ - ...defaultNotifyPersonalisation, - }), - }; - const { insert_teams_one: response } = await client.request( - gql` - mutation CreateTeam( - $name: String! - $slug: String! - $theme: jsonb! - $settings: jsonb! - $notify_personalisation: jsonb! - ) { - insert_teams_one( - object: { - name: $name - slug: $slug - theme: $theme - settings: $settings - notify_personalisation: $notify_personalisation - } - ) { - id - } - } - `, - input - ); - return response.id; -} diff --git a/core/src/user.ts b/core/src/user.ts deleted file mode 100644 index 4177faf4e0..0000000000 --- a/core/src/user.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { gql } from "graphql-request"; -import type { GraphQLClient } from "graphql-request"; - -export async function createUser( - client: GraphQLClient, - args: { firstName: string; lastName: string; email: string } -): Promise { - const { insert_users_one: response } = await client.request( - gql` - mutation CreateUser( - $first_name: String! - $last_name: String! - $email: String! - ) { - insert_users_one( - object: { - first_name: $first_name - last_name: $last_name - email: $email - } - ) { - id - } - } - `, - { - first_name: args.firstName, - last_name: args.lastName, - email: args.email, - } - ); - return response.id; -} diff --git a/core/tsconfig.json b/core/tsconfig.json deleted file mode 100644 index 1b60d52ee0..0000000000 --- a/core/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "lib": ["es2021"], - "module": "commonjs", - "moduleResolution": "node", - "noImplicitAny": true, - "resolveJsonModule": true, - "rootDir": "./src", - "skipLibCheck": true, - "strict": true, - "target": "es2021", - "typeRoots": ["./node_modules/@types", "./@types"], - "outDir": "dist", - "declaration": true, - "declarationDir": "./types" - }, - "exclude": ["node_modules", "./dist/**/*"] -} diff --git a/e2e/install-dependencies.sh b/e2e/install-dependencies.sh index 9fd9346c76..ebb70cb43f 100755 --- a/e2e/install-dependencies.sh +++ b/e2e/install-dependencies.sh @@ -5,7 +5,6 @@ SCRIPT_DIR=$(dirname "$0") set -e -(cd "${SCRIPT_DIR}/../core" && pnpm install && pnpm build && pnpm distribute) (cd "${SCRIPT_DIR}/../editor.planx.uk" && pnpm install && pnpm build) if [ -z "${CI}" ]; then diff --git a/e2e/package.json b/e2e/package.json index 5d040af385..67e328a957 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -7,13 +7,13 @@ "postinstall": "./install-dependencies.sh" }, "dependencies": { + "@opensystemslab/planx-core": "git://github.com/theopensystemslab/planx-core.git#5e932c3", "axios": "^1.1.3", "dotenv": "^16.0.2", "graphql": "^16.6.0", "graphql-request": "^5.1.0", "isomorphic-fetch": "^3.0.0", "jsonwebtoken": "^8.5.1", - "core": "link:../core", "serve": "^14.1.2" }, "devDependencies": { diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 13ea8e9e51..9c7d946d04 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -1,12 +1,12 @@ lockfileVersion: 5.4 specifiers: + '@opensystemslab/planx-core': git://github.com/theopensystemslab/planx-core.git#5e932c3 '@playwright/test': ^1.28.1 '@types/node': ^18.11.14 '@typescript-eslint/eslint-plugin': ^5.46.1 '@typescript-eslint/parser': ^5.46.1 axios: ^1.1.3 - core: link:../core dotenv: ^16.0.2 eslint: ^8.29.0 graphql: ^16.6.0 @@ -18,8 +18,8 @@ specifiers: typescript: ^4.9.4 dependencies: + '@opensystemslab/planx-core': github.com/theopensystemslab/planx-core/5e932c3 axios: 1.2.1 - core: link:../core dotenv: 16.0.2 graphql: 16.6.0 graphql-request: 5.1.0_graphql@16.6.0 @@ -1084,6 +1084,10 @@ packages: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} dev: false + /lodash.kebabcase/4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: false + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -1616,3 +1620,18 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + + github.com/theopensystemslab/planx-core/5e932c3: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5e932c3} + name: '@opensystemslab/planx-core' + version: 1.0.0 + engines: {node: ^16, pnpm: ^7.8.0} + prepare: true + requiresBuild: true + dependencies: + graphql: 16.6.0 + graphql-request: 5.1.0_graphql@16.6.0 + lodash.kebabcase: 4.1.1 + transitivePeerDependencies: + - encoding + dev: false diff --git a/e2e/src/context.ts b/e2e/src/context.ts index 15367bc61b..18e1ebe8f1 100644 --- a/e2e/src/context.ts +++ b/e2e/src/context.ts @@ -1,7 +1,7 @@ import assert from "node:assert"; import { log } from "./helpers"; import { sign } from "jsonwebtoken"; -import { CoreDomainClient } from "core"; +import { CoreDomainClient } from "@opensystemslab/planx-core"; import { GraphQLClient } from "graphql-request"; export interface Context { diff --git a/editor.planx.uk/README.md b/editor.planx.uk/README.md index 3e018e131f..56715e5d0f 100644 --- a/editor.planx.uk/README.md +++ b/editor.planx.uk/README.md @@ -14,7 +14,8 @@ Run tests `pnpm test` Development notes: - - if you need to test or pull new changes from @opensystemslab/planx-document-templates, make sure to update the commit hash in package.json first + - if you need to test or pull new changes from @opensystemslab/planx-document-templates or @opensystemslab/planx-core, make sure to update the commit hash in package.json first + - you can also use `pnpm link {{local relative path to @opensystemslab/planx-document-templates or @opensystemslab/planx-core}}` to manage local development changes these packages without having to reinstall. If you do this, remember to also run `pnpm unlink` to unlink the local directory and then also update the commit hash to point to the most recent version of the package. ### Disabling type-checking diff --git a/editor.planx.uk/package.json b/editor.planx.uk/package.json index 244c0cbb9a..01229f105c 100644 --- a/editor.planx.uk/package.json +++ b/editor.planx.uk/package.json @@ -15,6 +15,7 @@ "@mui/styles": "5.11.9", "@mui/utils": "5.11.9", "@opensystemslab/map": "^0.7.1", + "@opensystemslab/planx-core": "git://github.com/theopensystemslab/planx-core.git#5e932c3", "@opensystemslab/planx-document-templates": "git://github.com/theopensystemslab/planx-document-templates#e0642be", "@tiptap/core": "2.0.0-beta.204", "@tiptap/extension-bold": "2.0.0-beta.204", @@ -57,7 +58,6 @@ "natsort": "^2.0.3", "navi": "^0.15.0", "p-memoize": "^7.1.0", - "core": "file:shared/core-1.0.0.tgz", "postcode": "^5.1.0", "prop-types": "^15.5.8", "ramda": "^0.28.0", diff --git a/editor.planx.uk/pnpm-lock.yaml b/editor.planx.uk/pnpm-lock.yaml index 7d17bc9297..230f78532d 100644 --- a/editor.planx.uk/pnpm-lock.yaml +++ b/editor.planx.uk/pnpm-lock.yaml @@ -60,6 +60,7 @@ specifiers: '@mui/styles': 5.11.9 '@mui/utils': 5.11.9 '@opensystemslab/map': ^0.7.1 + '@opensystemslab/planx-core': git://github.com/theopensystemslab/planx-core.git#5e932c3 '@opensystemslab/planx-document-templates': git://github.com/theopensystemslab/planx-document-templates#e0642be '@react-theming/storybook-addon': ^1.1.7 '@storybook/addon-actions': ^6.5.10 @@ -114,7 +115,6 @@ specifiers: axios: 0.27.2 camelcase-keys: ^8.0.1 classnames: ^2.3.1 - core: file:shared/core-1.0.0.tgz core-js: ^3.24.1 craco-esbuild: ^0.5.1 css-loader: ^6.7.1 @@ -204,6 +204,7 @@ dependencies: '@mui/styles': 5.11.9_7v64pk2mkrohwh22gx7lrz5ive '@mui/utils': 5.11.9_react@18.2.0 '@opensystemslab/map': 0.7.1 + '@opensystemslab/planx-core': github.com/theopensystemslab/planx-core/5e932c3 '@opensystemslab/planx-document-templates': github.com/theopensystemslab/planx-document-templates/e0642be_a7krn2kytpcoapplqdxaq5aiqm '@tiptap/core': 2.0.0-beta.204 '@tiptap/extension-bold': 2.0.0-beta.204_bv566pzu4gfcw3675d5jwhi56i @@ -228,7 +229,6 @@ dependencies: axios: 0.27.2 camelcase-keys: 8.0.1 classnames: 2.3.1 - core: file:shared/core-1.0.0.tgz core-js: 3.24.1 date-fns: 2.29.1 dotenv: 16.0.3 @@ -19962,11 +19962,13 @@ packages: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true - file:shared/core-1.0.0.tgz: - resolution: {integrity: sha512-v6pEVoInNOtknuWwAqZp+KHie9aLDSVKipUuFtklEGufKye/Rj7b7duAOnFhWSGuShVRo3qKk8WBR9MMq7H21g==, tarball: file:shared/core-1.0.0.tgz} - name: core + github.com/theopensystemslab/planx-core/5e932c3: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5e932c3} + name: '@opensystemslab/planx-core' version: 1.0.0 engines: {node: ^16, pnpm: ^7.8.0} + prepare: true + requiresBuild: true dependencies: graphql: 16.6.0 graphql-request: 5.1.0_graphql@16.6.0 diff --git a/editor.planx.uk/shared/core-1.0.0.tgz b/editor.planx.uk/shared/core-1.0.0.tgz deleted file mode 100644 index 7f099306d82355b587fb3f33ac7e7bfc483823a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18313 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