Projects STRLCPY graphql-engine Commits 0b3f756e
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■
    .ghcversion
    1  -8.10.7
     1 +9.2.5
    2 2   
  • ■ ■ ■ ■ ■
    cabal.project
    skipped 14 lines
    15 15  --
    16 16  -- See: https://www.haskell.org/cabal/users-guide/nix-local-build.html#configuring-builds-with-cabal-project
    17 17   
    18  -with-compiler: ghc-9.2.4
     18 +with-compiler: ghc-9.2.5
    19 19   
    20 20  -- package-level parallelism:
    21 21  jobs: $ncpus
    skipped 19 lines
    41 41   ghc-options: -j
    42 42   haddock-options: "--show-all"
    43 43   
     44 +allow-newer: kriti-lang:aeson
    44 45  source-repository-package
    45 46   type: git
    46 47   location: https://github.com/hasura/kriti-lang.git
    skipped 46 lines
    93 94   location: https://github.com/hasura/ekg-prometheus.git
    94 95   tag: v0.2.0.0
    95 96   
     97 +allow-newer: ekg-json:aeson
    96 98  source-repository-package
    97 99   type: git
    98 100   location: https://github.com/hasura/ekg-json.git
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    cabal.project.freeze
    1 1  active-repositories: hackage.haskell.org:merge
    2 2  constraints: any.Cabal ==3.6.3.0,
    3 3   any.Diff ==0.4.1,
    4  - any.HTTP ==4000.3.16,
     4 + any.HTTP ==4000.4.1,
    5 5   any.HUnit ==1.6.2.0,
    6 6   any.OneTuple ==0.3.1,
    7 7   any.Only ==0.1,
    skipped 4 lines
    12 12   any.Spock ==0.14.0.0,
    13 13   any.Spock-core ==0.14.0.1,
    14 14   any.StateVar ==1.2.2,
    15  - any.adjunctions ==4.4,
    16  - any.aeson ==2.0.3.0,
     15 + any.adjunctions ==4.4.2,
     16 + any.aeson ==2.1.0.0,
    17 17   any.aeson-casing ==0.2.0.0,
    18 18   any.aeson-pretty ==0.8.9,
    19 19   any.aeson-qq ==0.8.4,
    20 20   any.alex ==3.2.7.1,
    21  - any.ansi-terminal ==0.11.1,
     21 + any.ansi-terminal ==0.11.3,
    22 22   any.ansi-wl-pprint ==0.6.9,
    23 23   any.appar ==0.1.8,
    24 24   any.array ==0.5.4.0,
    skipped 4 lines
    29 29   any.async ==2.2.4,
    30 30   any.atomic-primops ==0.8.4,
    31 31   any.attoparsec ==0.14.4,
    32  - any.attoparsec-iso8601 ==1.0.2.1,
     32 + any.attoparsec-iso8601 ==1.1.0.0,
    33 33   any.authenticate-oauth ==1.7,
    34 34   any.auto-update ==0.1.6,
    35  - any.autodocodec ==0.2.0.0,
     35 + any.autodocodec ==0.2.0.1,
    36 36   any.autodocodec-openapi3 ==0.2.1.1,
    37 37   any.barbies ==2.0.3.1,
    38  - any.base ==4.16.3.0,
    39  - any.base-compat ==0.12.1,
    40  - any.base-compat-batteries ==0.12.1,
    41  - any.base-orphans ==0.8.6,
     38 + any.base ==4.16.4.0,
     39 + any.base-compat ==0.12.2,
     40 + any.base-compat-batteries ==0.12.2,
     41 + any.base-orphans ==0.8.7,
     42 + any.base-prelude ==1.6.1,
    42 43   any.base16-bytestring ==1.0.2.0,
    43 44   any.base64-bytestring ==1.2.1.0,
    44  - any.basement ==0.0.14,
    45  - any.bifunctors ==5.5.11,
     45 + any.basement ==0.0.15,
     46 + any.bifunctors ==5.5.13,
    46 47   any.binary ==0.8.9.0,
    47  - any.binary-parser ==0.5.7.1,
     48 + any.binary-parser ==0.5.7.2,
     49 + any.bitvec ==1.1.3.0,
    48 50   any.blaze-builder ==0.4.2.2,
    49 51   any.blaze-html ==0.9.1.2,
    50 52   any.blaze-markup ==0.8.2.8,
    skipped 2 lines
    53 55   any.byteorder ==1.0.4,
    54 56   any.bytestring ==0.11.3.1,
    55 57   any.bytestring-builder ==0.10.8.2.0,
    56  - any.bytestring-lexing ==0.5.0.8,
    57  - any.bytestring-strict-builder ==0.4.5.5,
     58 + any.bytestring-lexing ==0.5.0.9,
     59 + any.bytestring-strict-builder ==0.4.5.6,
     60 + any.bytestring-tree-builder ==0.2.7.10,
    58 61   any.cabal-doctest ==1.0.9,
    59 62   any.call-stack ==0.4.0,
    60 63   any.case-insensitive ==1.2.1.0,
    61  - any.cereal ==0.5.8.2,
     64 + any.cereal ==0.5.8.3,
    62 65   any.charset ==0.3.9,
    63 66   any.ci-info ==0.1.0.0,
    64 67   any.clock ==0.8.3,
    skipped 1 lines
    66 69   any.colour ==2.3.6,
    67 70   any.comonad ==5.0.8,
    68 71   any.concise ==0.1.0.1,
    69  - any.concurrent-output ==1.10.15,
    70  - any.conduit ==1.3.4.2,
    71  - any.conduit-extra ==1.3.5,
     72 + any.concurrent-output ==1.10.16,
     73 + any.conduit ==1.3.4.3,
     74 + any.conduit-extra ==1.3.6,
    72 75   any.connection ==0.3.1,
    73  - any.constraints ==0.13.3,
     76 + any.constraints ==0.13.4,
    74 77   any.constraints-extras ==0.3.2.1,
    75 78   any.containers ==0.6.5.1,
    76 79   any.contravariant ==1.5.5,
    skipped 4 lines
    81 84   any.cryptohash-md5 ==0.11.101.0,
    82 85   any.cryptohash-sha1 ==0.11.101.0,
    83 86   any.cryptonite ==0.30,
    84  - any.data-bword ==0.1.0.1,
     87 + any.data-bword ==0.1.0.2,
    85 88   any.data-checked ==0.3,
    86 89   any.data-default ==0.7.1.1,
    87 90   any.data-default-class ==0.1.2.0,
    skipped 6 lines
    94 97   any.data-has ==0.4.0.0,
    95 98   any.data-serializer ==0.3.5,
    96 99   any.data-textual ==0.3.0.3,
    97  - any.dec ==0.0.4,
     100 + any.dec ==0.0.5,
    98 101   any.deepseq ==1.4.6.1,
    99  - any.deferred-folds ==0.9.18.1,
     102 + any.deferred-folds ==0.9.18.2,
    100 103   any.dependent-map ==0.4.0.0,
    101 104   any.dependent-sum ==0.7.1.0,
    102 105   any.dependent-sum-template ==0.1.1.1,
    skipped 2 lines
    105 108   any.dlist ==1.0,
    106 109   any.double-conversion ==2.0.4.1,
    107 110   any.easy-file ==0.2.2,
    108  - any.either ==5.0.1.1,
     111 + any.either ==5.0.2,
    109 112   any.ekg-core ==0.1.1.7,
    110 113   any.ekg-json ==0.1.0.7,
    111 114   any.ekg-prometheus ==0.2.0.0,
    112  - any.entropy ==0.4.1.7,
     115 + any.entropy ==0.4.1.10,
    113 116   any.erf ==2.0.0.0,
    114 117   any.errors ==2.3.0,
    115 118   any.exceptions ==0.10.4,
    116  - any.extra ==1.7.10,
     119 + any.extra ==1.7.12,
    117 120   any.fail ==4.9.0.0,
    118 121   any.fast-logger ==3.1.1,
    119 122   any.file-embed ==0.0.15.0,
    skipped 2 lines
    122 125   any.focus ==1.0.3,
    123 126   any.foldl ==1.4.12,
    124 127   any.formatting ==7.1.3,
    125  - any.free ==5.1.7,
     128 + any.free ==5.1.9,
     129 + any.generic-monoid ==0.1.0.1,
     130 + any.generically ==0.1,
    126 131   any.generics-sop ==0.5.1.2,
    127  - any.ghc ==9.2.4.20220919,
     132 + any.ghc ==9.2.5,
    128 133   any.ghc-bignum ==1.2,
    129  - any.ghc-boot ==9.2.4.20220919,
    130  - any.ghc-boot-th ==9.2.4.20220919,
    131  - any.ghc-heap ==9.2.4.20220919,
     134 + any.ghc-boot ==9.2.5,
     135 + any.ghc-boot-th ==9.2.5,
     136 + any.ghc-heap ==9.2.5,
    132 137   any.ghc-heap-view ==0.6.3,
    133 138   any.ghc-prim ==0.8.0,
    134  - any.ghci ==9.2.4.20220919,
    135  - any.graphql-parser ==0.2.0.0,
     139 + any.ghci ==9.2.5,
    136 140   any.happy ==1.20.0,
    137  - any.hashable ==1.3.5.0,
    138  - any.hashtables ==1.2.4.2,
     141 + any.hashable ==1.4.1.0,
     142 + any.hashtables ==1.3.1,
    139 143   any.haskell-lexer ==1.1,
    140 144   any.haskell-src-exts ==1.23.1,
    141  - any.haskell-src-meta ==0.8.9,
    142  - any.hedgehog ==1.1.1,
     145 + any.haskell-src-meta ==0.8.11,
     146 + any.hasql ==1.5.0.5,
     147 + any.hasql-pool ==0.5.2.2,
     148 + any.hasql-transaction ==1.0.1.1,
     149 + any.hedgehog ==1.2,
    143 150   any.hedis ==0.15.1,
    144 151   any.hourglass ==0.2.12,
    145 152   any.hpc ==0.6.1.0,
    skipped 4 lines
    150 157   any.hspec-expectations ==0.8.2,
    151 158   any.hspec-expectations-lifted ==0.10.0,
    152 159   any.hspec-hedgehog ==0.0.1.2,
    153  - any.http-api-data ==0.4.3,
    154  - any.http-client ==0.7.11,
     160 + any.http-api-data ==0.5,
     161 + any.http-client ==0.7.13.1,
    155 162   any.http-client-tls ==0.3.6.1,
    156 163   any.http-conduit ==2.3.8,
    157 164   any.http-date ==0.0.11,
    skipped 4 lines
    162 169   any.immortal ==0.2.2.1,
    163 170   any.indexed-profunctors ==0.1.1,
    164 171   any.indexed-traversable ==0.1.2,
    165  - any.indexed-traversable-instances ==0.1.1,
     172 + any.indexed-traversable-instances ==0.1.1.1,
    166 173   any.insert-ordered-containers ==0.2.5.1,
    167 174   any.inspection-testing ==0.4.6.1,
    168 175   any.integer-gmp ==1.1,
    169 176   any.integer-logarithms ==1.0.3.1,
    170  - any.invariant ==0.5.5,
     177 + any.invariant ==0.6,
    171 178   any.iproute ==1.7.12,
     179 + any.isomorphism-class ==0.1.0.7,
    172 180   any.jose ==0.9,
    173  - any.kan-extensions ==5.2.3,
     181 + any.kan-extensions ==5.2.5,
    174 182   any.keys ==3.12.3,
    175 183   any.kriti-lang ==0.3.2,
    176  - any.lens ==5.1,
    177  - any.lens-aeson ==1.1.3,
     184 + any.lens ==5.2,
     185 + any.lens-aeson ==1.2.2,
     186 + any.lens-family ==2.1.2,
     187 + any.lens-family-core ==2.1.2,
    178 188   any.libyaml ==0.1.2,
    179  - any.lifted-async ==0.10.2.2,
     189 + any.lifted-async ==0.10.2.3,
    180 190   any.lifted-base ==0.2.3.12,
    181  - any.list-t ==1.0.5.1,
    182  - any.logict ==0.7.0.3,
    183  - any.megaparsec ==9.2.0,
    184  - any.memory ==0.17.0,
    185  - any.mime-types ==0.1.0.9,
     191 + any.list-t ==1.0.5.3,
     192 + any.logict ==0.8.0.0,
     193 + any.lucid2 ==0.0.20221012,
     194 + any.managed ==1.0.9,
     195 + any.megaparsec ==9.2.2,
     196 + any.memory ==0.18.0,
     197 + any.mime-types ==0.1.1.0,
    186 198   any.mmorph ==1.2.0,
    187 199   any.monad-control ==1.0.3.1,
    188 200   any.monad-logger ==0.3.36,
    189 201   any.monad-loops ==0.4.3,
    190  - any.monad-time ==0.3.1.0,
     202 + any.monad-time ==0.4.0.0,
    191 203   any.monad-validate ==1.2.0.1,
    192 204   any.mono-traversable ==1.0.15.3,
    193 205   any.morpheus-graphql ==0.20.0,
    skipped 4 lines
    198 210   any.mtl-compat ==0.2.2,
    199 211   any.mustache ==2.4.0,
    200 212   any.mysql ==0.2.1,
    201  - any.mysql-simple ==0.4.7.1,
     213 + any.mysql-simple ==0.4.9,
    202 214   any.natural-transformation ==0.4,
    203 215   any.network ==3.1.2.7,
    204 216   any.network-bsd ==2.8.1.0,
    skipped 6 lines
    211 223   any.odbc ==0.2.6,
    212 224   any.old-locale ==1.0.0.7,
    213 225   any.old-time ==1.1.0.3,
    214  - any.openapi3 ==3.2.1,
    215  - any.optics-core ==0.4,
    216  - any.optics-extra ==0.4,
    217  - any.optics-th ==0.4,
     226 + any.openapi3 ==3.2.2,
     227 + any.optics-core ==0.4.1,
     228 + any.optics-extra ==0.4.2.1,
     229 + any.optics-th ==0.4.1,
    218 230   any.optparse-applicative ==0.16.1.0,
    219  - any.optparse-generic ==1.4.7,
     231 + any.optparse-generic ==1.4.8,
    220 232   any.parallel ==3.2.2.0,
    221 233   any.parsec ==3.1.15.1,
    222 234   any.parser-combinators ==1.3.0,
    223  - any.parsers ==0.12.10,
     235 + any.parsers ==0.12.11,
    224 236   any.pcre-light ==0.4.1.0,
    225 237   any.pem ==0.2.4,
    226  - any.pg-client ==0.1.0,
    227  - any.pointed ==5.0.3,
    228  - any.postgresql-binary ==0.12.4.2,
     238 + any.pointed ==5.0.4,
     239 + any.postgres-options ==0.2.0.0,
     240 + any.postgresql-binary ==0.12.5,
    229 241   any.postgresql-libpq ==0.9.4.3,
    230  - any.postgresql-simple ==0.6.4,
     242 + any.postgresql-simple ==0.6.5,
    231 243   any.pretty ==1.1.3.6,
    232 244   any.pretty-show ==1.10,
    233  - any.pretty-simple ==4.0.0.0,
     245 + any.pretty-simple ==4.1.2.0,
    234 246   any.prettyprinter ==1.7.1,
    235 247   any.prettyprinter-ansi-terminal ==1.1.3,
    236  - any.primitive ==0.7.3.0,
    237  - any.primitive-extras ==0.10.1.4,
     248 + any.primitive ==0.7.4.0,
     249 + any.primitive-extras ==0.10.1.5,
    238 250   any.primitive-unlifted ==0.1.3.1,
    239  - any.process ==1.6.13.2,
     251 + any.process ==1.6.16.0,
    240 252   any.profunctors ==5.6.2,
     253 + any.proto-lens ==0.7.1.2,
     254 + any.proto-lens-runtime ==0.7.0.3,
    241 255   any.psqueues ==0.2.7.3,
    242  - any.quickcheck-instances ==0.3.27,
     256 + any.quickcheck-instances ==0.3.28,
    243 257   any.quickcheck-io ==0.2.0,
    244  - any.random ==1.2.1,
     258 + any.random ==1.2.1.1,
     259 + any.recv ==0.0.0,
     260 + any.refined ==0.8,
    245 261   any.reflection ==2.1.6,
    246 262   any.regex-base ==0.94.0.2,
    247  - any.regex-tdfa ==1.3.1.1,
     263 + any.regex-tdfa ==1.3.2,
    248 264   any.relude ==1.1.0.0,
    249 265   any.reroute ==0.7.0.0,
    250 266   any.resource-pool ==0.2.3.2,
    251  - any.resourcet ==1.2.4.3,
    252  - any.retry ==0.9.1.0,
     267 + any.resourcet ==1.2.6,
     268 + any.retry ==0.9.3.0,
    253 269   any.rts ==1.0.2,
    254 270   any.safe ==0.3.19,
    255  - any.safe-exceptions ==0.1.7.2,
     271 + any.safe-exceptions ==0.1.7.3,
    256 272   any.scanner ==0.3.1,
    257 273   any.scientific ==0.3.7.0,
    258 274   any.semialign ==1.2.0.1,
    259 275   any.semigroupoids ==5.3.7,
    260 276   any.semigroups ==0.20,
    261 277   any.semver ==0.4.0.1,
    262  - any.servant ==0.19,
     278 + any.servant ==0.19.1,
    263 279   any.servant-client ==0.19,
    264 280   any.servant-client-core ==0.19,
    265 281   any.servant-openapi3 ==2.0.1.5,
    266  - any.servant-server ==0.19.1,
     282 + any.servant-server ==0.19.2,
    267 283   any.setenv ==0.1.1.3,
    268  - any.shakespeare ==2.0.29,
     284 + any.shakespeare ==2.0.30,
    269 285   any.simple-sendfile ==0.2.30,
    270 286   any.singleton-bool ==0.1.6,
    271 287   any.socks ==0.6.1,
    272 288   any.some ==1.0.3,
    273 289   any.sop-core ==0.5.0.2,
    274  - any.split ==0.2.3.4,
     290 + any.split ==0.2.3.5,
    275 291   any.splitmix ==0.1.0.4,
    276 292   any.stm ==2.5.0.2,
    277 293   any.stm-chans ==3.0.0.6,
    278 294   any.stm-containers ==1.2,
    279  - any.stm-hamt ==1.2.0.7,
    280  - any.streaming-commons ==0.2.2.4,
     295 + any.stm-hamt ==1.2.0.8,
     296 + any.streaming-commons ==0.2.2.5,
    281 297   any.strict ==0.4.0.1,
    282 298   any.string-conversions ==0.4.0.1,
    283 299   any.superbuffer ==0.3.1.2,
    284  - any.syb ==0.7.2.1,
     300 + any.syb ==0.7.2.2,
    285 301   any.system-filepath ==0.4.14,
    286 302   any.tagged ==0.8.6.1,
    287 303   any.template-haskell ==2.18.0.0,
    288  - any.terminal-size ==0.3.2.1,
     304 + any.template-haskell-compat-v0208 ==0.1.9.1,
     305 + any.terminal-size ==0.3.3,
    289 306   any.terminfo ==0.4.1.5,
    290 307   any.text ==1.2.5.0,
    291  - any.text-builder ==0.6.6.3,
    292  - any.text-conversions ==0.3.1,
     308 + any.text-builder ==0.6.7,
     309 + any.text-builder-dev ==0.3.3,
     310 + any.text-conversions ==0.3.1.1,
    293 311   any.text-latin1 ==0.3.1,
    294 312   any.text-printer ==0.5.0.2,
    295 313   any.text-short ==0.1.5,
    296 314   any.tf-random ==0.5,
    297  - any.th-abstraction ==0.4.3.0,
    298  - any.th-compat ==0.1.3,
    299  - any.th-expand-syns ==0.4.9.0,
     315 + any.th-abstraction ==0.4.5.0,
     316 + any.th-compat ==0.1.4,
     317 + any.th-expand-syns ==0.4.10.0,
     318 + any.th-extras ==0.0.0.6,
    300 319   any.th-lift ==0.8.2,
    301  - any.th-lift-instances ==0.1.19,
    302  - any.th-orphans ==0.13.12,
     320 + any.th-lift-instances ==0.1.20,
     321 + any.th-orphans ==0.13.14,
    303 322   any.th-reify-many ==0.1.10,
    304 323   any.these ==1.1.1.1,
    305 324   any.these-skinny ==0.7.5,
    skipped 1 lines
    307 326   any.time-compat ==1.9.6.1,
    308 327   any.time-locale-compat ==0.1.1.5,
    309 328   any.time-manager ==0.0.0,
    310  - any.tls ==1.5.7,
     329 + any.tls ==1.6.0,
    311 330   any.transformers ==0.5.6.2,
    312 331   any.transformers-base ==0.4.6,
    313  - any.transformers-compat ==0.6.6,
     332 + any.transformers-compat ==0.7.2,
    314 333   any.type-equality ==1,
    315 334   any.type-hint ==0.1,
    316  - any.typed-process ==0.2.8.0,
     335 + any.typed-process ==0.2.10.1,
    317 336   any.unagi-chan ==0.4.1.4,
    318 337   any.unbounded-delays ==0.1.1.1,
    319 338   any.unix ==2.7.2.2,
    320  - any.unix-compat ==0.5.4,
    321  - any.unix-time ==0.4.7,
    322  - any.unliftio ==0.2.21.0,
     339 + any.unix-compat ==0.6,
     340 + any.unix-time ==0.4.8,
     341 + any.unliftio ==0.2.23.0,
    323 342   any.unliftio-core ==0.2.0.1,
    324 343   any.unordered-containers ==0.2.16.0,
    325 344   any.uri-encode ==1.5.0.7,
    skipped 6 lines
    332 351   any.validity-scientific ==0.2.0.3,
    333 352   any.vault ==0.3.1.5,
    334 353   any.vector ==0.12.3.1,
    335  - any.vector-algorithms ==0.8.0.4,
     354 + any.vector-algorithms ==0.9.0.1,
    336 355   any.vector-instances ==3.4,
    337 356   any.void ==0.7.3,
    338 357   any.wai ==3.2.3,
    339 358   any.wai-app-static ==3.1.7.4,
    340  - any.wai-extra ==3.1.8,
     359 + any.wai-extra ==3.1.13.0,
    341 360   any.wai-logger ==2.4.0,
    342  - any.warp ==3.3.19,
     361 + any.warp ==3.3.23,
    343 362   any.websockets ==0.12.7.3,
    344 363   any.wide-word ==0.1.1.2,
    345  - any.witch ==1.0.0.1,
     364 + any.witch ==1.1.2.0,
    346 365   any.witherable ==0.4.2,
    347 366   any.wl-pprint-annotated ==0.1.0.1,
    348 367   any.word8 ==0.1.3,
    349 368   any.wreq ==0.5.3.3,
    350  - any.x509 ==1.7.6,
     369 + any.x509 ==1.7.7,
    351 370   any.x509-store ==1.6.9,
    352 371   any.x509-system ==1.6.7,
    353 372   any.x509-validation ==1.6.12,
    354 373   any.xml-conduit ==1.9.1.1,
    355 374   any.xml-lens ==0.3.1,
    356 375   any.xml-types ==0.3.8,
    357  - any.yaml ==0.11.7.0,
    358  - any.zlib ==0.6.2.3,
    359  -index-state: hackage.haskell.org 2022-09-21T21:18:32Z
     376 + any.yaml ==0.11.8.0,
     377 + any.zlib ==0.6.3.0,
     378 +index-state: hackage.haskell.org 2022-11-14T15:18:07Z
    360 379   
  • ■ ■ ■ ■ ■
    scripts/cabal-freeze-update.sh
    skipped 41 lines
    42 42   
    43 43  # map of: package_name->package_version
    44 44  declare -A PACKAGE_TARGETS
    45  -UPDATE_ALL=""
     45 +SKIP_UPDATE=false
     46 +UPGRADE_ALL=false
     47 +KEEP_TRYING=true
    46 48   
    47 49  if [[ $# -eq 0 ]]; then
    48 50   echo_error "expecting at least one argument"
    skipped 83 lines
    132 134   echo_error "Exiting"
    133 135   exit 31
    134 136   else
    135  - echo -ne "Relaxed $((freeze_line_count_orig-freeze_line_count)) constraints so far...\r"
    136  - freeze_line_count_prev=$freeze_line_count
    137  - # ...and try again
     137 + # newline-separated:
     138 + conflict_set=$(echo "$out" | tr '\n' ' ' | sed -r 's/^.*conflict set: ([^\)]+)\).*$/\1/' | tr ',' '\n' | tr -d ' ')
     139 + if [ -z "$conflict_set" ]; then
     140 + echo_error "Something went wrong :/"
     141 + exit 77
     142 + fi
     143 + # omit target packages:
     144 + for package_name in "${!PACKAGE_TARGETS[@]}"; do
     145 + conflict_set=$(echo "$conflict_set" | sed "/^$package_name$/d")
     146 + done
     147 + # filter conflicts from the freeze file
     148 + while IFS= read -r package_name; do
     149 + sed -ri "/\s+any.$package_name ==/d" "$FREEZE_FILE"
     150 + sed -ri "/\s+$package_name /d" "$FREEZE_FILE" # baked in flags
     151 + done <<< "$conflict_set"
     152 + 
     153 + freeze_line_count=$(wc -l "$FREEZE_FILE" | awk '{print $1}')
     154 + if [ "$freeze_line_count" -eq "$freeze_line_count_prev" ]; then
     155 + # No longer making progress, so...
     156 + echo_error "It looks like we can't find a build plan :("
     157 + echo_error "With the freeze file in its current state, try doing:"
     158 + echo_error " $ cabal freeze --enable-tests --enable-benchmarks --minimize-conflict-set"
     159 + echo_error "Exiting"
     160 + exit 31
     161 + else
     162 + echo -ne "Relaxed $((freeze_line_count_orig-freeze_line_count)) constraints so far...\r"
     163 + freeze_line_count_prev=$freeze_line_count
     164 + # ...and try again
     165 + fi
    138 166   fi
    139 167   fi
    140 168   done
    skipped 20 lines
  • ■ ■ ■ ■ ■ ■
    server/COMPILING-ON-MACOS.md
    1  -# Compile a graphql-engine executable using brew and ghc-8.10.7
     1 +# Compile a graphql-engine executable using brew and ghc-9.2.5
    2 2   
    3 3  *Note: These instructions use the path `/opt/homebrew` in various places, but this path may be different on your machine depending on where you have installed homebrew (for example, many older homebrew installation were installed to `/usr/local`). You can find out the path of your homebrew installation by running the command `brew --prefix`, and if the output is not `/opt/homebrew`, then you should replace any instances of `/opt/homebrew` in these instructions with the path output by `brew --prefix`.*
    4 4   
    5  -1. Install ghc-8.10.7 and cabal-install via [ghcup](https://www.haskell.org/ghcup/)
     5 +1. Install ghc-9.2.5 and cabal-install via [ghcup](https://www.haskell.org/ghcup/).
    6 6   
    7 7  2. Install dependencies:
    8 8   
    skipped 111 lines
  • ■ ■ ■ ■
    server/CONTRIBUTING.md
    skipped 4 lines
    5 5   
    6 6  ## Pre-requisites
    7 7   
    8  -- [GHC](https://www.haskell.org/ghc/) 8.10.7 and [cabal-install](https://cabal.readthedocs.io/en/latest/)
     8 +- [GHC](https://www.haskell.org/ghc/) 9.2.5 and [cabal-install](https://cabal.readthedocs.io/en/latest/)
    9 9   - There are various ways these can be installed, but [ghcup](https://www.haskell.org/ghcup/) is a good choice if you’re not sure.
    10 10  - There are few system packages required like `libpq-dev`, `libssl-dev`, etc. The best place to get the entire list is from the packager [Dockerfile](../.buildkite/dockerfiles/ci-builders/server-builder.dockerfile)
    11 11  - Additional Haskell tools (expected versions can be found in _VERSIONS.json_):
    skipped 285 lines
  • ■ ■ ■ ■ ■ ■
    server/VERSIONS.json
    1 1  {
    2  - "ghc": "9.2.4",
    3  - "hlint": "3.3.6",
     2 + "ghc": "9.2.5",
     3 + "hlint": "3.4.1",
    4 4   "hpack": "0.34.7",
    5 5   "ormolu": "0.3.1.0"
    6 6  }
    skipped 1 lines
  • ■ ■ ■ ■
    server/lib/schema-parsers/src/Hasura/GraphQL/Parser/Internal/Parser.hs
    skipped 179 lines
    180 180   
    181 181  safeSelectionSet ::
    182 182   forall n m origin a.
    183  - (MonadError ErrorMessage n, MonadParse m, Eq origin, Hashable origin, ToErrorValue origin) =>
     183 + (MonadError ErrorMessage n, MonadParse m, Hashable origin, ToErrorValue origin) =>
    184 184   Name ->
    185 185   Maybe Description ->
    186 186   [FieldParser origin m a] ->
    skipped 267 lines
  • ■ ■ ■ ■
    server/src-dc-api/Hasura/Backends/DataConnector/API/V0/ConfigSchema.hs
    skipped 10 lines
    11 11  import Control.DeepSeq (NFData)
    12 12  import Control.Lens ((%~), (&), (.~), (^?))
    13 13  import Data.Aeson (FromJSON (..), Object, ToJSON (..), Value (..), eitherDecode, encode, object, withObject, (.:), (.=), (<?>))
    14  -import Data.Aeson.Lens (AsPrimitive (..), key, members, values)
     14 +import Data.Aeson.Lens (AsValue (..), key, members, values)
    15 15  import Data.Aeson.Types (JSONPathElement (..))
    16 16  import Data.Bifunctor (first)
    17 17  import Data.ByteString.Lazy qualified as BSL
    skipped 298 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Control/Monad/Circular.hs
    skipped 119 lines
    120 120   put x = lift $ put x
    121 121   
    122 122  -- | Runs a computation in 'CircularT'.
    123  -runCircularT :: (Eq k, Hashable k, MonadFix m) => CircularT k v m a -> m a
     123 +runCircularT :: (Hashable k, MonadFix m) => CircularT k v m a -> m a
    124 124  runCircularT (CircularT m) = evalStateT m mempty
    125 125   
    126 126  -- | Cache a computation under a given key.
    skipped 2 lines
    129 129  -- type @v@, return an action that builds said value @v@ but that prevents
    130 130  -- cycles by looking into and populating a stateful cache.
    131 131  withCircular ::
    132  - (Eq k, Hashable k, MonadFix m) =>
     132 + (Hashable k, MonadFix m) =>
    133 133   k ->
    134 134   CircularT k v m v ->
    135 135   CircularT k v m v
    skipped 23 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/HashMap/Strict/Extended.hs
    skipped 22 lines
    23 23  import Data.List.NonEmpty (NonEmpty (..))
    24 24  import Prelude
    25 25   
    26  -fromListOn :: (Eq k, Hashable k) => (v -> k) -> [v] -> HashMap k v
     26 +fromListOn :: Hashable k => (v -> k) -> [v] -> HashMap k v
    27 27  fromListOn f = M.fromList . Prelude.map (\v -> (f v, v))
    28 28   
    29 29  -- | Given a 'Foldable' sequence of values and a function that extracts a key from each value,
    skipped 2 lines
    32 32  --
    33 33  -- >>> groupOn (take 1) ["foo", "bar", "baz"]
    34 34  -- fromList [("f", ["foo"]), ("b", ["bar", "baz"])]
    35  -groupOn :: (Eq k, Hashable k, Foldable t) => (v -> k) -> t v -> HashMap k [v]
     35 +groupOn :: (Hashable k, Foldable t) => (v -> k) -> t v -> HashMap k [v]
    36 36  groupOn f = fmap F.toList . groupOnNE f
    37 37   
    38 38  groupOnNE ::
    39  - (Eq k, Hashable k, Foldable t) => (v -> k) -> t v -> HashMap k (NonEmpty v)
     39 + (Hashable k, Foldable t) => (v -> k) -> t v -> HashMap k (NonEmpty v)
    40 40  groupOnNE f =
    41 41   Prelude.foldr
    42 42   (\v -> M.alter (Just . (v :|) . maybe [] F.toList) (f v))
    43 43   M.empty
    44 44   
    45 45  differenceOn ::
    46  - (Eq k, Hashable k, Foldable t) => (v -> k) -> t v -> t v -> HashMap k v
     46 + (Hashable k, Foldable t) => (v -> k) -> t v -> t v -> HashMap k v
    47 47  differenceOn f = M.difference `on` (fromListOn f . F.toList)
    48 48   
    49 49  -- | Monadic version of https://hackage.haskell.org/package/unordered-containers-0.2.18.0/docs/Data-HashMap-Internal.html#v:insertWith
    50  -insertWithM :: (Monad m, Hashable k, Eq k) => (v -> v -> m v) -> k -> v -> HashMap k v -> m (HashMap k v)
     50 +insertWithM :: (Monad m, Hashable k) => (v -> v -> m v) -> k -> v -> HashMap k v -> m (HashMap k v)
    51 51  insertWithM f k v m =
    52 52   sequence $
    53 53   M.insertWith
    skipped 13 lines
    67 67  -- 1. @∀ key ∈ A. A[key] ∈ B ∧ B[A[key]] == key@
    68 68  -- 2. @∀ key ∈ B. B[key] ∈ A ∧ A[B[key]] == key@
    69 69  isInverseOf ::
    70  - (Eq k, Hashable k, Eq v, Hashable v) => HashMap k v -> HashMap v k -> Bool
     70 + (Hashable k, Hashable v) => HashMap k v -> HashMap v k -> Bool
    71 71  lhs `isInverseOf` rhs = lhs `invertedBy` rhs && rhs `invertedBy` lhs
    72 72   where
    73 73   invertedBy ::
    74 74   forall s t.
    75  - (Eq s, Eq t, Hashable t) =>
     75 + (Eq s, Hashable t) =>
    76 76   HashMap s t ->
    77 77   HashMap t s ->
    78 78   Bool
    skipped 7 lines
    86 86  -- used to compute the result. Unlike 'unionWith', 'unionWithM' performs the
    87 87  -- computation in an arbitratry monad.
    88 88  unionWithM ::
    89  - (Monad m, Eq k, Hashable k) =>
     89 + (Monad m, Hashable k) =>
    90 90   (k -> v -> v -> m v) ->
    91 91   HashMap k v ->
    92 92   HashMap k v ->
    skipped 8 lines
    101 101   
    102 102  -- | Like 'M.unions', but keeping all elements in the result.
    103 103  unionsAll ::
    104  - (Eq k, Hashable k, Foldable t) => t (HashMap k v) -> HashMap k (NonEmpty v)
     104 + (Hashable k, Foldable t) => t (HashMap k v) -> HashMap k (NonEmpty v)
    105 105  unionsAll = F.foldl' (\a b -> M.unionWith (<>) a (fmap (:| []) b)) M.empty
    106 106   
    107 107  -- | Homogenise maps, such that all maps range over the full set of
    108 108  -- keys, inserting a default value as needed.
    109  -homogenise :: (Hashable a, Eq a) => b -> [HashMap a b] -> (HashSet a, [HashMap a b])
     109 +homogenise :: Hashable a => b -> [HashMap a b] -> (HashSet a, [HashMap a b])
    110 110  homogenise defaultValue maps =
    111 111   let ks = S.unions $ L.map M.keysSet maps
    112 112   defaults = M.fromList [(k, defaultValue) | k <- S.toList ks]
    skipped 2 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/HashMap/Strict/InsOrd/Extended.hs
    skipped 12 lines
    13 13  catMaybes :: InsOrdHashMap k (Maybe v) -> InsOrdHashMap k v
    14 14  catMaybes = OMap.mapMaybe id
    15 15   
    16  -partition :: (Eq k, Hashable k) => (v -> Bool) -> OMap.InsOrdHashMap k v -> (OMap.InsOrdHashMap k v, OMap.InsOrdHashMap k v)
     16 +partition :: Hashable k => (v -> Bool) -> OMap.InsOrdHashMap k v -> (OMap.InsOrdHashMap k v, OMap.InsOrdHashMap k v)
    17 17  partition predicate =
    18 18   OMap.foldlWithKey'
    19 19   ( \(left, right) key val ->
    skipped 6 lines
    26 26  -- | Alter a hashmap using a function that can fail, in which case the entire operation fails.
    27 27  -- (Maybe a version with the key also being passed to the function could be useful.)
    28 28  alterF ::
    29  - (Functor f, Eq k, Hashable k) =>
     29 + (Functor f, Hashable k) =>
    30 30   (Maybe v -> f (Maybe v)) ->
    31 31   k ->
    32 32   InsOrdHashMap k v ->
    skipped 7 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/HashMap/Strict/Multi.hs
    skipped 32 lines
    33 33   }
    34 34   deriving newtype (Eq, Show, ToJSON)
    35 35   
    36  -instance (Eq k, Hashable k, Ord v) => Semigroup (MultiMap k v) where
     36 +instance (Hashable k, Ord v) => Semigroup (MultiMap k v) where
    37 37   MultiMap m0 <> MultiMap m1 = MultiMap $ M.unionWith S.union m0 m1
    38 38   
    39  -instance (Eq k, Hashable k, Ord v) => Monoid (MultiMap k v) where
     39 +instance (Hashable k, Ord v) => Monoid (MultiMap k v) where
    40 40   mempty = MultiMap mempty
    41 41   
    42 42  -------------------------------------------------------------------------------
    skipped 16 lines
    59 59  -- If the provided list constains duplicate mappings, the resulting
    60 60  -- 'MultiMap' will store the set of all mapped values for each
    61 61  -- duplicate key.
    62  -fromList :: (Eq k, Hashable k, Ord v) => [(k, v)] -> MultiMap k v
     62 +fromList :: (Hashable k, Ord v) => [(k, v)] -> MultiMap k v
    63 63  fromList l = MultiMap $ M.fromListWith (S.union) $ map (fmap S.singleton) l
    64 64   
    65 65  -- | Creates an association list from a 'MultiMap'.
    skipped 7 lines
    73 73   
    74 74  -- | Return the value to which the specified key is mapped, or 'Nothing' if
    75 75  -- this map contains no mapping for the key.
    76  -lookup :: (Eq k, Hashable k) => k -> MultiMap k v -> S.Set v
     76 +lookup :: Hashable k => k -> MultiMap k v -> S.Set v
    77 77  lookup k (MultiMap m) = fromMaybe S.empty $ M.lookup k m
    78 78   
    79 79  -- | Associate the specified value with the specified key in this map.
    80 80  --
    81 81  -- If this map previously contained a mapping for the key, the new value is
    82 82  -- inserted in the set, and does not replace the previous mapping.
    83  -insert :: (Eq k, Hashable k, Ord v) => k -> v -> MultiMap k v -> MultiMap k v
     83 +insert :: (Hashable k, Ord v) => k -> v -> MultiMap k v -> MultiMap k v
    84 84  insert k v (MultiMap m) = MultiMap $ M.insertWith (S.union) k (S.singleton v) m
    85 85   
    86 86  -- | Returns a list of this map's keys.
    skipped 7 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/HashMap/Strict/NonEmpty.hs
    skipped 65 lines
    66 66  -- * if the provided list contains duplicate mappings, the later mappings take
    67 67  -- precedence;
    68 68  -- * if the provided list is empty, returns 'Nothing'.
    69  -fromList :: (Eq k, Hashable k) => [(k, v)] -> Maybe (NEHashMap k v)
     69 +fromList :: Hashable k => [(k, v)] -> Maybe (NEHashMap k v)
    70 70  fromList [] = Nothing
    71 71  fromList v = Just $ NEHashMap $ M.fromList v
    72 72   
    73 73  -- | A variant of 'fromList' that uses 'NonEmpty' inputs.
    74  -fromNonEmpty :: (Eq k, Hashable k) => NonEmpty (k, v) -> NEHashMap k v
     74 +fromNonEmpty :: Hashable k => NonEmpty (k, v) -> NEHashMap k v
    75 75  fromNonEmpty (x NE.:| xs) = NEHashMap (M.fromList (x : xs))
    76 76   
    77 77  -- | Convert a non-empty map to a 'HashMap'.
    skipped 13 lines
    91 91   
    92 92  -- | Return the value to which the specified key is mapped, or 'Nothing' if
    93 93  -- this map contains no mapping for the key.
    94  -lookup :: (Eq k, Hashable k) => k -> NEHashMap k v -> Maybe v
     94 +lookup :: Hashable k => k -> NEHashMap k v -> Maybe v
    95 95  lookup k (NEHashMap m) = M.lookup k m
    96 96   
    97 97  -- | Return the value to which the specified key is mapped, or 'Nothing' if
    98 98  -- this map contains no mapping for the key.
    99 99  --
    100 100  -- This is a flipped version of 'lookup'.
    101  -(!?) :: (Eq k, Hashable k) => NEHashMap k v -> k -> Maybe v
     101 +(!?) :: Hashable k => NEHashMap k v -> k -> Maybe v
    102 102  (!?) = flip lookup
    103 103   
    104 104  -- | Return a list of this map's keys.
    skipped 6 lines
    111 111  --
    112 112  -- If a key occurs in both maps, the left map @m1@ (first argument) will be
    113 113  -- preferred.
    114  -union :: (Eq k, Hashable k) => NEHashMap k v -> NEHashMap k v -> NEHashMap k v
     114 +union :: Hashable k => NEHashMap k v -> NEHashMap k v -> NEHashMap k v
    115 115  union (NEHashMap m1) (NEHashMap m2) = NEHashMap $ M.union m1 m2
    116 116   
    117 117  -- | The union of two maps using a given value-wise union function.
    118 118  --
    119 119  -- If a key occurs in both maps, the provided function (first argument) will be
    120 120  -- used to compute the result.
    121  -unionWith :: (Eq k, Hashable k) => (v -> v -> v) -> NEHashMap k v -> NEHashMap k v -> NEHashMap k v
     121 +unionWith :: Hashable k => (v -> v -> v) -> NEHashMap k v -> NEHashMap k v -> NEHashMap k v
    122 122  unionWith fun (NEHashMap m1) (NEHashMap m2) = NEHashMap $ M.unionWith fun m1 m2
    123 123   
    124 124  -------------------------------------------------------------------------------
    skipped 3 lines
    128 128  -- The size of the result may be smaller if f maps two or more distinct keys to
    129 129  -- the same new key. In this case there is no guarantee which of the associated
    130 130  -- values is chosen for the conflicting key.
    131  -mapKeys :: (Eq k2, Hashable k2) => (k1 -> k2) -> NEHashMap k1 v -> NEHashMap k2 v
     131 +mapKeys :: Hashable k2 => (k1 -> k2) -> NEHashMap k1 v -> NEHashMap k2 v
    132 132  mapKeys fun (NEHashMap m) = NEHashMap $ M.mapKeys fun m
    133 133   
    134 134  -------------------------------------------------------------------------------
    skipped 5 lines
    140 140  -- 1. @∀ key ∈ A. A[key] ∈ B ∧ B[A[key]] == key@
    141 141  -- 2. @∀ key ∈ B. B[key] ∈ A ∧ A[B[key]] == key@
    142 142  isInverseOf ::
    143  - (Eq k, Hashable k, Eq v, Hashable v) => NEHashMap k v -> NEHashMap v k -> Bool
     143 + (Hashable k, Hashable v) => NEHashMap k v -> NEHashMap v k -> Bool
    144 144  lhs `isInverseOf` rhs = toHashMap lhs `Extended.isInverseOf` toHashMap rhs
    145 145   
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/List/Extended.hs
    skipped 18 lines
    19 19  import Data.Set qualified as S
    20 20  import Prelude
    21 21   
    22  -duplicates :: (Eq a, Hashable a) => [a] -> Set.HashSet a
     22 +duplicates :: Hashable a => [a] -> Set.HashSet a
    23 23  duplicates =
    24 24   Set.fromList . Map.keys . Map.filter (> 1) . Map.fromListWith (+) . map (,1 :: Int)
    25 25   
    26 26  uniques :: (Ord a) => [a] -> [a]
    27 27  uniques = S.toList . S.fromList
    28 28   
    29  -getDifference :: (Eq a, Hashable a) => [a] -> [a] -> Set.HashSet a
     29 +getDifference :: Hashable a => [a] -> [a] -> Set.HashSet a
    30 30  getDifference = Set.difference `on` Set.fromList
    31 31   
    32  -getDifferenceOn :: (Eq k, Hashable k) => (v -> k) -> [v] -> [v] -> [v]
     32 +getDifferenceOn :: Hashable k => (v -> k) -> [v] -> [v] -> [v]
    33 33  getDifferenceOn f l = Map.elems . Map.differenceOn f l
    34 34   
    35  -getOverlapWith :: (Eq k, Hashable k) => (v -> k) -> [v] -> [v] -> [(v, v)]
     35 +getOverlapWith :: Hashable k => (v -> k) -> [v] -> [v] -> [(v, v)]
    36 36  getOverlapWith getKey left right =
    37 37   Map.elems $ Map.intersectionWith (,) (mkMap left) (mkMap right)
    38 38   where
    skipped 19 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Data/Trie.hs
    skipped 33 lines
    34 34  -- The resulting 'Trie' will contain all paths present in either tries. If both
    35 35  -- tries contain a value at a given path, we use the value's semigroup instance
    36 36  -- to compute the resulting value.
    37  -instance (Eq k, Hashable k, Semigroup v) => Semigroup (Trie k v) where
     37 +instance (Hashable k, Semigroup v) => Semigroup (Trie k v) where
    38 38   Trie m0 v0 <> Trie m1 v1 = Trie (M.unionWith (<>) m0 m1) (v0 <> v1)
    39 39   
    40  -instance (Eq k, Hashable k, Semigroup v) => Monoid (Trie k v) where
     40 +instance (Hashable k, Semigroup v) => Monoid (Trie k v) where
    41 41   mempty = empty
    42 42   
    43 43  instance (ToJSONKey a, ToJSON v) => ToJSON (Trie a v)
    skipped 17 lines
    61 61  -------------------------------------------------------------------------------
    62 62   
    63 63  -- | Find a value at the given path, if any.
    64  -lookup :: (Eq k, Hashable k) => [k] -> Trie k v -> Maybe v
     64 +lookup :: Hashable k => [k] -> Trie k v -> Maybe v
    65 65  lookup [] (Trie _ value) = value
    66 66  lookup (p : ps) (Trie tmap _) = lookup ps =<< M.lookup p tmap
    67 67   
    68 68  -- | Insert the given value at the given path.
    69 69  --
    70 70  -- If there's already a value at the given path, it is replaced.
    71  -insert :: (Eq k, Hashable k) => [k] -> v -> Trie k v -> Trie k v
     71 +insert :: Hashable k => [k] -> v -> Trie k v -> Trie k v
    72 72  insert = insertWith const
    73 73   
    74 74  -- | Insert the value at the given path.
    75 75  --
    76 76  -- If there's already a value at the given path, the old value is replaced by
    77 77  -- the result of applying the given function to the new and old value.
    78  -insertWith :: (Eq k, Hashable k) => (v -> v -> v) -> [k] -> v -> Trie k v -> Trie k v
     78 +insertWith :: Hashable k => (v -> v -> v) -> [k] -> v -> Trie k v -> Trie k v
    79 79  insertWith fun path newValue t = go t path
    80 80   where
    81 81   go (Trie tmap value) = \case
    skipped 19 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Hasura/Base/Instances.hs
    skipped 62 lines
    63 63  --------------------------------------------------------------------------------
    64 64  -- Template Haskell
    65 65   
    66  -instance (Hashable k, Eq k, TH.Lift k, TH.Lift v) => TH.Lift (M.HashMap k v) where
     66 +instance (Hashable k, TH.Lift k, TH.Lift v) => TH.Lift (M.HashMap k v) where
    67 67   lift m = [|M.fromList $(TH.lift $ M.toList m)|]
    68 68   -- liftTyped = TH.unsafeTExpCoerce . TH.lift
    69 69   liftTyped m = [|| M.fromList $$(TH.liftTyped $ M.toList m) ||]
    70 70   
    71  -instance (Hashable a, Eq a, TH.Lift a) => TH.Lift (S.HashSet a) where
     71 +instance (Hashable a, TH.Lift a) => TH.Lift (S.HashSet a) where
    72 72   lift s = [|S.fromList $(TH.lift $ S.toList s)|]
    73 73   -- liftTyped = TH.unsafeTExpCoerce . TH.lift
    74 74   liftTyped m = [|| S.fromList $$(TH.liftTyped $ S.toList m) ||]
    skipped 56 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/GraphQL/Execute/Remote.hs
    skipped 55 lines
    56 56   
    57 57  collectVariables ::
    58 58   forall fragments var.
    59  - (Foldable fragments, Hashable var, Eq var) =>
     59 + (Foldable fragments, Hashable var) =>
    60 60   G.SelectionSet fragments var ->
    61 61   Set.HashSet var
    62 62  collectVariables =
    skipped 172 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/GraphQL/Execute/RemoteJoin/Collect.hs
    skipped 651 lines
    652 652  -- NOTE: if the @fieldName@ argument is a valid GraphQL name, then the
    653 653  -- constructed alias MUST also be a valid GraphQL name.
    654 654  getJoinColumnAlias ::
    655  - (Eq field, Hashable field) =>
     655 + Hashable field =>
    656 656   FieldName ->
    657 657   field ->
    658 658   HashMap field FieldName ->
    skipped 29 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Hasura/GraphQL/Execute/Subscription/TMap.hs
    skipped 31 lines
    32 32  null :: TMap k v -> STM Bool
    33 33  null = fmap Map.null . readTVar . unTMap
    34 34   
    35  -lookup :: (Eq k, Hashable k) => k -> TMap k v -> STM (Maybe v)
     35 +lookup :: Hashable k => k -> TMap k v -> STM (Maybe v)
    36 36  lookup k = fmap (Map.lookup k) . readTVar . unTMap
    37 37   
    38  -insert :: (Eq k, Hashable k) => v -> k -> TMap k v -> STM ()
     38 +insert :: Hashable k => v -> k -> TMap k v -> STM ()
    39 39  insert !v k mapTv = modifyTVar' (unTMap mapTv) $ Map.insert k v
    40 40   
    41  -delete :: (Eq k, Hashable k) => k -> TMap k v -> STM ()
     41 +delete :: Hashable k => k -> TMap k v -> STM ()
    42 42  delete k mapTv = modifyTVar' (unTMap mapTv) $ Map.delete k
    43 43   
    44 44  toList :: TMap k v -> STM [(k, v)]
    skipped 5 lines
    50 50  replace :: TMap k v -> Map.HashMap k v -> STM ()
    51 51  replace mapTV v = void $ swapTVar (unTMap mapTV) v
    52 52   
    53  -union :: (Eq k, Hashable k) => TMap k v -> TMap k v -> STM (TMap k v)
     53 +union :: Hashable k => TMap k v -> TMap k v -> STM (TMap k v)
    54 54  union mapA mapB = do
    55 55   l <- readTVar $ unTMap mapA
    56 56   r <- readTVar $ unTMap mapB
    skipped 5 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/GraphQL/Execute.hs
    skipped 229 lines
    230 230   pure $ IR.SourceConfigWith srcConfig queryTagsConfig (IR.QDBR newQDB)
    231 231   case subscriptionType of
    232 232   Streaming -> pure (accLiveQueryFields, OMap.insert gName (src, newQDB) accStreamingFields)
    233  - LiveQuery -> pure $ (first (OMap.insert gName (Right (src, newQDB))) accLiveQueryFields, accStreamingFields)
     233 + LiveQuery -> pure (first (OMap.insert gName (Right (src, newQDB))) accLiveQueryFields, accStreamingFields)
    234 234   IR.RFAction action -> do
    235 235   let (noRelsDBAST, remoteJoins) = RJ.getRemoteJoinsActionQuery action
    236 236   unless (isNothing remoteJoins) $
    skipped 190 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/Incremental/Internal/Rule.hs
    skipped 309 lines
    310 310  instance ArrowDistribute (Rule m) where
    311 311   keyed ::
    312 312   forall a b k e s.
    313  - (Eq k, Hashable k) =>
     313 + Hashable k =>
    314 314   Rule m (e, (k, (a, s))) b ->
    315 315   Rule m (e, (HashMap k a, s)) (HashMap k b)
    316 316   keyed r0 = keyedWith HM.empty
    skipped 31 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/RQL/DDL/Metadata/Types.hs
    skipped 68 lines
    69 69   RSReloadAll -> Bool True
    70 70   RSReloadList l -> toJSON l
    71 71   
    72  -instance (FromJSON a, Eq a, Hashable a) => FromJSON (ReloadSpec a) where
     72 +instance (FromJSON a, Hashable a) => FromJSON (ReloadSpec a) where
    73 73   parseJSON (Bool b) = pure $ if b then RSReloadAll else RSReloadList mempty
    74 74   parseJSON v = RSReloadList <$> parseJSON v
    75 75   
    skipped 178 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/RQL/DDL/Relationship.hs
    skipped 220 lines
    221 221   <> fmap (drUsingColumnDep @b source remoteTable) (toList remoteColumns)
    222 222   pure (RelInfo rn relType (reverseMap (NEHashMap.toHashMap colMap)) remoteTable False io, dependencies)
    223 223   where
    224  - reverseMap :: Eq y => Hashable y => HashMap x y -> HashMap y x
     224 + reverseMap :: Hashable y => HashMap x y -> HashMap y x
    225 225   reverseMap = Map.fromList . fmap swap . Map.toList
    226 226   
    227 227  -- | Try to find a foreign key constraint, identifying a constraint by its set of columns
    skipped 136 lines
  • ■ ■ ■ ■ ■
    server/src-lib/Hasura/RQL/DDL/Schema/Cache/Common.hs
    skipped 106 lines
    107 107   }
    108 108   where
    109 109   invalidate ::
    110  - (Eq a, Hashable a) =>
     110 + Hashable a =>
    111 111   a ->
    112 112   HashMap a Inc.InvalidationKey ->
    113 113   HashMap a Inc.InvalidationKey
    skipped 181 lines
    295 295   ( ArrowChoice arr,
    296 296   Inc.ArrowDistribute arr,
    297 297   ArrowWriter (Seq CollectedInfo) arr,
    298  - Eq k,
    299 298   Hashable k
    300 299   ) =>
    301 300   (a -> k) ->
    skipped 20 lines
    322 321   ( ArrowChoice arr,
    323 322   Inc.ArrowDistribute arr,
    324 323   ArrowWriter (Seq CollectedInfo) arr,
    325  - Eq k,
    326 324   Hashable k
    327 325   ) =>
    328 326   (a -> k) ->
    skipped 11 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Hasura/RQL/DDL/Schema/Table.hs
    skipped 444 lines
    445 445   |) (withSourceInKey source rawTableCache)
    446 446   returnA -< removeSourceInKey (catMaybes tableInfos)
    447 447   where
    448  - withSourceInKey :: (Eq k, Hashable k) => SourceName -> HashMap k v -> HashMap (SourceName, k) v
     448 + withSourceInKey :: Hashable k => SourceName -> HashMap k v -> HashMap (SourceName, k) v
    449 449   withSourceInKey source = mapKeys (source,)
    450 450   
    451  - removeSourceInKey :: (Eq k, Hashable k) => HashMap (SourceName, k) v -> HashMap k v
     451 + removeSourceInKey :: Hashable k => HashMap (SourceName, k) v -> HashMap k v
    452 452   removeSourceInKey = mapKeys snd
    453 453   
    454 454   withTable :: ErrorA QErr arr (e, s) a -> arr (e, ((SourceName, TableName b), s)) (Maybe a)
    skipped 226 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/RQL/Types/Allowlist.hs
    skipped 186 lines
    187 187   | AllowlistEntry coll (AllowlistScopeRoles roles) <- OM.elems allowlist
    188 188   ]
    189 189   
    190  - inverseMap :: (Eq b, Hashable b) => [(a, [b])] -> HashMap b [a]
     190 + inverseMap :: Hashable b => [(a, [b])] -> HashMap b [a]
    191 191   inverseMap = M.fromListWith (<>) . concatMap (\(c, rs) -> [(r, [c]) | r <- rs])
    192 192   
    193 193   global = inlineQueries globalCollections
    skipped 28 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Hasura/RQL/Types/Endpoint/Trie.hs
    skipped 87 lines
    88 88  -- | Look up the value at a path.
    89 89  -- @PathParam@ matches any path component.
    90 90  -- Returns a list of pairs containing the value found and bindings for any @PathParam@s.
    91  -lookupPath :: (Eq a, Hashable a) => [a] -> T.Trie (PathComponent a) v -> [(v, [a])]
     91 +lookupPath :: Hashable a => [a] -> T.Trie (PathComponent a) v -> [(v, [a])]
    92 92  lookupPath [] t = [(v, []) | v <- maybeToList (T.trieData t)]
    93 93  lookupPath (x : xs) t = do
    94 94   (pc, t') <- matchPathComponent x $ T.trieMap t
    skipped 3 lines
    98 98   PathParam -> (x :) <$> m
    99 99   where
    100 100   matchPathComponent ::
    101  - (Eq a, Hashable a) =>
     101 + Hashable a =>
    102 102   a ->
    103 103   M.HashMap (PathComponent a) v ->
    104 104   [(PathComponent (), v)]
    skipped 1 lines
    106 106   catMaybes [(PathLiteral (),) <$> M.lookup (PathLiteral a) m, (PathParam,) <$> M.lookup PathParam m]
    107 107   
    108 108  -- | Match a key @k@ and path @[a]@ against a @MultiMapPathTrie a k v@
    109  -matchPath :: (Eq a, Eq k, Hashable k, Hashable a) => k -> [a] -> MultiMapPathTrie a k v -> MatchResult a k v
     109 +matchPath :: (Hashable k, Hashable a) => k -> [a] -> MultiMapPathTrie a k v -> MatchResult a k v
    110 110  matchPath k path = foldMap toResult . lookupPath path
    111 111   where
    112 112   toResult (methodMap, paramMatches) =
    skipped 3 lines
    116 116   _ -> MatchAmbiguous
    117 117   
    118 118  -- | A version of ambiguousPaths that attempts to group all ambiguous paths that have overlapping endpoints
    119  -ambiguousPathsGrouped :: (Hashable a, Eq k, Hashable k, Ord v, Ord a) => MultiMapPathTrie a k v -> [(S.Set [PathComponent a], S.Set v)]
     119 +ambiguousPathsGrouped :: (Hashable a, Hashable k, Ord v, Ord a) => MultiMapPathTrie a k v -> [(S.Set [PathComponent a], S.Set v)]
    120 120  ambiguousPathsGrouped = groupAmbiguousPaths . map (first S.singleton) . ambiguousPaths
    121 121   
    122 122  groupAmbiguousPaths :: (Ord a, Ord v) => [(S.Set [PathComponent a], S.Set v)] -> [(S.Set [PathComponent a], S.Set v)]
    skipped 10 lines
    133 133   
    134 134  -- | Detect and return all ambiguous paths in the @MultiMapPathTrie@
    135 135  -- A path @p@ is ambiguous if @matchPath k p@ can return @MatchAmbiguous@ for some @k@.
    136  -ambiguousPaths :: (Eq a, Hashable a, Eq k, Hashable k, Ord v) => MultiMapPathTrie a k v -> [([PathComponent a], S.Set v)]
     136 +ambiguousPaths :: (Hashable a, Hashable k, Ord v) => MultiMapPathTrie a k v -> [([PathComponent a], S.Set v)]
    137 137  ambiguousPaths (T.Trie pathMap methodMap) =
    138 138   thisNodeAmbiguousPaths ++ childNodesAmbiguousPaths
    139 139   where
    skipped 8 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/RQL/Types/Metadata/Common.hs
    skipped 115 lines
    116 116  -- | Parse a list of objects into a map from a derived key,
    117 117  -- failing if the list has duplicates.
    118 118  parseListAsMap ::
    119  - (Hashable k, Eq k, T.ToTxt k) =>
     119 + (Hashable k, T.ToTxt k) =>
    120 120   Text ->
    121 121   (a -> k) ->
    122 122   Parser [a] ->
    skipped 412 lines
  • ■ ■ ■ ■ ■
    server/src-lib/Hasura/RQL/Types/Roles/Internal.hs
    skipped 56 lines
    57 57   
    58 58  instance
    59 59   ( Backend b,
    60  - Eq (BooleanOperators b (PartialSQLExp b)),
    61  - Eq (FunctionArgumentExp b (PartialSQLExp b)),
    62 60   Hashable (BooleanOperators b (PartialSQLExp b)),
    63 61   Hashable (FunctionArgumentExp b (PartialSQLExp b))
    64 62   ) =>
    skipped 9 lines
    74 72   
    75 73  instance
    76 74   ( Backend b,
    77  - Eq (BooleanOperators b (PartialSQLExp b)),
    78  - Eq (FunctionArgumentExp b (PartialSQLExp b)),
    79 75   Hashable (BooleanOperators b (PartialSQLExp b)),
    80 76   Hashable (FunctionArgumentExp b (PartialSQLExp b))
    81 77   ) =>
    skipped 45 lines
    127 123  class OnlyRelevantEq a where
    128 124   relevantEq :: a -> a -> Bool
    129 125   
    130  -instance (Backend b, Eq a, Hashable a) => OnlyRelevantEq (GBoolExp b a) where
     126 +instance (Backend b, Hashable a) => OnlyRelevantEq (GBoolExp b a) where
    131 127   BoolAnd boolExpL `relevantEq` BoolAnd boolExpR = Set.fromList boolExpL == Set.fromList boolExpR
    132 128   BoolOr boolExpL `relevantEq` BoolOr boolExpR = Set.fromList boolExpL == Set.fromList boolExpR
    133 129   BoolNot boolExpL `relevantEq` BoolNot boolExpR = boolExpL == boolExpR
    skipped 14 lines
    148 144  instance
    149 145   ( Backend b,
    150 146   Hashable a,
    151  - Eq a,
    152 147   Hashable (BooleanOperators b a),
    153  - Eq (BooleanOperators b a),
    154  - Eq (FunctionArgumentExp b a),
    155 148   Hashable (FunctionArgumentExp b a)
    156 149   ) =>
    157 150   OnlyRelevantEq (AnnBoolExpFld b a)
    skipped 10 lines
    168 161   
    169 162  instance
    170 163   ( Backend b,
    171  - Eq (BooleanOperators b (PartialSQLExp b)),
    172 164   Hashable (BooleanOperators b (PartialSQLExp b)),
    173  - Hashable (FunctionArgumentExp b (PartialSQLExp b)),
    174  - Eq (FunctionArgumentExp b (PartialSQLExp b))
     165 + Hashable (FunctionArgumentExp b (PartialSQLExp b))
    175 166   ) =>
    176 167   OnlyRelevantEq (InsPermInfo b)
    177 168   where
    skipped 7 lines
    185 176   
    186 177  instance
    187 178   ( Backend b,
    188  - Eq (BooleanOperators b (PartialSQLExp b)),
    189  - Eq (FunctionArgumentExp b (PartialSQLExp b)),
    190 179   Hashable (BooleanOperators b (PartialSQLExp b)),
    191 180   Hashable (FunctionArgumentExp b (PartialSQLExp b))
    192 181   ) =>
    skipped 11 lines
    204 193   
    205 194  instance
    206 195   ( Backend b,
    207  - Eq (BooleanOperators b (PartialSQLExp b)),
    208  - Eq (FunctionArgumentExp b (PartialSQLExp b)),
    209 196   Hashable (BooleanOperators b (PartialSQLExp b)),
    210 197   Hashable (FunctionArgumentExp b (PartialSQLExp b))
    211 198   ) =>
    skipped 117 lines
  • ■ ■ ■ ■ ■ ■
    server/src-lib/Hasura/RQL/Types/Table.hs
    skipped 799 lines
    800 800   
    801 801  instance (Backend b, NFData a) => NFData (PrimaryKey b a)
    802 802   
    803  -instance (Backend b, Hashable (NESeq a)) => Hashable (PrimaryKey b a)
     803 +instance (Eq a, Backend b, Hashable (NESeq a)) => Hashable (PrimaryKey b a)
    804 804   
    805 805  instance (Backend b, Cacheable a) => Cacheable (PrimaryKey b a)
    806 806   
    skipped 90 lines
    897 897   
    898 898  tciUniqueOrPrimaryKeyConstraints ::
    899 899   forall b f.
    900  - (Eq (Column b), Hashable (Column b)) =>
     900 + Hashable (Column b) =>
    901 901   TableCoreInfoG b f (ColumnInfo b) ->
    902 902   Maybe (NonEmpty (UniqueConstraint b))
    903 903  tciUniqueOrPrimaryKeyConstraints info =
    skipped 244 lines
  • ■ ■ ■ ■
    server/src-lib/Hasura/Server/Auth/JWT.hs
    skipped 498 lines
    499 499   (_, [(ctx, val)]) -> withAuthZ val ctx
    500 500   _ -> throw400 InvalidHeaders "Could not verify JWT: Multiple JWTs found"
    501 501   where
    502  - intersectKeys :: (Hashable a, Eq a) => HM.HashMap a [b] -> HM.HashMap a [c] -> [(b, c)]
     502 + intersectKeys :: Hashable a => HM.HashMap a [b] -> HM.HashMap a [c] -> [(b, c)]
    503 503   intersectKeys m n = concatMap (uncurry cartesianProduct) $ HM.elems $ HM.intersectionWith (,) m n
    504 504   
    505 505   issuerMatch (j, b) = do
    skipped 347 lines
  • ■ ■ ■ ■ ■
    server/src-test/Hasura/Generator/Common.hs
    skipped 20 lines
    21 21   
    22 22  genHashMap ::
    23 23   MonadGen m =>
    24  - Eq a =>
    25 24   Hashable a =>
    26 25   m a ->
    27 26   m b ->
    skipped 27 lines
  • ■ ■ ■ ■ ■ ■
    server/src-test/Hasura/QuickCheck/Instances.hs
    skipped 43 lines
    44 44   arbitrary = T.pack <$> listOf arbitraryUnicodeChar
    45 45   
    46 46  instance
    47  - (Arbitrary k, Eq k, Hashable k, Arbitrary v) =>
     47 + (Arbitrary k, Hashable k, Arbitrary v) =>
    48 48   Arbitrary (HashMap k v)
    49 49   where
    50 50   arbitrary = HashMap.fromList <$> arbitrary
    51 51   shrink = fmap HashMap.fromList . shrink . HashMap.toList
    52 52   
    53 53  instance
    54  - (Arbitrary k, Eq k, Hashable k, Arbitrary v) =>
     54 + (Arbitrary k, Hashable k, Arbitrary v) =>
    55 55   Arbitrary (InsOrdHashMap k v)
    56 56   where
    57 57   arbitrary = InsOrd.HashMap.fromList <$> arbitrary
    skipped 9 lines
    67 67  -- Orphan instances for types defined by us, but which are not coupled to
    68 68  -- GraphQL Engine.
    69 69   
    70  -instance (Eq k, Hashable k, Arbitrary k, Eq v, Arbitrary v) => Arbitrary (Trie.Trie k v) where
     70 +instance (Hashable k, Arbitrary k, Eq v, Arbitrary v) => Arbitrary (Trie.Trie k v) where
    71 71   arbitrary = Trie.Trie <$> scale (`div` 2) arbitrary <*> arbitrary
    72 72   shrink (Trie.Trie m v) =
    73 73   [Trie.Trie m v' | v' <- shrink v]
    74 74   ++ [Trie.Trie m' v | m' <- shrink m]
    75 75   
    76  -instance (Eq k, Hashable k, Arbitrary k, Ord v, Arbitrary v) => Arbitrary (MMap.MultiMap k v) where
     76 +instance (Hashable k, Arbitrary k, Ord v, Arbitrary v) => Arbitrary (MMap.MultiMap k v) where
    77 77   arbitrary = MMap.fromMap . fmap (Set.fromList . take 5) <$> arbitrary
    78 78   shrink m = map MMap.fromMap $ shrink $ MMap.toMap m
    79 79   
    skipped 313 lines
  • ■ ■ ■ ■ ■ ■
    server/src-test/Hasura/RQL/IR/Generator.hs
    skipped 78 lines
    79 79   
    80 80  genAnnBoolExpFld ::
    81 81   MonadGen m =>
    82  - Eq (ScalarType b) =>
    83  - Eq (Column b) =>
    84 82   Hashable (ScalarType b) =>
    85 83   Hashable (Column b) =>
    86 84   m (Column b) ->
    skipped 60 lines
    147 145   
    148 146  genRelInfo ::
    149 147   MonadGen m =>
    150  - Eq (Column b) =>
    151 148   Hashable (Column b) =>
    152 149   m (TableName b) ->
    153 150   m (Column b) ->
    skipped 18 lines
    172 169   
    173 170  genAnnComputedFieldBolExp ::
    174 171   MonadGen m =>
    175  - Eq (ScalarType b) =>
    176  - Eq (Column b) =>
    177 172   Hashable (ScalarType b) =>
    178 173   Hashable (Column b) =>
    179 174   m (TableName b) ->
    skipped 31 lines
    211 206   
    212 207  genComputedFieldBoolExp ::
    213 208   MonadGen m =>
    214  - Eq (ScalarType b) =>
    215  - Eq (Column b) =>
    216 209   Hashable (ScalarType b) =>
    217 210   Hashable (Column b) =>
    218 211   m (TableName b) ->
    skipped 46 lines
    265 258   
    266 259  genOpExpG ::
    267 260   MonadGen m =>
    268  - Eq (ScalarType b) =>
    269 261   Hashable (ScalarType b) =>
    270 262   m (TableName b) ->
    271 263   m (Column b) ->
    skipped 131 lines
    403 395   
    404 396  genAnnotatedOrderByElement ::
    405 397   MonadGen m =>
    406  - Eq (ScalarType b) =>
    407  - Eq (Column b) =>
    408 398   Hashable (ScalarType b) =>
    409 399   Hashable (Column b) =>
    410 400   m (Column b) ->
    skipped 104 lines
    515 505   
    516 506  genComputedFieldOrderBy ::
    517 507   MonadGen m =>
    518  - Eq (ScalarType b) =>
    519 508   Hashable (ScalarType b) =>
    520  - Eq (Column b) =>
    521 509   Hashable (Column b) =>
    522 510   m (Column b) ->
    523 511   m (ScalarType b) ->
    skipped 30 lines
    554 542   
    555 543  genComputedFieldOrderByElement ::
    556 544   MonadGen m =>
    557  - Eq (ScalarType b) =>
    558 545   Hashable (ScalarType b) =>
    559  - Eq (Column b) =>
    560 546   Hashable (Column b) =>
    561 547   m (Column b) ->
    562 548   m (ScalarType b) ->
    skipped 41 lines
  • ■ ■ ■ ■ ■ ■
    server/src-test/Hasura/RQL/MetadataSpec.hs
    skipped 16 lines
    17 17  import Data.Aeson qualified as Aeson
    18 18  import Data.Aeson.KeyMap qualified as KM
    19 19  import Data.Aeson.Lens (key, _Object)
    20  -import Data.HashMap.Strict qualified as HM
    21 20  import Data.Proxy (Proxy (..))
    22 21  import Data.Text qualified as T
    23 22  import Data.Typeable (Typeable, typeRep)
    skipped 255 lines
    279 278  mk_backend_remote_relationship_argument backend action =
    280 279   backend_create_remote_relationship_fragment
    281 280   & _Object
    282  - %~ HM.insert
    283  - ("type" :: Text)
     281 + %~ KM.insert
     282 + ("type" :: KM.Key)
    284 283   (Aeson.String $ backend <> "_" <> action <> "_remote_relationship")
    285 284   
    286 285  -- | Constructor for @v1/metadata@ @mssql_(create|update|delete)_remote_relationship@
    skipped 36 lines
    323 322  mk_pg_remote_relationship_old_argument action =
    324 323   fragment
    325 324   & _Object
    326  - %~ HM.insert
    327  - ("type" :: Text)
     325 + %~ KM.insert
     326 + ("type" :: KM.Key)
    328 327   (Aeson.String $ "pg_" <> action <> "_remote_relationship")
    329 328   where
    330 329   fragment =
    skipped 17 lines
    348 347  mk_pg_remote_relationship_old_new_argument action =
    349 348   fragment
    350 349   & _Object
    351  - %~ HM.insert
    352  - ("type" :: Text)
     350 + %~ KM.insert
     351 + ("type" :: KM.Key)
    353 352   (Aeson.String $ "pg_" <> action <> "_remote_relationship")
    354 353   where
    355 354   fragment =
    skipped 88 lines
  • ■ ■ ■ ■ ■ ■
    server/src-test/Hasura/RQL/Types/EndpointSpec.hs
    skipped 22 lines
    23 23  singleton :: String -> Int -> TestTrie
    24 24  singleton k s = Trie.singleton [] $ MMap.singleton k s
    25 25   
    26  -insert :: (Eq a, Hashable a, Eq k, Hashable k, Ord v) => [PathComponent a] -> k -> v -> MultiMapPathTrie a k v -> MultiMapPathTrie a k v
     26 +insert :: (Hashable a, Hashable k, Ord v) => [PathComponent a] -> k -> v -> MultiMapPathTrie a k v -> MultiMapPathTrie a k v
    27 27  insert p k = Trie.insertWith (<>) p . MMap.singleton k
    28 28   
    29  -inserts :: (Eq a, Hashable a, Eq k, Hashable k, Ord v) => [PathComponent a] -> [k] -> v -> MultiMapPathTrie a k v -> MultiMapPathTrie a k v
     29 +inserts :: (Hashable a, Hashable k, Ord v) => [PathComponent a] -> [k] -> v -> MultiMapPathTrie a k v -> MultiMapPathTrie a k v
    30 30  inserts p ks v t = foldl' (\t' k -> insert p k v t') t ks
    31 31   
    32 32  spec :: Spec
    skipped 68 lines
  • ■ ■ ■ ■
    server/tests-hspec/Harness/Yaml.hs
    skipped 13 lines
    14 14   Value (..),
    15 15   )
    16 16  import Data.Aeson qualified as Aeson
    17  -import Data.Aeson.KeyMap qualified as KM
     17 +import Data.Aeson.KeyMap qualified as KM (lookup)
    18 18  import Data.Aeson.KeyMap.Extended qualified as KM
    19 19  import Data.Aeson.Text qualified as Aeson.Text
    20 20  import Data.List (permutations)
    skipped 108 lines
Please wait...
Page is in error, reload to recover