From 63928c66e86eebaaeda9292d20ad8c7d71a75b76 Mon Sep 17 00:00:00 2001 From: Chris Penner Date: Tue, 7 May 2024 10:12:23 -0700 Subject: [PATCH] Rename Enlil -> Share (#1) * Rewrite module names * Rewrite enlil packages to share packages * Rewrite docker enlil -> share * Rewrite enlil -> share in source * Rewrite makefile enlil -> share * Rewrite ci enlil -> share * Speed up docker builds --- .github/CODEOWNERS | 1 + .github/workflows/ci.yaml | 29 +- Makefile | 23 +- README.md | 2 - app/Env.hs | 58 ++-- app/Main.hs | 2 +- docker/Dockerfile | 16 +- docker/docker-compose.yml | 50 ++-- docker/enlil-entrypoint.sh | 22 -- docker/share-entrypoint.sh | 22 ++ enlil-auth/README.md | 8 - enlil-auth/example/README.md | 3 - enlil-utils/README.md | 1 - flake.nix | 6 +- hie.yaml | 18 +- local.env | 46 ++-- package.yaml | 18 +- enlil.cabal => share-api.cabal | 255 +++++++++--------- {enlil-auth => share-auth}/.gitignore | 0 {enlil-auth => share-auth}/LICENSE | 0 share-auth/README.md | 8 + {enlil-auth => share-auth}/Setup.hs | 0 {enlil-auth => share-auth}/example/.gitignore | 0 {enlil-auth => share-auth}/example/LICENSE | 0 share-auth/example/README.md | 3 + {enlil-auth => share-auth}/example/Setup.hs | 0 .../example/app/Main.hs | 0 {enlil-auth => share-auth}/example/hie.yaml | 0 .../example/package.yaml | 6 +- {enlil-auth => share-auth}/example/src/Lib.hs | 24 +- {enlil-auth => share-auth}/example/stack.yaml | 2 +- .../example/stack.yaml.lock | 0 .../example/test-auth-app.cabal | 18 +- .../example/test/Spec.hs | 0 {enlil-auth => share-auth}/package.yaml | 8 +- .../share-auth.cabal | 36 +-- .../src/Enlil => share-auth/src/Share}/JWT.hs | 6 +- .../src/Share}/OAuth/API.hs | 12 +- .../src/Share}/OAuth/Errors.hs | 8 +- .../Share}/OAuth/IdentityProvider/Share.hs | 16 +- .../Share}/OAuth/IdentityProvider/Types.hs | 8 +- .../src/Share}/OAuth/PKCE.hs | 6 +- .../src/Share}/OAuth/Redis.hs | 22 +- .../src/Share}/OAuth/Scopes.hs | 2 +- .../src/Share}/OAuth/ServiceProvider.hs | 30 +-- .../src/Share}/OAuth/Session.hs | 12 +- .../src/Share}/OAuth/Types.hs | 14 +- {enlil-utils => share-utils}/.gitignore | 0 {enlil-utils => share-utils}/CHANGELOG.md | 2 +- {enlil-utils => share-utils}/LICENSE | 0 share-utils/README.md | 1 + {enlil-utils => share-utils}/Setup.hs | 0 {enlil-utils => share-utils}/package.yaml | 6 +- .../share-utils.cabal | 26 +- .../src/Share}/Utils/Binary.hs | 2 +- .../src/Share}/Utils/Deployment.hs | 6 +- .../src/Share}/Utils/IDs.hs | 2 +- .../src/Share}/Utils/SecureTokens.hs | 2 +- .../src/Share}/Utils/Servant/Cookies.hs | 2 +- .../src/Share}/Utils/Show.hs | 2 +- .../src/Share}/Utils/URI.hs | 4 +- src/{Enlil.hs => Share.hs} | 42 +-- src/{Enlil => Share}/App.hs | 18 +- src/{Enlil => Share}/Backend.hs | 16 +- src/{Enlil => Share}/Branch.hs | 6 +- src/{Enlil => Share}/Codebase.hs | 52 ++-- src/{Enlil => Share}/Codebase/Types.hs | 8 +- src/{Enlil => Share}/Contribution.hs | 10 +- src/{Enlil => Share}/Env.hs | 12 +- src/{Enlil => Share}/Github.hs | 38 +-- src/{Enlil => Share}/IDs.hs | 8 +- src/{Enlil => Share}/Metrics.hs | 18 +- src/{Enlil => Share}/Monitoring.hs | 14 +- src/{Enlil => Share}/NamespaceDiffs.hs | 18 +- src/{Enlil => Share}/Postgres.hs | 18 +- src/{Enlil => Share}/Postgres/Admin.hs | 6 +- .../Postgres/Authorization/Queries.hs | 12 +- .../Postgres/Causal/Conversions.hs | 6 +- .../Postgres/Causal/Queries.hs | 28 +- src/{Enlil => Share}/Postgres/Causal/Types.hs | 4 +- .../Postgres/Comments/Queries.hs | 10 +- .../Postgres/Contributions/Queries.hs | 22 +- .../Postgres/Definitions/Queries.hs | 26 +- .../Postgres/Definitions/Types.hs | 8 +- .../Postgres/Hashes/Queries.hs | 16 +- src/{Enlil => Share}/Postgres/IDs.hs | 6 +- .../Postgres/LooseCode/Queries.hs | 24 +- .../Postgres/Metrics/Queries.hs | 6 +- .../Postgres/NameLookups/Conversions.hs | 14 +- .../Postgres/NameLookups/Ops.hs | 24 +- .../Postgres/NameLookups/Queries.hs | 12 +- .../Postgres/NameLookups/Types.hs | 12 +- .../Postgres/NamespaceDiffs.hs | 14 +- src/{Enlil => Share}/Postgres/Ops.hs | 22 +- src/{Enlil => Share}/Postgres/Orphans.hs | 8 +- .../Postgres/Patches/Queries.hs | 18 +- .../Postgres/Patches/Types.hs | 4 +- .../Postgres/Projects/Queries.hs | 12 +- src/{Enlil => Share}/Postgres/Queries.hs | 46 ++-- src/{Enlil => Share}/Postgres/Refs/Types.hs | 6 +- .../Postgres/Serialization.hs | 10 +- .../Postgres/Sync/Conversions.hs | 4 +- src/{Enlil => Share}/Postgres/Sync/Queries.hs | 38 +-- src/{Enlil => Share}/Postgres/Sync/Types.hs | 8 +- .../Postgres/Tickets/Queries.hs | 20 +- .../Postgres/Users/Queries.hs | 16 +- src/{Enlil => Share}/Prelude.hs | 6 +- src/{Enlil => Share}/Prelude/Orphans.hs | 2 +- src/{Enlil => Share}/Project.hs | 8 +- src/{Enlil => Share}/Redis.hs | 12 +- src/{Enlil => Share}/Release.hs | 8 +- src/{Enlil => Share}/Ticket.hs | 8 +- src/{Enlil => Share}/User.hs | 10 +- src/{Enlil => Share}/UserProfile.hs | 10 +- src/{Enlil => Share}/Utils/API.hs | 6 +- src/{Enlil => Share}/Utils/Caching.hs | 10 +- src/{Enlil => Share}/Utils/Logging.hs | 16 +- src/{Enlil => Share}/Utils/Logging/Types.hs | 4 +- src/{Enlil => Share}/Utils/Postgres.hs | 6 +- src/{Enlil => Share}/Utils/Servant.hs | 10 +- src/{Enlil => Share}/Utils/Servant/Client.hs | 8 +- .../Utils/Servant/PathInfo.hs | 2 +- .../Utils/Servant/RawRequest.hs | 4 +- src/{Enlil => Share}/Utils/Unison.hs | 14 +- src/{Enlil => Share}/Web/API.hs | 20 +- src/{Enlil => Share}/Web/Admin/API.hs | 8 +- src/{Enlil => Share}/Web/Admin/Impl.hs | 26 +- src/{Enlil => Share}/Web/Admin/Types.hs | 4 +- src/{Enlil => Share}/Web/App.hs | 32 +-- src/{Enlil => Share}/Web/Authentication.hs | 14 +- .../Web/Authentication/AccessToken.hs | 34 +-- .../Web/Authentication/HashJWT.hs | 12 +- .../Web/Authentication/JWT.hs | 26 +- .../Web/Authentication/Types.hs | 12 +- src/{Enlil => Share}/Web/Authorization.hs | 44 +-- .../Web/Authorization/Types.hs | 2 +- src/{Enlil => Share}/Web/Errors.hs | 18 +- src/{Enlil => Share}/Web/Impl.hs | 50 ++-- src/{Enlil => Share}/Web/Local/API.hs | 8 +- src/{Enlil => Share}/Web/Local/Impl.hs | 54 ++-- src/{Enlil => Share}/Web/OAuth/Clients.hs | 18 +- src/{Enlil => Share}/Web/OAuth/Impl.hs | 70 ++--- src/{Enlil => Share}/Web/Share/API.hs | 24 +- .../Web/Share/Branches/API.hs | 14 +- .../Web/Share/Branches/Impl.hs | 56 ++-- .../Web/Share/Branches/Types.hs | 14 +- .../Web/Share/CodeBrowsing/API.hs | 6 +- src/{Enlil => Share}/Web/Share/Comments.hs | 8 +- .../Web/Share/Comments/API.hs | 10 +- .../Web/Share/Comments/Impl.hs | 32 +-- .../Web/Share/Comments/Types.hs | 8 +- .../Web/Share/Contributions/API.hs | 18 +- .../Web/Share/Contributions/Impl.hs | 62 ++--- .../Web/Share/Contributions/MergeDetection.hs | 8 +- .../Web/Share/Contributions/Types.hs | 14 +- src/{Enlil => Share}/Web/Share/Diffs/Impl.hs | 22 +- src/{Enlil => Share}/Web/Share/Diffs/Types.hs | 10 +- src/{Enlil => Share}/Web/Share/Impl.hs | 60 ++--- .../Web/Share/Projects/API.hs | 26 +- .../Web/Share/Projects/Impl.hs | 66 ++--- .../Web/Share/Projects/Types.hs | 18 +- .../Web/Share/Releases/API.hs | 14 +- .../Web/Share/Releases/Impl.hs | 58 ++-- .../Web/Share/Releases/Types.hs | 10 +- src/{Enlil => Share}/Web/Share/Tickets/API.hs | 14 +- .../Web/Share/Tickets/Impl.hs | 48 ++-- .../Web/Share/Tickets/Types.hs | 14 +- src/{Enlil => Share}/Web/Share/Types.hs | 12 +- src/{Enlil => Share}/Web/Support/API.hs | 6 +- src/{Enlil => Share}/Web/Support/Impl.hs | 20 +- src/{Enlil => Share}/Web/Support/Types.hs | 4 +- src/{Enlil => Share}/Web/Support/Zendesk.hs | 14 +- src/{Enlil => Share}/Web/Types.hs | 10 +- src/{Enlil => Share}/Web/UCM/Projects/Impl.hs | 64 ++--- src/{Enlil => Share}/Web/UCM/Sync/HashJWT.hs | 18 +- src/{Enlil => Share}/Web/UCM/Sync/Impl.hs | 62 ++--- src/{Enlil => Share}/Web/UCM/Sync/Types.hs | 4 +- src/Unison/PrettyPrintEnvDecl/Postgres.hs | 14 +- src/Unison/Server/NameSearch/Postgres.hs | 12 +- src/Unison/Server/Share/DefinitionSummary.hs | 20 +- src/Unison/Server/Share/Definitions.hs | 16 +- src/Unison/Server/Share/Docs.hs | 8 +- src/Unison/Server/Share/FuzzyFind.hs | 20 +- src/Unison/Server/Share/NamespaceDetails.hs | 8 +- src/Unison/Server/Share/NamespaceListing.hs | 10 +- src/Unison/Server/Share/RenderDoc.hs | 16 +- stack.yaml | 6 +- 187 files changed, 1594 insertions(+), 1596 deletions(-) create mode 100644 .github/CODEOWNERS delete mode 100644 docker/enlil-entrypoint.sh create mode 100644 docker/share-entrypoint.sh delete mode 100644 enlil-auth/README.md delete mode 100644 enlil-auth/example/README.md delete mode 100644 enlil-utils/README.md rename enlil.cabal => share-api.cabal (61%) rename {enlil-auth => share-auth}/.gitignore (100%) rename {enlil-auth => share-auth}/LICENSE (100%) create mode 100644 share-auth/README.md rename {enlil-auth => share-auth}/Setup.hs (100%) rename {enlil-auth => share-auth}/example/.gitignore (100%) rename {enlil-auth => share-auth}/example/LICENSE (100%) create mode 100644 share-auth/example/README.md rename {enlil-auth => share-auth}/example/Setup.hs (100%) rename {enlil-auth => share-auth}/example/app/Main.hs (100%) rename {enlil-auth => share-auth}/example/hie.yaml (100%) rename {enlil-auth => share-auth}/example/package.yaml (96%) rename {enlil-auth => share-auth}/example/src/Lib.hs (89%) rename {enlil-auth => share-auth}/example/stack.yaml (80%) rename {enlil-auth => share-auth}/example/stack.yaml.lock (100%) rename {enlil-auth => share-auth}/example/test-auth-app.cabal (93%) rename {enlil-auth => share-auth}/example/test/Spec.hs (100%) rename {enlil-auth => share-auth}/package.yaml (92%) rename enlil-auth/enlil-auth.cabal => share-auth/share-auth.cabal (76%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/JWT.hs (98%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/API.hs (94%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/Errors.hs (92%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/IdentityProvider/Share.hs (92%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/IdentityProvider/Types.hs (77%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/PKCE.hs (90%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/Redis.hs (93%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/Scopes.hs (98%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/ServiceProvider.hs (95%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/Session.hs (98%) rename {enlil-auth/src/Enlil => share-auth/src/Share}/OAuth/Types.hs (97%) rename {enlil-utils => share-utils}/.gitignore (100%) rename {enlil-utils => share-utils}/CHANGELOG.md (90%) rename {enlil-utils => share-utils}/LICENSE (100%) create mode 100644 share-utils/README.md rename {enlil-utils => share-utils}/Setup.hs (100%) rename {enlil-utils => share-utils}/package.yaml (92%) rename enlil-utils/enlil-utils.cabal => share-utils/share-utils.cabal (79%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/Binary.hs (94%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/Deployment.hs (79%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/IDs.hs (99%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/SecureTokens.hs (92%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/Servant/Cookies.hs (99%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/Show.hs (88%) rename {enlil-utils/src/Enlil => share-utils/src/Share}/Utils/URI.hs (98%) rename src/{Enlil.hs => Share.hs} (94%) rename src/{Enlil => Share}/App.hs (83%) rename src/{Enlil => Share}/Backend.hs (97%) rename src/{Enlil => Share}/Branch.hs (95%) rename src/{Enlil => Share}/Codebase.hs (94%) rename src/{Enlil => Share}/Codebase/Types.hs (94%) rename src/{Enlil => Share}/Contribution.hs (94%) rename src/{Enlil => Share}/Env.hs (86%) rename src/{Enlil => Share}/Github.hs (93%) rename src/{Enlil => Share}/IDs.hs (99%) rename src/{Enlil => Share}/Metrics.hs (97%) rename src/{Enlil => Share}/Monitoring.hs (87%) rename src/{Enlil => Share}/NamespaceDiffs.hs (97%) rename src/{Enlil => Share}/Postgres.hs (98%) rename src/{Enlil => Share}/Postgres/Admin.hs (76%) rename src/{Enlil => Share}/Postgres/Authorization/Queries.hs (94%) rename src/{Enlil => Share}/Postgres/Causal/Conversions.hs (74%) rename src/{Enlil => Share}/Postgres/Causal/Queries.hs (98%) rename src/{Enlil => Share}/Postgres/Causal/Types.hs (96%) rename src/{Enlil => Share}/Postgres/Comments/Queries.hs (97%) rename src/{Enlil => Share}/Postgres/Contributions/Queries.hs (98%) rename src/{Enlil => Share}/Postgres/Definitions/Queries.hs (99%) rename src/{Enlil => Share}/Postgres/Definitions/Types.hs (97%) rename src/{Enlil => Share}/Postgres/Hashes/Queries.hs (97%) rename src/{Enlil => Share}/Postgres/IDs.hs (97%) rename src/{Enlil => Share}/Postgres/LooseCode/Queries.hs (88%) rename src/{Enlil => Share}/Postgres/Metrics/Queries.hs (98%) rename src/{Enlil => Share}/Postgres/NameLookups/Conversions.hs (96%) rename src/{Enlil => Share}/Postgres/NameLookups/Ops.hs (94%) rename src/{Enlil => Share}/Postgres/NameLookups/Queries.hs (98%) rename src/{Enlil => Share}/Postgres/NameLookups/Types.hs (96%) rename src/{Enlil => Share}/Postgres/NamespaceDiffs.hs (97%) rename src/{Enlil => Share}/Postgres/Ops.hs (88%) rename src/{Enlil => Share}/Postgres/Orphans.hs (97%) rename src/{Enlil => Share}/Postgres/Patches/Queries.hs (97%) rename src/{Enlil => Share}/Postgres/Patches/Types.hs (62%) rename src/{Enlil => Share}/Postgres/Projects/Queries.hs (94%) rename src/{Enlil => Share}/Postgres/Queries.hs (98%) rename src/{Enlil => Share}/Postgres/Refs/Types.hs (94%) rename src/{Enlil => Share}/Postgres/Serialization.hs (96%) rename src/{Enlil => Share}/Postgres/Sync/Conversions.hs (98%) rename src/{Enlil => Share}/Postgres/Sync/Queries.hs (96%) rename src/{Enlil => Share}/Postgres/Sync/Types.hs (76%) rename src/{Enlil => Share}/Postgres/Tickets/Queries.hs (97%) rename src/{Enlil => Share}/Postgres/Users/Queries.hs (91%) rename src/{Enlil => Share}/Prelude.hs (98%) rename src/{Enlil => Share}/Prelude/Orphans.hs (97%) rename src/{Enlil => Share}/Project.hs (93%) rename src/{Enlil => Share}/Redis.hs (91%) rename src/{Enlil => Share}/Release.hs (95%) rename src/{Enlil => Share}/Ticket.hs (94%) rename src/{Enlil => Share}/User.hs (92%) rename src/{Enlil => Share}/UserProfile.hs (86%) rename src/{Enlil => Share}/Utils/API.hs (99%) rename src/{Enlil => Share}/Utils/Caching.hs (96%) rename src/{Enlil => Share}/Utils/Logging.hs (95%) rename src/{Enlil => Share}/Utils/Logging/Types.hs (85%) rename src/{Enlil => Share}/Utils/Postgres.hs (85%) rename src/{Enlil => Share}/Utils/Servant.hs (95%) rename src/{Enlil => Share}/Utils/Servant/Client.hs (78%) rename src/{Enlil => Share}/Utils/Servant/PathInfo.hs (98%) rename src/{Enlil => Share}/Utils/Servant/RawRequest.hs (94%) rename src/{Enlil => Share}/Utils/Unison.hs (86%) rename src/{Enlil => Share}/Web/API.hs (77%) rename src/{Enlil => Share}/Web/Admin/API.hs (92%) rename src/{Enlil => Share}/Web/Admin/Impl.hs (88%) rename src/{Enlil => Share}/Web/Admin/Types.hs (96%) rename src/{Enlil => Share}/Web/App.hs (89%) rename src/{Enlil => Share}/Web/Authentication.hs (80%) rename src/{Enlil => Share}/Web/Authentication/AccessToken.hs (81%) rename src/{Enlil => Share}/Web/Authentication/HashJWT.hs (63%) rename src/{Enlil => Share}/Web/Authentication/JWT.hs (87%) rename src/{Enlil => Share}/Web/Authentication/Types.hs (90%) rename src/{Enlil => Share}/Web/Authorization.hs (97%) rename src/{Enlil => Share}/Web/Authorization/Types.hs (98%) rename src/{Enlil => Share}/Web/Errors.hs (97%) rename src/{Enlil => Share}/Web/Impl.hs (56%) rename src/{Enlil => Share}/Web/Local/API.hs (83%) rename src/{Enlil => Share}/Web/Local/Impl.hs (74%) rename src/{Enlil => Share}/Web/OAuth/Clients.hs (82%) rename src/{Enlil => Share}/Web/OAuth/Impl.hs (89%) rename src/{Enlil => Share}/Web/Share/API.hs (76%) rename src/{Enlil => Share}/Web/Share/Branches/API.hs (87%) rename src/{Enlil => Share}/Web/Share/Branches/Impl.hs (95%) rename src/{Enlil => Share}/Web/Share/Branches/Types.hs (87%) rename src/{Enlil => Share}/Web/Share/CodeBrowsing/API.hs (95%) rename src/{Enlil => Share}/Web/Share/Comments.hs (95%) rename src/{Enlil => Share}/Web/Share/Comments/API.hs (72%) rename src/{Enlil => Share}/Web/Share/Comments/Impl.hs (83%) rename src/{Enlil => Share}/Web/Share/Comments/Types.hs (89%) rename src/{Enlil => Share}/Web/Share/Contributions/API.hs (86%) rename src/{Enlil => Share}/Web/Share/Contributions/Impl.hs (92%) rename src/{Enlil => Share}/Web/Share/Contributions/MergeDetection.hs (75%) rename src/{Enlil => Share}/Web/Share/Contributions/Types.hs (95%) rename src/{Enlil => Share}/Web/Share/Diffs/Impl.hs (86%) rename src/{Enlil => Share}/Web/Share/Diffs/Types.hs (95%) rename src/{Enlil => Share}/Web/Share/Impl.hs (93%) rename src/{Enlil => Share}/Web/Share/Projects/API.hs (82%) rename src/{Enlil => Share}/Web/Share/Projects/Impl.hs (90%) rename src/{Enlil => Share}/Web/Share/Projects/Types.hs (96%) rename src/{Enlil => Share}/Web/Share/Releases/API.hs (85%) rename src/{Enlil => Share}/Web/Share/Releases/Impl.hs (95%) rename src/{Enlil => Share}/Web/Share/Releases/Types.hs (96%) rename src/{Enlil => Share}/Web/Share/Tickets/API.hs (87%) rename src/{Enlil => Share}/Web/Share/Tickets/Impl.hs (90%) rename src/{Enlil => Share}/Web/Share/Tickets/Types.hs (93%) rename src/{Enlil => Share}/Web/Share/Types.hs (95%) rename src/{Enlil => Share}/Web/Support/API.hs (75%) rename src/{Enlil => Share}/Web/Support/Impl.hs (69%) rename src/{Enlil => Share}/Web/Support/Types.hs (95%) rename src/{Enlil => Share}/Web/Support/Zendesk.hs (91%) rename src/{Enlil => Share}/Web/Types.hs (91%) rename src/{Enlil => Share}/Web/UCM/Projects/Impl.hs (94%) rename src/{Enlil => Share}/Web/UCM/Sync/HashJWT.hs (91%) rename src/{Enlil => Share}/Web/UCM/Sync/Impl.hs (96%) rename src/{Enlil => Share}/Web/UCM/Sync/Types.hs (95%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..49047f9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +/.github/ @unisoncomputing/share diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 25df9b6..492abec 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,20 +32,20 @@ jobs: submodules: false - name: Get changed files id: changed-files - uses: tj-actions/changed-files@v41 + uses: tj-actions/changed-files@0874344d6ebbaa00a27da73276ae7162fadcaf69 # v44.3.0 with: # globs copied from default settings for run-ormolu files: | **/*.hs **/*.hs-boot separator: "\n" - - uses: haskell-actions/run-ormolu@v15 + - uses: haskell-actions/run-ormolu@15b0083a0ef416915994fb511652b187f6026a40 # v15.0.0 with: version: ${{ env.ormolu_version }} mode: inplace pattern: ${{ steps.changed-files.outputs.all_changed_files }} - name: apply formatting changes - uses: stefanzweifel/git-auto-commit-action@v5 + uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5.0.1 # Only try to commit formatting changes if we're running within the repo containing the PR, # and not on a protected branch. # The job doesn't have permission to push back to contributor forks on contributor PRs. @@ -81,7 +81,7 @@ jobs: ${{ (env.is_published_build && '--ghc-options -O2') || '--fast' }} - name: Save exes for docker build - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: share-api-exe path: ${{env.share_local_bin}} @@ -96,7 +96,6 @@ jobs: # A separate job for docker build because it requires elevated github token permissions. docker-build: - if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging') }} env: container_registry: ghcr.io docker_image_name: ${{ github.repository }} @@ -119,7 +118,7 @@ jobs: submodules: false # Downloads the artifact that contains the share-api-exe from the previous job. - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v4 with: name: share-api-exe path: ./docker/tmp/ @@ -127,7 +126,7 @@ jobs: # Configure Docker's builder, # This seems necessary to support docker cache layers. - name: Setup Docker buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. @@ -156,7 +155,7 @@ jobs: # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. - name: Build and push Docker image id: push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: ./docker/ push: ${{ env.is_published_build }} @@ -166,12 +165,12 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max build-args: | - ENLIL_COMMIT=${{ github.sha }} + SHARE_COMMIT=${{ github.sha }} # Save image locally for use in tests even if we don't push it. outputs: type=docker,dest=/tmp/share-docker-image.tar # export docker image - name: Save docker image for transcript tests - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: share-docker-image path: /tmp/share-docker-image.tar @@ -179,7 +178,7 @@ jobs: # NOTE: disabled until repo goes public # This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see "[AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds)." # - name: Generate artifact attestation - # uses: actions/attest-build-provenance@v1 + # uses: actions/attest-build-provenance@v1.1.0 # with: # subject-name: ${{ env.container_registry }}/${{ env.docker_image_name}} # subject-digest: ${{ steps.push.outputs.digest }} @@ -207,17 +206,17 @@ jobs: # Configure Docker's builder, # This seems necessary to support docker cache layers. - name: Setup Docker buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - name: Download artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: share-docker-image path: /tmp # Load this before using docker and it'll cache images we use in the docker-compose - name: Cache Docker images. - uses: ScribeMD/docker-cache@0.5.0 + uses: ScribeMD/docker-cache@fb28c93772363301b8d0a6072ce850224b73f74e # v0.5.0 with: key: docker-${{ runner.os }} }} @@ -243,7 +242,7 @@ jobs: # Clean up old postgres data if it exists. docker volume rm docker_postgresVolume 2>/dev/null || true - # Start enlil and it's dependencies in the background + # Start share and it's dependencies in the background docker compose -f docker/docker-compose.yml up --wait # Run the transcript tests diff --git a/Makefile b/Makefile index 0fb570f..1bad864 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,13 @@ UNAME := $(shell uname) STACK_FLAGS := "--fast" dist_dir := $(shell stack path | awk '/^dist-dir/{print $$2}') -exe_name := enlil-exe -inst_exe_name := enlil +exe_name := share-api exe := $(dist_dir)/build/$(exe_name)/$(exe_name) target_dir := docker/tmp -installed_enlil := $(target_dir)/$(inst_exe_name) +installed_share := $(target_dir)/$(exe_name) unison := $(shell command -v unison) docker_registry=324181518966.dkr.ecr.us-west-2.amazonaws.com -enlil_commit := $(shell git diff-index --quiet HEAD -- && git rev-parse --short=10 HEAD || echo 'wip') +share_commit := $(shell git diff-index --quiet HEAD -- && git rev-parse --short=10 HEAD || echo 'wip') OPEN_BROWSER ?= "true" @@ -29,30 +28,30 @@ $(target_dir): $(exe): $(shell find . unison -type f -name '*.hs') package.yaml stack.yaml @echo $(exe) @echo $@ - stack build $(STACK_FLAGS) enlil:enlil-exe + stack build $(STACK_FLAGS) share-api:share-api -$(installed_enlil): $(exe) $(target_dir) - cp $(exe) $(installed_enlil) +$(installed_share): $(exe) $(target_dir) + cp $(exe) $(installed_share) auth_example: stack build --fast test-auth-app -docker_server_build: $(installed_enlil) - docker build $(docker_platform_flag) -f docker/Dockerfile --build-arg ENLIL_COMMIT=$(enlil_commit) -t share docker +docker_server_build: $(installed_share) + docker build $(docker_platform_flag) -f docker/Dockerfile --build-arg share_commit=$(share_commit) -t share docker -docker_server_release: $(installed_enlil) +docker_server_release: $(installed_share) docker build $(docker_platform_flag) -f docker/Dockerfile -t $(docker_registry)/share:$(DRONE_BUILD_NUMBER) docker docker_push: $(docker_server_release) docker push $(docker_registry)/share:$(DRONE_BUILD_NUMBER) -docker_staging_release: $(installed_enlil) +docker_staging_release: $(installed_share) docker build $(docker_platform_flag) -f docker/Dockerfile -t $(docker_registry)/share-staging:$(DRONE_BUILD_NUMBER) docker docker_staging_push: $(docker_server_release) docker push $(docker_registry)/share-staging:$(DRONE_BUILD_NUMBER) -serve: $(installed_enlil) +serve: $(installed_share) trap 'docker-compose -f docker/docker-compose.yml down' EXIT INT TERM docker-compose -f docker/docker-compose.yml up postgres redis & while ! ( pg_isready --host localhost -U postgres -p 5432 && redis-cli -p 6379 ping) do \ diff --git a/README.md b/README.md index 8d8b863..f682c91 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # Unison Share -Note: Originally this project was named `Enlil`, there are many references to `Enlil` in the codebase and documentation, you may mentally substitute `Share` into those spots instead. - * [Setup](#setup) * [MacOS](#macos) * [Nix](#nix) diff --git a/app/Env.hs b/app/Env.hs index a5ae2a3..6cf8c90 100644 --- a/app/Env.hs +++ b/app/Env.hs @@ -15,13 +15,13 @@ import Data.Set qualified as Set import Data.Text qualified as Text import Data.Text.Encoding qualified as Text import Database.Redis qualified as Redis -import Enlil.Env -import Enlil.JWT qualified as JWT -import Enlil.Prelude -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Web.Authentication (cookieSessionTTL) +import Share.Env +import Share.JWT qualified as JWT +import Share.Prelude +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Web.Authentication (cookieSessionTTL) import Hasql.Pool qualified as Pool import Network.URI (parseURI) import Servant.API qualified as Servant @@ -35,42 +35,42 @@ import Unison.Runtime.Interface as RT withEnv :: (Env () -> IO a) -> IO a withEnv action = do - apiOrigin <- fromEnv "ENLIL_API_ORIGIN" (pure . maybeToEither "Invalid ENLIL_API_ORIGIN" . parseURI) - serverPort <- fromEnv "ENLIL_SERVER_PORT" readPort + apiOrigin <- fromEnv "SHARE_API_ORIGIN" (pure . maybeToEither "Invalid SHARE_API_ORIGIN" . parseURI) + serverPort <- fromEnv "SHARE_SERVER_PORT" readPort shouldCheckForMigration <- - lookupEnv "ENLIL_MIGRATE_ON_STARTUP" <&> \case + lookupEnv "SHARE_MIGRATE_ON_STARTUP" <&> \case Nothing -> False Just val -> case map Char.toLower val of 'f' : _ -> False '0' : _ -> False [] -> False _ -> True - postgresConfig <- fromEnv "ENLIL_POSTGRES" (pure . Right . Text.pack) - postgresConnMax <- fromEnv "ENLIL_POSTGRES_CONN_MAX" (pure . maybeToEither "Invalid ENLIL_POSTGRES_CONN_MAX" . readMaybe) - githubClientID <- fromEnv "ENLIL_GITHUB_CLIENTID" (pure . Right . Text.pack) - githubClientSecret <- fromEnv "ENLIL_GITHUB_CLIENT_SECRET" (pure . Right . Text.pack) - hs256Key <- fromEnv "ENLIL_HMAC_KEY" (pure . Right . BS.pack) - zendeskAPIUser <- fromEnv "ENLIL_ZENDESK_API_USER" (pure . Right . BS.pack) - zendeskAPIToken <- fromEnv "ENLIL_ZENDESK_API_TOKEN" (pure . Right . BS.pack) + postgresConfig <- fromEnv "SHARE_POSTGRES" (pure . Right . Text.pack) + postgresConnMax <- fromEnv "SHARE_POSTGRES_CONN_MAX" (pure . maybeToEither "Invalid SHARE_POSTGRES_CONN_MAX" . readMaybe) + githubClientID <- fromEnv "SHARE_GITHUB_CLIENTID" (pure . Right . Text.pack) + githubClientSecret <- fromEnv "SHARE_GITHUB_CLIENT_SECRET" (pure . Right . Text.pack) + hs256Key <- fromEnv "SHARE_HMAC_KEY" (pure . Right . BS.pack) + zendeskAPIUser <- fromEnv "SHARE_ZENDESK_API_USER" (pure . Right . BS.pack) + zendeskAPIToken <- fromEnv "SHARE_ZENDESK_API_TOKEN" (pure . Right . BS.pack) let zendeskAuth = Servant.BasicAuthData zendeskAPIUser zendeskAPIToken - commitHash <- fromEnv "ENLIL_COMMIT" (pure . Right . Text.pack) + commitHash <- fromEnv "SHARE_COMMIT" (pure . Right . Text.pack) minLogSeverity <- - lookupEnv "ENLIL_LOG_LEVEL" >>= \case + lookupEnv "SHARE_LOG_LEVEL" >>= \case Nothing -> pure Logging.Info Just (map toUpper -> "DEBUG") -> pure Logging.Debug Just (map toUpper -> "INFO") -> pure Logging.Info Just (map toUpper -> "ERROR") -> pure Logging.Error Just (map toUpper -> "USERERROR") -> pure Logging.UserFault Just x -> putStrLn ("Unknown logging level: " <> x) >> exitWith (ExitFailure 1) - shareUiOrigin <- fromEnv "ENLIL_SHARE_UI_ORIGIN" (pure . maybeToEither "Invalid ENLIL_SHARE_UI_ORIGIN" . parseURI) - websiteOrigin <- fromEnv "ENLIL_HOMEPAGE_ORIGIN" (pure . maybeToEither "Invalid ENLIL_HOMEPAGE_ORIGIN" . parseURI) - cloudUiOrigin <- fromEnv "ENLIL_CLOUD_UI_ORIGIN" (pure . maybeToEither "Invalid ENLIL_CLOUD_UI_ORIGIN" . parseURI) - maxParallelismPerDownloadRequest <- fromEnv "ENLIL_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST" (pure . maybeToEither "Invalid ENLIL_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST" . readMaybe) - maxParallelismPerUploadRequest <- fromEnv "ENLIL_MAX_PARALLELISM_PER_UPLOAD_REQUEST" (pure . maybeToEither "Invalid ENLIL_MAX_PARALLELISM_PER_UPLOAD_REQUEST" . readMaybe) - cloudWebsiteOrigin <- fromEnv "ENLIL_CLOUD_HOMEPAGE_ORIGIN" (pure . maybeToEither "Invalid ENLIL_CLOUD_HOMEPAGE_ORIGIN" . parseURI) + shareUiOrigin <- fromEnv "SHARE_SHARE_UI_ORIGIN" (pure . maybeToEither "Invalid SHARE_SHARE_UI_ORIGIN" . parseURI) + websiteOrigin <- fromEnv "SHARE_HOMEPAGE_ORIGIN" (pure . maybeToEither "Invalid SHARE_HOMEPAGE_ORIGIN" . parseURI) + cloudUiOrigin <- fromEnv "SHARE_CLOUD_UI_ORIGIN" (pure . maybeToEither "Invalid SHARE_CLOUD_UI_ORIGIN" . parseURI) + maxParallelismPerDownloadRequest <- fromEnv "SHARE_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST" (pure . maybeToEither "Invalid SHARE_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST" . readMaybe) + maxParallelismPerUploadRequest <- fromEnv "SHARE_MAX_PARALLELISM_PER_UPLOAD_REQUEST" (pure . maybeToEither "Invalid SHARE_MAX_PARALLELISM_PER_UPLOAD_REQUEST" . readMaybe) + cloudWebsiteOrigin <- fromEnv "SHARE_CLOUD_HOMEPAGE_ORIGIN" (pure . maybeToEither "Invalid SHARE_CLOUD_HOMEPAGE_ORIGIN" . parseURI) sentryService <- - lookupEnv "ENLIL_SENTRY_DSN" >>= \case + lookupEnv "SHARE_SENTRY_DSN" >>= \case Nothing -> do putStrLn "No Sentry configuration detected." Sentry.disabledRaven @@ -80,7 +80,7 @@ withEnv action = do Sentry.initRaven dsn sentryTags Sentry.sendRecord Sentry.stderrFallback redisConfig <- - (fromEnv "ENLIL_REDIS" (pure . Redis.parseConnectInfo)) <&> \r -> + (fromEnv "SHARE_REDIS" (pure . Redis.parseConnectInfo)) <&> \r -> let tlsParams | Deployment.onLocal = Nothing | otherwise = Nothing @@ -93,7 +93,7 @@ withEnv action = do pgConnectionPool <- Pool.acquire postgresConnMax Nothing (Text.encodeUtf8 postgresConfig) timeCache <- FL.newTimeCache FL.simpleTimeFormat -- E.g. 05/Sep/2023:13:23:56 -0700 - sandboxedRuntime <- RT.startRuntime True RT.Persistent "enlil" + sandboxedRuntime <- RT.startRuntime True RT.Persistent "share" let requestCtx = () -- We use a zero-width-space to separate log-lines on ingestion, this allows us to use newlines for -- formatting, but without affecting log-grouping. @@ -101,7 +101,7 @@ withEnv action = do FL.withFastLogger (FL.LogStderr FL.defaultBufSize) $ \logger -> do action $ Env {logger = (logger . (\msg -> zeroWidthSpace <> msg <> "\n")), ..} where - readPort p = pure $ maybeToRight "ENLIL_PORT was not a number" (readMaybe p) + readPort p = pure $ maybeToRight "SHARE_PORT was not a number" (readMaybe p) fromEnv :: String -> (String -> IO (Either String a)) -> IO a fromEnv var from = do diff --git a/app/Main.hs b/app/Main.hs index 5c50a47..54fceb4 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,6 +1,6 @@ module Main where -import Enlil +import Share import Env (withEnv) main :: IO () diff --git a/docker/Dockerfile b/docker/Dockerfile index 7de6000..3cdaaed 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,18 +1,18 @@ FROM debian:bookworm RUN apt-get update && apt-get install -y ssl-cert libpq5 ca-certificates curl locales -RUN openssl genrsa -out /etc/ssl/private/enlil.key &&\ +RUN openssl genrsa -out /etc/ssl/private/share.key &&\ echo "C.UTF-8 UTF-8" > /etc/locale.gen &&\ dpkg-reconfigure --frontend=noninteractive locales &&\ update-locale LANG=C.UTF-8 ENV LANG=C.UTF-8 -COPY enlil-entrypoint.sh /usr/local/bin/enlil-entrypoint -RUN chmod 555 /usr/local/bin/enlil-entrypoint +COPY share-entrypoint.sh /usr/local/bin/share-entrypoint +RUN chmod 555 /usr/local/bin/share-entrypoint -COPY tmp/enlil-exe /usr/local/bin/enlil -RUN chmod 555 /usr/local/bin/enlil +COPY tmp/share-api /usr/local/bin/share +RUN chmod 555 /usr/local/bin/share -ENTRYPOINT /usr/local/bin/enlil-entrypoint +ENTRYPOINT /usr/local/bin/share-entrypoint -ARG ENLIL_COMMIT -ENV ENLIL_COMMIT=$ENLIL_COMMIT +ARG SHARE_COMMIT +ENV SHARE_COMMIT=$SHARE_COMMIT diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 0d09473..f92ce9b 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -52,32 +52,32 @@ services: environment: # Placeholder values for development - - ENLIL_API_ORIGIN=http://enlil - - ENLIL_SERVER_PORT=5424 - - ENLIL_ADMIN_PORT=5425 - - ENLIL_CLIENT_HOSTNAME=0.0.0.0 - - ENLIL_CLIENT_PORT=5426 - - ENLIL_REDIS=redis://redis:6379 - - ENLIL_POSTGRES=postgresql://postgres:sekrit@postgres:5432 - - ENLIL_HMAC_KEY=test-key-test-key-test-key-test-key- - - ENLIL_DEPLOYMENT=local - - ENLIL_IP=enlil - - ENLIL_AWS_CREDENTIAL_URL=invalid + - SHARE_API_ORIGIN=http://share-api + - SHARE_SERVER_PORT=5424 + - SHARE_ADMIN_PORT=5425 + - SHARE_CLIENT_HOSTNAME=0.0.0.0 + - SHARE_CLIENT_PORT=5426 + - SHARE_REDIS=redis://redis:6379 + - SHARE_POSTGRES=postgresql://postgres:sekrit@postgres:5432 + - SHARE_HMAC_KEY=test-key-test-key-test-key-test-key- + - SHARE_DEPLOYMENT=local + - SHARE_IP=share-api + - SHARE_AWS_CREDENTIAL_URL=invalid - AWS_REGION=invalid - - ENLIL_POSTGRES_CONN_TTL=30 - - ENLIL_POSTGRES_CONN_MAX=10 - - ENLIL_SHARE_UI_ORIGIN=http://localhost:1234 - - ENLIL_CLOUD_UI_ORIGIN=http://localhost:5678 - - ENLIL_HOMEPAGE_ORIGIN=http://localhost:1111 - - ENLIL_CLOUD_HOMEPAGE_ORIGIN=http://localhost:2222 - - ENLIL_LOG_LEVEL=DEBUG - - ENLIL_COMMIT=dev - - ENLIL_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST=1 - - ENLIL_MAX_PARALLELISM_PER_UPLOAD_REQUEST=5 - - ENLIL_ZENDESK_API_USER=invaliduser@example.com - - ENLIL_ZENDESK_API_TOKEN=bad-password - - ENLIL_GITHUB_CLIENTID=invalid - - ENLIL_GITHUB_CLIENT_SECRET=invalid + - SHARE_POSTGRES_CONN_TTL=30 + - SHARE_POSTGRES_CONN_MAX=10 + - SHARE_SHARE_UI_ORIGIN=http://localhost:1234 + - SHARE_CLOUD_UI_ORIGIN=http://localhost:5678 + - SHARE_HOMEPAGE_ORIGIN=http://localhost:1111 + - SHARE_CLOUD_HOMEPAGE_ORIGIN=http://localhost:2222 + - SHARE_LOG_LEVEL=DEBUG + - SHARE_COMMIT=dev + - SHARE_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST=1 + - SHARE_MAX_PARALLELISM_PER_UPLOAD_REQUEST=5 + - SHARE_ZENDESK_API_USER=invaliduser@example.com + - SHARE_ZENDESK_API_TOKEN=bad-password + - SHARE_GITHUB_CLIENTID=invalid + - SHARE_GITHUB_CLIENT_SECRET=invalid - AWS_ACCESS_KEY_ID=invalid - AWS_SECRET_ACCESS_KEY=invalid diff --git a/docker/enlil-entrypoint.sh b/docker/enlil-entrypoint.sh deleted file mode 100644 index 88b5847..0000000 --- a/docker/enlil-entrypoint.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -set -ex - -echo ENLIL_REDIS: "$ENLIL_REDIS" - -if [ -n "$NOMAD_PORT_enlil_tcp" ]; then - export ENLIL_CLIENT_PORT="$NOMAD_PORT_enlil_tcp" -fi - -if [ -n "$NOMAD_IP_enlil_tcp" ]; then - export ENLIL_CLIENT_HOSTNAME="$NOMAD_IP_enlil_tcp" -fi - -if [ -n "$NOMAD_PORT_enlil_http" ]; then - export ENLIL_SERVER_PORT="$NOMAD_PORT_enlil_http" -fi - -export ENLIL_IP=0.0.0.0 - -exec 2>&1 -exec /usr/local/bin/enlil diff --git a/docker/share-entrypoint.sh b/docker/share-entrypoint.sh new file mode 100644 index 0000000..c557c20 --- /dev/null +++ b/docker/share-entrypoint.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -ex + +echo SHARE_REDIS: "$SHARE_REDIS" + +if [ -n "$NOMAD_PORT_share_tcp" ]; then + export SHARE_CLIENT_PORT="$NOMAD_PORT_share_tcp" +fi + +if [ -n "$NOMAD_IP_share_tcp" ]; then + export SHARE_CLIENT_HOSTNAME="$NOMAD_IP_share_tcp" +fi + +if [ -n "$NOMAD_PORT_share_http" ]; then + export SHARE_SERVER_PORT="$NOMAD_PORT_share_http" +fi + +export SHARE_IP=0.0.0.0 + +exec 2>&1 +exec /usr/local/bin/share diff --git a/enlil-auth/README.md b/enlil-auth/README.md deleted file mode 100644 index ba67c66..0000000 --- a/enlil-auth/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# enlil-auth - -Batteries-included helpers for using Enlil as an auth server. - -Start at `serviceProviderServer` in `Enlil.OAuth.ServiceProvider` and follow -the docs/types from there! - -You can then use `Enlil.OAuth.Session.AuthenticatedSession` in your routes to authenticate callers. diff --git a/enlil-auth/example/README.md b/enlil-auth/example/README.md deleted file mode 100644 index 07fbfa4..0000000 --- a/enlil-auth/example/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# test-auth-app - -A tiny app which shows how to use the enlil-auth lib to wire up auth against Share. diff --git a/enlil-utils/README.md b/enlil-utils/README.md deleted file mode 100644 index 213f0bf..0000000 --- a/enlil-utils/README.md +++ /dev/null @@ -1 +0,0 @@ -# enlil-auth diff --git a/flake.nix b/flake.nix index 3a5f92e..e99d805 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Nix support for developing enlil"; + description = "Nix support for developing share"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; @@ -17,7 +17,7 @@ (with pkgs.darwin.apple_sdk.frameworks; [ Cocoa ]); - enlil-env = pkgs.mkShell { + share-env = pkgs.mkShell { packages = let exports = self.packages."${system}"; in with pkgs; [ @@ -53,7 +53,7 @@ pkgs = pkgs; - devShells.default = enlil-env; + devShells.default = share-env; packages = { ormolu = pkgs.ormolu; diff --git a/hie.yaml b/hie.yaml index 8b8c6fd..b9a338f 100644 --- a/hie.yaml +++ b/hie.yaml @@ -1,22 +1,22 @@ cradle: stack: - path: "./src" - component: "enlil:lib" + component: "share-api:lib" - path: "./app/Main.hs" - component: "enlil:exe:enlil-exe" + component: "share-api:exe:share-api" - path: "./app/Env.hs" - component: "enlil:exe:enlil-exe" + component: "share-api:exe:share-api" - - path: "./enlil-auth/src" - component: "enlil-auth:lib" + - path: "./share-auth/src" + component: "share-auth:lib" - - path: "./enlil-auth/src" - component: "enlil-auth:lib" + - path: "./share-auth/src" + component: "share-auth:lib" - - path: "./enlil-utils/src" - component: "enlil-utils:lib" + - path: "./share-utils/src" + component: "share-utils:lib" - path: "unison/codebase2/codebase/./" component: "unison-codebase:lib" diff --git a/local.env b/local.env index acd7027..b22c79b 100644 --- a/local.env +++ b/local.env @@ -2,31 +2,31 @@ # Stub environment -export ENLIL_DEPLOYMENT=local -export ENLIL_IP=enlil -export ENLIL_API_ORIGIN=http://localhost:5424 -export ENLIL_SERVER_PORT=5424 -export ENLIL_ADMIN_PORT=5425 -export ENLIL_AWS_CREDENTIAL_URL="invalid" +export SHARE_DEPLOYMENT=local +export SHARE_IP=share-api +export SHARE_API_ORIGIN=http://localhost:5424 +export SHARE_SERVER_PORT=5424 +export SHARE_ADMIN_PORT=5425 +export SHARE_AWS_CREDENTIAL_URL="invalid" export AWS_REGION="invalid" -export ENLIL_REDIS=redis://localhost:6379 -export ENLIL_POSTGRES=postgresql://postgres:sekrit@localhost:5432 -export ENLIL_POSTGRES_CONN_TTL=30 -export ENLIL_POSTGRES_CONN_MAX=10 -export ENLIL_HMAC_KEY="test-key-test-key-test-key-test-key-" -export ENLIL_SHARE_UI_ORIGIN="http://localhost:1234" -export ENLIL_CLOUD_UI_ORIGIN="http://localhost:5678" -export ENLIL_HOMEPAGE_ORIGIN="http://localhost:1111" -export ENLIL_CLOUD_HOMEPAGE_ORIGIN="http://localhost:2222" -export ENLIL_LOG_LEVEL="DEBUG" -export ENLIL_COMMIT="dev" -export ENLIL_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST="1" -export ENLIL_MAX_PARALLELISM_PER_UPLOAD_REQUEST="5" +export SHARE_REDIS=redis://localhost:6379 +export SHARE_POSTGRES=postgresql://postgres:sekrit@localhost:5432 +export SHARE_POSTGRES_CONN_TTL=30 +export SHARE_POSTGRES_CONN_MAX=10 +export SHARE_HMAC_KEY="test-key-test-key-test-key-test-key-" +export SHARE_SHARE_UI_ORIGIN="http://localhost:1234" +export SHARE_CLOUD_UI_ORIGIN="http://localhost:5678" +export SHARE_HOMEPAGE_ORIGIN="http://localhost:1111" +export SHARE_CLOUD_HOMEPAGE_ORIGIN="http://localhost:2222" +export SHARE_LOG_LEVEL="DEBUG" +export SHARE_COMMIT="dev" +export SHARE_MAX_PARALLELISM_PER_DOWNLOAD_REQUEST="1" +export SHARE_MAX_PARALLELISM_PER_UPLOAD_REQUEST="5" # Placeholders, these features don't work on localhost. -export ENLIL_ZENDESK_API_USER="invaliduser@example.com" -export ENLIL_ZENDESK_API_TOKEN="bad-password" -export ENLIL_GITHUB_CLIENTID="invalid" -export ENLIL_GITHUB_CLIENT_SECRET="invalid" +export SHARE_ZENDESK_API_USER="invaliduser@example.com" +export SHARE_ZENDESK_API_TOKEN="bad-password" +export SHARE_GITHUB_CLIENTID="invalid" +export SHARE_GITHUB_CLIENT_SECRET="invalid" export AWS_ACCESS_KEY_ID="invalid" export AWS_SECRET_ACCESS_KEY="invalid" diff --git a/package.yaml b/package.yaml index babd2fc..708f1bc 100644 --- a/package.yaml +++ b/package.yaml @@ -1,6 +1,6 @@ -name: enlil +name: share-api version: 0.1.0.0 -github: "unisoncomputing/share" +github: "unisoncomputing/share-api" author: "Unison Computing" maintainer: "unison.cloud" copyright: "2024 Unison Computing" @@ -15,7 +15,7 @@ extra-source-files: # To avoid duplicated efforts in documentation and dealing with the # complications of embedding Haddock markup inside cabal files, it is # common to point users to the README.md file. -description: Please see the README on GitHub at +description: Please see the README on GitHub at ghc-options: - -Wall @@ -48,7 +48,7 @@ dependencies: - data-default - either - extra -- enlil-utils +- share-utils - fast-logger - filepath - free @@ -101,7 +101,7 @@ dependencies: - unison-core - unison-core1 - unison-hash -- enlil-auth +- share-auth - unison-hashing-v2 - unison-codebase-sqlite-hashing-v2 - unison-parser-typechecker @@ -164,13 +164,13 @@ library: source-dirs: src when: - condition: false - other-modules: Paths_enlil + other-modules: Paths_share_api executables: - enlil-exe: + share-api: when: - condition: false - other-modules: Paths_enlil + other-modules: Paths_share-api main: Main.hs source-dirs: app ghc-options: @@ -178,4 +178,4 @@ executables: - -rtsopts - '"-with-rtsopts=-N -A32m -qn2 -T"' dependencies: - - enlil + - share-api diff --git a/enlil.cabal b/share-api.cabal similarity index 61% rename from enlil.cabal rename to share-api.cabal index 0bd7522..4fae0bb 100644 --- a/enlil.cabal +++ b/share-api.cabal @@ -4,11 +4,11 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -name: enlil +name: share-api version: 0.1.0.0 -description: Please see the README on GitHub at -homepage: https://github.com/unisoncomputing/share#readme -bug-reports: https://github.com/unisoncomputing/share/issues +description: Please see the README on GitHub at +homepage: https://github.com/unisoncomputing/share-api#readme +bug-reports: https://github.com/unisoncomputing/share-api/issues author: Unison Computing maintainer: unison.cloud copyright: 2024 Unison Computing @@ -20,126 +20,126 @@ extra-source-files: source-repository head type: git - location: https://github.com/unisoncomputing/share + location: https://github.com/unisoncomputing/share-api library exposed-modules: - Enlil - Enlil.App - Enlil.Backend - Enlil.Branch - Enlil.Codebase - Enlil.Codebase.Types - Enlil.Contribution - Enlil.Env - Enlil.Github - Enlil.IDs - Enlil.Metrics - Enlil.Monitoring - Enlil.NamespaceDiffs - Enlil.Postgres - Enlil.Postgres.Admin - Enlil.Postgres.Authorization.Queries - Enlil.Postgres.Causal.Conversions - Enlil.Postgres.Causal.Queries - Enlil.Postgres.Causal.Types - Enlil.Postgres.Comments.Queries - Enlil.Postgres.Contributions.Queries - Enlil.Postgres.Definitions.Queries - Enlil.Postgres.Definitions.Types - Enlil.Postgres.Hashes.Queries - Enlil.Postgres.IDs - Enlil.Postgres.LooseCode.Queries - Enlil.Postgres.Metrics.Queries - Enlil.Postgres.NameLookups.Conversions - Enlil.Postgres.NameLookups.Ops - Enlil.Postgres.NameLookups.Queries - Enlil.Postgres.NameLookups.Types - Enlil.Postgres.NamespaceDiffs - Enlil.Postgres.Ops - Enlil.Postgres.Orphans - Enlil.Postgres.Patches.Queries - Enlil.Postgres.Patches.Types - Enlil.Postgres.Projects.Queries - Enlil.Postgres.Queries - Enlil.Postgres.Refs.Types - Enlil.Postgres.Serialization - Enlil.Postgres.Sync.Conversions - Enlil.Postgres.Sync.Queries - Enlil.Postgres.Sync.Types - Enlil.Postgres.Tickets.Queries - Enlil.Postgres.Users.Queries - Enlil.Prelude - Enlil.Prelude.Orphans - Enlil.Project - Enlil.Redis - Enlil.Release - Enlil.Ticket - Enlil.User - Enlil.UserProfile - Enlil.Utils.API - Enlil.Utils.Caching - Enlil.Utils.Logging - Enlil.Utils.Logging.Types - Enlil.Utils.Postgres - Enlil.Utils.Servant - Enlil.Utils.Servant.Client - Enlil.Utils.Servant.PathInfo - Enlil.Utils.Servant.RawRequest - Enlil.Utils.Unison - Enlil.Web.Admin.API - Enlil.Web.Admin.Impl - Enlil.Web.Admin.Types - Enlil.Web.API - Enlil.Web.App - Enlil.Web.Authentication - Enlil.Web.Authentication.AccessToken - Enlil.Web.Authentication.HashJWT - Enlil.Web.Authentication.JWT - Enlil.Web.Authentication.Types - Enlil.Web.Authorization - Enlil.Web.Authorization.Types - Enlil.Web.Errors - Enlil.Web.Impl - Enlil.Web.Local.API - Enlil.Web.Local.Impl - Enlil.Web.OAuth.Clients - Enlil.Web.OAuth.Impl - Enlil.Web.Share.API - Enlil.Web.Share.Branches.API - Enlil.Web.Share.Branches.Impl - Enlil.Web.Share.Branches.Types - Enlil.Web.Share.CodeBrowsing.API - Enlil.Web.Share.Comments - Enlil.Web.Share.Comments.API - Enlil.Web.Share.Comments.Impl - Enlil.Web.Share.Comments.Types - Enlil.Web.Share.Contributions.API - Enlil.Web.Share.Contributions.Impl - Enlil.Web.Share.Contributions.MergeDetection - Enlil.Web.Share.Contributions.Types - Enlil.Web.Share.Diffs.Impl - Enlil.Web.Share.Diffs.Types - Enlil.Web.Share.Impl - Enlil.Web.Share.Projects.API - Enlil.Web.Share.Projects.Impl - Enlil.Web.Share.Projects.Types - Enlil.Web.Share.Releases.API - Enlil.Web.Share.Releases.Impl - Enlil.Web.Share.Releases.Types - Enlil.Web.Share.Tickets.API - Enlil.Web.Share.Tickets.Impl - Enlil.Web.Share.Tickets.Types - Enlil.Web.Share.Types - Enlil.Web.Support.API - Enlil.Web.Support.Impl - Enlil.Web.Support.Types - Enlil.Web.Support.Zendesk - Enlil.Web.Types - Enlil.Web.UCM.Projects.Impl - Enlil.Web.UCM.Sync.HashJWT - Enlil.Web.UCM.Sync.Impl - Enlil.Web.UCM.Sync.Types + Share + Share.App + Share.Backend + Share.Branch + Share.Codebase + Share.Codebase.Types + Share.Contribution + Share.Env + Share.Github + Share.IDs + Share.Metrics + Share.Monitoring + Share.NamespaceDiffs + Share.Postgres + Share.Postgres.Admin + Share.Postgres.Authorization.Queries + Share.Postgres.Causal.Conversions + Share.Postgres.Causal.Queries + Share.Postgres.Causal.Types + Share.Postgres.Comments.Queries + Share.Postgres.Contributions.Queries + Share.Postgres.Definitions.Queries + Share.Postgres.Definitions.Types + Share.Postgres.Hashes.Queries + Share.Postgres.IDs + Share.Postgres.LooseCode.Queries + Share.Postgres.Metrics.Queries + Share.Postgres.NameLookups.Conversions + Share.Postgres.NameLookups.Ops + Share.Postgres.NameLookups.Queries + Share.Postgres.NameLookups.Types + Share.Postgres.NamespaceDiffs + Share.Postgres.Ops + Share.Postgres.Orphans + Share.Postgres.Patches.Queries + Share.Postgres.Patches.Types + Share.Postgres.Projects.Queries + Share.Postgres.Queries + Share.Postgres.Refs.Types + Share.Postgres.Serialization + Share.Postgres.Sync.Conversions + Share.Postgres.Sync.Queries + Share.Postgres.Sync.Types + Share.Postgres.Tickets.Queries + Share.Postgres.Users.Queries + Share.Prelude + Share.Prelude.Orphans + Share.Project + Share.Redis + Share.Release + Share.Ticket + Share.User + Share.UserProfile + Share.Utils.API + Share.Utils.Caching + Share.Utils.Logging + Share.Utils.Logging.Types + Share.Utils.Postgres + Share.Utils.Servant + Share.Utils.Servant.Client + Share.Utils.Servant.PathInfo + Share.Utils.Servant.RawRequest + Share.Utils.Unison + Share.Web.Admin.API + Share.Web.Admin.Impl + Share.Web.Admin.Types + Share.Web.API + Share.Web.App + Share.Web.Authentication + Share.Web.Authentication.AccessToken + Share.Web.Authentication.HashJWT + Share.Web.Authentication.JWT + Share.Web.Authentication.Types + Share.Web.Authorization + Share.Web.Authorization.Types + Share.Web.Errors + Share.Web.Impl + Share.Web.Local.API + Share.Web.Local.Impl + Share.Web.OAuth.Clients + Share.Web.OAuth.Impl + Share.Web.Share.API + Share.Web.Share.Branches.API + Share.Web.Share.Branches.Impl + Share.Web.Share.Branches.Types + Share.Web.Share.CodeBrowsing.API + Share.Web.Share.Comments + Share.Web.Share.Comments.API + Share.Web.Share.Comments.Impl + Share.Web.Share.Comments.Types + Share.Web.Share.Contributions.API + Share.Web.Share.Contributions.Impl + Share.Web.Share.Contributions.MergeDetection + Share.Web.Share.Contributions.Types + Share.Web.Share.Diffs.Impl + Share.Web.Share.Diffs.Types + Share.Web.Share.Impl + Share.Web.Share.Projects.API + Share.Web.Share.Projects.Impl + Share.Web.Share.Projects.Types + Share.Web.Share.Releases.API + Share.Web.Share.Releases.Impl + Share.Web.Share.Releases.Types + Share.Web.Share.Tickets.API + Share.Web.Share.Tickets.Impl + Share.Web.Share.Tickets.Types + Share.Web.Share.Types + Share.Web.Support.API + Share.Web.Support.Impl + Share.Web.Support.Types + Share.Web.Support.Zendesk + Share.Web.Types + Share.Web.UCM.Projects.Impl + Share.Web.UCM.Sync.HashJWT + Share.Web.UCM.Sync.Impl + Share.Web.UCM.Sync.Types Unison.PrettyPrintEnvDecl.Postgres Unison.Server.NameSearch.Postgres Unison.Server.Share.Definitions @@ -200,8 +200,6 @@ library , cryptonite , data-default , either - , enlil-auth - , enlil-utils , extra , fast-logger , filepath @@ -241,6 +239,8 @@ library , servant-auth , servant-client , servant-server + , share-auth + , share-utils , stm , stm-chans , stm-conduit @@ -283,10 +283,11 @@ library , x509-store default-language: Haskell2010 -executable enlil-exe +executable share-api main-is: Main.hs other-modules: Env + Paths_share_api hs-source-dirs: app default-extensions: @@ -338,9 +339,6 @@ executable enlil-exe , cryptonite , data-default , either - , enlil - , enlil-auth - , enlil-utils , extra , fast-logger , filepath @@ -380,6 +378,9 @@ executable enlil-exe , servant-auth , servant-client , servant-server + , share-api + , share-auth + , share-utils , stm , stm-chans , stm-conduit diff --git a/enlil-auth/.gitignore b/share-auth/.gitignore similarity index 100% rename from enlil-auth/.gitignore rename to share-auth/.gitignore diff --git a/enlil-auth/LICENSE b/share-auth/LICENSE similarity index 100% rename from enlil-auth/LICENSE rename to share-auth/LICENSE diff --git a/share-auth/README.md b/share-auth/README.md new file mode 100644 index 0000000..70fdb5e --- /dev/null +++ b/share-auth/README.md @@ -0,0 +1,8 @@ +# share-auth + +Batteries-included helpers for using Share as an auth server. + +Start at `serviceProviderServer` in `Share.OAuth.ServiceProvider` and follow +the docs/types from there! + +You can then use `Share.OAuth.Session.AuthenticatedSession` in your routes to authenticate callers. diff --git a/enlil-auth/Setup.hs b/share-auth/Setup.hs similarity index 100% rename from enlil-auth/Setup.hs rename to share-auth/Setup.hs diff --git a/enlil-auth/example/.gitignore b/share-auth/example/.gitignore similarity index 100% rename from enlil-auth/example/.gitignore rename to share-auth/example/.gitignore diff --git a/enlil-auth/example/LICENSE b/share-auth/example/LICENSE similarity index 100% rename from enlil-auth/example/LICENSE rename to share-auth/example/LICENSE diff --git a/share-auth/example/README.md b/share-auth/example/README.md new file mode 100644 index 0000000..f275d80 --- /dev/null +++ b/share-auth/example/README.md @@ -0,0 +1,3 @@ +# test-auth-app + +A tiny app which shows how to use the share-auth lib to wire up auth against Share. diff --git a/enlil-auth/example/Setup.hs b/share-auth/example/Setup.hs similarity index 100% rename from enlil-auth/example/Setup.hs rename to share-auth/example/Setup.hs diff --git a/enlil-auth/example/app/Main.hs b/share-auth/example/app/Main.hs similarity index 100% rename from enlil-auth/example/app/Main.hs rename to share-auth/example/app/Main.hs diff --git a/enlil-auth/example/hie.yaml b/share-auth/example/hie.yaml similarity index 100% rename from enlil-auth/example/hie.yaml rename to share-auth/example/hie.yaml diff --git a/enlil-auth/example/package.yaml b/share-auth/example/package.yaml similarity index 96% rename from enlil-auth/example/package.yaml rename to share-auth/example/package.yaml index c172051..496c493 100644 --- a/enlil-auth/example/package.yaml +++ b/share-auth/example/package.yaml @@ -1,6 +1,6 @@ name: test-auth-app version: 0.1.0.0 -github: "unisoncomputing/share" +github: "unisoncomputing/share-api" author: "unison.cloud" maintainer: "unison.cloud" copyright: "2024 Unison Computing" @@ -20,8 +20,8 @@ description: Please see the README on GitHub at = 4.7 && < 5 - containers -- enlil-auth -- enlil-utils +- share-auth +- share-utils - hedis - network-uri - servant diff --git a/enlil-auth/example/src/Lib.hs b/share-auth/example/src/Lib.hs similarity index 89% rename from enlil-auth/example/src/Lib.hs rename to share-auth/example/src/Lib.hs index 48b8d91..11fdd58 100644 --- a/enlil-auth/example/src/Lib.hs +++ b/share-auth/example/src/Lib.hs @@ -8,16 +8,16 @@ import Data.Set qualified as Set import Data.Text (Text) import Data.Time (DiffTime) import Database.Redis qualified as R -import Enlil.JWT qualified as JWT -import Enlil.OAuth.API (ServiceProviderAPI) -import Enlil.OAuth.IdentityProvider.Share qualified as Share -import Enlil.OAuth.Scopes (Scopes (..)) -import Enlil.OAuth.Scopes qualified as Scopes -import Enlil.OAuth.ServiceProvider (ServiceProviderConfig (..), SessionCallbackData) -import Enlil.OAuth.ServiceProvider qualified as Auth -import Enlil.OAuth.Session (AuthCheckCtx, AuthenticatedUserId, MaybeAuthenticatedUserId, addAuthCheckCtx) -import Enlil.OAuth.Types (OAuthClientId (..), OAuthClientSecret (OAuthClientSecret), RedirectReceiverErr, UserId) -import Enlil.Utils.Servant.Cookies qualified as Cookies +import Share.JWT qualified as JWT +import Share.OAuth.API (ServiceProviderAPI) +import Share.OAuth.IdentityProvider.Share qualified as Share +import Share.OAuth.Scopes (Scopes (..)) +import Share.OAuth.Scopes qualified as Scopes +import Share.OAuth.ServiceProvider (ServiceProviderConfig (..), SessionCallbackData) +import Share.OAuth.ServiceProvider qualified as Auth +import Share.OAuth.Session (AuthCheckCtx, AuthenticatedUserId, MaybeAuthenticatedUserId, addAuthCheckCtx) +import Share.OAuth.Types (OAuthClientId (..), OAuthClientSecret (OAuthClientSecret), RedirectReceiverErr, UserId) +import Share.Utils.Servant.Cookies qualified as Cookies import GHC.Stack (HasCallStack) import Network.URI qualified as URI import Network.Wai.Handler.Warp qualified as Warp @@ -109,7 +109,7 @@ main = do cookieSettings :: Cookies.CookieSettings cookieSettings = Cookies.defaultCookieSettings onLocal cookieDefaultTTL jwtSettings :: JWT.JWTSettings - jwtSettings = JWT.defaultJWTSettings hs256Key acceptedAudiences enlilIssuer + jwtSettings = JWT.defaultJWTSettings hs256Key acceptedAudiences issuer spConfig :: ServiceProviderConfig spConfig = ServiceProviderConfig @@ -128,4 +128,4 @@ main = do api = unsafeURI "http://cloud:3030" serviceAudience = api acceptedAudiences = Set.singleton serviceAudience - enlilIssuer = unsafeURI "http://localhost:5424" + issuer = unsafeURI "http://localhost:5424" diff --git a/enlil-auth/example/stack.yaml b/share-auth/example/stack.yaml similarity index 80% rename from enlil-auth/example/stack.yaml rename to share-auth/example/stack.yaml index ce5edce..c70daa5 100644 --- a/enlil-auth/example/stack.yaml +++ b/share-auth/example/stack.yaml @@ -3,7 +3,7 @@ resolver: lts-20.26 packages: - . - ../ -- ../../enlil-utils +- ../../share-utils extra-deps: - hasql-interpolate-0.1.0.4 diff --git a/enlil-auth/example/stack.yaml.lock b/share-auth/example/stack.yaml.lock similarity index 100% rename from enlil-auth/example/stack.yaml.lock rename to share-auth/example/stack.yaml.lock diff --git a/enlil-auth/example/test-auth-app.cabal b/share-auth/example/test-auth-app.cabal similarity index 93% rename from enlil-auth/example/test-auth-app.cabal rename to share-auth/example/test-auth-app.cabal index 63f24e2..4ad6939 100644 --- a/enlil-auth/example/test-auth-app.cabal +++ b/share-auth/example/test-auth-app.cabal @@ -7,8 +7,8 @@ cabal-version: 1.12 name: test-auth-app version: 0.1.0.0 description: Please see the README on GitHub at -homepage: https://github.com/unisoncomputing/share#readme -bug-reports: https://github.com/unisoncomputing/share/issues +homepage: https://github.com/unisoncomputing/share-api#readme +bug-reports: https://github.com/unisoncomputing/share-api/issues author: unison.cloud maintainer: unison.cloud copyright: 2024 Unison Computing @@ -20,7 +20,7 @@ extra-source-files: source-repository head type: git - location: https://github.com/unisoncomputing/share + location: https://github.com/unisoncomputing/share-api library exposed-modules: @@ -61,13 +61,13 @@ library build-depends: base >=4.7 && <5 , containers - , enlil-auth - , enlil-utils , hedis , network-uri , servant , servant-auth-server , servant-server + , share-auth + , share-utils , text , time , unliftio @@ -112,13 +112,13 @@ executable test-auth-app-exe build-depends: base >=4.7 && <5 , containers - , enlil-auth - , enlil-utils , hedis , network-uri , servant , servant-auth-server , servant-server + , share-auth + , share-utils , test-auth-app , text , time @@ -165,13 +165,13 @@ test-suite test-auth-app-test build-depends: base >=4.7 && <5 , containers - , enlil-auth - , enlil-utils , hedis , network-uri , servant , servant-auth-server , servant-server + , share-auth + , share-utils , test-auth-app , text , time diff --git a/enlil-auth/example/test/Spec.hs b/share-auth/example/test/Spec.hs similarity index 100% rename from enlil-auth/example/test/Spec.hs rename to share-auth/example/test/Spec.hs diff --git a/enlil-auth/package.yaml b/share-auth/package.yaml similarity index 92% rename from enlil-auth/package.yaml rename to share-auth/package.yaml index aacde9e..9456a97 100644 --- a/enlil-auth/package.yaml +++ b/share-auth/package.yaml @@ -1,6 +1,6 @@ -name: enlil-auth +name: share-auth version: 0.1.0.0 -github: "unisoncomputing/enlil" +github: "unisoncomputing/share-api" author: "Unison Computing" maintainer: "unison.cloud" copyright: "2024 Unison Computing" @@ -15,7 +15,7 @@ extra-source-files: # To avoid duplicated efforts in documentation and dealing with the # complications of embedding Haddock markup inside cabal files, it is # common to point users to the README.md file. -description: Please see the README on GitHub at +description: Please see the README on GitHub at ghc-options: - -Wall @@ -70,7 +70,7 @@ dependencies: - containers - cookie - cryptonite -- enlil-utils +- share-utils - hasql - hasql-interpolate - hedis diff --git a/enlil-auth/enlil-auth.cabal b/share-auth/share-auth.cabal similarity index 76% rename from enlil-auth/enlil-auth.cabal rename to share-auth/share-auth.cabal index 24d9b34..839ba5d 100644 --- a/enlil-auth/enlil-auth.cabal +++ b/share-auth/share-auth.cabal @@ -4,11 +4,11 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -name: enlil-auth +name: share-auth version: 0.1.0.0 -description: Please see the README on GitHub at -homepage: https://github.com/unisoncomputing/enlil#readme -bug-reports: https://github.com/unisoncomputing/enlil/issues +description: Please see the README on GitHub at +homepage: https://github.com/unisoncomputing/share-api#readme +bug-reports: https://github.com/unisoncomputing/share-api/issues author: Unison Computing maintainer: unison.cloud copyright: 2024 Unison Computing @@ -20,23 +20,23 @@ extra-source-files: source-repository head type: git - location: https://github.com/unisoncomputing/enlil + location: https://github.com/unisoncomputing/share-api library exposed-modules: - Enlil.JWT - Enlil.OAuth.API - Enlil.OAuth.Errors - Enlil.OAuth.IdentityProvider.Share - Enlil.OAuth.IdentityProvider.Types - Enlil.OAuth.PKCE - Enlil.OAuth.Redis - Enlil.OAuth.Scopes - Enlil.OAuth.ServiceProvider - Enlil.OAuth.Session - Enlil.OAuth.Types + Share.JWT + Share.OAuth.API + Share.OAuth.Errors + Share.OAuth.IdentityProvider.Share + Share.OAuth.IdentityProvider.Types + Share.OAuth.PKCE + Share.OAuth.Redis + Share.OAuth.Scopes + Share.OAuth.ServiceProvider + Share.OAuth.Session + Share.OAuth.Types other-modules: - Paths_enlil_auth + Paths_share_auth hs-source-dirs: src default-extensions: @@ -79,7 +79,6 @@ library , containers , cookie , cryptonite - , enlil-utils , hasql , hasql-interpolate , hedis @@ -100,6 +99,7 @@ library , servant-client , servant-client-core , servant-server + , share-utils , text , time , transformers diff --git a/enlil-auth/src/Enlil/JWT.hs b/share-auth/src/Share/JWT.hs similarity index 98% rename from enlil-auth/src/Enlil/JWT.hs rename to share-auth/src/Share/JWT.hs index 1275d18..ff63b08 100644 --- a/enlil-auth/src/Enlil/JWT.hs +++ b/share-auth/src/Share/JWT.hs @@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.JWT +module Share.JWT ( JWTSettings (..), defaultJWTSettings, JWTParam (..), @@ -35,8 +35,8 @@ import Data.Text qualified as Text import Data.Text.Lazy qualified as TL import Data.Text.Lazy.Encoding qualified as TL import Data.Typeable (Typeable, typeRep) -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Utils.Show (Censored (..)) +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Utils.Show (Censored (..)) import Servant import Servant.Auth.Server qualified as ServantAuth diff --git a/enlil-auth/src/Enlil/OAuth/API.hs b/share-auth/src/Share/OAuth/API.hs similarity index 94% rename from enlil-auth/src/Enlil/OAuth/API.hs rename to share-auth/src/Share/OAuth/API.hs index a913118..c09f02a 100644 --- a/enlil-auth/src/Enlil/OAuth/API.hs +++ b/share-auth/src/Share/OAuth/API.hs @@ -5,7 +5,7 @@ -- Here's a high-level overview of OAuth2: https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc -- Here's a good reference guide to various steps: https://www.oauth.com/ -- Here's a good reference for PKCE specifically: https://www.oauth.com/oauth2-servers/pkce/ -module Enlil.OAuth.API +module Share.OAuth.API ( ServiceProviderAPI, IdentityProviderAPI, LoginEndpoint, @@ -17,11 +17,11 @@ module Enlil.OAuth.API where import Data.Text (Text) -import Enlil.OAuth.Scopes -import Enlil.OAuth.Session -import Enlil.OAuth.Types -import Enlil.Utils.Servant.Cookies (Cookie) -import Enlil.Utils.URI (URIParam) +import Share.OAuth.Scopes +import Share.OAuth.Session +import Share.OAuth.Types +import Share.Utils.Servant.Cookies (Cookie) +import Share.Utils.URI (URIParam) import Servant import Web.Cookie (SetCookie) diff --git a/enlil-auth/src/Enlil/OAuth/Errors.hs b/share-auth/src/Share/OAuth/Errors.hs similarity index 92% rename from enlil-auth/src/Enlil/OAuth/Errors.hs rename to share-auth/src/Share/OAuth/Errors.hs index 9eb54f6..fe10376 100644 --- a/enlil-auth/src/Enlil/OAuth/Errors.hs +++ b/share-auth/src/Share/OAuth/Errors.hs @@ -2,7 +2,7 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.OAuth.Errors +module Share.OAuth.Errors ( OAuth2ErrorCode (..), OAuth2Error (..), OAuth2ErrorRedirect (..), @@ -11,9 +11,9 @@ where import Control.Exception (Exception) import Data.Text (Text) -import Enlil.OAuth.Types (AuthenticationRequest (..), Code, OAuthClientId) -import Enlil.Utils.Show (tShow) -import Enlil.Utils.URI (URIParam) +import Share.OAuth.Types (AuthenticationRequest (..), Code, OAuthClientId) +import Share.Utils.Show (tShow) +import Share.Utils.URI (URIParam) import Servant -- | Represents an oauth2 error, and the information which should be included when redirecting diff --git a/enlil-auth/src/Enlil/OAuth/IdentityProvider/Share.hs b/share-auth/src/Share/OAuth/IdentityProvider/Share.hs similarity index 92% rename from enlil-auth/src/Enlil/OAuth/IdentityProvider/Share.hs rename to share-auth/src/Share/OAuth/IdentityProvider/Share.hs index 7a316ed..ff1bee6 100644 --- a/enlil-auth/src/Enlil/OAuth/IdentityProvider/Share.hs +++ b/share-auth/src/Share/OAuth/IdentityProvider/Share.hs @@ -2,7 +2,7 @@ {-# LANGUAGE DuplicateRecordFields #-} -- | Identity Provider preset for Share. -module Enlil.OAuth.IdentityProvider.Share +module Share.OAuth.IdentityProvider.Share ( productionShareIdentityProvider, stagingShareIdentityProvider, localShareIdentityProvider, @@ -13,13 +13,13 @@ where import Data.Function ((&)) import Data.Maybe (fromJust) import Data.Text (Text) -import Enlil.OAuth.API -import Enlil.OAuth.IdentityProvider.Types (IdentityProviderConfig (..)) -import Enlil.OAuth.Scopes -import Enlil.OAuth.Session -import Enlil.OAuth.Types -import Enlil.Utils.Deployment (Deployment (..)) -import Enlil.Utils.URI (URIParam (..), addQueryParam) +import Share.OAuth.API +import Share.OAuth.IdentityProvider.Types (IdentityProviderConfig (..)) +import Share.OAuth.Scopes +import Share.OAuth.Session +import Share.OAuth.Types +import Share.Utils.Deployment (Deployment (..)) +import Share.Utils.URI (URIParam (..), addQueryParam) import Network.HTTP.Client.TLS qualified as HTTP import Network.URI qualified as URI import Servant diff --git a/enlil-auth/src/Enlil/OAuth/IdentityProvider/Types.hs b/share-auth/src/Share/OAuth/IdentityProvider/Types.hs similarity index 77% rename from enlil-auth/src/Enlil/OAuth/IdentityProvider/Types.hs rename to share-auth/src/Share/OAuth/IdentityProvider/Types.hs index a45dd21..c4790f3 100644 --- a/enlil-auth/src/Enlil/OAuth/IdentityProvider/Types.hs +++ b/share-auth/src/Share/OAuth/IdentityProvider/Types.hs @@ -1,18 +1,18 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE DuplicateRecordFields #-} -module Enlil.OAuth.IdentityProvider.Types +module Share.OAuth.IdentityProvider.Types ( IdentityProviderConfig (..), ) where -import Enlil.OAuth.Scopes -import Enlil.OAuth.Types +import Share.OAuth.Scopes +import Share.OAuth.Types import Servant import Servant.Client -- | Methods needed to auth with an identity provider. --- See 'Enlil.OAuth.IdentityProvider.Share' for a preset. +-- See 'Share.OAuth.IdentityProvider.Share' for a preset. data IdentityProviderConfig = IdentityProviderConfig { exchangeCodeForToken :: OAuthClientId -> OAuthClientSecret -> Code -> URI -> PKCEVerifier -> IO (Either ClientError TokenResponse), authorizationURI :: URI -> OAuthClientId -> PendingSessionId -> PKCEChallenge -> PKCEChallengeMethod -> Scopes -> URI diff --git a/enlil-auth/src/Enlil/OAuth/PKCE.hs b/share-auth/src/Share/OAuth/PKCE.hs similarity index 90% rename from enlil-auth/src/Enlil/OAuth/PKCE.hs rename to share-auth/src/Share/OAuth/PKCE.hs index 377b358..c83ac78 100644 --- a/enlil-auth/src/Enlil/OAuth/PKCE.hs +++ b/share-auth/src/Share/OAuth/PKCE.hs @@ -2,14 +2,14 @@ -- https://datatracker.ietf.org/doc/html/rfc7636 -- -- Currently only supports the S256 method. -module Enlil.OAuth.PKCE (generatePkce, verifyPkce) where +module Share.OAuth.PKCE (generatePkce, verifyPkce) where import Control.Monad.Except import Crypto.Hash qualified as Crypto import Data.ByteArray.Encoding qualified as BE import Data.Text.Encoding qualified as Text -import Enlil.OAuth.Types -import Enlil.Utils.SecureTokens (newSecureToken) +import Share.OAuth.Types +import Share.Utils.SecureTokens (newSecureToken) -- | Generate a PKCE verifier and challenge using the S256 method. generatePkce :: MonadIO m => m (PKCEVerifier, PKCEChallenge, PKCEChallengeMethod) diff --git a/enlil-auth/src/Enlil/OAuth/Redis.hs b/share-auth/src/Share/OAuth/Redis.hs similarity index 93% rename from enlil-auth/src/Enlil/OAuth/Redis.hs rename to share-auth/src/Share/OAuth/Redis.hs index a496a59..9a3d2a3 100644 --- a/enlil-auth/src/Enlil/OAuth/Redis.hs +++ b/share-auth/src/Share/OAuth/Redis.hs @@ -4,7 +4,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.OAuth.Redis +module Share.OAuth.Redis ( newPendingSession, getPendingSession, PendingSession (..), @@ -29,16 +29,16 @@ import Data.Text.Encoding qualified as Text import Data.Time import Data.Typeable (TypeRep, typeRep) import Database.Redis qualified as R -import Enlil.OAuth.Errors qualified as OAuthError -import Enlil.OAuth.PKCE (verifyPkce) -import Enlil.OAuth.Session -import Enlil.OAuth.Session qualified as Session -import Enlil.OAuth.Types -import Enlil.OAuth.Types qualified as OAuth2 -import Enlil.Utils.Binary (JSONBinary (..)) -import Enlil.Utils.IDs qualified as IDs -import Enlil.Utils.SecureTokens (newSecureToken) -import Enlil.Utils.URI (URIParam) +import Share.OAuth.Errors qualified as OAuthError +import Share.OAuth.PKCE (verifyPkce) +import Share.OAuth.Session +import Share.OAuth.Session qualified as Session +import Share.OAuth.Types +import Share.OAuth.Types qualified as OAuth2 +import Share.Utils.Binary (JSONBinary (..)) +import Share.Utils.IDs qualified as IDs +import Share.Utils.SecureTokens (newSecureToken) +import Share.Utils.URI (URIParam) import Network.URI (URI) import UnliftIO diff --git a/enlil-auth/src/Enlil/OAuth/Scopes.hs b/share-auth/src/Share/OAuth/Scopes.hs similarity index 98% rename from enlil-auth/src/Enlil/OAuth/Scopes.hs rename to share-auth/src/Share/OAuth/Scopes.hs index 21221b9..2fbfbdd 100644 --- a/enlil-auth/src/Enlil/OAuth/Scopes.hs +++ b/share-auth/src/Share/OAuth/Scopes.hs @@ -1,4 +1,4 @@ -module Enlil.OAuth.Scopes +module Share.OAuth.Scopes ( Scopes (..), UnisonScope (..), parseScopes, diff --git a/enlil-auth/src/Enlil/OAuth/ServiceProvider.hs b/share-auth/src/Share/OAuth/ServiceProvider.hs similarity index 95% rename from enlil-auth/src/Enlil/OAuth/ServiceProvider.hs rename to share-auth/src/Share/OAuth/ServiceProvider.hs index 831ac97..6321abe 100644 --- a/enlil-auth/src/Enlil/OAuth/ServiceProvider.hs +++ b/share-auth/src/Share/OAuth/ServiceProvider.hs @@ -1,7 +1,7 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.OAuth.ServiceProvider +module Share.OAuth.ServiceProvider ( ServiceProviderConfig (..), ServiceProviderAPI, SessionCallback, @@ -27,19 +27,19 @@ import Data.Function ((&)) import Data.Maybe (fromMaybe) import Data.Text (Text) import Database.Redis qualified as Redis -import Enlil.JWT (JWTParam (..)) -import Enlil.JWT qualified as JWT -import Enlil.OAuth.API -import Enlil.OAuth.IdentityProvider.Types (IdentityProviderConfig (IdentityProviderConfig), authorizationURI, exchangeCodeForToken) -import Enlil.OAuth.PKCE qualified as PKCE -import Enlil.OAuth.Redis qualified as Redis -import Enlil.OAuth.Scopes -import Enlil.OAuth.Session -import Enlil.OAuth.Session qualified as Session -import Enlil.OAuth.Types -import Enlil.Utils.IDs -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Utils.URI (URIParam, setPathAndQueryParams, unpackURI) +import Share.JWT (JWTParam (..)) +import Share.JWT qualified as JWT +import Share.OAuth.API +import Share.OAuth.IdentityProvider.Types (IdentityProviderConfig (IdentityProviderConfig), authorizationURI, exchangeCodeForToken) +import Share.OAuth.PKCE qualified as PKCE +import Share.OAuth.Redis qualified as Redis +import Share.OAuth.Scopes +import Share.OAuth.Session +import Share.OAuth.Session qualified as Session +import Share.OAuth.Types +import Share.Utils.IDs +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Utils.URI (URIParam, setPathAndQueryParams, unpackURI) import Servant import UnliftIO import Web.Cookie (SetCookie (..)) @@ -111,7 +111,7 @@ type SessionCallback m = serviceProviderServer :: (Redis.MonadRedis m, MonadIO m) => -- | The configuration for the identity provider we're authenticating against. - -- See Enlil.OAuth.IdentityProvider.Share for presets to use + -- See Share.OAuth.IdentityProvider.Share for presets to use IdentityProviderConfig -> -- | The configuration of your service. See 'ServiceProviderConfig' ServiceProviderConfig -> diff --git a/enlil-auth/src/Enlil/OAuth/Session.hs b/share-auth/src/Share/OAuth/Session.hs similarity index 98% rename from enlil-auth/src/Enlil/OAuth/Session.hs rename to share-auth/src/Share/OAuth/Session.hs index 4b16247..02141bd 100644 --- a/enlil-auth/src/Enlil/OAuth/Session.hs +++ b/share-auth/src/Share/OAuth/Session.hs @@ -7,7 +7,7 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} -module Enlil.OAuth.Session +module Share.OAuth.Session ( Session (..), AdditionalSessionClaims (..), PendingSession (..), @@ -42,11 +42,11 @@ import Data.Text (Text) import Data.Text qualified as Text import Data.Text.Encoding qualified as Text import Data.Time (NominalDiffTime, UTCTime, addUTCTime, getCurrentTime, nominalDay) -import Enlil.JWT qualified as JWT -import Enlil.OAuth.Types -import Enlil.Utils.Binary -import Enlil.Utils.IDs qualified as IDs -import Enlil.Utils.Servant.Cookies qualified as Cookies +import Share.JWT qualified as JWT +import Share.OAuth.Types +import Share.Utils.Binary +import Share.Utils.IDs qualified as IDs +import Share.Utils.Servant.Cookies qualified as Cookies import GHC.Generics (Generic) import Network.HTTP.Types qualified as Network import Network.URI diff --git a/enlil-auth/src/Enlil/OAuth/Types.hs b/share-auth/src/Share/OAuth/Types.hs similarity index 97% rename from enlil-auth/src/Enlil/OAuth/Types.hs rename to share-auth/src/Share/OAuth/Types.hs index c4e3352..40c15e7 100644 --- a/enlil-auth/src/Enlil/OAuth/Types.hs +++ b/share-auth/src/Share/OAuth/Types.hs @@ -4,7 +4,7 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.OAuth.Types +module Share.OAuth.Types ( OAuth2State, ResponseType (..), GrantType (..), @@ -42,12 +42,12 @@ import Data.Text (Text) import Data.Text qualified as Text import Data.Time (NominalDiffTime) import Data.UUID (UUID) -import Enlil.JWT -import Enlil.OAuth.Scopes -import Enlil.Utils.Binary (JSONBinary (..)) -import Enlil.Utils.IDs -import Enlil.Utils.Show (Censored (..)) -import Enlil.Utils.URI (URIParam) +import Share.JWT +import Share.OAuth.Scopes +import Share.Utils.Binary (JSONBinary (..)) +import Share.Utils.IDs +import Share.Utils.Show (Censored (..)) +import Share.Utils.URI (URIParam) import GHC.TypeLits (Symbol, symbolVal) import Hasql.Interpolate qualified as Hasql import Servant diff --git a/enlil-utils/.gitignore b/share-utils/.gitignore similarity index 100% rename from enlil-utils/.gitignore rename to share-utils/.gitignore diff --git a/enlil-utils/CHANGELOG.md b/share-utils/CHANGELOG.md similarity index 90% rename from enlil-utils/CHANGELOG.md rename to share-utils/CHANGELOG.md index 5057d60..5a006da 100644 --- a/enlil-utils/CHANGELOG.md +++ b/share-utils/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changelog for `enlil-auth` +# Changelog for `share-auth` All notable changes to this project will be documented in this file. diff --git a/enlil-utils/LICENSE b/share-utils/LICENSE similarity index 100% rename from enlil-utils/LICENSE rename to share-utils/LICENSE diff --git a/share-utils/README.md b/share-utils/README.md new file mode 100644 index 0000000..a6a405f --- /dev/null +++ b/share-utils/README.md @@ -0,0 +1 @@ +# share-auth diff --git a/enlil-utils/Setup.hs b/share-utils/Setup.hs similarity index 100% rename from enlil-utils/Setup.hs rename to share-utils/Setup.hs diff --git a/enlil-utils/package.yaml b/share-utils/package.yaml similarity index 92% rename from enlil-utils/package.yaml rename to share-utils/package.yaml index 7130f11..debe83c 100644 --- a/enlil-utils/package.yaml +++ b/share-utils/package.yaml @@ -1,6 +1,6 @@ -name: enlil-utils +name: share-utils version: 0.1.0.0 -github: "unisoncomputing/enlil" +github: "unisoncomputing/share-api" author: "Unison Computing" maintainer: "unison.cloud" copyright: "2024 Unison Computing" @@ -15,7 +15,7 @@ extra-source-files: # To avoid duplicated efforts in documentation and dealing with the # complications of embedding Haddock markup inside cabal files, it is # common to point users to the README.md file. -description: Please see the README on GitHub at +description: Please see the README on GitHub at ghc-options: - -Wall diff --git a/enlil-utils/enlil-utils.cabal b/share-utils/share-utils.cabal similarity index 79% rename from enlil-utils/enlil-utils.cabal rename to share-utils/share-utils.cabal index f0e5c39..7b89c0a 100644 --- a/enlil-utils/enlil-utils.cabal +++ b/share-utils/share-utils.cabal @@ -4,11 +4,11 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -name: enlil-utils +name: share-utils version: 0.1.0.0 -description: Please see the README on GitHub at -homepage: https://github.com/unisoncomputing/enlil#readme -bug-reports: https://github.com/unisoncomputing/enlil/issues +description: Please see the README on GitHub at +homepage: https://github.com/unisoncomputing/share-api#readme +bug-reports: https://github.com/unisoncomputing/share-api/issues author: Unison Computing maintainer: unison.cloud copyright: 2024 Unison Computing @@ -20,19 +20,19 @@ extra-source-files: source-repository head type: git - location: https://github.com/unisoncomputing/enlil + location: https://github.com/unisoncomputing/share-api library exposed-modules: - Enlil.Utils.Binary - Enlil.Utils.Deployment - Enlil.Utils.IDs - Enlil.Utils.SecureTokens - Enlil.Utils.Servant.Cookies - Enlil.Utils.Show - Enlil.Utils.URI + Share.Utils.Binary + Share.Utils.Deployment + Share.Utils.IDs + Share.Utils.SecureTokens + Share.Utils.Servant.Cookies + Share.Utils.Show + Share.Utils.URI other-modules: - Paths_enlil_utils + Paths_share_utils hs-source-dirs: src default-extensions: diff --git a/enlil-utils/src/Enlil/Utils/Binary.hs b/share-utils/src/Share/Utils/Binary.hs similarity index 94% rename from enlil-utils/src/Enlil/Utils/Binary.hs rename to share-utils/src/Share/Utils/Binary.hs index 9c2884b..24d7e1f 100644 --- a/enlil-utils/src/Enlil/Utils/Binary.hs +++ b/share-utils/src/Share/Utils/Binary.hs @@ -1,4 +1,4 @@ -module Enlil.Utils.Binary (JSONBinary (..)) where +module Share.Utils.Binary (JSONBinary (..)) where import Data.Aeson import Data.Aeson qualified as Aeson diff --git a/enlil-utils/src/Enlil/Utils/Deployment.hs b/share-utils/src/Share/Utils/Deployment.hs similarity index 79% rename from enlil-utils/src/Enlil/Utils/Deployment.hs rename to share-utils/src/Share/Utils/Deployment.hs index 186580c..c3057de 100644 --- a/enlil-utils/src/Enlil/Utils/Deployment.hs +++ b/share-utils/src/Share/Utils/Deployment.hs @@ -1,8 +1,8 @@ -{- This module allows checking which deployment of Enlil we're operating in. +{- This module allows checking which deployment of Share we're operating in. This can be useful for adjusting logging/debug levels or providing tools which are specific to a given environment. -} -module Enlil.Utils.Deployment (Deployment (..), deployment, onLocal) where +module Share.Utils.Deployment (Deployment (..), deployment, onLocal) where import System.IO.Unsafe (unsafePerformIO) import UnliftIO.Environment (lookupEnv) @@ -24,7 +24,7 @@ onLocal = deployment == Local deployment :: Deployment deployment = - case (unsafePerformIO (lookupEnv "ENLIL_DEPLOYMENT")) of + case (unsafePerformIO (lookupEnv "SHARE_DEPLOYMENT")) of Just "local" -> Local Just "staging" -> Staging Just "production" -> Production diff --git a/enlil-utils/src/Enlil/Utils/IDs.hs b/share-utils/src/Share/Utils/IDs.hs similarity index 99% rename from enlil-utils/src/Enlil/Utils/IDs.hs rename to share-utils/src/Share/Utils/IDs.hs index 6b85f97..42d029d 100644 --- a/enlil-utils/src/Enlil/Utils/IDs.hs +++ b/share-utils/src/Share/Utils/IDs.hs @@ -9,7 +9,7 @@ -- | Utilities for working with IDs. -- Mostly meant to be used with Deriving Via. -module Enlil.Utils.IDs +module Share.Utils.IDs ( IsID (toText, fromText), idFrom, fromId, diff --git a/enlil-utils/src/Enlil/Utils/SecureTokens.hs b/share-utils/src/Share/Utils/SecureTokens.hs similarity index 92% rename from enlil-utils/src/Enlil/Utils/SecureTokens.hs rename to share-utils/src/Share/Utils/SecureTokens.hs index 6e2640b..46791fe 100644 --- a/enlil-utils/src/Enlil/Utils/SecureTokens.hs +++ b/share-utils/src/Share/Utils/SecureTokens.hs @@ -1,4 +1,4 @@ -module Enlil.Utils.SecureTokens (newSecureToken) where +module Share.Utils.SecureTokens (newSecureToken) where import Crypto.Random (getRandomBytes) import Data.ByteArray.Encoding qualified as BE diff --git a/enlil-utils/src/Enlil/Utils/Servant/Cookies.hs b/share-utils/src/Share/Utils/Servant/Cookies.hs similarity index 99% rename from enlil-utils/src/Enlil/Utils/Servant/Cookies.hs rename to share-utils/src/Share/Utils/Servant/Cookies.hs index a78b400..cd77d38 100644 --- a/enlil-utils/src/Enlil/Utils/Servant/Cookies.hs +++ b/share-utils/src/Share/Utils/Servant/Cookies.hs @@ -3,7 +3,7 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE UndecidableInstances #-} -module Enlil.Utils.Servant.Cookies +module Share.Utils.Servant.Cookies ( Cookie, cookieVal, CookieVal, diff --git a/enlil-utils/src/Enlil/Utils/Show.hs b/share-utils/src/Share/Utils/Show.hs similarity index 88% rename from enlil-utils/src/Enlil/Utils/Show.hs rename to share-utils/src/Share/Utils/Show.hs index a0ed35f..44b3595 100644 --- a/enlil-utils/src/Enlil/Utils/Show.hs +++ b/share-utils/src/Share/Utils/Show.hs @@ -1,7 +1,7 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE UndecidableInstances #-} -module Enlil.Utils.Show (Censored (..), tShow) where +module Share.Utils.Show (Censored (..), tShow) where import Data.Text diff --git a/enlil-utils/src/Enlil/Utils/URI.hs b/share-utils/src/Share/Utils/URI.hs similarity index 98% rename from enlil-utils/src/Enlil/Utils/URI.hs rename to share-utils/src/Share/Utils/URI.hs index 089cc17..8ee3da0 100644 --- a/enlil-utils/src/Enlil/Utils/URI.hs +++ b/share-utils/src/Share/Utils/URI.hs @@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} -module Enlil.Utils.URI +module Share.Utils.URI ( URIParam (..), addQueryParam, setPathAndQueryParams, @@ -22,7 +22,7 @@ import Data.Map qualified as Map import Data.Text (Text) import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.Utils.Show (tShow) +import Share.Utils.Show (tShow) import Hasql.Decoders qualified as Decoders import Hasql.Interpolate qualified as Hasql import Network.HTTP.Types (parseQuery, renderQuery) diff --git a/src/Enlil.hs b/src/Share.hs similarity index 94% rename from src/Enlil.hs rename to src/Share.hs index 274d717..8a41f9e 100644 --- a/src/Enlil.hs +++ b/src/Share.hs @@ -2,7 +2,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} -module Enlil +module Share ( startApp, ) where @@ -21,26 +21,26 @@ import Data.Time (NominalDiffTime, diffUTCTime, getCurrentTime) import Data.Typeable qualified as Typeable import Data.UUID (UUID) import Data.Vault.Lazy as Vault -import Enlil.App -import Enlil.Env qualified as Env -import Enlil.IDs (RequestId, UserId) -import Enlil.IDs qualified as IDs -import Enlil.JWT qualified as JWT -import Enlil.Metrics (requestMetricsMiddleware, serveMetricsMiddleware) -import Enlil.OAuth.Session (AuthCheckCtx, MaybeAuthenticatedUserId, addAuthCheckCtx) -import Enlil.Prelude -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Logging (LogMsg (..), logErrorText) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant -import Enlil.Utils.Servant.Cookies (CookieVal) -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Utils.Servant.RawRequest (RawRequest) -import Enlil.Web.API qualified as Web -import Enlil.Web.App (WebApp, localRequestCtx) -import Enlil.Web.App qualified as WebApp -import Enlil.Web.Errors -import Enlil.Web.Impl qualified as Web +import Share.App +import Share.Env qualified as Env +import Share.IDs (RequestId, UserId) +import Share.IDs qualified as IDs +import Share.JWT qualified as JWT +import Share.Metrics (requestMetricsMiddleware, serveMetricsMiddleware) +import Share.OAuth.Session (AuthCheckCtx, MaybeAuthenticatedUserId, addAuthCheckCtx) +import Share.Prelude +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Logging (LogMsg (..), logErrorText) +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant +import Share.Utils.Servant.Cookies (CookieVal) +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Utils.Servant.RawRequest (RawRequest) +import Share.Web.API qualified as Web +import Share.Web.App (WebApp, localRequestCtx) +import Share.Web.App qualified as WebApp +import Share.Web.Errors +import Share.Web.Impl qualified as Web import Network.HTTP.Types (HeaderName, statusCode) import Network.HTTP.Types qualified as HTTP import Network.Wai diff --git a/src/Enlil/App.hs b/src/Share/App.hs similarity index 83% rename from src/Enlil/App.hs rename to src/Share/App.hs index 8318a6d..9e12f59 100644 --- a/src/Enlil/App.hs +++ b/src/Share/App.hs @@ -1,6 +1,6 @@ {-# LANGUAGE InstanceSigs #-} -module Enlil.App where +module Share.App where import Control.Monad.Except import Control.Monad.Random.Strict @@ -9,11 +9,11 @@ import Crypto.JWT qualified as JWT import Crypto.Random.Types qualified as Cryptonite import Data.Set qualified as Set import Database.Redis qualified as R -import Enlil.Env (Env (..)) -import Enlil.Env qualified as Env -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging import Servant +import Share.Env (Env (..)) +import Share.Env qualified as Env +import Share.Prelude +import Share.Utils.Logging qualified as Logging newtype AppM reqCtx a = AppM {unAppM :: ReaderT (Env reqCtx) IO a} deriving newtype (Functor, Applicative, Monad, MonadReader (Env reqCtx), MonadRandom, MonadIO, MonadUnliftIO) @@ -45,10 +45,10 @@ instance R.RedisCtx (AppM reqCtx) (Either R.Reply) where R.liftRedis $ R.returnDecode r -- | JWT Issuer, currently just root URI -enlilIssuer :: AppM reqCtx URI -enlilIssuer = do +shareIssuer :: AppM reqCtx URI +shareIssuer = do asks Env.apiOrigin -- | JWT Audience, currently the same as the issuer. -enlilAud :: AppM reqCtx (Set URI) -enlilAud = Set.singleton <$> enlilIssuer +shareAud :: AppM reqCtx (Set URI) +shareAud = Set.singleton <$> shareIssuer diff --git a/src/Enlil/Backend.hs b/src/Share/Backend.hs similarity index 97% rename from src/Enlil/Backend.hs rename to src/Share/Backend.hs index 15e5c82..9f640e4 100644 --- a/src/Enlil/Backend.hs +++ b/src/Share/Backend.hs @@ -1,6 +1,6 @@ {-# LANGUAGE MultiWayIf #-} -module Enlil.Backend +module Share.Backend ( mkTypeDefinition, mkTermDefinition, typeListEntry, @@ -36,13 +36,13 @@ import Control.Lens hiding ((??)) import Control.Monad.Except import Data.List qualified as List import Data.Map qualified as Map -import Enlil.Codebase (CodebaseM) -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types (CodebaseRuntime (CodebaseRuntime, cachedEvalResult)) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Conversions (namespaceStatsPgToV2) -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Prelude +import Share.Codebase (CodebaseM) +import Share.Codebase qualified as Codebase +import Share.Codebase.Types (CodebaseRuntime (CodebaseRuntime, cachedEvalResult)) +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Conversions (namespaceStatsPgToV2) +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Prelude import U.Codebase.Branch qualified as V2Branch import U.Codebase.Causal qualified as Causal import U.Codebase.Causal qualified as V2Causal diff --git a/src/Enlil/Branch.hs b/src/Share/Branch.hs similarity index 95% rename from src/Enlil/Branch.hs rename to src/Share/Branch.hs index 0a2de15..f36580b 100644 --- a/src/Enlil/Branch.hs +++ b/src/Share/Branch.hs @@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Branch +module Share.Branch ( Branch (..), defaultBranchName, defaultBranchShorthand, @@ -10,8 +10,8 @@ where import Control.Lens import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG +import Share.IDs +import Share.Postgres qualified as PG import Hasql.Interpolate qualified as Hasql -- | We don't track default branches in the database at the moment, diff --git a/src/Enlil/Codebase.hs b/src/Share/Codebase.hs similarity index 94% rename from src/Enlil/Codebase.hs rename to src/Share/Codebase.hs index f1147f8..0573429 100644 --- a/src/Enlil/Codebase.hs +++ b/src/Share/Codebase.hs @@ -3,7 +3,7 @@ {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Codebase +module Share.Codebase ( shorthashLength, runCodebaseTransaction, runCodebaseTransactionOrRespondError, @@ -74,31 +74,31 @@ import Data.ByteString.Lazy.Char8 qualified as BL import Data.Map qualified as Map import Data.Set qualified as Set import Data.Text.Encoding qualified as Text -import Enlil.Branch (Branch (..)) -import Enlil.Codebase.Types -import Enlil.Codebase.Types qualified as Codebase -import Enlil.Env qualified as Env -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.Postgres (unrecoverableError) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries (loadCausalNamespaceAtPath) -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Definitions.Queries qualified as DefnQ -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.LooseCode.Queries qualified as LCQ -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.Utils.Caching (Cached) -import Enlil.Utils.Caching qualified as Caching -import Enlil.Utils.Logging -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Authorization (AuthZReceipt) -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors +import Share.Branch (Branch (..)) +import Share.Codebase.Types +import Share.Codebase.Types qualified as Codebase +import Share.Env qualified as Env +import Share.IDs +import Share.IDs qualified as IDs +import Share.Postgres (unrecoverableError) +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries (loadCausalNamespaceAtPath) +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Definitions.Queries qualified as DefnQ +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.LooseCode.Queries qualified as LCQ +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Prelude +import Share.Project (Project (..)) +import Share.Utils.Caching (Cached) +import Share.Utils.Caching qualified as Caching +import Share.Utils.Logging +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Authorization (AuthZReceipt) +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors import Servant qualified import Servant.Server (err500) import U.Codebase.Branch qualified as V2 diff --git a/src/Enlil/Codebase/Types.hs b/src/Share/Codebase/Types.hs similarity index 94% rename from src/Enlil/Codebase/Types.hs rename to src/Share/Codebase/Types.hs index 35ca14f..74ff61c 100644 --- a/src/Enlil/Codebase/Types.hs +++ b/src/Share/Codebase/Types.hs @@ -1,4 +1,4 @@ -module Enlil.Codebase.Types +module Share.Codebase.Types ( CodebaseM, CodebaseEnv (..), CodebaseRuntime (..), @@ -10,9 +10,9 @@ module Enlil.Codebase.Types ) where -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude import Unison.Codebase.CodeLookup qualified as CL import Unison.Codebase.Path qualified as Path import Unison.Codebase.Runtime qualified as Rt diff --git a/src/Enlil/Contribution.hs b/src/Share/Contribution.hs similarity index 94% rename from src/Enlil/Contribution.hs rename to src/Share/Contribution.hs index 29ef249..b043724 100644 --- a/src/Enlil/Contribution.hs +++ b/src/Share/Contribution.hs @@ -1,13 +1,13 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Contribution where +module Share.Contribution where import Data.Aeson qualified as Aeson import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (CausalId) -import Enlil.Prelude +import Share.IDs +import Share.Postgres qualified as PG +import Share.Postgres.IDs (CausalId) +import Share.Prelude import Hasql.Decoders qualified as Hasql import Hasql.Interpolate qualified as Hasql import Servant (FromHttpApiData (..)) diff --git a/src/Enlil/Env.hs b/src/Share/Env.hs similarity index 86% rename from src/Enlil/Env.hs rename to src/Share/Env.hs index ecb74aa..df0155f 100644 --- a/src/Enlil/Env.hs +++ b/src/Share/Env.hs @@ -1,13 +1,13 @@ -module Enlil.Env +module Share.Env ( Env (..), ) where import Database.Redis qualified as R -import Enlil.JWT qualified as JWT -import Enlil.Prelude -import Enlil.Utils.Logging.Types qualified as Logging -import Enlil.Utils.Servant.Cookies qualified as Cookies +import Share.JWT qualified as JWT +import Share.Prelude +import Share.Utils.Logging.Types qualified as Logging +import Share.Utils.Servant.Cookies qualified as Cookies import Hasql.Pool qualified as Hasql import Network.URI (URI) import Servant qualified as S @@ -39,7 +39,7 @@ data Env reqCtx = Env sandboxedRuntime :: Runtime Symbol, zendeskAuth :: S.BasicAuthData, sentryService :: SentryService, - -- The commit hash of the currently running version of Enlil + -- The commit hash of the currently running version of Share commitHash :: Text, requestCtx :: reqCtx, shouldCheckForMigration :: Bool, diff --git a/src/Enlil/Github.hs b/src/Share/Github.hs similarity index 93% rename from src/Enlil/Github.hs rename to src/Share/Github.hs index 67e56e1..8c962d6 100644 --- a/src/Enlil/Github.hs +++ b/src/Share/Github.hs @@ -4,24 +4,24 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Github where +module Share.Github where import Control.Monad.Reader import Data.Aeson -import Enlil.Env qualified as Env -import Enlil.OAuth.Types (OAuth2State) -import Enlil.OAuth.Types qualified as OAuth2 -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant.Client (runClientEither) -import Enlil.Utils.Show -import Enlil.Utils.URI (URIParam (URIParam)) -import Enlil.Web.App -import Enlil.Web.Errors import Network.HTTP.Types (Status (..)) import Network.URI (URIAuth (URIAuth)) import Servant import Servant.Client +import Share.Env qualified as Env +import Share.OAuth.Types (OAuth2State) +import Share.OAuth.Types qualified as OAuth2 +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant.Client (runClientEither) +import Share.Utils.Show +import Share.Utils.URI (URIParam (URIParam)) +import Share.Web.App +import Share.Web.Errors data GithubError = GithubClientError ClientError @@ -56,16 +56,16 @@ instance FromJSON GithubUser where parseJSON = withObject "GithubUser" $ \u -> GithubUser <$> u - .: "login" + .: "login" <*> u - .: "id" + .: "id" <*> u - .: "avatar_url" + .: "avatar_url" -- We don't use this email because it's the "publicly visible" email, instead we fetch -- the primary email using the emails API. -- <*> u .: "email" <*> u - .:? "name" + .:? "name" data GithubEmail = GithubEmail { github_email_email :: Text, @@ -78,11 +78,11 @@ instance FromJSON GithubEmail where parseJSON = withObject "GithubEmail" $ \u -> GithubEmail <$> u - .: "email" + .: "email" <*> u - .: "primary" + .: "primary" <*> u - .: "verified" + .: "verified" type GithubTokenApi = "login" @@ -210,7 +210,7 @@ githubOauthApi = Proxy githubAuthenticationURI :: OAuth2State -> WebApp URI githubAuthenticationURI oauth2State = do oauthClientId <- asks Env.githubClientID - redirectUri <- enlilPath ["oauth", "redirect"] + redirectUri <- sharePath ["oauth", "redirect"] let ghAuth = Just (URIAuth "" "github.com" "") ghLink = linkURI (uri oauthClientId redirectUri) in return $ diff --git a/src/Enlil/IDs.hs b/src/Share/IDs.hs similarity index 99% rename from src/Enlil/IDs.hs rename to src/Share/IDs.hs index 00453fd..fdff53c 100644 --- a/src/Enlil/IDs.hs +++ b/src/Share/IDs.hs @@ -7,7 +7,7 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE UndecidableInstances #-} -module Enlil.IDs +module Share.IDs ( SessionId (..), PendingSessionId (..), UserId (..), @@ -54,14 +54,14 @@ import Data.Char qualified as Char import Data.List (intercalate) import Data.Text qualified as Text import Data.UUID (UUID) -import Enlil.OAuth.Types +import Share.OAuth.Types ( JTI (..), PendingSessionId (..), SessionId (..), UserId (..), ) -import Enlil.Prelude -import Enlil.Utils.IDs (CaseInsensitiveID (..), IsID (..), PrefixedID (..), UsingID (..), fromId, fromUUID, idFrom) +import Share.Prelude +import Share.Utils.IDs (CaseInsensitiveID (..), IsID (..), PrefixedID (..), UsingID (..), fromId, fromUUID, idFrom) import GHC.TypeLits (KnownSymbol, Symbol, symbolVal) import Hasql.Interpolate qualified as Hasql import Servant (FromHttpApiData (..), ToHttpApiData (..)) diff --git a/src/Enlil/Metrics.hs b/src/Share/Metrics.hs similarity index 97% rename from src/Enlil/Metrics.hs rename to src/Share/Metrics.hs index 8457398..2c094f8 100644 --- a/src/Enlil/Metrics.hs +++ b/src/Share/Metrics.hs @@ -4,7 +4,7 @@ -- -- If possible, try to keep details specific to our current metrics libraries isolated to -- within this module so we can easily swap to new providers if needed. -module Enlil.Metrics +module Share.Metrics ( serveMetricsMiddleware, requestMetricsMiddleware, tickUserSignup, @@ -17,12 +17,12 @@ import Data.Set qualified as Set import Data.Text qualified as Text import Data.Text.Encoding import Data.Time qualified as Time -import Enlil.Env qualified as Env -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Metrics.Queries qualified as Q -import Enlil.Prelude -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Servant.PathInfo (HasPathInfo, normalizePath) +import Share.Env qualified as Env +import Share.Postgres qualified as PG +import Share.Postgres.Metrics.Queries qualified as Q +import Share.Prelude +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Servant.PathInfo (HasPathInfo, normalizePath) import Network.HTTP.Types qualified as HTTP import Network.Wai qualified as Wai import Network.Wai.Middleware.Prometheus qualified as Prom @@ -33,7 +33,7 @@ import System.Clock qualified as Clock import UnliftIO qualified service :: Text -service = "enlil" +service = "share-api" deployment :: Text deployment = tShow Deployment.deployment @@ -271,7 +271,7 @@ numUsersWithTickets = -- | Adds one to the user-signup counter tickUserSignup :: MonadIO m => m () tickUserSignup = liftIO do - Prom.withLabel userSignupsCounter (tShow Deployment.deployment, "enlil") Prom.incCounter + Prom.withLabel userSignupsCounter (tShow Deployment.deployment, "share-api") Prom.incCounter -- | Runs the provided action at most once every interval, will return previous results until -- it's time to run again. diff --git a/src/Enlil/Monitoring.hs b/src/Share/Monitoring.hs similarity index 87% rename from src/Enlil/Monitoring.hs rename to src/Share/Monitoring.hs index 5fca848..d8f18df 100644 --- a/src/Enlil/Monitoring.hs +++ b/src/Share/Monitoring.hs @@ -1,16 +1,16 @@ -module Enlil.Monitoring where +module Share.Monitoring where import Control.Monad.Reader import Data.Aeson qualified as Aeson import Data.HashMap.Strict qualified as HM import Data.Map qualified as Map import Data.Text qualified as Text -import Enlil.Env -import Enlil.Env qualified as Env -import Enlil.Prelude -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Logging -import Enlil.Utils.Logging qualified as Logging +import Share.Env +import Share.Env qualified as Env +import Share.Prelude +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Logging +import Share.Utils.Logging qualified as Logging import GHC.Stack qualified as Stack import Network.URI (URI) import System.Log.Raven qualified as Sentry diff --git a/src/Enlil/NamespaceDiffs.hs b/src/Share/NamespaceDiffs.hs similarity index 97% rename from src/Enlil/NamespaceDiffs.hs rename to src/Share/NamespaceDiffs.hs index d99f937..1796a79 100644 --- a/src/Enlil/NamespaceDiffs.hs +++ b/src/Share/NamespaceDiffs.hs @@ -1,6 +1,6 @@ -- | Logic for computing the differerences between two namespaces, -- typically used when showing the differences caused by a contribution. -module Enlil.NamespaceDiffs +module Share.NamespaceDiffs ( NamespaceTreeDiff, DiffAtPath (..), NamespaceDiffError (..), @@ -23,14 +23,14 @@ import Data.Map qualified as Map import Data.Set qualified as Set import Data.Set.NonEmpty (NESet) import Data.Set.NonEmpty qualified as NESet -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (BranchHashId) -import Enlil.Postgres.NameLookups.Conversions qualified as Cv -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt) -import Enlil.Postgres.NamespaceDiffs qualified as ND -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors +import Share.Postgres qualified as PG +import Share.Postgres.IDs (BranchHashId) +import Share.Postgres.NameLookups.Conversions qualified as Cv +import Share.Postgres.NameLookups.Types (NameLookupReceipt) +import Share.Postgres.NamespaceDiffs qualified as ND +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors import Servant (err500) import U.Codebase.Reference qualified as V2 import U.Codebase.Referent qualified as V2 diff --git a/src/Enlil/Postgres.hs b/src/Share/Postgres.hs similarity index 98% rename from src/Enlil/Postgres.hs rename to src/Share/Postgres.hs index d5f6efa..68b1680 100644 --- a/src/Enlil/Postgres.hs +++ b/src/Share/Postgres.hs @@ -5,7 +5,7 @@ {-# LANGUAGE TypeOperators #-} -- | Postgres helpers -module Enlil.Postgres +module Share.Postgres ( -- * Types Transaction, T, @@ -71,14 +71,14 @@ import Data.Map qualified as Map import Data.Maybe import Data.Text qualified as Text import Data.Void -import Enlil.App -import Enlil.Env qualified as Env -import Enlil.Postgres.Orphans () -import Enlil.Prelude -import Enlil.Utils.Logging (Loggable (..)) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Errors (ErrorID (..), SomeServerError, ToServerError (..), internalServerError, respondError, someServerError) +import Share.App +import Share.Env qualified as Env +import Share.Postgres.Orphans () +import Share.Prelude +import Share.Utils.Logging (Loggable (..)) +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Errors (ErrorID (..), SomeServerError, ToServerError (..), internalServerError, respondError, someServerError) import Hasql.Decoders qualified as Decoders import Hasql.Encoders qualified as Encoders import Hasql.Interpolate qualified as Interp diff --git a/src/Enlil/Postgres/Admin.hs b/src/Share/Postgres/Admin.hs similarity index 76% rename from src/Enlil/Postgres/Admin.hs rename to src/Share/Postgres/Admin.hs index 0579885..9f1ef8b 100644 --- a/src/Enlil/Postgres/Admin.hs +++ b/src/Share/Postgres/Admin.hs @@ -1,11 +1,11 @@ -- | Queries used for admin tasks. Don't use these in normal endpoints. -module Enlil.Postgres.Admin +module Share.Postgres.Admin ( hardDeleteUser, ) where -import Enlil.IDs (UserId) -import Enlil.Postgres qualified as PG +import Share.IDs (UserId) +import Share.Postgres qualified as PG -- | Delete a user COMPLETELY. This is unreversable. hardDeleteUser :: UserId -> PG.Transaction e () diff --git a/src/Enlil/Postgres/Authorization/Queries.hs b/src/Share/Postgres/Authorization/Queries.hs similarity index 94% rename from src/Enlil/Postgres/Authorization/Queries.hs rename to src/Share/Postgres/Authorization/Queries.hs index 68d1830..f586cb3 100644 --- a/src/Enlil/Postgres/Authorization/Queries.hs +++ b/src/Share/Postgres/Authorization/Queries.hs @@ -5,13 +5,13 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.Authorization.Queries where +module Share.Postgres.Authorization.Queries where -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (CausalId) -import Enlil.Prelude -import Enlil.Web.Authorization.Types (ProjectMaintainerPermissions (..)) +import Share.IDs +import Share.Postgres qualified as PG +import Share.Postgres.IDs (CausalId) +import Share.Prelude +import Share.Web.Authorization.Types (ProjectMaintainerPermissions (..)) -- | Check if the given user has access to a provided project. -- If yes, return the UserId of the owner of that project. diff --git a/src/Enlil/Postgres/Causal/Conversions.hs b/src/Share/Postgres/Causal/Conversions.hs similarity index 74% rename from src/Enlil/Postgres/Causal/Conversions.hs rename to src/Share/Postgres/Causal/Conversions.hs index 1044d4d..48d9b08 100644 --- a/src/Enlil/Postgres/Causal/Conversions.hs +++ b/src/Share/Postgres/Causal/Conversions.hs @@ -1,7 +1,7 @@ -module Enlil.Postgres.Causal.Conversions (namespaceStatsPgToV2) where +module Share.Postgres.Causal.Conversions (namespaceStatsPgToV2) where -import Enlil.Postgres.Causal.Types qualified as PG -import Enlil.Postgres.Causal.Types qualified as PGCausal +import Share.Postgres.Causal.Types qualified as PG +import Share.Postgres.Causal.Types qualified as PGCausal import U.Codebase.Branch qualified as V2 namespaceStatsPgToV2 :: PGCausal.NamespaceStats -> V2.NamespaceStats diff --git a/src/Enlil/Postgres/Causal/Queries.hs b/src/Share/Postgres/Causal/Queries.hs similarity index 98% rename from src/Enlil/Postgres/Causal/Queries.hs rename to src/Share/Postgres/Causal/Queries.hs index 5d84001..c68d3c9 100644 --- a/src/Enlil/Postgres/Causal/Queries.hs +++ b/src/Share/Postgres/Causal/Queries.hs @@ -1,7 +1,7 @@ {-# LANGUAGE ApplicativeDo #-} -- Queries for causals (and namespaces) -module Enlil.Postgres.Causal.Queries +module Share.Postgres.Causal.Queries ( loadCausalNamespace, expectCausalNamespace, expectPgCausalNamespace, @@ -32,19 +32,19 @@ where import Control.Lens import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Codebase.Types qualified as Codebase -import Enlil.IDs (UserId) -import Enlil.Postgres -import Enlil.Postgres.Causal.Types -import Enlil.Postgres.Definitions.Queries qualified as Defn -import Enlil.Postgres.Definitions.Types -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.Patches.Queries qualified as PatchQ -import Enlil.Prelude -import Enlil.Utils.Postgres (OrdBy, ordered) -import Enlil.Web.Errors (MissingExpectedEntity (MissingExpectedEntity)) +import Share.Codebase.Types (CodebaseM) +import Share.Codebase.Types qualified as Codebase +import Share.IDs (UserId) +import Share.Postgres +import Share.Postgres.Causal.Types +import Share.Postgres.Definitions.Queries qualified as Defn +import Share.Postgres.Definitions.Types +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.Patches.Queries qualified as PatchQ +import Share.Prelude +import Share.Utils.Postgres (OrdBy, ordered) +import Share.Web.Errors (MissingExpectedEntity (MissingExpectedEntity)) import U.Codebase.Branch hiding (NamespaceStats, nonEmptyChildren) import U.Codebase.Branch qualified as V2 hiding (NamespaceStats) import U.Codebase.Causal qualified as Causal diff --git a/src/Enlil/Postgres/Causal/Types.hs b/src/Share/Postgres/Causal/Types.hs similarity index 96% rename from src/Enlil/Postgres/Causal/Types.hs rename to src/Share/Postgres/Causal/Types.hs index 22b75ef..33960c4 100644 --- a/src/Enlil/Postgres/Causal/Types.hs +++ b/src/Share/Postgres/Causal/Types.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.Causal.Types +module Share.Postgres.Causal.Types ( PgNamespace, CausalNamespace, PgCausalNamespace, @@ -8,7 +8,7 @@ module Enlil.Postgres.Causal.Types ) where -import Enlil.Postgres.IDs +import Share.Postgres.IDs import U.Codebase.Branch qualified as U import U.Codebase.Causal qualified as U import U.Codebase.Sqlite.Branch.Full qualified as BranchFull diff --git a/src/Enlil/Postgres/Comments/Queries.hs b/src/Share/Postgres/Comments/Queries.hs similarity index 97% rename from src/Enlil/Postgres/Comments/Queries.hs rename to src/Share/Postgres/Comments/Queries.hs index 7f62541..61f008e 100644 --- a/src/Enlil/Postgres/Comments/Queries.hs +++ b/src/Share/Postgres/Comments/Queries.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.Comments.Queries +module Share.Postgres.Comments.Queries ( getComment, createComment, updateComment, @@ -10,10 +10,10 @@ where import Data.List qualified as List import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Web.Share.Comments +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Web.Share.Comments getComment :: CommentId -> diff --git a/src/Enlil/Postgres/Contributions/Queries.hs b/src/Share/Postgres/Contributions/Queries.hs similarity index 98% rename from src/Enlil/Postgres/Contributions/Queries.hs rename to src/Share/Postgres/Contributions/Queries.hs index 843d1e3..9eb02fb 100644 --- a/src/Enlil/Postgres/Contributions/Queries.hs +++ b/src/Share/Postgres/Contributions/Queries.hs @@ -2,7 +2,7 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.Contributions.Queries +module Share.Postgres.Contributions.Queries ( createContribution, contributionByProjectIdAndNumber, shareContributionByProjectIdAndNumber, @@ -25,16 +25,16 @@ import Data.List qualified as List import Data.Map qualified as Map import Data.Set qualified as Set import Data.Time (UTCTime) -import Enlil.Contribution (Contribution (..), ContributionStatus (..)) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Comments.Queries (commentsByTicketOrContribution) -import Enlil.Postgres.IDs -import Enlil.Prelude -import Enlil.Utils.API -import Enlil.Web.Errors -import Enlil.Web.Share.Contributions.API (ContributionTimelineCursor, ListContributionsCursor) -import Enlil.Web.Share.Contributions.Types +import Share.Contribution (Contribution (..), ContributionStatus (..)) +import Share.IDs +import Share.Postgres qualified as PG +import Share.Postgres.Comments.Queries (commentsByTicketOrContribution) +import Share.Postgres.IDs +import Share.Prelude +import Share.Utils.API +import Share.Web.Errors +import Share.Web.Share.Contributions.API (ContributionTimelineCursor, ListContributionsCursor) +import Share.Web.Share.Contributions.Types import Safe (lastMay) createContribution :: diff --git a/src/Enlil/Postgres/Definitions/Queries.hs b/src/Share/Postgres/Definitions/Queries.hs similarity index 99% rename from src/Enlil/Postgres/Definitions/Queries.hs rename to src/Share/Postgres/Definitions/Queries.hs index 79234ff..3bce6ad 100644 --- a/src/Enlil/Postgres/Definitions/Queries.hs +++ b/src/Share/Postgres/Definitions/Queries.hs @@ -1,6 +1,6 @@ {-# LANGUAGE DataKinds #-} -module Enlil.Postgres.Definitions.Queries +module Share.Postgres.Definitions.Queries ( loadTerm, expectTerm, saveTermComponent, @@ -39,18 +39,18 @@ import Data.Set qualified as Set import Data.Text qualified as Text import Data.Vector (Vector) import Data.Vector qualified as Vector -import Enlil.Codebase.Types (CodebaseEnv (..), CodebaseM) -import Enlil.IDs -import Enlil.Postgres -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Definitions.Types -import Enlil.Postgres.Definitions.Types qualified as DefnTypes -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Postgres (OrdBy) -import Enlil.Web.Errors (ErrorID (..), InternalServerError (InternalServerError), ToServerError (..)) +import Share.Codebase.Types (CodebaseEnv (..), CodebaseM) +import Share.IDs +import Share.Postgres +import Share.Postgres qualified as PG +import Share.Postgres.Definitions.Types +import Share.Postgres.Definitions.Types qualified as DefnTypes +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Utils.Postgres (OrdBy) +import Share.Web.Errors (ErrorID (..), InternalServerError (InternalServerError), ToServerError (..)) import Servant (err500) import U.Codebase.Decl qualified as Decl import U.Codebase.Decl qualified as V2 hiding (Type) diff --git a/src/Enlil/Postgres/Definitions/Types.hs b/src/Share/Postgres/Definitions/Types.hs similarity index 97% rename from src/Enlil/Postgres/Definitions/Types.hs rename to src/Share/Postgres/Definitions/Types.hs index 102cf33..5cb6895 100644 --- a/src/Enlil/Postgres/Definitions/Types.hs +++ b/src/Share/Postgres/Definitions/Types.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.Definitions.Types +module Share.Postgres.Definitions.Types ( TermComponentElementBytes (..), TermComponentElement (..), termComponentElementToByteString, @@ -24,9 +24,9 @@ module Enlil.Postgres.Definitions.Types ) where -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Serialization qualified as S -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Postgres.Serialization qualified as S +import Share.Prelude import Hasql.Decoders qualified as Decoders import Hasql.Decoders qualified as Hasql import Hasql.Encoders qualified as Encoders diff --git a/src/Enlil/Postgres/Hashes/Queries.hs b/src/Share/Postgres/Hashes/Queries.hs similarity index 97% rename from src/Enlil/Postgres/Hashes/Queries.hs rename to src/Share/Postgres/Hashes/Queries.hs index 0334008..52c852c 100644 --- a/src/Enlil/Postgres/Hashes/Queries.hs +++ b/src/Share/Postgres/Hashes/Queries.hs @@ -10,7 +10,7 @@ -- to that resource and any resources contained within it. E.g. if a call provides a CausalId, -- it's assumed the caller has already validated that they have access to the Causal and by -- extension all branches, definitions, patches, and metadata contained inside. -module Enlil.Postgres.Hashes.Queries +module Share.Postgres.Hashes.Queries ( ensureComponentHashId, ensureComponentHashIdsOf, expectComponentHashIdsOf, @@ -39,13 +39,13 @@ where import Control.Lens import Data.Text qualified as Text -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Codebase.Types qualified as Codebase -import Enlil.Postgres -import Enlil.Postgres.IDs -import Enlil.Prelude -import Enlil.Utils.Postgres (ordered) -import Enlil.Web.Errors (EntityMissing (EntityMissing), MissingExpectedEntity (..)) +import Share.Codebase.Types (CodebaseM) +import Share.Codebase.Types qualified as Codebase +import Share.Postgres +import Share.Postgres.IDs +import Share.Prelude +import Share.Utils.Postgres (ordered) +import Share.Web.Errors (EntityMissing (EntityMissing), MissingExpectedEntity (..)) -- | Save a component hash, or return the existing hash id if it already exists ensureComponentHashId :: (HasCallStack, QueryM m) => ComponentHash -> m ComponentHashId diff --git a/src/Enlil/Postgres/IDs.hs b/src/Share/Postgres/IDs.hs similarity index 97% rename from src/Enlil/Postgres/IDs.hs rename to src/Share/Postgres/IDs.hs index 34388cb..9472bc9 100644 --- a/src/Enlil/Postgres/IDs.hs +++ b/src/Share/Postgres/IDs.hs @@ -2,7 +2,7 @@ -- | We define separate '*HashId' types because HashIds from sqlite and Postgres must never -- be mistaken for one another, you can't simply convert between them. -module Enlil.Postgres.IDs +module Share.Postgres.IDs ( -- We must redefine *Id types to ensure Sqlite HashIDs don't mix with Postgres HashIDs. CausalId (..), BranchHashId (..), @@ -36,8 +36,8 @@ module Enlil.Postgres.IDs where import Control.Lens -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Prelude import U.Codebase.HashTags (BranchHash (..), CausalHash (..), ComponentHash (..), PatchHash (..)) import Unison.Hash32 (Hash32) import Unison.Hash32 qualified as Hash32 diff --git a/src/Enlil/Postgres/LooseCode/Queries.hs b/src/Share/Postgres/LooseCode/Queries.hs similarity index 88% rename from src/Enlil/Postgres/LooseCode/Queries.hs rename to src/Share/Postgres/LooseCode/Queries.hs index 52020b1..58e3236 100644 --- a/src/Enlil/Postgres/LooseCode/Queries.hs +++ b/src/Share/Postgres/LooseCode/Queries.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.LooseCode.Queries +module Share.Postgres.LooseCode.Queries ( loadLooseCodeRoot, expectLooseCodeRoot, ensureLooseCodeRootHash, @@ -7,17 +7,17 @@ module Enlil.Postgres.LooseCode.Queries ) where -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Codebase.Types qualified as Codebase -import Enlil.IDs -import Enlil.Postgres (unrecoverableError) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Causal.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt) -import Enlil.Prelude -import Enlil.Web.Errors +import Share.Codebase.Types (CodebaseM) +import Share.Codebase.Types qualified as Codebase +import Share.IDs +import Share.Postgres (unrecoverableError) +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Causal.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.NameLookups.Types (NameLookupReceipt) +import Share.Prelude +import Share.Web.Errors import U.Codebase.Sqlite.Branch.Full qualified as BranchFull -- | Initialize a user's loose code root if it doesn't already exist. diff --git a/src/Enlil/Postgres/Metrics/Queries.hs b/src/Share/Postgres/Metrics/Queries.hs similarity index 98% rename from src/Enlil/Postgres/Metrics/Queries.hs rename to src/Share/Postgres/Metrics/Queries.hs index f12ce84..5932e61 100644 --- a/src/Enlil/Postgres/Metrics/Queries.hs +++ b/src/Share/Postgres/Metrics/Queries.hs @@ -1,8 +1,8 @@ -module Enlil.Postgres.Metrics.Queries where +module Share.Postgres.Metrics.Queries where import Data.Time (UTCTime) -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Prelude usersInteractedWithTickets :: PG.Transaction e Int64 usersInteractedWithTickets = do diff --git a/src/Enlil/Postgres/NameLookups/Conversions.hs b/src/Share/Postgres/NameLookups/Conversions.hs similarity index 96% rename from src/Enlil/Postgres/NameLookups/Conversions.hs rename to src/Share/Postgres/NameLookups/Conversions.hs index 498a8ba..150601a 100644 --- a/src/Enlil/Postgres/NameLookups/Conversions.hs +++ b/src/Share/Postgres/NameLookups/Conversions.hs @@ -1,7 +1,7 @@ -- | Conversions between the various types of references and referents. -- Strongly prefer converting in batches using the plural combinators, they're much more -- efficient than converting in a loop. -module Enlil.Postgres.NameLookups.Conversions +module Share.Postgres.NameLookups.Conversions ( reference1ToPG, references1ToPG, reference2ToPG, @@ -26,12 +26,12 @@ module Enlil.Postgres.NameLookups.Conversions where import Control.Lens -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Hashes.Queries qualified as Hashes -import Enlil.Postgres.IDs (ComponentHash (..)) -import Enlil.Postgres.NameLookups.Types -import Enlil.Postgres.Refs.Types -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Postgres.Hashes.Queries qualified as Hashes +import Share.Postgres.IDs (ComponentHash (..)) +import Share.Postgres.NameLookups.Types +import Share.Postgres.Refs.Types +import Share.Prelude import U.Codebase.Reference qualified as V2 import U.Codebase.Referent qualified as V2 import Unison.Codebase.SqliteCodebase.Conversions qualified as Cv diff --git a/src/Enlil/Postgres/NameLookups/Ops.hs b/src/Share/Postgres/NameLookups/Ops.hs similarity index 94% rename from src/Enlil/Postgres/NameLookups/Ops.hs rename to src/Share/Postgres/NameLookups/Ops.hs index 9ee8313..c51ce27 100644 --- a/src/Enlil/Postgres/NameLookups/Ops.hs +++ b/src/Share/Postgres/NameLookups/Ops.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.NameLookups.Ops +module Share.Postgres.NameLookups.Ops ( namesPerspectiveForRootAndPath, relocateToNameRoot, fuzzySearchDefinitions, @@ -16,17 +16,17 @@ import Control.Lens import Control.Monad.Trans.Maybe import Data.List.NonEmpty qualified as NonEmpty import Data.Set qualified as Set -import Enlil.Postgres (QueryM) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.NameLookups.Conversions qualified as CV -import Enlil.Postgres.NameLookups.Queries qualified as NameLookupQ -import Enlil.Postgres.NameLookups.Queries qualified as Q -import Enlil.Postgres.NameLookups.Types -import Enlil.Postgres.NameLookups.Types qualified as NameLookups -import Enlil.Postgres.Refs.Types -import Enlil.Prelude +import Share.Postgres (QueryM) +import Share.Postgres qualified as PG +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.NameLookups.Conversions qualified as CV +import Share.Postgres.NameLookups.Queries qualified as NameLookupQ +import Share.Postgres.NameLookups.Queries qualified as Q +import Share.Postgres.NameLookups.Types +import Share.Postgres.NameLookups.Types qualified as NameLookups +import Share.Postgres.Refs.Types +import Share.Prelude import U.Codebase.Reference (Reference) import U.Codebase.Referent (ConstructorType, Referent) import Unison.Codebase.Path (Path) diff --git a/src/Enlil/Postgres/NameLookups/Queries.hs b/src/Share/Postgres/NameLookups/Queries.hs similarity index 98% rename from src/Enlil/Postgres/NameLookups/Queries.hs rename to src/Share/Postgres/NameLookups/Queries.hs index 9d24904..543a6f2 100644 --- a/src/Enlil/Postgres/NameLookups/Queries.hs +++ b/src/Share/Postgres/NameLookups/Queries.hs @@ -2,7 +2,7 @@ {-# OPTIONS_GHC -Wno-missing-signatures #-} {-# OPTIONS_GHC -Wno-unused-top-binds #-} -module Enlil.Postgres.NameLookups.Queries +module Share.Postgres.NameLookups.Queries ( termNamesForRefWithinNamespace, typeNamesForRefWithinNamespace, termRefsForExactName, @@ -22,11 +22,11 @@ import Control.Lens hiding (from) import Data.Foldable qualified as Foldable import Data.List.NonEmpty qualified as NEL import Data.Text qualified as Text -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs -import Enlil.Postgres.NameLookups.Types -import Enlil.Postgres.Refs.Types (PGReference, PGReferent, referenceFields, referentFields) -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Postgres.IDs +import Share.Postgres.NameLookups.Types +import Share.Postgres.Refs.Types (PGReference, PGReferent, referenceFields, referentFields) +import Share.Prelude import U.Codebase.Referent (ConstructorType) import Unison.Util.Monoid qualified as Monoid diff --git a/src/Enlil/Postgres/NameLookups/Types.hs b/src/Share/Postgres/NameLookups/Types.hs similarity index 96% rename from src/Enlil/Postgres/NameLookups/Types.hs rename to src/Share/Postgres/NameLookups/Types.hs index 5baeb49..daf1602 100644 --- a/src/Enlil/Postgres/NameLookups/Types.hs +++ b/src/Share/Postgres/NameLookups/Types.hs @@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Postgres.NameLookups.Types +module Share.Postgres.NameLookups.Types ( NamesPerspective (..), ReversedName (..), ReversedPath (..), @@ -26,11 +26,11 @@ import Control.Lens hiding (from) import Data.List.Extra qualified as List import Data.List.NonEmpty.Extra qualified as NonEmpty import Data.Text qualified as Text -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (BranchHashId, ComponentHashId) -import Enlil.Postgres.Refs.Types -import Enlil.Prelude import Hasql.Decoders qualified as Decoders +import Share.Postgres qualified as PG +import Share.Postgres.IDs (BranchHashId, ComponentHashId) +import Share.Postgres.Refs.Types +import Share.Prelude import U.Codebase.Referent (ConstructorType) import Unison.Name (Name) import Unison.Name qualified as Name @@ -104,7 +104,7 @@ instance From ReversedPath [Text] instance From [Text] ReversedPath --- | TODO: Can probably remove this and just use Path since enlil is high enough in the +-- | TODO: Can probably remove this and just use Path since share is high enough in the -- package hierarchy newtype PathSegments = PathSegments [Text] deriving stock (Eq, Ord, Show) diff --git a/src/Enlil/Postgres/NamespaceDiffs.hs b/src/Share/Postgres/NamespaceDiffs.hs similarity index 97% rename from src/Enlil/Postgres/NamespaceDiffs.hs rename to src/Share/Postgres/NamespaceDiffs.hs index fdc442d..619ca1e 100644 --- a/src/Enlil/Postgres/NamespaceDiffs.hs +++ b/src/Share/Postgres/NamespaceDiffs.hs @@ -1,18 +1,18 @@ {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.NamespaceDiffs +module Share.Postgres.NamespaceDiffs ( getRelevantTermsForDiff, getRelevantTypesForDiff, ) where import Data.Either qualified as Either -import Enlil.Postgres (Transaction) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (BranchHashId) -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt, NamedRef (..), ReversedName) -import Enlil.Postgres.Refs.Types (PGReference, PGReferent) -import Enlil.Prelude +import Share.Postgres (Transaction) +import Share.Postgres qualified as PG +import Share.Postgres.IDs (BranchHashId) +import Share.Postgres.NameLookups.Types (NameLookupReceipt, NamedRef (..), ReversedName) +import Share.Postgres.Refs.Types (PGReference, PGReferent) +import Share.Prelude import Unison.Name (Name) import Unison.Util.Relation (Relation) import Unison.Util.Relation qualified as Rel diff --git a/src/Enlil/Postgres/Ops.hs b/src/Share/Postgres/Ops.hs similarity index 88% rename from src/Enlil/Postgres/Ops.hs rename to src/Share/Postgres/Ops.hs index 5cd4f9b..4d4209d 100644 --- a/src/Enlil/Postgres/Ops.hs +++ b/src/Share/Postgres/Ops.hs @@ -1,17 +1,17 @@ -- | Postgres operations composed of individual queries -module Enlil.Postgres.Ops where +module Share.Postgres.Ops where import Control.Monad.Except -import Enlil.IDs (ProjectId, ProjectSlug (..), UserHandle (..), UserId (..)) -import Enlil.IDs qualified as IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Queries as Q -import Enlil.Prelude -import Enlil.Project -import Enlil.User (User (..)) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Errors +import Share.IDs (ProjectId, ProjectSlug (..), UserHandle (..), UserId (..)) +import Share.IDs qualified as IDs +import Share.Postgres qualified as PG +import Share.Postgres.Queries as Q +import Share.Prelude +import Share.Project +import Share.User (User (..)) +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Errors import Servant data Errors diff --git a/src/Enlil/Postgres/Orphans.hs b/src/Share/Postgres/Orphans.hs similarity index 97% rename from src/Enlil/Postgres/Orphans.hs rename to src/Share/Postgres/Orphans.hs index 7c2019c..f1a8a01 100644 --- a/src/Enlil/Postgres/Orphans.hs +++ b/src/Share/Postgres/Orphans.hs @@ -3,16 +3,16 @@ {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -Wno-orphans #-} -module Enlil.Postgres.Orphans () where +module Share.Postgres.Orphans () where import Data.Aeson qualified as Aeson import Data.Bytes.Put (runPutS) import Data.Either.Extra qualified as Either import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors (ErrorID (..), ToServerError (..)) +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors (ErrorID (..), ToServerError (..)) import Hasql.Decoders qualified as Decoders import Hasql.Encoders qualified as Encoders import Hasql.Interpolate qualified as Hasql diff --git a/src/Enlil/Postgres/Patches/Queries.hs b/src/Share/Postgres/Patches/Queries.hs similarity index 97% rename from src/Enlil/Postgres/Patches/Queries.hs rename to src/Share/Postgres/Patches/Queries.hs index 5287c9a..79e83a1 100644 --- a/src/Enlil/Postgres/Patches/Queries.hs +++ b/src/Share/Postgres/Patches/Queries.hs @@ -1,4 +1,4 @@ -module Enlil.Postgres.Patches.Queries +module Share.Postgres.Patches.Queries ( expectPatch, savePatch, ) @@ -7,14 +7,14 @@ where import Control.Lens import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.Codebase.Types (CodebaseEnv (codebaseOwner), CodebaseM) -import Enlil.Postgres -import Enlil.Postgres.Definitions.Queries qualified as Defn -import Enlil.Postgres.Definitions.Types (PgComponentIndex, pgComponentIndex, unPgComponentIndex) -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.Patches.Types -import Enlil.Prelude +import Share.Codebase.Types (CodebaseEnv (codebaseOwner), CodebaseM) +import Share.Postgres +import Share.Postgres.Definitions.Queries qualified as Defn +import Share.Postgres.Definitions.Types (PgComponentIndex, pgComponentIndex, unPgComponentIndex) +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.Patches.Types +import Share.Prelude import U.Codebase.Branch qualified as V2 import U.Codebase.Referent qualified as Referent import U.Codebase.Sqlite.Patch.Full qualified as PatchFull diff --git a/src/Enlil/Postgres/Patches/Types.hs b/src/Share/Postgres/Patches/Types.hs similarity index 62% rename from src/Enlil/Postgres/Patches/Types.hs rename to src/Share/Postgres/Patches/Types.hs index 7fe3e8a..4561b3a 100644 --- a/src/Enlil/Postgres/Patches/Types.hs +++ b/src/Share/Postgres/Patches/Types.hs @@ -1,6 +1,6 @@ -module Enlil.Postgres.Patches.Types (PgPatch) where +module Share.Postgres.Patches.Types (PgPatch) where -import Enlil.Postgres.IDs +import Share.Postgres.IDs import U.Codebase.Sqlite.Patch.Full qualified as PatchFull type PgPatch = PatchFull.Patch' TextId ComponentHashId ComponentHashId diff --git a/src/Enlil/Postgres/Projects/Queries.hs b/src/Share/Postgres/Projects/Queries.hs similarity index 94% rename from src/Enlil/Postgres/Projects/Queries.hs rename to src/Share/Postgres/Projects/Queries.hs index e0eb39d..546a4c1 100644 --- a/src/Enlil/Postgres/Projects/Queries.hs +++ b/src/Share/Postgres/Projects/Queries.hs @@ -1,6 +1,6 @@ {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.Projects.Queries +module Share.Postgres.Projects.Queries ( isPremiumProject, listProjectMaintainers, addMaintainers, @@ -10,11 +10,11 @@ where import Control.Lens import Control.Monad.Except (MonadError (..), runExceptT) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Web.Authorization.Types (ProjectMaintainerPermissions (..)) -import Enlil.Web.Share.Projects.Types (Maintainer (..)) +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Web.Authorization.Types (ProjectMaintainerPermissions (..)) +import Share.Web.Share.Projects.Types (Maintainer (..)) isPremiumProject :: ProjectId -> PG.Transaction e Bool isPremiumProject projId = diff --git a/src/Enlil/Postgres/Queries.hs b/src/Share/Postgres/Queries.hs similarity index 98% rename from src/Enlil/Postgres/Queries.hs rename to src/Share/Postgres/Queries.hs index b389471..1f822c6 100644 --- a/src/Enlil/Postgres/Queries.hs +++ b/src/Share/Postgres/Queries.hs @@ -5,7 +5,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.Queries where +module Share.Postgres.Queries where import Control.Monad.Except import Data.Char qualified as Char @@ -14,28 +14,28 @@ import Data.Monoid (Sum (..)) import Data.Set qualified as Set import Data.Text qualified as Text import Data.Time (UTCTime) -import Enlil.Branch -import Enlil.Codebase qualified as Codebase -import Enlil.Contribution -import Enlil.Github -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Types -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs -import Enlil.Postgres.LooseCode.Queries qualified as LCQ -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt) -import Enlil.Prelude -import Enlil.Project -import Enlil.Release -import Enlil.Ticket (TicketStatus) -import Enlil.Ticket qualified as Ticket -import Enlil.User -import Enlil.Utils.API -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Share.Branches.Types (BranchKindFilter (..)) -import Enlil.Web.Share.Projects.Types (ContributionStats (..), DownloadStats (..), FavData, ProjectOwner, TicketStats (..)) -import Enlil.Web.Share.Releases.Types (ReleaseStatusFilter (..), StatusUpdate (..)) +import Share.Branch +import Share.Codebase qualified as Codebase +import Share.Contribution +import Share.Github +import Share.IDs +import Share.IDs qualified as IDs +import Share.OAuth.Types +import Share.Postgres qualified as PG +import Share.Postgres.IDs +import Share.Postgres.LooseCode.Queries qualified as LCQ +import Share.Postgres.NameLookups.Types (NameLookupReceipt) +import Share.Prelude +import Share.Project +import Share.Release +import Share.Ticket (TicketStatus) +import Share.Ticket qualified as Ticket +import Share.User +import Share.Utils.API +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Share.Branches.Types (BranchKindFilter (..)) +import Share.Web.Share.Projects.Types (ContributionStats (..), DownloadStats (..), FavData, ProjectOwner, TicketStats (..)) +import Share.Web.Share.Releases.Types (ReleaseStatusFilter (..), StatusUpdate (..)) import Unison.Util.List qualified as Utils import Unison.Util.Monoid (intercalateMap) diff --git a/src/Enlil/Postgres/Refs/Types.hs b/src/Share/Postgres/Refs/Types.hs similarity index 94% rename from src/Enlil/Postgres/Refs/Types.hs rename to src/Share/Postgres/Refs/Types.hs index 524a72b..5a79777 100644 --- a/src/Enlil/Postgres/Refs/Types.hs +++ b/src/Share/Postgres/Refs/Types.hs @@ -1,5 +1,5 @@ -- | Contains DB types for References and Referents -module Enlil.Postgres.Refs.Types +module Share.Postgres.Refs.Types ( PGReference, PGReferent, referenceFields, @@ -7,8 +7,8 @@ module Enlil.Postgres.Refs.Types ) where -import Enlil.Postgres.IDs -import Enlil.Prelude +import Share.Postgres.IDs +import Share.Prelude import U.Codebase.Reference (Id' (..), Reference' (..)) import U.Codebase.Reference qualified as Reference import U.Codebase.Referent (Referent') diff --git a/src/Enlil/Postgres/Serialization.hs b/src/Share/Postgres/Serialization.hs similarity index 96% rename from src/Enlil/Postgres/Serialization.hs rename to src/Share/Postgres/Serialization.hs index 612dfa2..bf97a2d 100644 --- a/src/Enlil/Postgres/Serialization.hs +++ b/src/Share/Postgres/Serialization.hs @@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} -module Enlil.Postgres.Serialization +module Share.Postgres.Serialization ( decodeTermAndType, encodeTermAndType, decodeTermComponentElementType, @@ -18,10 +18,10 @@ where import Data.Bytes.Get (runGetS) import Data.Text qualified as Text -import Enlil.Prelude -import Enlil.Utils.Logging -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors (ErrorID (..), ToServerError (..)) +import Share.Prelude +import Share.Utils.Logging +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors (ErrorID (..), ToServerError (..)) import Servant (err500) import U.Codebase.Sqlite.Branch.Full qualified as BranchFull import U.Codebase.Sqlite.Decl.Format qualified as DeclFormat diff --git a/src/Enlil/Postgres/Sync/Conversions.hs b/src/Share/Postgres/Sync/Conversions.hs similarity index 98% rename from src/Enlil/Postgres/Sync/Conversions.hs rename to src/Share/Postgres/Sync/Conversions.hs index 6c64e6b..29963e6 100644 --- a/src/Enlil/Postgres/Sync/Conversions.hs +++ b/src/Share/Postgres/Sync/Conversions.hs @@ -1,9 +1,9 @@ -module Enlil.Postgres.Sync.Conversions where +module Share.Postgres.Sync.Conversions where import Control.Lens import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.Prelude +import Share.Prelude import U.Codebase.Branch qualified as V2 import U.Codebase.Causal qualified as Causal import U.Codebase.HashTags diff --git a/src/Enlil/Postgres/Sync/Queries.hs b/src/Share/Postgres/Sync/Queries.hs similarity index 96% rename from src/Enlil/Postgres/Sync/Queries.hs rename to src/Share/Postgres/Sync/Queries.hs index c0c9d40..da10bf7 100644 --- a/src/Enlil/Postgres/Sync/Queries.hs +++ b/src/Share/Postgres/Sync/Queries.hs @@ -1,5 +1,5 @@ -- | Queries related to sync and temp entities. -module Enlil.Postgres.Sync.Queries +module Share.Postgres.Sync.Queries ( expectEntity, expectCausalEntity, entityLocations, @@ -21,24 +21,24 @@ import Data.Set qualified as Set import Data.Set.NonEmpty (NESet) import Data.Set.NonEmpty qualified as NESet import Data.Vector qualified as Vector -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Codebase.Types qualified as Codebase -import Enlil.IDs -import Enlil.Postgres -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Definitions.Queries qualified as Defn -import Enlil.Postgres.Definitions.Queries qualified as DefnQ -import Enlil.Postgres.Definitions.Types (TermComponentElementBytes (TermComponentElementBytes)) -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.Patches.Queries qualified as PatchQ -import Enlil.Postgres.Serialization qualified as S -import Enlil.Postgres.Sync.Conversions qualified as Cv -import Enlil.Postgres.Sync.Types (TypedTempEntity (..)) -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors (InternalServerError (..), ToServerError (..), Unimplemented (Unimplemented)) -import Enlil.Web.UCM.Sync.Types +import Share.Codebase.Types (CodebaseM) +import Share.Codebase.Types qualified as Codebase +import Share.IDs +import Share.Postgres +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Definitions.Queries qualified as Defn +import Share.Postgres.Definitions.Queries qualified as DefnQ +import Share.Postgres.Definitions.Types (TermComponentElementBytes (TermComponentElementBytes)) +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.Patches.Queries qualified as PatchQ +import Share.Postgres.Serialization qualified as S +import Share.Postgres.Sync.Conversions qualified as Cv +import Share.Postgres.Sync.Types (TypedTempEntity (..)) +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors (InternalServerError (..), ToServerError (..), Unimplemented (Unimplemented)) +import Share.Web.UCM.Sync.Types import Servant (ServerError (..), err500) import U.Codebase.Branch qualified as V2 import U.Codebase.Causal qualified as U diff --git a/src/Enlil/Postgres/Sync/Types.hs b/src/Share/Postgres/Sync/Types.hs similarity index 76% rename from src/Enlil/Postgres/Sync/Types.hs rename to src/Share/Postgres/Sync/Types.hs index d36396c..fc23e04 100644 --- a/src/Enlil/Postgres/Sync/Types.hs +++ b/src/Share/Postgres/Sync/Types.hs @@ -1,8 +1,8 @@ -module Enlil.Postgres.Sync.Types (TypedTempEntity (..)) where +module Share.Postgres.Sync.Types (TypedTempEntity (..)) where -import Enlil.Postgres (decodeField) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Serialization qualified as S +import Share.Postgres (decodeField) +import Share.Postgres qualified as PG +import Share.Postgres.Serialization qualified as S import Hasql.Interpolate qualified as Hasql import U.Codebase.Sqlite.TempEntity (TempEntity) diff --git a/src/Enlil/Postgres/Tickets/Queries.hs b/src/Share/Postgres/Tickets/Queries.hs similarity index 97% rename from src/Enlil/Postgres/Tickets/Queries.hs rename to src/Share/Postgres/Tickets/Queries.hs index 5272274..1b2716a 100644 --- a/src/Enlil/Postgres/Tickets/Queries.hs +++ b/src/Share/Postgres/Tickets/Queries.hs @@ -2,7 +2,7 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Postgres.Tickets.Queries +module Share.Postgres.Tickets.Queries ( createTicket, ticketByProjectIdAndNumber, shareTicketByProjectIdAndNumber, @@ -21,15 +21,15 @@ import Control.Lens import Control.Monad.Except import Data.List qualified as List import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Ticket (Ticket (..), TicketStatus) -import Enlil.Utils.API -import Enlil.Web.Errors -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Tickets.API -import Enlil.Web.Share.Tickets.Types +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Ticket (Ticket (..), TicketStatus) +import Share.Utils.API +import Share.Web.Errors +import Share.Web.Share.Comments +import Share.Web.Share.Tickets.API +import Share.Web.Share.Tickets.Types import Safe (lastMay) createTicket :: diff --git a/src/Enlil/Postgres/Users/Queries.hs b/src/Share/Postgres/Users/Queries.hs similarity index 91% rename from src/Enlil/Postgres/Users/Queries.hs rename to src/Share/Postgres/Users/Queries.hs index fe824a7..e409530 100644 --- a/src/Enlil/Postgres/Users/Queries.hs +++ b/src/Share/Postgres/Users/Queries.hs @@ -2,7 +2,7 @@ {-# LANGUAGE DuplicateRecordFields #-} -- | Common queries for users. -module Enlil.Postgres.Users.Queries +module Share.Postgres.Users.Queries ( userDisplayInfoOf, userProfileById, updateUser, @@ -10,13 +10,13 @@ module Enlil.Postgres.Users.Queries where import Control.Lens -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.UserProfile (UserProfile (..)) -import Enlil.Utils.API (NullableUpdate, fromNullableUpdate) -import Enlil.Utils.URI (URIParam (..)) -import Enlil.Web.Share.Types +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.UserProfile (UserProfile (..)) +import Share.Utils.API (NullableUpdate, fromNullableUpdate) +import Share.Utils.URI (URIParam (..)) +import Share.Web.Share.Types -- | Efficiently resolve User Display Info for UserIds within a structure. userDisplayInfoOf :: Traversal s t UserId UserDisplayInfo -> s -> PG.Transaction e t diff --git a/src/Enlil/Prelude.hs b/src/Share/Prelude.hs similarity index 98% rename from src/Enlil/Prelude.hs rename to src/Share/Prelude.hs index afa416a..72759b4 100644 --- a/src/Enlil/Prelude.hs +++ b/src/Share/Prelude.hs @@ -1,4 +1,4 @@ -module Enlil.Prelude +module Share.Prelude ( module X, Text, ByteString, @@ -80,8 +80,8 @@ import Data.Traversable as X import Data.Typeable (Typeable) import Data.Void as X import Data.Word as X (Word64) -import Enlil.Prelude.Orphans () -import Enlil.Utils.Show (tShow) +import Share.Prelude.Orphans () +import Share.Utils.Show (tShow) import GHC.Generics (Generic) import GHC.Stack (HasCallStack) import Text.Read (readMaybe) diff --git a/src/Enlil/Prelude/Orphans.hs b/src/Share/Prelude/Orphans.hs similarity index 97% rename from src/Enlil/Prelude/Orphans.hs rename to src/Share/Prelude/Orphans.hs index 98ca15f..397713b 100644 --- a/src/Enlil/Prelude/Orphans.hs +++ b/src/Share/Prelude/Orphans.hs @@ -3,7 +3,7 @@ {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} -module Enlil.Prelude.Orphans () where +module Share.Prelude.Orphans () where import Control.Comonad.Cofree (Cofree (..)) import Data.Align (Semialign (..)) diff --git a/src/Enlil/Project.hs b/src/Share/Project.hs similarity index 93% rename from src/Enlil/Project.hs rename to src/Share/Project.hs index 117a5c9..caf326b 100644 --- a/src/Enlil/Project.hs +++ b/src/Share/Project.hs @@ -3,16 +3,16 @@ {-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Project where +module Share.Project where import Data.Aeson (FromJSON, ToJSON) import Data.Aeson qualified as Aeson import Data.Set qualified as Set import Data.Text qualified as Text import Data.Time (UTCTime) -import Enlil.IDs (ProjectId, ProjectSlug (..), UserId) -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.IDs (ProjectId, ProjectSlug (..), UserId) +import Share.Postgres qualified as PG +import Share.Prelude data ProjectVisibility = ProjectPrivate | ProjectPublic deriving (Show, Eq, Ord) diff --git a/src/Enlil/Redis.hs b/src/Share/Redis.hs similarity index 91% rename from src/Enlil/Redis.hs rename to src/Share/Redis.hs index 6cec0cc..dec0f54 100644 --- a/src/Enlil/Redis.hs +++ b/src/Share/Redis.hs @@ -5,7 +5,7 @@ {-# LANGUAGE RecordWildCards #-} -- | Helpers for working with Redis -module Enlil.Redis where +module Share.Redis where import Data.Binary import Data.Binary qualified as Binary @@ -13,11 +13,11 @@ import Data.ByteString.Lazy (fromStrict, toStrict) import Data.Time import Data.Typeable (TypeRep, typeRep) import Database.Redis qualified as R -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Errors -import Enlil.Web.Errors qualified as Errors +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Errors +import Share.Web.Errors qualified as Errors data RedisErr = RedisErr R.Reply diff --git a/src/Enlil/Release.hs b/src/Share/Release.hs similarity index 95% rename from src/Enlil/Release.hs rename to src/Share/Release.hs index bee98bc..abb74ab 100644 --- a/src/Enlil/Release.hs +++ b/src/Share/Release.hs @@ -2,14 +2,14 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Release where +module Share.Release where import Control.Exception import Control.Lens import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude data ReleaseStatus userId = PublishedRelease UTCTime (Maybe userId) diff --git a/src/Enlil/Ticket.hs b/src/Share/Ticket.hs similarity index 94% rename from src/Enlil/Ticket.hs rename to src/Share/Ticket.hs index 41a2863..7a6e3e1 100644 --- a/src/Enlil/Ticket.hs +++ b/src/Share/Ticket.hs @@ -1,12 +1,12 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Ticket where +module Share.Ticket where import Data.Aeson qualified as Aeson import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude import Hasql.Decoders qualified as Decoders import Hasql.Encoders qualified as Encoders import Hasql.Interpolate qualified as Hasql diff --git a/src/Enlil/User.hs b/src/Share/User.hs similarity index 92% rename from src/Enlil/User.hs rename to src/Share/User.hs index b121b0a..7bc7372 100644 --- a/src/Enlil/User.hs +++ b/src/Share/User.hs @@ -2,13 +2,13 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.User where +module Share.User where import Data.Aeson -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Utils.URI +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Utils.URI import Hasql.Interpolate qualified as Hasql data UserVisibility = UserPrivate | UserPublic diff --git a/src/Enlil/UserProfile.hs b/src/Share/UserProfile.hs similarity index 86% rename from src/Enlil/UserProfile.hs rename to src/Share/UserProfile.hs index fe541a3..4016bf8 100644 --- a/src/Enlil/UserProfile.hs +++ b/src/Share/UserProfile.hs @@ -2,12 +2,12 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.UserProfile where +module Share.UserProfile where -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Utils.URI +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Utils.URI import Hasql.Interpolate qualified as Hasql data UserProfile = UserProfile diff --git a/src/Enlil/Utils/API.hs b/src/Share/Utils/API.hs similarity index 99% rename from src/Enlil/Utils/API.hs rename to src/Share/Utils/API.hs index 016d9c0..463774e 100644 --- a/src/Enlil/Utils/API.hs +++ b/src/Share/Utils/API.hs @@ -2,7 +2,7 @@ {-# LANGUAGE TypeOperators #-} -- | Contains generic helpers for REST-style APIs -module Enlil.Utils.API +module Share.Utils.API ( NullableUpdate (..), SetUpdate (..), AddOrRemove (..), @@ -30,8 +30,8 @@ import Data.Text qualified as Text import Data.Text.Lazy qualified as TL import Data.Text.Lazy.Encoding qualified as TL import Data.Typeable (typeRep) -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Prelude import Servant -- | Type for updating of nullable fields. diff --git a/src/Enlil/Utils/Caching.hs b/src/Share/Utils/Caching.hs similarity index 96% rename from src/Enlil/Utils/Caching.hs rename to src/Share/Utils/Caching.hs index f917e39..0c970a8 100644 --- a/src/Enlil/Utils/Caching.hs +++ b/src/Share/Utils/Caching.hs @@ -4,7 +4,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Utils.Caching +module Share.Utils.Caching ( cachedResponse, causalIdCacheKey, Cached, @@ -15,10 +15,10 @@ import Data.ByteString qualified as BS import Data.ByteString.Lazy.Char8 qualified as BL import Data.Text.Encoding qualified as Text import Database.Redis qualified as R -import Enlil.Postgres.IDs (CausalId (..)) -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Authorization qualified as AuthZ +import Share.Postgres.IDs (CausalId (..)) +import Share.Prelude +import Share.Web.App +import Share.Web.Authorization qualified as AuthZ import Network.HTTP.Media import Network.HTTP.Types qualified as HTTP import Servant diff --git a/src/Enlil/Utils/Logging.hs b/src/Share/Utils/Logging.hs similarity index 95% rename from src/Enlil/Utils/Logging.hs rename to src/Share/Utils/Logging.hs index a43af61..e1f3c5f 100644 --- a/src/Enlil/Utils/Logging.hs +++ b/src/Share/Utils/Logging.hs @@ -8,7 +8,7 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} -module Enlil.Utils.Logging +module Share.Utils.Logging ( -- * Message builders Loggable (..), withCallstackIfUnset, @@ -44,13 +44,13 @@ import Data.Map qualified as Map import Data.Text qualified as Text import Data.Text.Encoding qualified as Text import Data.Text.IO qualified as Text -import Enlil.Env qualified as Env -import Enlil.OAuth.Errors (OAuth2Error) -import Enlil.OAuth.Types (RedirectReceiverErr) -import Enlil.Prelude -import Enlil.Utils.Deployment (deployment) -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Logging.Types as X +import Share.Env qualified as Env +import Share.OAuth.Errors (OAuth2Error) +import Share.OAuth.Types (RedirectReceiverErr) +import Share.Prelude +import Share.Utils.Deployment (deployment) +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Logging.Types as X import GHC.Stack (CallStack, callStack, prettyCallStack) import Servant.Client qualified as Servant import System.Log.FastLogger qualified as FL diff --git a/src/Enlil/Utils/Logging/Types.hs b/src/Share/Utils/Logging/Types.hs similarity index 85% rename from src/Enlil/Utils/Logging/Types.hs rename to src/Share/Utils/Logging/Types.hs index 9fb629a..f6253b9 100644 --- a/src/Enlil/Utils/Logging/Types.hs +++ b/src/Share/Utils/Logging/Types.hs @@ -1,6 +1,6 @@ -module Enlil.Utils.Logging.Types where +module Share.Utils.Logging.Types where -import Enlil.Prelude +import Share.Prelude import GHC.Stack (CallStack) import Prelude hiding (log) diff --git a/src/Enlil/Utils/Postgres.hs b/src/Share/Utils/Postgres.hs similarity index 85% rename from src/Enlil/Utils/Postgres.hs rename to src/Share/Utils/Postgres.hs index fb5971d..227f7d3 100644 --- a/src/Enlil/Utils/Postgres.hs +++ b/src/Share/Utils/Postgres.hs @@ -1,11 +1,11 @@ -module Enlil.Utils.Postgres +module Share.Utils.Postgres ( OrdBy (..), ordered, ) where -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Prelude -- | A type for propagating an application-code ordering through a database query. -- We can't trust the order returned by PG, so we make sure to order things explicitly. diff --git a/src/Enlil/Utils/Servant.hs b/src/Share/Utils/Servant.hs similarity index 95% rename from src/Enlil/Utils/Servant.hs rename to src/Share/Utils/Servant.hs index 0bd89e1..6c765f8 100644 --- a/src/Enlil/Utils/Servant.hs +++ b/src/Share/Utils/Servant.hs @@ -5,7 +5,7 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} -module Enlil.Utils.Servant +module Share.Utils.Servant ( LocationHeader, StatusFound302, GetRedirect, @@ -20,10 +20,10 @@ where import Data.Text qualified as Text import Data.Time (NominalDiffTime) -import Enlil.Prelude -import Enlil.Utils.Logging -import Enlil.Web.App -import Enlil.Web.Errors (ErrorID (..), InvalidParam (..), ToServerError (..), respondError) +import Share.Prelude +import Share.Utils.Logging +import Share.Web.App +import Share.Web.Errors (ErrorID (..), InvalidParam (..), ToServerError (..), respondError) import GHC.TypeLits (KnownSymbol, Nat, Symbol) import Servant import UnliftIO qualified diff --git a/src/Enlil/Utils/Servant/Client.hs b/src/Share/Utils/Servant/Client.hs similarity index 78% rename from src/Enlil/Utils/Servant/Client.hs rename to src/Share/Utils/Servant/Client.hs index 15c3578..6683296 100644 --- a/src/Enlil/Utils/Servant/Client.hs +++ b/src/Share/Utils/Servant/Client.hs @@ -1,8 +1,8 @@ -module Enlil.Utils.Servant.Client where +module Share.Utils.Servant.Client where -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Errors (respondError) +import Share.Prelude +import Share.Web.App +import Share.Web.Errors (respondError) import Network.HTTP.Client.TLS qualified as HTTP import Servant.Client diff --git a/src/Enlil/Utils/Servant/PathInfo.hs b/src/Share/Utils/Servant/PathInfo.hs similarity index 98% rename from src/Enlil/Utils/Servant/PathInfo.hs rename to src/Share/Utils/Servant/PathInfo.hs index fcfc659..95535c0 100644 --- a/src/Enlil/Utils/Servant/PathInfo.hs +++ b/src/Share/Utils/Servant/PathInfo.hs @@ -6,7 +6,7 @@ -- | Provides a mechanism to get information about a given request given the full API. -- It can be used to normalize routes for reporting in metrics. -module Enlil.Utils.Servant.PathInfo (normalizePath, PathSegment, CaptureSegment, PathInfo, HasPathInfo (..)) where +module Share.Utils.Servant.PathInfo (normalizePath, PathSegment, CaptureSegment, PathInfo, HasPathInfo (..)) where import Control.Applicative import Data.Text diff --git a/src/Enlil/Utils/Servant/RawRequest.hs b/src/Share/Utils/Servant/RawRequest.hs similarity index 94% rename from src/Enlil/Utils/Servant/RawRequest.hs rename to src/Share/Utils/Servant/RawRequest.hs index 8a6792d..615da5a 100644 --- a/src/Enlil/Utils/Servant/RawRequest.hs +++ b/src/Share/Utils/Servant/RawRequest.hs @@ -7,11 +7,11 @@ -- | Provides the raw request to a handler. Generally this is a bad idea in Servant, but it -- can be very useful or even necessary for implementing middleware. -module Enlil.Utils.Servant.RawRequest (RawRequest) where +module Share.Utils.Servant.RawRequest (RawRequest) where import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.Prelude +import Share.Prelude import Network.Wai qualified as Wai import Servant import Servant.Server.Internal.Delayed (passToServer) diff --git a/src/Enlil/Utils/Unison.hs b/src/Share/Utils/Unison.hs similarity index 86% rename from src/Enlil/Utils/Unison.hs rename to src/Share/Utils/Unison.hs index 854d5c5..d5a2d31 100644 --- a/src/Enlil/Utils/Unison.hs +++ b/src/Share/Utils/Unison.hs @@ -1,16 +1,16 @@ -- | Utils for working with `unison` packages and types -module Enlil.Utils.Unison where +module Share.Utils.Unison where import Control.Monad.Except import Control.Monad.Reader import Data.ByteString.Lazy.Char8 qualified as BL import Data.Text.Encoding qualified as Text -import Enlil.Postgres.IDs -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App (WebApp) -import Enlil.Web.Errors (respondError) -import Enlil.Web.Errors qualified as Errors +import Share.Postgres.IDs +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.App (WebApp) +import Share.Web.Errors (respondError) +import Share.Web.Errors qualified as Errors import Servant import Unison.Hash qualified as Hash import Unison.Hash32 qualified as Hash32 diff --git a/src/Enlil/Web/API.hs b/src/Share/Web/API.hs similarity index 77% rename from src/Enlil/Web/API.hs rename to src/Share/Web/API.hs index ed7df44..a53c7c5 100644 --- a/src/Enlil/Web/API.hs +++ b/src/Share/Web/API.hs @@ -1,17 +1,17 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.API where +module Share.Web.API where -import Enlil.OAuth.API qualified as OAuth -import Enlil.OAuth.Session (MaybeAuthenticatedSession) -import Enlil.Prelude -import Enlil.Web.Admin.API qualified as Admin -import Enlil.Web.Local.API qualified as Local -import Enlil.Web.Share.API qualified as Share -import Enlil.Web.Share.Projects.API qualified as Projects -import Enlil.Web.Support.API qualified as Support -import Enlil.Web.Types +import Share.OAuth.API qualified as OAuth +import Share.OAuth.Session (MaybeAuthenticatedSession) +import Share.Prelude +import Share.Web.Admin.API qualified as Admin +import Share.Web.Local.API qualified as Local +import Share.Web.Share.API qualified as Share +import Share.Web.Share.Projects.API qualified as Projects +import Share.Web.Support.API qualified as Support +import Share.Web.Types import Servant import Unison.Share.API.Projects qualified as UCMProjects import Unison.Sync.API qualified as Unison.Sync diff --git a/src/Enlil/Web/Admin/API.hs b/src/Share/Web/Admin/API.hs similarity index 92% rename from src/Enlil/Web/Admin/API.hs rename to src/Share/Web/Admin/API.hs index 3c8df0f..06da5ab 100644 --- a/src/Enlil/Web/Admin/API.hs +++ b/src/Share/Web/Admin/API.hs @@ -3,11 +3,11 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Admin.API where +module Share.Web.Admin.API where -import Enlil.IDs -import Enlil.OAuth.Session -import Enlil.Web.Admin.Types +import Share.IDs +import Share.OAuth.Session +import Share.Web.Admin.Types import Servant type API = diff --git a/src/Enlil/Web/Admin/Impl.hs b/src/Share/Web/Admin/Impl.hs similarity index 88% rename from src/Enlil/Web/Admin/Impl.hs rename to src/Share/Web/Admin/Impl.hs index 396db69..f465814 100644 --- a/src/Enlil/Web/Admin/Impl.hs +++ b/src/Share/Web/Admin/Impl.hs @@ -4,22 +4,22 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Admin.Impl where +module Share.Web.Admin.Impl where import Data.Either (partitionEithers) import Data.Time qualified as Time -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Admin qualified as Admin -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.User (User (..)) -import Enlil.Web.Admin.API qualified as Admin -import Enlil.Web.Admin.Types -import Enlil.Web.App -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors +import Share.IDs +import Share.Postgres qualified as PG +import Share.Postgres.Admin qualified as Admin +import Share.Postgres.Ops qualified as PGO +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.User (User (..)) +import Share.Web.Admin.API qualified as Admin +import Share.Web.Admin.Types +import Share.Web.App +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors import Servant import Unison.Util.Monoid qualified as Monoid diff --git a/src/Enlil/Web/Admin/Types.hs b/src/Share/Web/Admin/Types.hs similarity index 96% rename from src/Enlil/Web/Admin/Types.hs rename to src/Share/Web/Admin/Types.hs index 7646cc6..738964f 100644 --- a/src/Enlil/Web/Admin/Types.hs +++ b/src/Share/Web/Admin/Types.hs @@ -1,11 +1,11 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Admin.Types where +module Share.Web.Admin.Types where import Data.Aeson import Data.Time (Day) -import Enlil.IDs +import Share.IDs data ProjectCategory = ProjectCategory { categoryName :: CategoryName, diff --git a/src/Enlil/Web/App.hs b/src/Share/Web/App.hs similarity index 89% rename from src/Enlil/Web/App.hs rename to src/Share/Web/App.hs index ab581fc..ee92108 100644 --- a/src/Enlil/Web/App.hs +++ b/src/Share/Web/App.hs @@ -1,6 +1,6 @@ {-# LANGUAGE DataKinds #-} -module Enlil.Web.App +module Share.Web.App ( RequestCtx (..), WebApp, ReqTagsVar, @@ -11,8 +11,8 @@ module Enlil.Web.App addServerTag, getTags, shouldUseCaching, - enlilPath, - enlilPathQ, + sharePath, + sharePathQ, shareUIPath, shareUIPathQ, isTrustedURI, @@ -21,15 +21,15 @@ where import Control.Monad.Reader import Data.Map qualified as Map -import Enlil.App -import Enlil.Env -import Enlil.Env qualified as Env -import Enlil.IDs (RequestId, UserId) -import Enlil.Prelude -import Enlil.Utils.Logging -import Enlil.Utils.URI (setPathAndQueryParams) import Network.URI import Servant +import Share.App +import Share.Env +import Share.Env qualified as Env +import Share.IDs (RequestId, UserId) +import Share.Prelude +import Share.Utils.Logging +import Share.Utils.URI (setPathAndQueryParams) import UnliftIO.STM type WebApp = AppM RequestCtx @@ -119,15 +119,15 @@ shouldUseCaching :: (MonadReader (Env RequestCtx) m) => m Bool shouldUseCaching = asks (useCaching . requestCtx) --- | Construct a full URI to a path within enlil, with provided query params. -enlilPathQ :: [Text] -> Map Text Text -> AppM reqCtx URI -enlilPathQ pathSegments queryParams = do +-- | Construct a full URI to a path within share, with provided query params. +sharePathQ :: [Text] -> Map Text Text -> AppM reqCtx URI +sharePathQ pathSegments queryParams = do uri <- asks Env.apiOrigin pure . setPathAndQueryParams pathSegments queryParams $ uri --- | Construct a full URI to a path within enlil. -enlilPath :: [Text] -> AppM reqCtx URI -enlilPath path = enlilPathQ path mempty +-- | Construct a full URI to a path within share. +sharePath :: [Text] -> AppM reqCtx URI +sharePath path = sharePathQ path mempty -- | Check if a URI is a the Share UI, the Cloud UI, the main website, or the -- Cloud website. This is useful for preventing attackers from generating diff --git a/src/Enlil/Web/Authentication.hs b/src/Share/Web/Authentication.hs similarity index 80% rename from src/Enlil/Web/Authentication.hs rename to src/Share/Web/Authentication.hs index cb5080d..5bffdfd 100644 --- a/src/Enlil/Web/Authentication.hs +++ b/src/Share/Web/Authentication.hs @@ -3,7 +3,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies #-} -module Enlil.Web.Authentication +module Share.Web.Authentication ( cookieSessionTTL, requireAuthenticatedUser, UnauthenticatedError (..), @@ -14,12 +14,12 @@ module Enlil.Web.Authentication where import Data.Time -import Enlil.IDs -import Enlil.OAuth.Session (Session (..), pattern AuthenticatedUser, pattern MaybeAuthedUserID, pattern Unauthenticated) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Errors -import Enlil.Web.Errors qualified as Errors +import Share.IDs +import Share.OAuth.Session (Session (..), pattern AuthenticatedUser, pattern MaybeAuthedUserID, pattern Unauthenticated) +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Errors +import Share.Web.Errors qualified as Errors import Servant cookieSessionTTL :: NominalDiffTime diff --git a/src/Enlil/Web/Authentication/AccessToken.hs b/src/Share/Web/Authentication/AccessToken.hs similarity index 81% rename from src/Enlil/Web/Authentication/AccessToken.hs rename to src/Share/Web/Authentication/AccessToken.hs index ffa6f13..9702360 100644 --- a/src/Enlil/Web/Authentication/AccessToken.hs +++ b/src/Share/Web/Authentication/AccessToken.hs @@ -2,7 +2,7 @@ {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Authentication.AccessToken where +module Share.Web.Authentication.AccessToken where import Control.Lens hiding ((.=)) import Crypto.JWT @@ -11,22 +11,22 @@ import Data.Map qualified as Map import Data.Set qualified as Set import Data.Text qualified as Text import Data.Time -import Enlil.App -import Enlil.IDs (SessionId, UserId (..)) -import Enlil.JWT (JWTParam (..)) -import Enlil.OAuth.Scopes -import Enlil.OAuth.Types (AccessToken (..)) -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Prelude -import Enlil.User -import Enlil.Web.App -import Enlil.Web.Authentication.JWT (verifyJWT) -import Enlil.Web.Authentication.JWT qualified as AuthJWT -import Enlil.Web.Authentication.JWT qualified as JWT -import Enlil.Web.Authentication.Types -import Enlil.Web.Errors import Network.URI (URI) import Servant.Auth.JWT +import Share.App +import Share.IDs (SessionId, UserId (..)) +import Share.JWT (JWTParam (..)) +import Share.OAuth.Scopes +import Share.OAuth.Types (AccessToken (..)) +import Share.Postgres.Ops qualified as PGO +import Share.Prelude +import Share.User +import Share.Web.App +import Share.Web.Authentication.JWT (verifyJWT) +import Share.Web.Authentication.JWT qualified as AuthJWT +import Share.Web.Authentication.JWT qualified as JWT +import Share.Web.Authentication.Types +import Share.Web.Errors -- Once we have an easy way to refresh these (e.g. private key stored on the client) -- we should drop this down to 30 minutes or less. @@ -72,7 +72,7 @@ verifyAccessToken' (Scopes requiredScopes) (AccessToken (JWTParam signed)) = do -- Checks: -- -- * Token isn't expired --- * Token was signed by Enlil +-- * Token was signed by Share -- * Token contains all required scopes verifyAccessToken :: Scopes -> AccessToken -> WebApp AccessTokenClaims verifyAccessToken requiredScopes token = do @@ -87,7 +87,7 @@ userForAccessToken token = do createAccessToken :: Set URI -> UserId -> SessionId -> Scopes -> WebApp AccessToken createAccessToken aud userID sessionID scope = do - standardClaims <- JWT.enlilStandardClaims aud userID accessTokenTTL sessionID + standardClaims <- JWT.shareStandardClaims aud userID accessTokenTTL sessionID let accessTokenClaims = AccessTokenClaims {scope, standardClaims} signedJWT <- AuthJWT.signJWT accessTokenClaims pure (AccessToken (JWTParam signedJWT)) diff --git a/src/Enlil/Web/Authentication/HashJWT.hs b/src/Share/Web/Authentication/HashJWT.hs similarity index 63% rename from src/Enlil/Web/Authentication/HashJWT.hs rename to src/Share/Web/Authentication/HashJWT.hs index 0f06add..d776837 100644 --- a/src/Enlil/Web/Authentication/HashJWT.hs +++ b/src/Share/Web/Authentication/HashJWT.hs @@ -1,11 +1,11 @@ -module Enlil.Web.Authentication.HashJWT where +module Share.Web.Authentication.HashJWT where import Crypto.JWT -import Enlil.Env qualified as Env -import Enlil.JWT qualified as JWT -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Errors +import Share.Env qualified as Env +import Share.JWT qualified as JWT +import Share.Prelude +import Share.Web.App +import Share.Web.Errors import Unison.Share.API.Hash (HashJWTClaims) signHashJWT :: HashJWTClaims -> WebApp SignedJWT diff --git a/src/Enlil/Web/Authentication/JWT.hs b/src/Share/Web/Authentication/JWT.hs similarity index 87% rename from src/Enlil/Web/Authentication/JWT.hs rename to src/Share/Web/Authentication/JWT.hs index f48532e..9027cfa 100644 --- a/src/Enlil/Web/Authentication/JWT.hs +++ b/src/Share/Web/Authentication/JWT.hs @@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Authentication.JWT where +module Share.Web.Authentication.JWT where import Control.Lens hiding ((.=)) import Crypto.JWT @@ -10,17 +10,17 @@ import Data.Either.Combinators qualified as Either import Data.Set qualified as Set import Data.Set.Lens (setOf) import Data.Time (NominalDiffTime, UTCTime, addUTCTime, getCurrentTime) -import Enlil.App -import Enlil.Env qualified as Env -import Enlil.IDs (JTI (..), SessionId (..), UserId (..)) -import Enlil.IDs qualified as IDs -import Enlil.JWT qualified as JWT -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Authentication.Types -import Enlil.Web.Errors import Network.URI (URI) import Network.URI qualified as URI +import Share.App +import Share.Env qualified as Env +import Share.IDs (JTI (..), SessionId (..), UserId (..)) +import Share.IDs qualified as IDs +import Share.JWT qualified as JWT +import Share.Prelude +import Share.Web.App +import Share.Web.Authentication.Types +import Share.Web.Errors -- | Helper for working with standard claim sets more easily/without a bunch of Maybes. data StandardClaims = StandardClaims @@ -66,10 +66,10 @@ decodeStandardClaims claims = do let additionalClaims = claims ^. JWT.unregisteredClaims pure (standardClaims, additionalClaims) -enlilStandardClaims :: Set URI -> UserId -> NominalDiffTime -> SessionId -> AppM reqCtx StandardClaims -enlilStandardClaims aud sub ttl (SessionId sessionIdUUID) = do +shareStandardClaims :: Set URI -> UserId -> NominalDiffTime -> SessionId -> AppM reqCtx StandardClaims +shareStandardClaims aud sub ttl (SessionId sessionIdUUID) = do let jti = IDs.toText $ JTI sessionIdUUID - iss <- enlilIssuer + iss <- shareIssuer iat <- liftIO getCurrentTime let exp = addUTCTime ttl iat pure (StandardClaims {..}) diff --git a/src/Enlil/Web/Authentication/Types.hs b/src/Share/Web/Authentication/Types.hs similarity index 90% rename from src/Enlil/Web/Authentication/Types.hs rename to src/Share/Web/Authentication/Types.hs index e8c8a55..c21ecf1 100644 --- a/src/Enlil/Web/Authentication/Types.hs +++ b/src/Share/Web/Authentication/Types.hs @@ -1,15 +1,15 @@ -module Enlil.Web.Authentication.Types where +module Share.Web.Authentication.Types where import Crypto.JWT import Crypto.JWT qualified as JWT import Data.ByteString.Lazy.Char8 qualified as BL import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.OAuth.Scopes -import Enlil.Prelude -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors -import Enlil.Web.Errors qualified as Errors +import Share.OAuth.Scopes +import Share.Prelude +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors +import Share.Web.Errors qualified as Errors import Servant data AuthenticationErr diff --git a/src/Enlil/Web/Authorization.hs b/src/Share/Web/Authorization.hs similarity index 97% rename from src/Enlil/Web/Authorization.hs rename to src/Share/Web/Authorization.hs index d8bdd3b..217602d 100644 --- a/src/Enlil/Web/Authorization.hs +++ b/src/Share/Web/Authorization.hs @@ -1,7 +1,7 @@ {-# LANGUAGE DuplicateRecordFields #-} -- | Contains authorization checks for various resources. -module Enlil.Web.Authorization +module Share.Web.Authorization ( assertCausalHashAccessibleFromRoot, checkProjectCreate, checkProjectUpdate, @@ -70,27 +70,27 @@ import Data.Set.NonEmpty (NESet) import Data.Set.NonEmpty qualified as NESet import Data.Text.Encoding qualified as Text import Data.Time qualified as Time -import Enlil.Branch -import Enlil.Contribution (Contribution (..), ContributionStatus (..)) -import Enlil.IDs -import Enlil.OAuth.Session (Session (sessionCreated)) -import Enlil.OAuth.Session qualified as Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Authorization.Queries qualified as Q -import Enlil.Postgres.IDs (CausalId) -import Enlil.Prelude -import Enlil.Project -import Enlil.Release -import Enlil.Ticket -import Enlil.User (User (..), UserVisibility (..)) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Authorization.Types (ProjectMaintainerPermission (..), hasProjectPermissions) -import Enlil.Web.Errors -import Enlil.Web.Errors qualified as Errors -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Contributions.Types (UpdateContributionRequest (..)) -import Enlil.Web.Share.Tickets.Types +import Share.Branch +import Share.Contribution (Contribution (..), ContributionStatus (..)) +import Share.IDs +import Share.OAuth.Session (Session (sessionCreated)) +import Share.OAuth.Session qualified as Session +import Share.Postgres qualified as PG +import Share.Postgres.Authorization.Queries qualified as Q +import Share.Postgres.IDs (CausalId) +import Share.Prelude +import Share.Project +import Share.Release +import Share.Ticket +import Share.User (User (..), UserVisibility (..)) +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Authorization.Types (ProjectMaintainerPermission (..), hasProjectPermissions) +import Share.Web.Errors +import Share.Web.Errors qualified as Errors +import Share.Web.Share.Comments +import Share.Web.Share.Contributions.Types (UpdateContributionRequest (..)) +import Share.Web.Share.Tickets.Types import Servant import Unison.Codebase.Path (Path) import Unison.Codebase.Path qualified as Path diff --git a/src/Enlil/Web/Authorization/Types.hs b/src/Share/Web/Authorization/Types.hs similarity index 98% rename from src/Enlil/Web/Authorization/Types.hs rename to src/Share/Web/Authorization/Types.hs index 84d8339..8662663 100644 --- a/src/Enlil/Web/Authorization/Types.hs +++ b/src/Share/Web/Authorization/Types.hs @@ -1,4 +1,4 @@ -module Enlil.Web.Authorization.Types +module Share.Web.Authorization.Types ( ProjectMaintainerPermission (..), ProjectMaintainerPermissions (..), hasProjectPermissions, diff --git a/src/Enlil/Web/Errors.hs b/src/Share/Web/Errors.hs similarity index 97% rename from src/Enlil/Web/Errors.hs rename to src/Share/Web/Errors.hs index 62605ad..cf276ad 100644 --- a/src/Enlil/Web/Errors.hs +++ b/src/Share/Web/Errors.hs @@ -3,7 +3,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Errors +module Share.Web.Errors ( respondError, reportError, ToServerError (..), @@ -43,14 +43,14 @@ import Data.String (IsString) import Data.Text (pack) import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.Env qualified as Env -import Enlil.Monitoring qualified as Monitoring -import Enlil.OAuth.Errors (OAuth2Error (..), OAuth2ErrorCode (..), OAuth2ErrorRedirect (..)) -import Enlil.OAuth.Types (AuthenticationRequest (..), RedirectReceiverErr (..)) -import Enlil.Prelude -import Enlil.Utils.Logging -import Enlil.Utils.URI (URIParam (..), addQueryParam) -import Enlil.Web.App +import Share.Env qualified as Env +import Share.Monitoring qualified as Monitoring +import Share.OAuth.Errors (OAuth2Error (..), OAuth2ErrorCode (..), OAuth2ErrorRedirect (..)) +import Share.OAuth.Types (AuthenticationRequest (..), RedirectReceiverErr (..)) +import Share.Prelude +import Share.Utils.Logging +import Share.Utils.URI (URIParam (..), addQueryParam) +import Share.Web.App import GHC.Stack qualified as GHC import Servant import Servant.Client diff --git a/src/Enlil/Web/Impl.hs b/src/Share/Web/Impl.hs similarity index 56% rename from src/Enlil/Web/Impl.hs rename to src/Share/Web/Impl.hs index ce50923..a6cc4ab 100644 --- a/src/Enlil/Web/Impl.hs +++ b/src/Share/Web/Impl.hs @@ -1,36 +1,36 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Impl (server) where +module Share.Web.Impl (server) where import Data.Set qualified as Set -import Enlil.App -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.OAuth.Types (ResponseType (ResponseTypeCode)) -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Prelude -import Enlil.User -import Enlil.Utils.URI -import Enlil.Web.API qualified as Web -import Enlil.Web.Admin.Impl qualified as Admin -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Local.Impl qualified as Local -import Enlil.Web.OAuth.Impl qualified as OAuth -import Enlil.Web.Share.Impl qualified as Share -import Enlil.Web.Share.Projects.Impl qualified as Projects -import Enlil.Web.Support.Impl qualified as Support -import Enlil.Web.Types -import Enlil.Web.UCM.Projects.Impl qualified as UCMProjects -import Enlil.Web.UCM.Sync.Impl qualified as Sync import Servant +import Share.App +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.OAuth.Types (ResponseType (ResponseTypeCode)) +import Share.Postgres.Ops qualified as PGO +import Share.Prelude +import Share.User +import Share.Utils.URI +import Share.Web.API qualified as Web +import Share.Web.Admin.Impl qualified as Admin +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Local.Impl qualified as Local +import Share.Web.OAuth.Impl qualified as OAuth +import Share.Web.Share.Impl qualified as Share +import Share.Web.Share.Projects.Impl qualified as Projects +import Share.Web.Support.Impl qualified as Support +import Share.Web.Types +import Share.Web.UCM.Projects.Impl qualified as UCMProjects +import Share.Web.UCM.Sync.Impl qualified as Sync discoveryEndpoint :: WebApp DiscoveryDocument discoveryEndpoint = do - issuer <- URIParam <$> enlilIssuer - authorizationE <- URIParam <$> enlilPath ["oauth", "authorize"] - tokenE <- URIParam <$> enlilPath ["oauth", "token"] - userInfoE <- URIParam <$> enlilPath ["user-info"] + issuer <- URIParam <$> shareIssuer + authorizationE <- URIParam <$> sharePath ["oauth", "authorize"] + tokenE <- URIParam <$> sharePath ["oauth", "token"] + userInfoE <- URIParam <$> sharePath ["user-info"] let responseTypesSupported = Set.singleton ResponseTypeCode pure $ DiscoveryDocument {..} diff --git a/src/Enlil/Web/Local/API.hs b/src/Share/Web/Local/API.hs similarity index 83% rename from src/Enlil/Web/Local/API.hs rename to src/Share/Web/Local/API.hs index 203d468..3e301c7 100644 --- a/src/Enlil/Web/Local/API.hs +++ b/src/Share/Web/Local/API.hs @@ -2,11 +2,11 @@ {-# LANGUAGE TypeOperators #-} {- Endpoints which are only active on the local deployment -} -module Enlil.Web.Local.API (API) where +module Share.Web.Local.API (API) where -import Enlil.IDs -import Enlil.Prelude -import Enlil.Utils.Servant.Cookies qualified as Cookies +import Share.IDs +import Share.Prelude +import Share.Utils.Servant.Cookies qualified as Cookies import Servant type API = diff --git a/src/Enlil/Web/Local/Impl.hs b/src/Share/Web/Local/Impl.hs similarity index 74% rename from src/Enlil/Web/Local/Impl.hs rename to src/Share/Web/Local/Impl.hs index db03714..9270f4d 100644 --- a/src/Enlil/Web/Local/Impl.hs +++ b/src/Share/Web/Local/Impl.hs @@ -2,35 +2,35 @@ {-# LANGUAGE DuplicateRecordFields #-} {- Endpoints which are only active on the local deployment -} -module Enlil.Web.Local.Impl where +module Share.Web.Local.Impl where import Control.Monad.Random (randomIO) import Control.Monad.Reader import Data.Set qualified as Set -import Enlil.App (enlilAud, enlilIssuer) -import Enlil.Env -import Enlil.Env qualified as Env -import Enlil.IDs -import Enlil.JWT (JWTParam (..)) -import Enlil.JWT qualified as JWT -import Enlil.OAuth.Scopes (Scopes (Scopes)) -import Enlil.OAuth.Scopes qualified as Scopes -import Enlil.OAuth.Session (Session) -import Enlil.OAuth.Session qualified as Session -import Enlil.OAuth.Types (AccessToken (..)) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.User -import Enlil.Utils.Deployment qualified as Deployment -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant.Cookies (SetCookie) -import Enlil.Web.App -import Enlil.Web.Authentication.AccessToken qualified as AccessToken -import Enlil.Web.Errors -import Enlil.Web.Errors qualified as Errors -import Enlil.Web.Local.API import Servant +import Share.App (shareAud, shareIssuer) +import Share.Env +import Share.Env qualified as Env +import Share.IDs +import Share.JWT (JWTParam (..)) +import Share.JWT qualified as JWT +import Share.OAuth.Scopes (Scopes (Scopes)) +import Share.OAuth.Scopes qualified as Scopes +import Share.OAuth.Session (Session) +import Share.OAuth.Session qualified as Session +import Share.OAuth.Types (AccessToken (..)) +import Share.Postgres qualified as PG +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.User +import Share.Utils.Deployment qualified as Deployment +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant.Cookies (SetCookie) +import Share.Web.App +import Share.Web.Authentication.AccessToken qualified as AccessToken +import Share.Web.Errors +import Share.Web.Errors qualified as Errors +import Share.Web.Local.API -- | Login to the specified user without checking credentials. -- Only available when running locally. @@ -42,8 +42,8 @@ localLoginEndpoint userHandle = do Nothing -> Errors.respondError $ Errors.EntityMissing (ErrorID "no-user-for-handle") "No user for this handle" Just u -> pure u - iss <- enlilIssuer - aud <- enlilAud + iss <- shareIssuer + aud <- shareAud session <- liftIO $ Session.createSession iss aud user_id setSessionCookie session >>= \case Nothing -> Errors.respondError $ Errors.InternalServerError "local:failed-create-session" ("Failed to create session" :: Text) @@ -70,7 +70,7 @@ localAccessTokenEndpoint userHandle = do Nothing -> Errors.respondError $ Errors.EntityMissing (ErrorID "no-user-for-handle") "No user for this handle" Just u -> pure u sessionID <- randomIO - aud <- enlilAud + aud <- shareAud AccessToken (JWTParam accessToken) <- AccessToken.createAccessToken aud user_id sessionID (Scopes $ Set.fromList [Scopes.OpenId]) pure (JWT.signedJWTToText $ accessToken) diff --git a/src/Enlil/Web/OAuth/Clients.hs b/src/Share/Web/OAuth/Clients.hs similarity index 82% rename from src/Enlil/Web/OAuth/Clients.hs rename to src/Share/Web/OAuth/Clients.hs index e67b035..e88ccf3 100644 --- a/src/Enlil/Web/OAuth/Clients.hs +++ b/src/Share/Web/OAuth/Clients.hs @@ -1,13 +1,13 @@ -module Enlil.Web.OAuth.Clients where +module Share.Web.OAuth.Clients where -import Enlil.OAuth.Errors qualified as OAuthError -import Enlil.OAuth.Types (OAuthClientConfig (..), OAuthClientId (..), OAuthClientSecret) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.Utils.URI (URIParam (..)) -import Enlil.Web.App -import Enlil.Web.Errors +import Share.OAuth.Errors qualified as OAuthError +import Share.OAuth.Types (OAuthClientConfig (..), OAuthClientId (..), OAuthClientSecret) +import Share.Postgres qualified as PG +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.Utils.URI (URIParam (..)) +import Share.Web.App +import Share.Web.Errors import Network.URI (URI (..), URIAuth (..)) redirectValidator :: OAuthClientConfig -> URI -> Bool diff --git a/src/Enlil/Web/OAuth/Impl.hs b/src/Share/Web/OAuth/Impl.hs similarity index 89% rename from src/Enlil/Web/OAuth/Impl.hs rename to src/Share/Web/OAuth/Impl.hs index 5bbea5e..3d5fe27 100644 --- a/src/Enlil/Web/OAuth/Impl.hs +++ b/src/Share/Web/OAuth/Impl.hs @@ -8,7 +8,7 @@ -- Here's a high-level overview of OAuth2: https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc -- Here's a good reference guide to various steps: https://www.oauth.com/ -- Here's a good reference for PKCE specifically: https://www.oauth.com/oauth2-servers/pkce/ -module Enlil.Web.OAuth.Impl +module Share.Web.OAuth.Impl ( serviceProviderServer, identityProviderServer, ) @@ -18,38 +18,38 @@ import Control.Monad import Control.Monad.Reader import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.App (enlilAud, enlilIssuer) -import Enlil.Env qualified as Env -import Enlil.Github qualified as Github -import Enlil.IDs (PendingSessionId, fromId) -import Enlil.JWT qualified as JWT -import Enlil.Metrics qualified as Metrics -import Enlil.OAuth.API qualified as OAuth -import Enlil.OAuth.Errors qualified as OAuthError -import Enlil.OAuth.PKCE qualified as PKCE -import Enlil.OAuth.Redis qualified as Redis -import Enlil.OAuth.Scopes -import Enlil.OAuth.Session (PendingSession (..), Session (..)) -import Enlil.OAuth.Session qualified as Session -import Enlil.OAuth.Types (AccessToken, AuthenticationRequest (..), Code, GrantType (AuthorizationCode), OAuth2State, OAuthClientConfig (..), OAuthClientId, PKCEChallenge, PKCEChallengeMethod, RedirectReceiverErr (..), ResponseType (ResponseTypeCode), TokenRequest (..), TokenResponse (..), TokenType (BearerToken)) -import Enlil.OAuth.Types qualified as OAuth -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.User (User (User)) -import Enlil.User qualified as User -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant -import Enlil.Utils.Servant.Cookies (CookieVal, cookieVal) -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Utils.URI (URIParam (URIParam), unpackURI) -import Enlil.Utils.URI qualified as URI -import Enlil.Web.App -import Enlil.Web.Authentication.AccessToken qualified as AccessToken -import Enlil.Web.Errors -import Enlil.Web.OAuth.Clients (validateOAuthClientForTokenExchange, validateOAuthClientRedirectURI) import Servant +import Share.App (shareAud, shareIssuer) +import Share.Env qualified as Env +import Share.Github qualified as Github +import Share.IDs (PendingSessionId, fromId) +import Share.JWT qualified as JWT +import Share.Metrics qualified as Metrics +import Share.OAuth.API qualified as OAuth +import Share.OAuth.Errors qualified as OAuthError +import Share.OAuth.PKCE qualified as PKCE +import Share.OAuth.Redis qualified as Redis +import Share.OAuth.Scopes +import Share.OAuth.Session (PendingSession (..), Session (..)) +import Share.OAuth.Session qualified as Session +import Share.OAuth.Types (AccessToken, AuthenticationRequest (..), Code, GrantType (AuthorizationCode), OAuth2State, OAuthClientConfig (..), OAuthClientId, PKCEChallenge, PKCEChallengeMethod, RedirectReceiverErr (..), ResponseType (ResponseTypeCode), TokenRequest (..), TokenResponse (..), TokenType (BearerToken)) +import Share.OAuth.Types qualified as OAuth +import Share.Postgres qualified as PG +import Share.Postgres.Ops qualified as PGO +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.User (User (User)) +import Share.User qualified as User +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant +import Share.Utils.Servant.Cookies (CookieVal, cookieVal) +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Utils.URI (URIParam (URIParam), unpackURI) +import Share.Utils.URI qualified as URI +import Share.Web.App +import Share.Web.Authentication.AccessToken qualified as AccessToken +import Share.Web.Errors +import Share.Web.OAuth.Clients (validateOAuthClientForTokenExchange, validateOAuthClientRedirectURI) import Web.Cookie as Cookie (SetCookie (..)) -- | The URL used to kick off a login using Share for oauth2 clients like the Cloud app or UCM. @@ -76,7 +76,7 @@ authorizationEndpoint ResponseTypeCode oauthClientId redirectURI scopes state pk Just {} -> do -- We're already logged in, no need to go through Github, we can redirect directly to -- the redirect receiver. - redirectReceiverUri <- enlilPathQ ["oauth", "redirect"] (Map.fromList []) + redirectReceiverUri <- sharePathQ ["oauth", "redirect"] (Map.fromList []) redirectTo redirectReceiverUri & setPendingSessionCookie cookieSettings (pendingId pSesh) & pure @@ -156,7 +156,7 @@ redirectReceiverEndpoint mayGithubCode mayStatePSID _errorType@Nothing _mayError when (Q.isNew newOrPreExistingUser) do Metrics.tickUserSignup Env.Env {cookieSettings} <- ask - iss <- enlilIssuer + iss <- shareIssuer -- If this was an oauth request we redirect back to the client, otherwise we just create a -- session and send the user to the homepage. case loginRequest of @@ -167,7 +167,7 @@ redirectReceiverEndpoint mayGithubCode mayStatePSID _errorType@Nothing _mayError guardM . lift $ isTrustedURI uri pure uri landingPageURI <- whenNothing mayReturnToURI $ mkLoginLandingPageURI newOrPreExistingUser - aud <- enlilAud + aud <- shareAud session <- Session.createSession iss aud uid setSessionCookie session >>= \case Nothing -> respondError $ InternalServerError "session-create-failure" ("Failed to create session" :: Text) diff --git a/src/Enlil/Web/Share/API.hs b/src/Share/Web/Share/API.hs similarity index 76% rename from src/Enlil/Web/Share/API.hs rename to src/Share/Web/Share/API.hs index effc0f6..d0f25d1 100644 --- a/src/Enlil/Web/Share/API.hs +++ b/src/Share/Web/Share/API.hs @@ -1,19 +1,19 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.API where +module Share.Web.Share.API where -import Enlil.IDs -import Enlil.OAuth.Session (AuthenticatedSession, AuthenticatedUserId, MaybeAuthenticatedSession) -import Enlil.Prelude (NonEmpty) -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Utils.Servant -import Enlil.Web.Share.Branches.API (UserBranchesAPI) -import Enlil.Web.Share.CodeBrowsing.API (CodeBrowseAPI) -import Enlil.Web.Share.Contributions.API (ContributionsByUserAPI) -import Enlil.Web.Share.Projects.API (ProjectsAPI) -import Enlil.Web.Share.Types +import Share.IDs +import Share.OAuth.Session (AuthenticatedSession, AuthenticatedUserId, MaybeAuthenticatedSession) +import Share.Prelude (NonEmpty) +import Share.Utils.API +import Share.Utils.Caching +import Share.Utils.Servant +import Share.Web.Share.Branches.API (UserBranchesAPI) +import Share.Web.Share.CodeBrowsing.API (CodeBrowseAPI) +import Share.Web.Share.Contributions.API (ContributionsByUserAPI) +import Share.Web.Share.Projects.API (ProjectsAPI) +import Share.Web.Share.Types import Servant type UserAPI = diff --git a/src/Enlil/Web/Share/Branches/API.hs b/src/Share/Web/Share/Branches/API.hs similarity index 87% rename from src/Enlil/Web/Share/Branches/API.hs rename to src/Share/Web/Share/Branches/API.hs index 4f9968d..7a433a0 100644 --- a/src/Enlil/Web/Share/Branches/API.hs +++ b/src/Share/Web/Share/Branches/API.hs @@ -1,15 +1,15 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Branches.API where +module Share.Web.Share.Branches.API where import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Web.Share.Branches.Types (BranchKindFilter, ShareBranch) -import Enlil.Web.Share.CodeBrowsing.API (CodeBrowseAPI) -import Enlil.Web.Share.Types +import Share.IDs +import Share.Utils.API +import Share.Utils.Caching +import Share.Web.Share.Branches.Types (BranchKindFilter, ShareBranch) +import Share.Web.Share.CodeBrowsing.API (CodeBrowseAPI) +import Share.Web.Share.Types import Servant import U.Codebase.HashTags (CausalHash) diff --git a/src/Enlil/Web/Share/Branches/Impl.hs b/src/Share/Web/Share/Branches/Impl.hs similarity index 95% rename from src/Enlil/Web/Share/Branches/Impl.hs rename to src/Share/Web/Share/Branches/Impl.hs index 3ab96e2..25b20ae 100644 --- a/src/Enlil/Web/Share/Branches/Impl.hs +++ b/src/Share/Web/Share/Branches/Impl.hs @@ -3,7 +3,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} -module Enlil.Web.Share.Branches.Impl where +module Share.Web.Share.Branches.Impl where import Control.Lens import Control.Monad.Trans.Maybe @@ -11,33 +11,33 @@ import Data.List.NonEmpty qualified as NonEmpty import Data.Set qualified as Set import Data.Text qualified as Text import Data.Time (UTCTime) -import Enlil.Branch (Branch (..), branchCausals_) -import Enlil.Codebase qualified as Codebase -import Enlil.IDs (BranchId, BranchShortHand (..), ProjectBranchShortHand (..), ProjectShortHand (..), ProjectSlug (..), UserHandle, UserId) -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Contributions.Queries qualified as ContributionsQ -import Enlil.Postgres.IDs (CausalId) -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.Project qualified as Project -import Enlil.User (User (..)) -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.Branches.API (ListBranchesCursor) -import Enlil.Web.Share.Branches.API qualified as API -import Enlil.Web.Share.Branches.Types (BranchKindFilter (..), ShareBranch (..)) -import Enlil.Web.Share.Branches.Types qualified as API -import Enlil.Web.Share.CodeBrowsing.API qualified as API -import Enlil.Web.Share.Projects.Types (projectToAPI) -import Enlil.Web.Share.Types +import Share.Branch (Branch (..), branchCausals_) +import Share.Codebase qualified as Codebase +import Share.IDs (BranchId, BranchShortHand (..), ProjectBranchShortHand (..), ProjectShortHand (..), ProjectSlug (..), UserHandle, UserId) +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Contributions.Queries qualified as ContributionsQ +import Share.Postgres.IDs (CausalId) +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.Project (Project (..)) +import Share.Project qualified as Project +import Share.User (User (..)) +import Share.Utils.API +import Share.Utils.Caching +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.Branches.API (ListBranchesCursor) +import Share.Web.Share.Branches.API qualified as API +import Share.Web.Share.Branches.Types (BranchKindFilter (..), ShareBranch (..)) +import Share.Web.Share.Branches.Types qualified as API +import Share.Web.Share.CodeBrowsing.API qualified as API +import Share.Web.Share.Projects.Types (projectToAPI) +import Share.Web.Share.Types import Servant import U.Codebase.HashTags (CausalHash) import Unison.Codebase.Path qualified as Path diff --git a/src/Enlil/Web/Share/Branches/Types.hs b/src/Share/Web/Share/Branches/Types.hs similarity index 87% rename from src/Enlil/Web/Share/Branches/Types.hs rename to src/Share/Web/Share/Branches/Types.hs index ac5dd17..8b3da27 100644 --- a/src/Enlil/Web/Share/Branches/Types.hs +++ b/src/Share/Web/Share/Branches/Types.hs @@ -3,16 +3,16 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Branches.Types where +module Share.Web.Share.Branches.Types where import Data.Aeson import Data.Time (UTCTime) -import Enlil.Branch (Branch (..)) -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.Postgres.IDs -import Enlil.Web.Share.Contributions.Types (ShareContribution) -import Enlil.Web.Share.Projects.Types +import Share.Branch (Branch (..)) +import Share.IDs +import Share.IDs qualified as IDs +import Share.Postgres.IDs +import Share.Web.Share.Contributions.Types (ShareContribution) +import Share.Web.Share.Projects.Types import Servant (FromHttpApiData) import Servant.API (FromHttpApiData (..)) diff --git a/src/Enlil/Web/Share/CodeBrowsing/API.hs b/src/Share/Web/Share/CodeBrowsing/API.hs similarity index 95% rename from src/Enlil/Web/Share/CodeBrowsing/API.hs rename to src/Share/Web/Share/CodeBrowsing/API.hs index 9ff70a1..cd9d064 100644 --- a/src/Enlil/Web/Share/CodeBrowsing/API.hs +++ b/src/Share/Web/Share/CodeBrowsing/API.hs @@ -1,11 +1,11 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.CodeBrowsing.API where +module Share.Web.Share.CodeBrowsing.API where import Data.Text (Text) -import Enlil.Utils.Caching -import Enlil.Utils.Servant (OptionalCapture, RequiredQueryParam) +import Share.Utils.Caching +import Share.Utils.Servant (OptionalCapture, RequiredQueryParam) import Servant import U.Codebase.HashTags (CausalHash) import Unison.Codebase.Path qualified as Path diff --git a/src/Enlil/Web/Share/Comments.hs b/src/Share/Web/Share/Comments.hs similarity index 95% rename from src/Enlil/Web/Share/Comments.hs rename to src/Share/Web/Share/Comments.hs index c4fa63f..4c19cc8 100644 --- a/src/Enlil/Web/Share/Comments.hs +++ b/src/Share/Web/Share/Comments.hs @@ -1,6 +1,6 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Share.Comments +module Share.Web.Share.Comments ( Comment (..), RevisionNumber (..), CommentEvent (..), @@ -11,9 +11,9 @@ where import Data.Aeson qualified as Aeson import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude newtype RevisionNumber = RevisionNumber Int64 deriving newtype (Show, Eq, Ord, Num, Enum, Real, Integral, PG.DecodeValue, PG.EncodeValue, Aeson.ToJSON, Aeson.FromJSON) diff --git a/src/Enlil/Web/Share/Comments/API.hs b/src/Share/Web/Share/Comments/API.hs similarity index 72% rename from src/Enlil/Web/Share/Comments/API.hs rename to src/Share/Web/Share/Comments/API.hs index 3ff2709..ee698a2 100644 --- a/src/Enlil/Web/Share/Comments/API.hs +++ b/src/Share/Web/Share/Comments/API.hs @@ -1,12 +1,12 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Comments.API (CommentsServer) where +module Share.Web.Share.Comments.API (CommentsServer) where -import Enlil.IDs -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Comments.Types -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.IDs +import Share.Web.Share.Comments +import Share.Web.Share.Comments.Types +import Share.Web.Share.Types (UserDisplayInfo) import Servant type CommentResourceServer = UpdateComment :<|> DeleteComment diff --git a/src/Enlil/Web/Share/Comments/Impl.hs b/src/Share/Web/Share/Comments/Impl.hs similarity index 83% rename from src/Enlil/Web/Share/Comments/Impl.hs rename to src/Share/Web/Share/Comments/Impl.hs index c16ca68..79e3131 100644 --- a/src/Enlil/Web/Share/Comments/Impl.hs +++ b/src/Share/Web/Share/Comments/Impl.hs @@ -1,4 +1,4 @@ -module Enlil.Web.Share.Comments.Impl +module Share.Web.Share.Comments.Impl ( createCommentEndpoint, updateCommentEndpoint, deleteCommentEndpoint, @@ -6,21 +6,21 @@ module Enlil.Web.Share.Comments.Impl where import Control.Lens -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Comments.Queries qualified as CommentsQ -import Enlil.Postgres.Queries qualified as Q -import Enlil.Postgres.Users.Queries qualified as UserQ -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Comments.Types -import Enlil.Web.Share.Types +import Share.IDs +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Comments.Queries qualified as CommentsQ +import Share.Postgres.Queries qualified as Q +import Share.Postgres.Users.Queries qualified as UserQ +import Share.Prelude +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.Comments +import Share.Web.Share.Comments.Types +import Share.Web.Share.Types import Servant createCommentEndpoint :: diff --git a/src/Enlil/Web/Share/Comments/Types.hs b/src/Share/Web/Share/Comments/Types.hs similarity index 89% rename from src/Enlil/Web/Share/Comments/Types.hs rename to src/Share/Web/Share/Comments/Types.hs index b39199a..e04b5cb 100644 --- a/src/Enlil/Web/Share/Comments/Types.hs +++ b/src/Share/Web/Share/Comments/Types.hs @@ -4,12 +4,12 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Comments.Types where +module Share.Web.Share.Comments.Types where import Data.Aeson -import Enlil.Prelude -import Enlil.Web.Share.Comments (CommentEvent (..), RevisionNumber) -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.Prelude +import Share.Web.Share.Comments (CommentEvent (..), RevisionNumber) +import Share.Web.Share.Types (UserDisplayInfo) data CreateCommentRequest = CreateCommentRequest { content :: Text diff --git a/src/Enlil/Web/Share/Contributions/API.hs b/src/Share/Web/Share/Contributions/API.hs similarity index 86% rename from src/Enlil/Web/Share/Contributions/API.hs rename to src/Share/Web/Share/Contributions/API.hs index aa54cdc..3f2a54f 100644 --- a/src/Enlil/Web/Share/Contributions/API.hs +++ b/src/Share/Web/Share/Contributions/API.hs @@ -1,17 +1,17 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Contributions.API where +module Share.Web.Share.Contributions.API where import Data.Time (UTCTime) -import Enlil.Contribution (ContributionStatus) -import Enlil.IDs -import Enlil.Utils.API -import Enlil.Utils.Caching (Cached) -import Enlil.Web.Share.Comments.API qualified as Comments -import Enlil.Web.Share.Contributions.Types -import Enlil.Web.Share.Diffs.Types (ShareNamespaceDiffResponse) -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.Contribution (ContributionStatus) +import Share.IDs +import Share.Utils.API +import Share.Utils.Caching (Cached) +import Share.Web.Share.Comments.API qualified as Comments +import Share.Web.Share.Contributions.Types +import Share.Web.Share.Diffs.Types (ShareNamespaceDiffResponse) +import Share.Web.Share.Types (UserDisplayInfo) import Servant type ContributionsByUserAPI = ListContributionsByUserEndpoint diff --git a/src/Enlil/Web/Share/Contributions/Impl.hs b/src/Share/Web/Share/Contributions/Impl.hs similarity index 92% rename from src/Enlil/Web/Share/Contributions/Impl.hs rename to src/Share/Web/Share/Contributions/Impl.hs index 15ceedc..aa27560 100644 --- a/src/Enlil/Web/Share/Contributions/Impl.hs +++ b/src/Share/Web/Share/Contributions/Impl.hs @@ -4,7 +4,7 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedRecordDot #-} -module Enlil.Web.Share.Contributions.Impl +module Share.Web.Share.Contributions.Impl ( contributionsByProjectServer, contributionsByUserServer, listContributionsByProjectEndpoint, @@ -12,36 +12,36 @@ module Enlil.Web.Share.Contributions.Impl ) where -import Enlil.Branch (Branch (..)) -import Enlil.Codebase qualified as Codebase -import Enlil.Contribution -import Enlil.IDs (PrefixedHash (..), ProjectSlug (..), UserHandle) -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Contributions.Queries qualified as ContributionsQ -import Enlil.Postgres.Queries qualified as Q -import Enlil.Postgres.Users.Queries (userDisplayInfoOf) -import Enlil.Prelude -import Enlil.Project -import Enlil.User qualified as User -import Enlil.Utils.API -import Enlil.Utils.Caching (Cached) -import Enlil.Utils.Caching qualified as Caching -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Comments.Impl qualified as Comments -import Enlil.Web.Share.Comments.Types -import Enlil.Web.Share.Contributions.API -import Enlil.Web.Share.Contributions.API qualified as API -import Enlil.Web.Share.Contributions.Types -import Enlil.Web.Share.Diffs.Impl qualified as Diffs -import Enlil.Web.Share.Diffs.Types (ShareNamespaceDiffResponse (..)) -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.Branch (Branch (..)) +import Share.Codebase qualified as Codebase +import Share.Contribution +import Share.IDs (PrefixedHash (..), ProjectSlug (..), UserHandle) +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Contributions.Queries qualified as ContributionsQ +import Share.Postgres.Queries qualified as Q +import Share.Postgres.Users.Queries (userDisplayInfoOf) +import Share.Prelude +import Share.Project +import Share.User qualified as User +import Share.Utils.API +import Share.Utils.Caching (Cached) +import Share.Utils.Caching qualified as Caching +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.Comments +import Share.Web.Share.Comments.Impl qualified as Comments +import Share.Web.Share.Comments.Types +import Share.Web.Share.Contributions.API +import Share.Web.Share.Contributions.API qualified as API +import Share.Web.Share.Contributions.Types +import Share.Web.Share.Diffs.Impl qualified as Diffs +import Share.Web.Share.Diffs.Types (ShareNamespaceDiffResponse (..)) +import Share.Web.Share.Types (UserDisplayInfo) import Servant contributionsByProjectServer :: Maybe Session -> UserHandle -> ProjectSlug -> ServerT API.ContributionsByProjectAPI WebApp diff --git a/src/Enlil/Web/Share/Contributions/MergeDetection.hs b/src/Share/Web/Share/Contributions/MergeDetection.hs similarity index 75% rename from src/Enlil/Web/Share/Contributions/MergeDetection.hs rename to src/Share/Web/Share/Contributions/MergeDetection.hs index 5a8bd3b..cdf1cdd 100644 --- a/src/Enlil/Web/Share/Contributions/MergeDetection.hs +++ b/src/Share/Web/Share/Contributions/MergeDetection.hs @@ -1,11 +1,11 @@ -module Enlil.Web.Share.Contributions.MergeDetection +module Share.Web.Share.Contributions.MergeDetection ( updateContributionsFromBranchUpdate, ) where -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Contributions.Queries qualified as ContributionQ +import Share.IDs +import Share.Postgres qualified as PG +import Share.Postgres.Contributions.Queries qualified as ContributionQ -- | Update contribution status to reflect any merges which may have occurred and update the -- best common ancestors. diff --git a/src/Enlil/Web/Share/Contributions/Types.hs b/src/Share/Web/Share/Contributions/Types.hs similarity index 95% rename from src/Enlil/Web/Share/Contributions/Types.hs rename to src/Share/Web/Share/Contributions/Types.hs index f0a0fb3..c5255e2 100644 --- a/src/Enlil/Web/Share/Contributions/Types.hs +++ b/src/Share/Web/Share/Contributions/Types.hs @@ -4,16 +4,16 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Contributions.Types where +module Share.Web.Share.Contributions.Types where import Data.Aeson import Data.Time (UTCTime) -import Enlil.Contribution (ContributionStatus) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Utils.API (NullableUpdate, parseNullableUpdate) -import Enlil.Web.Share.Comments (CommentEvent (..), commentEventTimestamp) +import Share.Contribution (ContributionStatus) +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Utils.API (NullableUpdate, parseNullableUpdate) +import Share.Web.Share.Comments (CommentEvent (..), commentEventTimestamp) import Servant (FromHttpApiData) import Servant.API (FromHttpApiData (..)) diff --git a/src/Enlil/Web/Share/Diffs/Impl.hs b/src/Share/Web/Share/Diffs/Impl.hs similarity index 86% rename from src/Enlil/Web/Share/Diffs/Impl.hs rename to src/Share/Web/Share/Diffs/Impl.hs index 39c134d..8a06d74 100644 --- a/src/Enlil/Web/Share/Diffs/Impl.hs +++ b/src/Share/Web/Share/Diffs/Impl.hs @@ -1,4 +1,4 @@ -module Enlil.Web.Share.Diffs.Impl +module Share.Web.Share.Diffs.Impl ( diffNamespaces, diffCausals, ) @@ -6,16 +6,16 @@ where import Control.Lens import Control.Monad.Except -import Enlil.Codebase qualified as Codebase -import Enlil.NamespaceDiffs qualified as NamespaceDiffs -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.IDs (BranchHashId, CausalId) -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt) -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Authorization (AuthZReceipt) +import Share.Codebase qualified as Codebase +import Share.NamespaceDiffs qualified as NamespaceDiffs +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.IDs (BranchHashId, CausalId) +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Postgres.NameLookups.Types (NameLookupReceipt) +import Share.Prelude +import Share.Web.App +import Share.Web.Authorization (AuthZReceipt) import U.Codebase.Reference qualified as V2Reference import U.Codebase.Referent qualified as V2Referent import Unison.Server.Types (TermTag, TypeTag) diff --git a/src/Enlil/Web/Share/Diffs/Types.hs b/src/Share/Web/Share/Diffs/Types.hs similarity index 95% rename from src/Enlil/Web/Share/Diffs/Types.hs rename to src/Share/Web/Share/Diffs/Types.hs index a80a812..2775223 100644 --- a/src/Enlil/Web/Share/Diffs/Types.hs +++ b/src/Share/Web/Share/Diffs/Types.hs @@ -1,15 +1,15 @@ {-# LANGUAGE DataKinds #-} -module Enlil.Web.Share.Diffs.Types where +module Share.Web.Share.Diffs.Types where import Control.Comonad.Cofree qualified as Cofree import Data.Aeson import Data.Foldable qualified as Foldable import Data.Map qualified as Map -import Enlil.IDs -import Enlil.NamespaceDiffs (DefinitionDiff (..), DefinitionDiffKind (..), DiffAtPath (..), NamespaceTreeDiff) -import Enlil.Postgres.IDs (CausalHash) -import Enlil.Prelude +import Share.IDs +import Share.NamespaceDiffs (DefinitionDiff (..), DefinitionDiffKind (..), DiffAtPath (..), NamespaceTreeDiff) +import Share.Postgres.IDs (CausalHash) +import Share.Prelude import Unison.Name (Name) import Unison.NameSegment (NameSegment) import Unison.Server.Types (TermTag, TypeTag) diff --git a/src/Enlil/Web/Share/Impl.hs b/src/Share/Web/Share/Impl.hs similarity index 93% rename from src/Enlil/Web/Share/Impl.hs rename to src/Share/Web/Share/Impl.hs index ae838bf..0648348 100644 --- a/src/Enlil/Web/Share/Impl.hs +++ b/src/Share/Web/Share/Impl.hs @@ -4,37 +4,37 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Impl where +module Share.Web.Share.Impl where -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types qualified as Codebase -import Enlil.IDs (TourId, UserHandle) -import Enlil.IDs qualified as IDs -import Enlil.JWT qualified as JWT -import Enlil.OAuth.Session -import Enlil.OAuth.Types (UserId) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.IDs (CausalHash) -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Postgres.Queries qualified as Q -import Enlil.Postgres.Users.Queries qualified as UsersQ -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.User (User (..)) -import Enlil.UserProfile (UserProfile (..)) -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Utils.Servant.Cookies qualified as Cookies -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.API qualified as Share -import Enlil.Web.Share.Branches.Impl qualified as Branches -import Enlil.Web.Share.CodeBrowsing.API (CodeBrowseAPI) -import Enlil.Web.Share.Contributions.Impl qualified as Contributions -import Enlil.Web.Share.Projects.Impl qualified as Projects -import Enlil.Web.Share.Types +import Share.Codebase qualified as Codebase +import Share.Codebase.Types qualified as Codebase +import Share.IDs (TourId, UserHandle) +import Share.IDs qualified as IDs +import Share.JWT qualified as JWT +import Share.OAuth.Session +import Share.OAuth.Types (UserId) +import Share.Postgres qualified as PG +import Share.Postgres.IDs (CausalHash) +import Share.Postgres.Ops qualified as PGO +import Share.Postgres.Queries qualified as Q +import Share.Postgres.Users.Queries qualified as UsersQ +import Share.Prelude +import Share.Project (Project (..)) +import Share.User (User (..)) +import Share.UserProfile (UserProfile (..)) +import Share.Utils.API +import Share.Utils.Caching +import Share.Utils.Servant.Cookies qualified as Cookies +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.API qualified as Share +import Share.Web.Share.Branches.Impl qualified as Branches +import Share.Web.Share.CodeBrowsing.API (CodeBrowseAPI) +import Share.Web.Share.Contributions.Impl qualified as Contributions +import Share.Web.Share.Projects.Impl qualified as Projects +import Share.Web.Share.Types import Servant import Unison.Codebase.Path qualified as Path import Unison.HashQualified qualified as HQ diff --git a/src/Enlil/Web/Share/Projects/API.hs b/src/Share/Web/Share/Projects/API.hs similarity index 82% rename from src/Enlil/Web/Share/Projects/API.hs rename to src/Share/Web/Share/Projects/API.hs index d8def4f..584dce7 100644 --- a/src/Enlil/Web/Share/Projects/API.hs +++ b/src/Share/Web/Share/Projects/API.hs @@ -1,19 +1,19 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Projects.API where - -import Enlil.IDs -import Enlil.OAuth.Session (MaybeAuthenticatedSession) -import Enlil.Utils.Caching (Cached) -import Enlil.Utils.Servant (RequiredQueryParam) -import Enlil.Web.Share.Branches.API (ProjectBranchesAPI) -import Enlil.Web.Share.Contributions.API (ContributionsByProjectAPI) -import Enlil.Web.Share.Diffs.Types (ShareNamespaceDiffResponse) -import Enlil.Web.Share.Projects.Types -import Enlil.Web.Share.Releases.API -import Enlil.Web.Share.Tickets.API (TicketsByProjectAPI) -import Enlil.Web.Share.Types +module Share.Web.Share.Projects.API where + +import Share.IDs +import Share.OAuth.Session (MaybeAuthenticatedSession) +import Share.Utils.Caching (Cached) +import Share.Utils.Servant (RequiredQueryParam) +import Share.Web.Share.Branches.API (ProjectBranchesAPI) +import Share.Web.Share.Contributions.API (ContributionsByProjectAPI) +import Share.Web.Share.Diffs.Types (ShareNamespaceDiffResponse) +import Share.Web.Share.Projects.Types +import Share.Web.Share.Releases.API +import Share.Web.Share.Tickets.API (TicketsByProjectAPI) +import Share.Web.Share.Types import Servant type ProjectsAPI = diff --git a/src/Enlil/Web/Share/Projects/Impl.hs b/src/Share/Web/Share/Projects/Impl.hs similarity index 90% rename from src/Enlil/Web/Share/Projects/Impl.hs rename to src/Share/Web/Share/Projects/Impl.hs index 6a39883..57ca72c 100644 --- a/src/Enlil/Web/Share/Projects/Impl.hs +++ b/src/Share/Web/Share/Projects/Impl.hs @@ -3,7 +3,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} -module Enlil.Web.Share.Projects.Impl where +module Share.Web.Share.Projects.Impl where import Control.Lens import Control.Monad.Except @@ -11,38 +11,38 @@ import Data.ByteString.Lazy qualified as BL import Data.Map qualified as Map import Data.Text qualified as Text import Data.Text.Encoding qualified as Text -import Enlil.Branch (Branch (..), defaultBranchShorthand) -import Enlil.IDs (PrefixedHash (..), ProjectSlug (..), UserHandle, UserId) -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.IDs (CausalId) -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Postgres.Projects.Queries qualified as ProjectsQ -import Enlil.Postgres.Queries qualified as Q -import Enlil.Postgres.Users.Queries qualified as UsersQ -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.Release (Release (..)) -import Enlil.User (User (..)) -import Enlil.Utils.API ((:++) (..)) -import Enlil.Utils.Caching (Cached) -import Enlil.Utils.Caching qualified as Caching -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.Branches.Impl (branchesServer, getProjectBranchReadmeEndpoint) -import Enlil.Web.Share.Contributions.Impl (contributionsByProjectServer) -import Enlil.Web.Share.Diffs.Impl qualified as Diffs -import Enlil.Web.Share.Diffs.Types (ShareNamespaceDiffResponse (..)) -import Enlil.Web.Share.Projects.API qualified as API -import Enlil.Web.Share.Projects.Types -import Enlil.Web.Share.Releases.Impl (getProjectReleaseReadmeEndpoint, releasesServer) -import Enlil.Web.Share.Tickets.Impl (ticketsByProjectServer) -import Enlil.Web.Share.Types +import Share.Branch (Branch (..), defaultBranchShorthand) +import Share.IDs (PrefixedHash (..), ProjectSlug (..), UserHandle, UserId) +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.IDs (CausalId) +import Share.Postgres.Ops qualified as PGO +import Share.Postgres.Projects.Queries qualified as ProjectsQ +import Share.Postgres.Queries qualified as Q +import Share.Postgres.Users.Queries qualified as UsersQ +import Share.Prelude +import Share.Project (Project (..)) +import Share.Release (Release (..)) +import Share.User (User (..)) +import Share.Utils.API ((:++) (..)) +import Share.Utils.Caching (Cached) +import Share.Utils.Caching qualified as Caching +import Share.Utils.Logging qualified as Logging +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.Branches.Impl (branchesServer, getProjectBranchReadmeEndpoint) +import Share.Web.Share.Contributions.Impl (contributionsByProjectServer) +import Share.Web.Share.Diffs.Impl qualified as Diffs +import Share.Web.Share.Diffs.Types (ShareNamespaceDiffResponse (..)) +import Share.Web.Share.Projects.API qualified as API +import Share.Web.Share.Projects.Types +import Share.Web.Share.Releases.Impl (getProjectReleaseReadmeEndpoint, releasesServer) +import Share.Web.Share.Tickets.Impl (ticketsByProjectServer) +import Share.Web.Share.Types import Servant data ProjectErrors diff --git a/src/Enlil/Web/Share/Projects/Types.hs b/src/Share/Web/Share/Projects/Types.hs similarity index 96% rename from src/Enlil/Web/Share/Projects/Types.hs rename to src/Share/Web/Share/Projects/Types.hs index 9164ee0..3802275 100644 --- a/src/Enlil/Web/Share/Projects/Types.hs +++ b/src/Share/Web/Share/Projects/Types.hs @@ -5,20 +5,20 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Projects.Types where +module Share.Web.Share.Projects.Types where import Data.Aeson import Data.Aeson qualified as Aeson import Data.Set qualified as Set import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Project (Project (..), ProjectTag, ProjectVisibility (..)) -import Enlil.Utils.API -import Enlil.Web.Authorization.Types (ProjectMaintainerPermissions) -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.IDs +import Share.IDs qualified as IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Project (Project (..), ProjectTag, ProjectVisibility (..)) +import Share.Utils.API +import Share.Web.Authorization.Types (ProjectMaintainerPermissions) +import Share.Web.Share.Types (UserDisplayInfo) projectToAPI :: ProjectOwner -> Project -> APIProject projectToAPI projectOwner Project {slug, visibility, createdAt, updatedAt, summary, tags} = diff --git a/src/Enlil/Web/Share/Releases/API.hs b/src/Share/Web/Share/Releases/API.hs similarity index 85% rename from src/Enlil/Web/Share/Releases/API.hs rename to src/Share/Web/Share/Releases/API.hs index 5047f95..330d904 100644 --- a/src/Enlil/Web/Share/Releases/API.hs +++ b/src/Share/Web/Share/Releases/API.hs @@ -1,15 +1,15 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Releases.API where +module Share.Web.Share.Releases.API where import Data.Int (Int64) -import Enlil.IDs -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Web.Share.CodeBrowsing.API (CodeBrowseAPI) -import Enlil.Web.Share.Releases.Types -import Enlil.Web.Share.Types +import Share.IDs +import Share.Utils.API +import Share.Utils.Caching +import Share.Web.Share.CodeBrowsing.API (CodeBrowseAPI) +import Share.Web.Share.Releases.Types +import Share.Web.Share.Types import Servant type ProjectReleasesAPI = diff --git a/src/Enlil/Web/Share/Releases/Impl.hs b/src/Share/Web/Share/Releases/Impl.hs similarity index 95% rename from src/Enlil/Web/Share/Releases/Impl.hs rename to src/Share/Web/Share/Releases/Impl.hs index e23776a..c678267 100644 --- a/src/Enlil/Web/Share/Releases/Impl.hs +++ b/src/Share/Web/Share/Releases/Impl.hs @@ -3,7 +3,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} -module Enlil.Web.Share.Releases.Impl +module Share.Web.Share.Releases.Impl ( releasesServer, getProjectReleaseReadmeEndpoint, ) @@ -14,34 +14,34 @@ import Control.Monad.Except import Control.Monad.Trans.Maybe import Data.List.NonEmpty qualified as NonEmpty import Data.Set qualified as Set -import Enlil.Codebase qualified as Codebase -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Hashes.Queries qualified as CausalQ -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.Release (Release (..), releaseCausals_, releaseUsers_) -import Enlil.User (User (..)) -import Enlil.User qualified as User -import Enlil.Utils.API -import Enlil.Utils.Caching -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.CodeBrowsing.API qualified as API -import Enlil.Web.Share.Releases.API -import Enlil.Web.Share.Releases.API qualified as API -import Enlil.Web.Share.Releases.Types -import Enlil.Web.Share.Releases.Types qualified as API -import Enlil.Web.Share.Types -import Enlil.Web.UCM.Sync.Impl qualified as SyncQ +import Share.Codebase qualified as Codebase +import Share.IDs +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Hashes.Queries qualified as CausalQ +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.Project (Project (..)) +import Share.Release (Release (..), releaseCausals_, releaseUsers_) +import Share.User (User (..)) +import Share.User qualified as User +import Share.Utils.API +import Share.Utils.Caching +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.CodeBrowsing.API qualified as API +import Share.Web.Share.Releases.API +import Share.Web.Share.Releases.API qualified as API +import Share.Web.Share.Releases.Types +import Share.Web.Share.Releases.Types qualified as API +import Share.Web.Share.Types +import Share.Web.UCM.Sync.Impl qualified as SyncQ import Servant import Unison.Codebase.Path qualified as Path import Unison.HashQualified qualified as HQ diff --git a/src/Enlil/Web/Share/Releases/Types.hs b/src/Share/Web/Share/Releases/Types.hs similarity index 96% rename from src/Enlil/Web/Share/Releases/Types.hs rename to src/Share/Web/Share/Releases/Types.hs index 3cffb55..304b4f7 100644 --- a/src/Enlil/Web/Share/Releases/Types.hs +++ b/src/Share/Web/Share/Releases/Types.hs @@ -4,14 +4,14 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Releases.Types where +module Share.Web.Share.Releases.Types where import Data.Aeson import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres.IDs -import Enlil.Prelude -import Enlil.Release +import Share.IDs +import Share.Postgres.IDs +import Share.Prelude +import Share.Release import Servant (FromHttpApiData (..)) data ReleaseStatusFilter diff --git a/src/Enlil/Web/Share/Tickets/API.hs b/src/Share/Web/Share/Tickets/API.hs similarity index 87% rename from src/Enlil/Web/Share/Tickets/API.hs rename to src/Share/Web/Share/Tickets/API.hs index a0e2406..c6fe0d3 100644 --- a/src/Enlil/Web/Share/Tickets/API.hs +++ b/src/Share/Web/Share/Tickets/API.hs @@ -1,15 +1,15 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Share.Tickets.API where +module Share.Web.Share.Tickets.API where import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Ticket -import Enlil.Utils.API -import Enlil.Web.Share.Comments.API qualified as Comments -import Enlil.Web.Share.Tickets.Types -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.IDs +import Share.Ticket +import Share.Utils.API +import Share.Web.Share.Comments.API qualified as Comments +import Share.Web.Share.Tickets.Types +import Share.Web.Share.Types (UserDisplayInfo) import Servant type TicketsByUserAPI = ListTicketsByUserEndpoint diff --git a/src/Enlil/Web/Share/Tickets/Impl.hs b/src/Share/Web/Share/Tickets/Impl.hs similarity index 90% rename from src/Enlil/Web/Share/Tickets/Impl.hs rename to src/Share/Web/Share/Tickets/Impl.hs index 3cd4448..bfe6cf8 100644 --- a/src/Enlil/Web/Share/Tickets/Impl.hs +++ b/src/Share/Web/Share/Tickets/Impl.hs @@ -4,35 +4,35 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedRecordDot #-} -module Enlil.Web.Share.Tickets.Impl +module Share.Web.Share.Tickets.Impl ( ticketsByProjectServer, ticketsByUserServer, ) where -import Enlil.IDs (ProjectSlug (..), UserHandle) -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Queries qualified as Q -import Enlil.Postgres.Tickets.Queries qualified as TicketsQ -import Enlil.Postgres.Users.Queries (userDisplayInfoOf) -import Enlil.Prelude -import Enlil.Project -import Enlil.Ticket -import Enlil.User qualified as User -import Enlil.Utils.API -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.Share.Comments -import Enlil.Web.Share.Comments.Impl qualified as Comments -import Enlil.Web.Share.Comments.Types -import Enlil.Web.Share.Tickets.API -import Enlil.Web.Share.Tickets.API qualified as API -import Enlil.Web.Share.Tickets.Types -import Enlil.Web.Share.Types (UserDisplayInfo) +import Share.IDs (ProjectSlug (..), UserHandle) +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Queries qualified as Q +import Share.Postgres.Tickets.Queries qualified as TicketsQ +import Share.Postgres.Users.Queries (userDisplayInfoOf) +import Share.Prelude +import Share.Project +import Share.Ticket +import Share.User qualified as User +import Share.Utils.API +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.Share.Comments +import Share.Web.Share.Comments.Impl qualified as Comments +import Share.Web.Share.Comments.Types +import Share.Web.Share.Tickets.API +import Share.Web.Share.Tickets.API qualified as API +import Share.Web.Share.Tickets.Types +import Share.Web.Share.Types (UserDisplayInfo) import Servant ticketsByProjectServer :: Maybe Session -> UserHandle -> ProjectSlug -> ServerT API.TicketsByProjectAPI WebApp diff --git a/src/Enlil/Web/Share/Tickets/Types.hs b/src/Share/Web/Share/Tickets/Types.hs similarity index 93% rename from src/Enlil/Web/Share/Tickets/Types.hs rename to src/Share/Web/Share/Tickets/Types.hs index 944e392..896bde5 100644 --- a/src/Enlil/Web/Share/Tickets/Types.hs +++ b/src/Share/Web/Share/Tickets/Types.hs @@ -4,16 +4,16 @@ -- | A module for the types used in the external API. -- Breaking changes to these require alternations to the share frontend. -module Enlil.Web.Share.Tickets.Types where +module Share.Web.Share.Tickets.Types where import Data.Aeson import Data.Time (UTCTime) -import Enlil.IDs -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Ticket (TicketStatus) -import Enlil.Utils.API (NullableUpdate, parseNullableUpdate) -import Enlil.Web.Share.Comments +import Share.IDs +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Ticket (TicketStatus) +import Share.Utils.API (NullableUpdate, parseNullableUpdate) +import Share.Web.Share.Comments data ShareTicket = ShareTicket { ticketId :: TicketId, diff --git a/src/Enlil/Web/Share/Types.hs b/src/Share/Web/Share/Types.hs similarity index 95% rename from src/Enlil/Web/Share/Types.hs rename to src/Share/Web/Share/Types.hs index 7e51aa1..48f1c07 100644 --- a/src/Enlil/Web/Share/Types.hs +++ b/src/Share/Web/Share/Types.hs @@ -2,15 +2,15 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Share.Types where +module Share.Web.Share.Types where import Data.Aeson (KeyValue ((.=)), ToJSON (..)) import Data.Aeson qualified as Aeson -import Enlil.IDs -import Enlil.Prelude -import Enlil.Project (ProjectVisibility) -import Enlil.Utils.API (NullableUpdate, parseNullableUpdate) -import Enlil.Utils.URI +import Share.IDs +import Share.Prelude +import Share.Project (ProjectVisibility) +import Share.Utils.API (NullableUpdate, parseNullableUpdate) +import Share.Utils.URI import Network.URI (URI) import Unison.Server.Doc (Doc) diff --git a/src/Enlil/Web/Support/API.hs b/src/Share/Web/Support/API.hs similarity index 75% rename from src/Enlil/Web/Support/API.hs rename to src/Share/Web/Support/API.hs index 52b45d7..769dcb1 100644 --- a/src/Enlil/Web/Support/API.hs +++ b/src/Share/Web/Support/API.hs @@ -1,10 +1,10 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Support.API where +module Share.Web.Support.API where -import Enlil.OAuth.Session -import Enlil.Web.Support.Types +import Share.OAuth.Session +import Share.Web.Support.Types import Servant type API = diff --git a/src/Enlil/Web/Support/Impl.hs b/src/Share/Web/Support/Impl.hs similarity index 69% rename from src/Enlil/Web/Support/Impl.hs rename to src/Share/Web/Support/Impl.hs index bee53b7..61ed5a9 100644 --- a/src/Enlil/Web/Support/Impl.hs +++ b/src/Share/Web/Support/Impl.hs @@ -1,16 +1,16 @@ {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Support.Impl where +module Share.Web.Support.Impl where -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Prelude -import Enlil.User -import Enlil.Web.App -import Enlil.Web.Support.API qualified as Support -import Enlil.Web.Support.Types -import Enlil.Web.Support.Zendesk qualified as Zendesk +import Share.IDs qualified as IDs +import Share.OAuth.Session +import Share.Postgres.Ops qualified as PGO +import Share.Prelude +import Share.User +import Share.Web.App +import Share.Web.Support.API qualified as Support +import Share.Web.Support.Types +import Share.Web.Support.Zendesk qualified as Zendesk import Servant createTicketEndpoint :: Session -> SupportTicketRequest -> WebApp NoContent diff --git a/src/Enlil/Web/Support/Types.hs b/src/Share/Web/Support/Types.hs similarity index 95% rename from src/Enlil/Web/Support/Types.hs rename to src/Share/Web/Support/Types.hs index 9440140..ecf075a 100644 --- a/src/Enlil/Web/Support/Types.hs +++ b/src/Share/Web/Support/Types.hs @@ -2,11 +2,11 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.Support.Types where +module Share.Web.Support.Types where import Data.Aeson import Data.Text qualified as Text -import Enlil.Prelude +import Share.Prelude import Servant data Priority diff --git a/src/Enlil/Web/Support/Zendesk.hs b/src/Share/Web/Support/Zendesk.hs similarity index 91% rename from src/Enlil/Web/Support/Zendesk.hs rename to src/Share/Web/Support/Zendesk.hs index 27f21e3..e7245c2 100644 --- a/src/Enlil/Web/Support/Zendesk.hs +++ b/src/Share/Web/Support/Zendesk.hs @@ -4,17 +4,17 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeOperators #-} -module Enlil.Web.Support.Zendesk where +module Share.Web.Support.Zendesk where import Control.Monad.Reader import Data.Aeson import Data.Either (fromRight) -import Enlil.Env qualified as Env -import Enlil.IDs -import Enlil.Prelude -import Enlil.Utils.Servant.Client (runClient) -import Enlil.Web.App -import Enlil.Web.Support.Types +import Share.Env qualified as Env +import Share.IDs +import Share.Prelude +import Share.Utils.Servant.Client (runClient) +import Share.Web.App +import Share.Web.Support.Types import Servant import Servant.Client diff --git a/src/Enlil/Web/Types.hs b/src/Share/Web/Types.hs similarity index 91% rename from src/Enlil/Web/Types.hs rename to src/Share/Web/Types.hs index bf4f3f6..cd8a0f7 100644 --- a/src/Enlil/Web/Types.hs +++ b/src/Share/Web/Types.hs @@ -1,13 +1,13 @@ {-# LANGUAGE DuplicateRecordFields #-} -module Enlil.Web.Types (DiscoveryDocument (..), UserInfo (..)) where +module Share.Web.Types (DiscoveryDocument (..), UserInfo (..)) where import Data.Aeson (ToJSON (..), (.=)) import Data.Aeson qualified as Aeson -import Enlil.IDs -import Enlil.OAuth.Types (ResponseType) -import Enlil.Prelude -import Enlil.Utils.URI +import Share.IDs +import Share.OAuth.Types (ResponseType) +import Share.Prelude +import Share.Utils.URI -- | https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse -- This is a very small supported subset of: diff --git a/src/Enlil/Web/UCM/Projects/Impl.hs b/src/Share/Web/UCM/Projects/Impl.hs similarity index 94% rename from src/Enlil/Web/UCM/Projects/Impl.hs rename to src/Share/Web/UCM/Projects/Impl.hs index bfc8954..d40ec76 100644 --- a/src/Enlil/Web/UCM/Projects/Impl.hs +++ b/src/Share/Web/UCM/Projects/Impl.hs @@ -2,42 +2,42 @@ {-# LANGUAGE DisambiguateRecordFields #-} {-# LANGUAGE DuplicateRecordFields #-} -module Enlil.Web.UCM.Projects.Impl (server, createProjectRelease, getBestNameLookupBase) where +module Share.Web.UCM.Projects.Impl (server, createProjectRelease, getBestNameLookupBase) where import Control.Monad.Except import Control.Monad.Trans.Maybe import Data.List.Extra qualified as List -import Enlil.Branch -import Enlil.Branch qualified as Branch -import Enlil.Codebase qualified as Codebase -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.Metrics qualified as Metrics -import Enlil.OAuth.Session -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.NameLookups.Ops qualified as Codebase -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Postgres.NameLookups.Types (NameLookupReceipt) -import Enlil.Postgres.Ops qualified as PGO -import Enlil.Postgres.Queries qualified as Q -import Enlil.Prelude -import Enlil.Project -import Enlil.Release (Release (..)) -import Enlil.User -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant -import Enlil.Utils.Unison (causalHashToHash32, hash32ToCausalHash) -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors (InternalServerError (..), respondError) -import Enlil.Web.Errors qualified as Errors -import Enlil.Web.Share.Contributions.MergeDetection qualified as MergeDetection -import Enlil.Web.UCM.Sync.HashJWT qualified as HashJWT -import Enlil.Web.UCM.Sync.Impl qualified as SyncQ +import Share.Branch +import Share.Branch qualified as Branch +import Share.Codebase qualified as Codebase +import Share.IDs +import Share.IDs qualified as IDs +import Share.Metrics qualified as Metrics +import Share.OAuth.Session +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.NameLookups.Ops qualified as Codebase +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Postgres.NameLookups.Types (NameLookupReceipt) +import Share.Postgres.Ops qualified as PGO +import Share.Postgres.Queries qualified as Q +import Share.Prelude +import Share.Project +import Share.Release (Release (..)) +import Share.User +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant +import Share.Utils.Unison (causalHashToHash32, hash32ToCausalHash) +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors (InternalServerError (..), respondError) +import Share.Web.Errors qualified as Errors +import Share.Web.Share.Contributions.MergeDetection qualified as MergeDetection +import Share.Web.UCM.Sync.HashJWT qualified as HashJWT +import Share.Web.UCM.Sync.Impl qualified as SyncQ import Servant import Unison.Share.API.Projects qualified as UCMProjects import UnliftIO qualified diff --git a/src/Enlil/Web/UCM/Sync/HashJWT.hs b/src/Share/Web/UCM/Sync/HashJWT.hs similarity index 91% rename from src/Enlil/Web/UCM/Sync/HashJWT.hs rename to src/Share/Web/UCM/Sync/HashJWT.hs index ed51b7a..b7feb19 100644 --- a/src/Enlil/Web/UCM/Sync/HashJWT.hs +++ b/src/Share/Web/UCM/Sync/HashJWT.hs @@ -1,5 +1,5 @@ -- | Hash JWT signing and verifying -module Enlil.Web.UCM.Sync.HashJWT +module Share.Web.UCM.Sync.HashJWT ( signHashForUser, verifyHashJWT, signHashesForUser, @@ -10,14 +10,14 @@ import Control.Lens import Control.Monad.Except import Control.Monad.Trans.Except (except) import Data.Either.Combinators qualified as Either -import Enlil.IDs -import Enlil.IDs qualified as IDs -import Enlil.JWT qualified as OAuthJWT -import Enlil.Prelude -import Enlil.Web.App -import Enlil.Web.Authentication.HashJWT qualified as HashJWT -import Enlil.Web.Authentication.JWT qualified as JWT -import Enlil.Web.Authentication.Types qualified as AuthN +import Share.IDs +import Share.IDs qualified as IDs +import Share.JWT qualified as OAuthJWT +import Share.Prelude +import Share.Web.App +import Share.Web.Authentication.HashJWT qualified as HashJWT +import Share.Web.Authentication.JWT qualified as JWT +import Share.Web.Authentication.Types qualified as AuthN import System.IO.Unsafe (unsafePerformIO) import Unison.Hash32 (Hash32) import Unison.Share.API.Hash (HashJWT (HashJWT), HashJWTClaims) diff --git a/src/Enlil/Web/UCM/Sync/Impl.hs b/src/Share/Web/UCM/Sync/Impl.hs similarity index 96% rename from src/Enlil/Web/UCM/Sync/Impl.hs rename to src/Share/Web/UCM/Sync/Impl.hs index 62215b1..78d0eff 100644 --- a/src/Enlil/Web/UCM/Sync/Impl.hs +++ b/src/Share/Web/UCM/Sync/Impl.hs @@ -3,7 +3,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} -module Enlil.Web.UCM.Sync.Impl +module Share.Web.UCM.Sync.Impl ( server, -- Only exported for migration purposes. -- This export can be removed once we've migrated away from sqlite. @@ -29,36 +29,36 @@ import Data.Set.NonEmpty qualified as NESet import Data.Text qualified as Text import Data.Text.Lazy qualified as LT import Data.Text.Lazy.Encoding qualified as LT -import Enlil.App -import Enlil.Codebase (CodebaseM) -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types (CodebaseEnv) -import Enlil.Env qualified as Env -import Enlil.IDs (ProjectBranchShortHand (..), ProjectReleaseShortHand (..), ProjectShortHand (..), UserHandle, UserId) -import Enlil.IDs qualified as IDs -import Enlil.OAuth.Session (Session (..)) -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Causal.Types -import Enlil.Postgres.Definitions.Queries qualified as Defn -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs -import Enlil.Postgres.LooseCode.Queries qualified as LCQ -import Enlil.Postgres.Queries qualified as PGQ -import Enlil.Postgres.Sync.Queries (entityLocations) -import Enlil.Postgres.Sync.Queries qualified as SyncQ -import Enlil.Prelude -import Enlil.Project (Project (..)) -import Enlil.User (User (..)) -import Enlil.Utils.Logging -import Enlil.Utils.Logging qualified as Logging -import Enlil.Utils.Servant (parseParam) -import Enlil.Web.App -import Enlil.Web.Authentication qualified as AuthN -import Enlil.Web.Authorization qualified as AuthZ -import Enlil.Web.Errors -import Enlil.Web.UCM.Sync.HashJWT qualified as HashJWT -import Enlil.Web.UCM.Sync.Types (EntityBunch (..), EntityKind (..), entityKind) +import Share.App +import Share.Codebase (CodebaseM) +import Share.Codebase qualified as Codebase +import Share.Codebase.Types (CodebaseEnv) +import Share.Env qualified as Env +import Share.IDs (ProjectBranchShortHand (..), ProjectReleaseShortHand (..), ProjectShortHand (..), UserHandle, UserId) +import Share.IDs qualified as IDs +import Share.OAuth.Session (Session (..)) +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Causal.Types +import Share.Postgres.Definitions.Queries qualified as Defn +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs +import Share.Postgres.LooseCode.Queries qualified as LCQ +import Share.Postgres.Queries qualified as PGQ +import Share.Postgres.Sync.Queries (entityLocations) +import Share.Postgres.Sync.Queries qualified as SyncQ +import Share.Prelude +import Share.Project (Project (..)) +import Share.User (User (..)) +import Share.Utils.Logging +import Share.Utils.Logging qualified as Logging +import Share.Utils.Servant (parseParam) +import Share.Web.App +import Share.Web.Authentication qualified as AuthN +import Share.Web.Authorization qualified as AuthZ +import Share.Web.Errors +import Share.Web.UCM.Sync.HashJWT qualified as HashJWT +import Share.Web.UCM.Sync.Types (EntityBunch (..), EntityKind (..), entityKind) import Servant import U.Codebase.Causal qualified as Causal import U.Codebase.Sqlite.Branch.Full qualified as BranchFull diff --git a/src/Enlil/Web/UCM/Sync/Types.hs b/src/Share/Web/UCM/Sync/Types.hs similarity index 95% rename from src/Enlil/Web/UCM/Sync/Types.hs rename to src/Share/Web/UCM/Sync/Types.hs index a3189b2..69b919e 100644 --- a/src/Enlil/Web/UCM/Sync/Types.hs +++ b/src/Share/Web/UCM/Sync/Types.hs @@ -1,11 +1,11 @@ -module Enlil.Web.UCM.Sync.Types +module Share.Web.UCM.Sync.Types ( EntityBunch (..), EntityKind (..), entityKind, ) where -import Enlil.Prelude +import Share.Prelude import Unison.Sync.Types qualified as Share -- | Helper type for handling entities of different types. diff --git a/src/Unison/PrettyPrintEnvDecl/Postgres.hs b/src/Unison/PrettyPrintEnvDecl/Postgres.hs index f179e46..f221694 100644 --- a/src/Unison/PrettyPrintEnvDecl/Postgres.hs +++ b/src/Unison/PrettyPrintEnvDecl/Postgres.hs @@ -3,13 +3,13 @@ module Unison.PrettyPrintEnvDecl.Postgres (ppedForReferences) where import Control.Lens import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.Postgres qualified as PG -import Enlil.Postgres.NameLookups.Conversions qualified as CV -import Enlil.Postgres.NameLookups.Ops qualified as NameLookupOps -import Enlil.Postgres.NameLookups.Types (NamesPerspective) -import Enlil.Postgres.NameLookups.Types qualified as NameLookups -import Enlil.Postgres.Refs.Types -import Enlil.Prelude +import Share.Postgres qualified as PG +import Share.Postgres.NameLookups.Conversions qualified as CV +import Share.Postgres.NameLookups.Ops qualified as NameLookupOps +import Share.Postgres.NameLookups.Types (NamesPerspective) +import Share.Postgres.NameLookups.Types qualified as NameLookups +import Share.Postgres.Refs.Types +import Share.Prelude import Unison.HashQualified' qualified as HQ' import Unison.LabeledDependency (LabeledDependency) import Unison.Name (Name) diff --git a/src/Unison/Server/NameSearch/Postgres.hs b/src/Unison/Server/NameSearch/Postgres.hs index 239f5c8..49ad854 100644 --- a/src/Unison/Server/NameSearch/Postgres.hs +++ b/src/Unison/Server/NameSearch/Postgres.hs @@ -6,12 +6,12 @@ where import Control.Lens import Data.Set qualified as Set -import Enlil.Codebase qualified as Codebase -import Enlil.Postgres qualified as PG -import Enlil.Postgres.NameLookups.Conversions qualified as CV -import Enlil.Postgres.NameLookups.Ops as NLOps -import Enlil.Postgres.NameLookups.Types -import Enlil.Prelude +import Share.Codebase qualified as Codebase +import Share.Postgres qualified as PG +import Share.Postgres.NameLookups.Conversions qualified as CV +import Share.Postgres.NameLookups.Ops as NLOps +import Share.Postgres.NameLookups.Types +import Share.Prelude import Unison.Codebase.Path qualified as Path import Unison.HashQualified' qualified as HQ' import Unison.Name (Name) diff --git a/src/Unison/Server/Share/DefinitionSummary.hs b/src/Unison/Server/Share/DefinitionSummary.hs index fbfc235..5680afd 100644 --- a/src/Unison/Server/Share/DefinitionSummary.hs +++ b/src/Unison/Server/Share/DefinitionSummary.hs @@ -19,16 +19,16 @@ module Unison.Server.Share.DefinitionSummary where import Data.Aeson -import Enlil.Backend qualified as Backend -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Postgres (QueryM (unrecoverableError)) -import Enlil.Postgres.Hashes.Queries qualified as HashQ -import Enlil.Postgres.IDs (CausalId) -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Postgres.NameLookups.Types (PathSegments (..)) -import Enlil.Utils.Logging qualified as Logging -import Enlil.Web.Errors (ToServerError (..)) +import Share.Backend qualified as Backend +import Share.Codebase qualified as Codebase +import Share.Codebase.Types (CodebaseM) +import Share.Postgres (QueryM (unrecoverableError)) +import Share.Postgres.Hashes.Queries qualified as HashQ +import Share.Postgres.IDs (CausalId) +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Postgres.NameLookups.Types (PathSegments (..)) +import Share.Utils.Logging qualified as Logging +import Share.Web.Errors (ToServerError (..)) import Servant (Capture, QueryParam, (:>)) import Servant.Server (err500) import Unison.Codebase.Editor.DisplayObject (DisplayObject (..)) diff --git a/src/Unison/Server/Share/Definitions.hs b/src/Unison/Server/Share/Definitions.hs index f6b0472..9049b7f 100644 --- a/src/Unison/Server/Share/Definitions.hs +++ b/src/Unison/Server/Share/Definitions.hs @@ -11,14 +11,14 @@ import Data.Either (partitionEithers) import Data.List qualified as List import Data.Map qualified as Map import Data.Set qualified as Set -import Enlil.Backend qualified as Backend -import Enlil.Codebase (CodebaseRuntime) -import Enlil.Codebase qualified as Codebase -import Enlil.Postgres qualified as PG -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.IDs (CausalId) -import Enlil.Postgres.NameLookups.Ops qualified as NameLookupOps -import Enlil.Prelude +import Share.Backend qualified as Backend +import Share.Codebase (CodebaseRuntime) +import Share.Codebase qualified as Codebase +import Share.Postgres qualified as PG +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.IDs (CausalId) +import Share.Postgres.NameLookups.Ops qualified as NameLookupOps +import Share.Prelude import Unison.Codebase.Path (Path) import Unison.ConstructorReference qualified as ConstructorReference import Unison.Debug qualified as Debug diff --git a/src/Unison/Server/Share/Docs.hs b/src/Unison/Server/Share/Docs.hs index 068c708..69f136d 100644 --- a/src/Unison/Server/Share/Docs.hs +++ b/src/Unison/Server/Share/Docs.hs @@ -3,10 +3,10 @@ module Unison.Server.Share.Docs (docsForDefinitionName) where import Control.Lens qualified as Cons -import Enlil.Codebase qualified as Codebase -import Enlil.Postgres qualified as PG -import Enlil.Prelude -import Enlil.Web.Errors (SomeServerError) +import Share.Codebase qualified as Codebase +import Share.Postgres qualified as PG +import Share.Prelude +import Share.Web.Errors (SomeServerError) import Unison.HashQualified' qualified as HQ' import Unison.Name (Name) import Unison.NamesWithHistory (SearchType (ExactName)) diff --git a/src/Unison/Server/Share/FuzzyFind.hs b/src/Unison/Server/Share/FuzzyFind.hs index e9a9f6b..406bed4 100644 --- a/src/Unison/Server/Share/FuzzyFind.hs +++ b/src/Unison/Server/Share/FuzzyFind.hs @@ -19,16 +19,16 @@ import Data.List qualified as List import Data.List.NonEmpty qualified as NonEmpty import Data.Ord qualified as Ord import Data.Text qualified as Text -import Enlil.Backend qualified as Backend -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types (CodebaseM) -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.IDs (BranchHashId, CausalId) -import Enlil.Postgres.NameLookups.Ops qualified as NameLookupOps -import Enlil.Postgres.NameLookups.Queries qualified as Q -import Enlil.Postgres.NameLookups.Types (NamedRef (..), NamesPerspective (..), PathSegments (..)) -import Enlil.Postgres.NameLookups.Types qualified as NameLookups -import Enlil.Prelude +import Share.Backend qualified as Backend +import Share.Codebase qualified as Codebase +import Share.Codebase.Types (CodebaseM) +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.IDs (BranchHashId, CausalId) +import Share.Postgres.NameLookups.Ops qualified as NameLookupOps +import Share.Postgres.NameLookups.Queries qualified as Q +import Share.Postgres.NameLookups.Types (NamedRef (..), NamesPerspective (..), PathSegments (..)) +import Share.Postgres.NameLookups.Types qualified as NameLookups +import Share.Prelude import Servant ( QueryParam, (:>), diff --git a/src/Unison/Server/Share/NamespaceDetails.hs b/src/Unison/Server/Share/NamespaceDetails.hs index e71e793..c6374f0 100644 --- a/src/Unison/Server/Share/NamespaceDetails.hs +++ b/src/Unison/Server/Share/NamespaceDetails.hs @@ -2,10 +2,10 @@ module Unison.Server.Share.NamespaceDetails (namespaceDetails) where import Control.Monad.Except import Data.Set qualified as Set -import Enlil.Codebase qualified as Codebase -import Enlil.Codebase.Types (CodebaseM, CodebaseRuntime) -import Enlil.Postgres.IDs (CausalId) -import Enlil.Prelude +import Share.Codebase qualified as Codebase +import Share.Codebase.Types (CodebaseM, CodebaseRuntime) +import Share.Postgres.IDs (CausalId) +import Share.Prelude import U.Codebase.Causal qualified as Causal import U.Codebase.HashTags (CausalHash) import Unison.Codebase.Path qualified as Path diff --git a/src/Unison/Server/Share/NamespaceListing.hs b/src/Unison/Server/Share/NamespaceListing.hs index 9d86b3c..a112cdc 100644 --- a/src/Unison/Server/Share/NamespaceListing.hs +++ b/src/Unison/Server/Share/NamespaceListing.hs @@ -7,11 +7,11 @@ module Unison.Server.Share.NamespaceListing (serve, NamespaceListingAPI, Namespa import Control.Monad.Except import Data.Aeson -import Enlil.Backend qualified as Backend -import Enlil.Codebase (CodebaseM) -import Enlil.Codebase qualified as Codebase -import Enlil.Postgres.IDs (CausalId) -import Enlil.Prelude +import Share.Backend qualified as Backend +import Share.Codebase (CodebaseM) +import Share.Codebase qualified as Codebase +import Share.Postgres.IDs (CausalId) +import Share.Prelude import Servant ( QueryParam, (:>), diff --git a/src/Unison/Server/Share/RenderDoc.hs b/src/Unison/Server/Share/RenderDoc.hs index 707512c..82e54bc 100644 --- a/src/Unison/Server/Share/RenderDoc.hs +++ b/src/Unison/Server/Share/RenderDoc.hs @@ -12,14 +12,14 @@ module Unison.Server.Share.RenderDoc where import Control.Monad.Except import Data.Set qualified as Set -import Enlil.Backend qualified as Backend -import Enlil.Codebase.Types (CodebaseM, CodebaseRuntime) -import Enlil.Postgres.Causal.Queries qualified as CausalQ -import Enlil.Postgres.Causal.Queries qualified as HashQ -import Enlil.Postgres.IDs (CausalId) -import Enlil.Postgres.NameLookups.Ops qualified as NLOps -import Enlil.Postgres.NameLookups.Types (PathSegments (..)) -import Enlil.Prelude +import Share.Backend qualified as Backend +import Share.Codebase.Types (CodebaseM, CodebaseRuntime) +import Share.Postgres.Causal.Queries qualified as CausalQ +import Share.Postgres.Causal.Queries qualified as HashQ +import Share.Postgres.IDs (CausalId) +import Share.Postgres.NameLookups.Ops qualified as NLOps +import Share.Postgres.NameLookups.Types (PathSegments (..)) +import Share.Prelude import U.Codebase.Causal qualified as V2Causal import Unison.Codebase.Path qualified as Path import Unison.LabeledDependency qualified as LD diff --git a/stack.yaml b/stack.yaml index 37809b8..fed7045 100644 --- a/stack.yaml +++ b/stack.yaml @@ -2,9 +2,9 @@ resolver: lts-20.26 packages: - . -- enlil-auth -- enlil-auth/example -- enlil-utils +- share-auth +- share-auth/example +- share-utils - unison/codebase2/codebase - unison/codebase2/codebase-sqlite - unison/codebase2/codebase-sqlite-hashing-v2