nuthatch/nuthatch.cabal

499 lines
12 KiB
Text
Raw Normal View History

cabal-version: 3.0
name: nuthatch
version: 0.1.0.0
synopsis: User-facing S3 BFF
description:
A user-facing web application and API for small S3-compatible object stores.
Nuthatch gives OIDC-authenticated users identity-scoped personal roots and a
shared root while keeping object-store credentials behind the service.
license: BSD-3-Clause
license-file: LICENSE
copyright: 2026 ms2k
author: ms2k
maintainer: [email protected]
homepage: https://code.quorate.dev/ms2k/nuthatch
bug-reports: mailto:[email protected]
tested-with: GHC == 9.10.3
category: Network
build-type: Simple
extra-doc-files:
README.md
extra-source-files:
.dockerignore
Dockerfile
Makefile
THIRD_PARTY_NOTICES.txt
cabal.project
cabal.project.freeze
deploy/kubernetes/*.yaml.in
docs/protocol/*.cfg
docs/protocol/*.tla
docs/spec/*.md
sql/001_initial_schema.sql
scripts/*.mjs
tests/*.sh
tests/kind/*.env
tests/kind/*.sh
tests/kind/*.yaml
tests/kind/*.yaml.in
tests/kind/fixture/*.sh
tests/kind/provider/nerdctl
tests/model-correspondence/*.cfg
tests/model-correspondence/*.env
tests/model-correspondence/*.json
tests/model-correspondence/*.mjs
tests/model-correspondence/*.sh
web/.node-version
web/index.html
web/package-lock.json
web/package.json
web/playwright.config.ts
web/src/*.css
web/src/*.svelte
web/src/*.ts
web/src/components/*.svelte
web/src/generated/*.ts
web/src/workflows/*.ts
web/svelte.config.js
web/test/*.mjs
web/test/browser/*.ts
web/test/components/*.ts
web/test/fixtures/*.json
web/tsconfig.json
web/vite.config.ts
source-repository head
type: git
location: https://code.quorate.dev/ms2k/nuthatch
common shared
default-language: Haskell2010
default-extensions:
OverloadedStrings
RecordWildCards
DeriveGeneric
DerivingStrategies
GeneralizedNewtypeDeriving
LambdaCase
ScopedTypeVariables
TupleSections
NamedFieldPuns
FlexibleContexts
FlexibleInstances
DataKinds
TypeOperators
TypeFamilies
MultiParamTypeClasses
UndecidableInstances
ghc-options:
-Wall
-Wcompat
-Widentities
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wmissing-export-lists
-Wpartial-fields
-Wredundant-constraints
build-depends:
, aeson >= 2.1 && < 2.3
, async >= 2.2 && < 2.3
, aws >= 0.25.2 && < 0.26
, base >= 4.18 && < 5
, base16-bytestring >= 1.0 && < 1.1
, base64-bytestring >= 1.2 && < 1.3
, bytestring >= 0.11 && < 0.13
, case-insensitive >= 1.2 && < 1.3
, containers >= 0.6 && < 0.8
, conduit >= 1.3 && < 1.4
, cookie >= 0.5.1 && < 0.6
, crypton-connection >= 0.4 && < 0.5
, crypton >= 0.34 && < 1.1
, directory >= 1.3 && < 1.4
, entropy >= 0.4 && < 0.5
, envparse >= 0.6 && < 0.7
, filepath >= 1.4 && < 1.6
, hedis >= 0.15 && < 0.16
, http-client >= 0.7 && < 0.8
, http-client-tls >= 0.3 && < 0.4
, http-conduit >= 2.3 && < 2.4
, http-api-data >= 0.7 && < 0.8
, http-media >= 0.8 && < 0.9
, http-types >= 0.12 && < 0.13
, jose >= 0.12 && < 0.13
, lens >= 5.2 && < 5.4
, memory >= 0.18 && < 0.19
, mime-types >= 0.1 && < 0.2
, modern-uri >= 0.3.6 && < 0.4
, mtl >= 2.3 && < 2.4
, network-uri >= 2.6 && < 2.8
, postgresql-simple >= 0.7 && < 0.8
, postgresql-migration >= 0.2.1.8 && < 0.3
, resource-pool >= 0.4 && < 0.5
, resourcet >= 1.3 && < 1.4
2026-07-18 22:49:19 +09:00
, retry >= 0.9 && < 0.10
, scientific >= 0.3 && < 0.4
, servant >= 0.20 && < 0.21
, servant-server >= 0.20 && < 0.21
, stm >= 2.5 && < 2.6
, temporary >= 1.3 && < 1.4
, text >= 2.0 && < 2.2
, time >= 1.12 && < 1.15
, tls >= 2.2 && < 2.3
, transformers >= 0.6 && < 0.7
, unicode-transforms >= 0.4 && < 0.5
, unordered-containers >= 0.2 && < 0.3
, uuid >= 1.3 && < 1.4
, wai >= 3.2 && < 3.3
, wai-extra >= 3.1 && < 3.2
, warp >= 3.3 && < 3.5
, warp-tls >= 3.4 && < 3.5
, xml-conduit >= 1.9 && < 1.11
library nuthatch-internal
import: shared
hs-source-dirs: src
exposed-modules:
Nuthatch
Nuthatch.Api
Nuthatch.App
Nuthatch.App.Env
Nuthatch.Audit
Nuthatch.Browse
Nuthatch.Config
Nuthatch.Db
Nuthatch.Http.Auth
Nuthatch.Http.Contract
Nuthatch.Http.Error
Nuthatch.Http.Server
Nuthatch.Mutation.Effects
Nuthatch.Mutation.Recovery
Nuthatch.Mutation.Service
Nuthatch.Oidc
Nuthatch.Paths
Nuthatch.Product.Limits
Nuthatch.Protocol
Nuthatch.Redis
2026-07-18 22:49:19 +09:00
Nuthatch.Recovery
Nuthatch.Runtime
Nuthatch.S3
Nuthatch.Session
Nuthatch.Streaming
Nuthatch.Transfer
Nuthatch.Types
executable nuthatch
import: shared
main-is: Main.hs
hs-source-dirs: app
build-depends:
, nuthatch:nuthatch-internal
, base
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-generate-web-contract
import: shared
main-is: GenerateContract.hs
hs-source-dirs: app
build-depends:
, nuthatch:nuthatch-internal
, base
executable nuthatch-web-contract-integration
import: shared
main-is: WebContractIntegration.hs
hs-source-dirs: test
build-depends:
, nuthatch:nuthatch-internal
, base
, bytestring
, process >= 1.6 && < 1.7
, text
ghc-options:
-threaded
executable nuthatch-storage-integration
import: shared
main-is: Integration.hs
hs-source-dirs: test
build-depends:
, nuthatch:nuthatch-internal
, base
, async
, bytestring
, text
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-recovery-probe
2026-07-18 22:49:19 +09:00
import: shared
main-is: RecoveryPhase.hs
hs-source-dirs: test
build-depends:
, nuthatch:nuthatch-internal
2026-07-18 22:49:19 +09:00
, base
, bytestring
, text
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-protocol-conformance
import: shared
main-is: ProtocolConformance.hs
hs-source-dirs: test
other-modules:
Nuthatch.ModelEvidence
build-depends:
, nuthatch:nuthatch-internal
, base
, bytestring
, crypton
, memory
, postgresql-simple
, text
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-model-evidence
import: shared
main-is: ModelEvidenceMain.hs
hs-source-dirs: test
other-modules:
Nuthatch.ModelEvidence
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, text
executable nuthatch-runtime-probe
import: shared
main-is: RuntimeProbe.hs
hs-source-dirs: test
build-depends:
, nuthatch:nuthatch-internal
, base
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-auth-probe
import: shared
main-is: AuthProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Curl
Nuthatch.Probe.Http
Nuthatch.Probe.Oidc
Nuthatch.Probe.ProductClient
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, bytestring
, crypton
, memory
, process >= 1.6 && < 1.7
, temporary
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-product-probe
import: shared
main-is: ProductProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Http
Nuthatch.Probe.Oidc
Nuthatch.Probe.ProductClient
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, bytestring
, crypton
, memory
, process >= 1.6 && < 1.7
, temporary
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-idempotency-probe
import: shared
main-is: IdempotencyProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Curl
Nuthatch.Probe.Http
Nuthatch.Probe.Oidc
Nuthatch.Probe.ProductClient
build-depends:
, nuthatch:nuthatch-internal
, aeson
, async
, base
, bytestring
, crypton
, memory
, process >= 1.6 && < 1.7
, temporary
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-streaming-probe
import: shared
main-is: StreamingProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Curl
Nuthatch.Probe.Http
Nuthatch.Probe.Oidc
Nuthatch.Probe.ProductClient
build-depends:
, nuthatch:nuthatch-internal
, aeson
, async
, base
, bytestring
, crypton
, directory
, memory
, process >= 1.6 && < 1.7
, temporary
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-runtime-http-probe
import: shared
main-is: RuntimeHttpProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Http
Nuthatch.Probe.Oidc
Nuthatch.Probe.ProductClient
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, bytestring
, crypton
, memory
, process >= 1.6 && < 1.7
, temporary
ghc-options:
-threaded
-rtsopts
-with-rtsopts=-N
executable nuthatch-runtime-audit-probe
import: shared
main-is: RuntimeAuditProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, bytestring
, text
executable nuthatch-fixture-probe
import: shared
main-is: FixtureProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Http
build-depends:
, nuthatch:nuthatch-internal
, base
, bytestring
, crypton
, memory
, postgresql-simple
, process >= 1.6 && < 1.7
, temporary
, text
executable nuthatch-dependency-probe
import: shared
main-is: DependencyProbe.hs
hs-source-dirs: test
other-modules:
Nuthatch.Probe.Assert
Nuthatch.Probe.Curl
Nuthatch.Probe.Http
build-depends:
, nuthatch:nuthatch-internal
, base
, bytestring
, hedis
, postgresql-simple
, process >= 1.6 && < 1.7
, temporary
executable nuthatch-browser-session-fixture
import: shared
main-is: BrowserSessionFixture.hs
hs-source-dirs: test
build-depends:
, nuthatch:nuthatch-internal
, aeson
, base
, text
test-suite nuthatch-unit
import: shared
type: exitcode-stdio-1.0
main-is: Spec.hs
hs-source-dirs: test
other-modules:
Nuthatch.Test.Config
Nuthatch.Test.Http
Nuthatch.Test.HttpContract
Nuthatch.Test.Identity
Nuthatch.Test.Oidc
Nuthatch.Test.Path
Nuthatch.Test.PathFixture
Nuthatch.Test.Product
Nuthatch.Test.Protocol
Nuthatch.Test.Recovery
Nuthatch.Test.Runtime
Nuthatch.Test.Streaming
2026-07-20 04:16:13 +09:00
Nuthatch.Test.UploadIdentityFixture
build-depends:
, nuthatch:nuthatch-internal
, base
, bytestring
, hedgehog >= 1.7 && < 1.8
, tasty >= 1.5 && < 1.6
, tasty-hedgehog >= 1.4 && < 1.5
, tasty-hunit >= 0.10 && < 0.11
, text
ghc-options:
-threaded