packages feed

link-canonical-0.1.0.0: link-canonical.cabal

cabal-version: 3.0
name: link-canonical
version: 0.1.0.0
synopsis: URL canonicalization library for semantic link identity
description:
  A Haskell library that converts arbitrary URLs into canonical,
  semantically stable identifiers. Handles redirect resolution,
  tracking parameter removal, and domain-specific normalization
  for platforms like YouTube, Amazon, Twitter/X, and more.

license: MIT
license-file: LICENSE
author: Nadeem Bitar
maintainer: Nadeem Bitar
category: Web, Network
build-type: Simple
extra-doc-files:
  CHANGELOG.md
  README.md
  docs/architecture/v1.md

source-repository head
  type: git
  location: https://github.com/shinzui/link-canonical.git

common common
  ghc-options:
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wmissing-deriving-strategies
    -Wpartial-fields
    -Wredundant-constraints
    -Wunused-packages

  default-language: GHC2024
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    OverloadedLabels
    OverloadedStrings
    StrictData

library
  import: common
  hs-source-dirs: src
  exposed-modules:
    Link.Canonical
    Link.Canonical.Config
    Link.Canonical.Error
    Link.Canonical.Http
    Link.Canonical.Redirect
    Link.Canonical.Rules
    Link.Canonical.Rules.Types
    Link.Canonical.Types

  other-modules:
    Link.Canonical.Normalize
    Link.Canonical.Prelude
    Link.Canonical.Rules.Amazon
    Link.Canonical.Rules.GitHub
    Link.Canonical.Rules.Instagram
    Link.Canonical.Rules.Reddit
    Link.Canonical.Rules.Twitter
    Link.Canonical.Rules.YouTube
    Link.Canonical.Tracking

  build-depends:
    base >=4.18 && <5,
    bytestring >=0.11 && <0.13,
    case-insensitive >=1.2 && <1.3,
    containers >=0.6 && <0.8,
    exceptions >=0.10 && <0.11,
    generic-lens >=2.2 && <2.3,
    http-client >=0.7 && <0.8,
    http-client-tls >=0.3 && <0.4,
    http-types >=0.12 && <0.13,
    lens >=5.2 && <5.4,
    modern-uri >=0.3 && <0.4,
    text >=2.0 && <2.2,
    time >=1.12 && <1.15,

test-suite link-canonical-test
  import: common
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  main-is: Main.hs
  other-modules:
    Link.Canonical.AmazonSpec
    Link.Canonical.EdgeCaseSpec
    Link.Canonical.GitHubSpec
    Link.Canonical.InstagramSpec
    Link.Canonical.NormalizeSpec
    Link.Canonical.RedditSpec
    Link.Canonical.RedirectSpec
    Link.Canonical.TrackingSpec
    Link.Canonical.TwitterSpec
    Link.Canonical.YouTubeSpec

  build-depends:
    base,
    containers,
    http-types,
    link-canonical,
    modern-uri,
    mtl,
    tasty >=1.5 && <1.6,
    tasty-hunit >=0.10 && <0.11,
    text,