├── package.json ├── .gitignore ├── .github └── workflows │ └── build.yml ├── test └── Main.purs ├── docs └── Test │ └── Spec │ └── QuickCheck.md ├── spago.yaml ├── LICENSE ├── README.md ├── src └── Test │ └── Spec │ └── QuickCheck.purs └── spago.lock /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "engines": { 3 | "node": "22.5", 4 | "npm": "10.8" 5 | }, 6 | "dependencies": { 7 | "purescript": "^0.15.15", 8 | "spago": "^0.93.37" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .psci 2 | .psci_modules/ 3 | /.psc-ide-port 4 | bower_components/ 5 | node_modules/ 6 | output/ 7 | .spago/ 8 | .psc-ide-port 9 | .purs-repl 10 | tmp/ 11 | /*.log 12 | tags 13 | *.tix 14 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build and test 2 | 3 | on: 4 | push: 5 | branches: master 6 | pull_request: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: Install & build 15 | run: npm install && npx spago build 16 | 17 | - name: Test 18 | run: npx spago test 19 | -------------------------------------------------------------------------------- /test/Main.purs: -------------------------------------------------------------------------------- 1 | module Test.Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Aff (launchAff_) 7 | import Test.QuickCheck ((===), (/==)) 8 | import Test.Spec (describe, it) 9 | import Test.Spec.QuickCheck (quickCheck) 10 | import Test.Spec.Reporter.Console (consoleReporter) 11 | import Test.Spec.Runner (runSpec) 12 | 13 | main :: Effect Unit 14 | main = launchAff_ $ runSpec [consoleReporter] do 15 | describe "Math" do 16 | it "works" $ 17 | quickCheck \n -> (n * 2 / 2) === n 18 | it "works again" $ 19 | quickCheck \n -> ((n + 1) * 2) /== n 20 | -------------------------------------------------------------------------------- /docs/Test/Spec/QuickCheck.md: -------------------------------------------------------------------------------- 1 | ## Module Test.Spec.QuickCheck 2 | 3 | #### `quickCheck` 4 | 5 | ``` purescript 6 | quickCheck :: forall p. Testable p => p -> Aff Unit 7 | ``` 8 | 9 | Runs a Testable with a random seed and 100 inputs. 10 | 11 | #### `quickCheck'` 12 | 13 | ``` purescript 14 | quickCheck' :: forall p. Testable p => Int -> p -> Aff Unit 15 | ``` 16 | 17 | Runs a Testable with a random seed and the given number of inputs. 18 | 19 | #### `quickCheckPure` 20 | 21 | ``` purescript 22 | quickCheckPure :: forall p e. Testable p => Seed -> Int -> p -> Aff Unit 23 | ``` 24 | 25 | Runs a Testable with a given seed and number of inputs. 26 | 27 | 28 | -------------------------------------------------------------------------------- /spago.yaml: -------------------------------------------------------------------------------- 1 | workspace: 2 | packageSet: 3 | registry: 55.1.0 4 | 5 | package: 6 | name: spec-quickcheck 7 | publish: 8 | license: MIT 9 | version: 5.0.2 10 | location: 11 | githubOwner: purescript-spec 12 | githubRepo: purescript-spec-quickcheck 13 | dependencies: 14 | - aff: ">=7.1.0 <8.0.0" 15 | - arrays: ">=7.3.0 <8.0.0" 16 | - effect: ">=4.0.0 <5.0.0" 17 | - foldable-traversable: ">=6.0.0 <7.0.0" 18 | - lists: ">=7.0.0 <8.0.0" 19 | - maybe: ">=6.0.0 <7.0.0" 20 | - prelude: ">=6.0.1 <7.0.0" 21 | - quickcheck: ">=8.0.1 <9.0.0" 22 | - spec: ">=7.6.0 <8.0.0" 23 | - tuples: ">=7.0.0 <8.0.0" 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Oskar Wickstrom 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # purescript-spec-quickcheck 2 | 3 | purescript-spec-quickcheck is a tiny adapter between the 4 | [purescript-spec](https://github.com/purescript-spec/purescript-spec) test framework 5 | and [purescript-quickcheck](https://github.com/purescript/purescript-quickcheck). 6 | 7 | ## Usage 8 | 9 | ```bash 10 | bower install purescript-spec-quickcheck 11 | ``` 12 | 13 | ```purescript 14 | module Test.Main where 15 | 16 | import Prelude 17 | import Effect (Effect) 18 | import Test.QuickCheck ((===), (/==)) 19 | import Test.Spec (describe, it) 20 | import Test.Spec.QuickCheck (quickCheck) 21 | import Test.Spec.Reporter.Console (consoleReporter) 22 | import Test.Spec.Runner (runSpec) 23 | 24 | main :: Effect Unit 25 | main = runSpec [consoleReporter] do 26 | describe "Math" do 27 | it "works" $ 28 | quickCheck \n -> (n * 2 / 2) === n 29 | it "works again" $ 30 | quickCheck \n -> ((n + 1) * 2) /== n 31 | ``` 32 | 33 | ## API Docs 34 | 35 | This module is published, and has its API documentation, [on 36 | Pursuit](https://pursuit.purescript.org/packages/purescript-spec-quickcheck). 37 | 38 | ## Contribute 39 | 40 | If you have any issues or possible improvements please file them as 41 | [GitHub Issues](https://github.com/purescript-spec/purescript-spec-quickcheck/issues). 42 | Pull requests are encouraged. 43 | 44 | ## License 45 | 46 | [MIT License](LICENSE.md). 47 | -------------------------------------------------------------------------------- /src/Test/Spec/QuickCheck.purs: -------------------------------------------------------------------------------- 1 | module Test.Spec.QuickCheck ( 2 | quickCheck, 3 | quickCheck', 4 | quickCheckPure 5 | ) where 6 | 7 | import Prelude 8 | 9 | import Data.Array (fold) 10 | import Data.Foldable (intercalate) 11 | import Data.List (mapMaybe, null) 12 | import Data.Maybe (Maybe(..)) 13 | import Data.Tuple.Nested (type (/\), (/\)) 14 | import Effect.Aff (Aff, error, throwError) 15 | import Effect.Class (liftEffect) 16 | import Test.QuickCheck as QC 17 | 18 | -- | Runs a Testable with a random seed and 100 inputs. 19 | quickCheck :: ∀ p. (QC.Testable p) => p -> Aff Unit 20 | quickCheck = quickCheck' 100 21 | 22 | -- | Runs a Testable with a random seed and the given number of inputs. 23 | quickCheck' :: ∀ p. (QC.Testable p) => Int -> p -> Aff Unit 24 | quickCheck' n prop = do 25 | seed <- liftEffect QC.randomSeed 26 | quickCheckPure seed n prop 27 | 28 | getErrorMessage :: QC.Seed /\ QC.Result -> Maybe String 29 | getErrorMessage (_ /\ QC.Success) = 30 | Nothing 31 | getErrorMessage (seed /\ QC.Failed msg) = 32 | Just $ fold ["Test (seed ", show (QC.unSeed seed), ") failed: \n", msg] 33 | 34 | -- | Runs a Testable with a given seed and number of inputs. 35 | quickCheckPure :: ∀ p. (QC.Testable p) => QC.Seed -> Int -> p -> Aff Unit 36 | quickCheckPure seed n prop = do 37 | let results = QC.quickCheckPure' seed n prop 38 | let msgs = mapMaybe getErrorMessage results 39 | 40 | unless (null msgs) $ 41 | throwError $ error $ intercalate "\n " msgs 42 | -------------------------------------------------------------------------------- /spago.lock: -------------------------------------------------------------------------------- 1 | workspace: 2 | packages: 3 | spec-quickcheck: 4 | path: ./ 5 | dependencies: 6 | - aff 7 | - arrays 8 | - effect 9 | - foldable-traversable 10 | - lists 11 | - maybe 12 | - prelude 13 | - quickcheck 14 | - spec 15 | - tuples 16 | test_dependencies: [] 17 | build_plan: 18 | - aff 19 | - ansi 20 | - arrays 21 | - avar 22 | - bifunctors 23 | - catenable-lists 24 | - console 25 | - const 26 | - contravariant 27 | - control 28 | - datetime 29 | - distributive 30 | - effect 31 | - either 32 | - enums 33 | - exceptions 34 | - exists 35 | - foldable-traversable 36 | - fork 37 | - free 38 | - functions 39 | - functors 40 | - gen 41 | - identity 42 | - integers 43 | - invariant 44 | - lazy 45 | - lcg 46 | - lists 47 | - maybe 48 | - mmorph 49 | - newtype 50 | - nonempty 51 | - now 52 | - numbers 53 | - ordered-collections 54 | - orders 55 | - parallel 56 | - partial 57 | - pipes 58 | - prelude 59 | - profunctor 60 | - quickcheck 61 | - random 62 | - record 63 | - refs 64 | - safe-coerce 65 | - spec 66 | - st 67 | - strings 68 | - tailrec 69 | - transformers 70 | - tuples 71 | - type-equality 72 | - unfoldable 73 | - unsafe-coerce 74 | package_set: 75 | address: 76 | registry: 55.1.0 77 | compiler: ">=0.15.15 <0.16.0" 78 | content: 79 | abc-parser: 2.0.1 80 | ace: 9.1.0 81 | address-rfc2821: 0.1.1 82 | aff: 7.1.0 83 | aff-bus: 6.0.0 84 | aff-coroutines: 9.0.0 85 | aff-promise: 4.0.0 86 | aff-retry: 2.0.0 87 | affjax: 13.0.0 88 | affjax-node: 1.0.0 89 | affjax-web: 1.0.0 90 | ansi: 7.0.0 91 | apexcharts: 0.5.0 92 | applicative-phases: 1.0.0 93 | argonaut: 9.0.0 94 | argonaut-aeson-generic: 0.4.1 95 | argonaut-codecs: 9.1.0 96 | argonaut-core: 7.0.0 97 | argonaut-generic: 8.0.0 98 | argonaut-traversals: 10.0.0 99 | argparse-basic: 2.0.0 100 | array-builder: 0.1.2 101 | array-search: 0.6.0 102 | arraybuffer: 13.2.0 103 | arraybuffer-builder: 3.1.0 104 | arraybuffer-types: 3.0.2 105 | arrays: 7.3.0 106 | arrays-extra: 0.6.1 107 | arrays-zipper: 2.0.1 108 | ask: 1.0.0 109 | assert: 6.0.0 110 | assert-multiple: 0.4.0 111 | avar: 5.0.0 112 | b64: 0.0.8 113 | barbies: 1.0.1 114 | barlow-lens: 0.9.0 115 | bifunctors: 6.0.0 116 | bigints: 7.0.1 117 | bolson: 0.3.9 118 | bookhound: 0.1.7 119 | bower-json: 3.0.0 120 | call-by-name: 4.0.1 121 | canvas: 6.0.0 122 | canvas-action: 9.0.0 123 | cartesian: 1.0.6 124 | catenable-lists: 7.0.0 125 | cbor-stream: 1.3.0 126 | chameleon: 1.0.0 127 | chameleon-halogen: 1.0.3 128 | chameleon-react-basic: 1.1.0 129 | chameleon-styled: 2.5.0 130 | chameleon-transformers: 1.0.0 131 | channel: 1.0.0 132 | checked-exceptions: 3.1.1 133 | choku: 1.0.1 134 | classless: 0.1.1 135 | classless-arbitrary: 0.1.1 136 | classless-decode-json: 0.1.1 137 | classless-encode-json: 0.1.3 138 | classnames: 2.0.0 139 | codec: 6.1.0 140 | codec-argonaut: 10.0.0 141 | codec-json: 1.2.0 142 | colors: 7.0.1 143 | concur-core: 0.5.0 144 | concur-react: 0.5.0 145 | concurrent-queues: 3.0.0 146 | console: 6.1.0 147 | const: 6.0.0 148 | contravariant: 6.0.0 149 | control: 6.0.0 150 | convertable-options: 1.0.0 151 | coroutines: 7.0.0 152 | css: 6.0.0 153 | css-frameworks: 1.0.1 154 | csv-stream: 2.3.0 155 | data-mvc: 0.0.2 156 | datetime: 6.1.0 157 | datetime-parsing: 0.2.0 158 | debounce: 0.1.0 159 | debug: 6.0.2 160 | decimals: 7.1.0 161 | default-values: 1.0.1 162 | deku: 0.9.23 163 | deno: 0.0.5 164 | dissect: 1.0.0 165 | distributive: 6.0.0 166 | dom-filereader: 7.0.0 167 | dom-indexed: 12.0.0 168 | dom-simple: 0.4.0 169 | dotenv: 4.0.3 170 | droplet: 0.6.0 171 | dts: 1.0.0 172 | dual-numbers: 1.0.2 173 | dynamic-buffer: 3.0.1 174 | echarts-simple: 0.0.1 175 | effect: 4.0.0 176 | either: 6.1.0 177 | elmish: 0.12.0 178 | elmish-enzyme: 0.1.1 179 | elmish-hooks: 0.10.3 180 | elmish-html: 0.8.3 181 | elmish-testing-library: 0.3.2 182 | email-validate: 7.0.0 183 | encoding: 0.0.9 184 | enums: 6.0.1 185 | env-names: 0.4.0 186 | error: 2.0.0 187 | eta-conversion: 0.3.2 188 | exceptions: 6.1.0 189 | exists: 6.0.0 190 | exitcodes: 4.0.0 191 | expect-inferred: 3.0.0 192 | ezfetch: 1.0.0 193 | fahrtwind: 2.0.0 194 | fallback: 0.1.0 195 | fast-vect: 1.2.0 196 | fetch: 4.1.0 197 | fetch-argonaut: 1.0.1 198 | fetch-core: 5.1.0 199 | fetch-yoga-json: 1.1.0 200 | ffi-simple: 0.5.1 201 | fft-js: 0.1.0 202 | filterable: 5.0.0 203 | fix-functor: 0.1.0 204 | fixed-points: 7.0.0 205 | fixed-precision: 5.0.0 206 | flame: 1.3.0 207 | float32: 2.0.0 208 | fmt: 0.2.1 209 | foldable-traversable: 6.0.0 210 | foldable-traversable-extra: 0.0.6 211 | foreign: 7.0.0 212 | foreign-object: 4.1.0 213 | foreign-readwrite: 3.4.0 214 | forgetmenot: 0.1.0 215 | fork: 6.0.0 216 | form-urlencoded: 7.0.0 217 | formatters: 7.0.0 218 | framer-motion: 1.0.1 219 | free: 7.1.0 220 | freeap: 7.0.0 221 | freer-free: 0.0.1 222 | freet: 7.0.0 223 | functions: 6.0.0 224 | functor1: 3.0.0 225 | functors: 5.0.0 226 | fuzzy: 0.4.0 227 | gen: 4.0.0 228 | generate-values: 1.0.1 229 | generic-router: 0.0.1 230 | geojson: 0.0.5 231 | geometry-plane: 1.1.0 232 | gojs: 0.1.1 233 | grain: 3.0.0 234 | grain-router: 3.0.0 235 | grain-virtualized: 3.0.0 236 | graphs: 8.1.0 237 | group: 4.1.1 238 | halogen: 7.0.0 239 | halogen-bootstrap5: 5.3.2 240 | halogen-canvas: 1.0.0 241 | halogen-css: 10.0.0 242 | halogen-echarts-simple: 0.0.4 243 | halogen-formless: 4.0.3 244 | halogen-helix: 1.0.0 245 | halogen-hooks: 0.6.3 246 | halogen-hooks-extra: 0.9.0 247 | halogen-infinite-scroll: 1.1.0 248 | halogen-store: 0.5.4 249 | halogen-storybook: 2.0.0 250 | halogen-subscriptions: 2.0.0 251 | halogen-svg-elems: 8.0.0 252 | halogen-typewriter: 1.0.4 253 | halogen-vdom: 8.0.0 254 | halogen-vdom-string-renderer: 0.5.0 255 | halogen-xterm: 2.0.0 256 | heckin: 2.0.1 257 | heterogeneous: 0.6.0 258 | homogeneous: 0.4.0 259 | http-methods: 6.0.0 260 | httpurple: 4.0.0 261 | huffman: 0.4.0 262 | humdrum: 0.0.1 263 | hyrule: 2.3.8 264 | identity: 6.0.0 265 | identy: 4.0.1 266 | indexed-db: 1.0.0 267 | indexed-monad: 3.0.0 268 | int64: 3.0.0 269 | integers: 6.0.0 270 | interpolate: 5.0.2 271 | intersection-observer: 1.0.1 272 | invariant: 6.0.0 273 | jarilo: 1.0.1 274 | jelly: 0.10.0 275 | jelly-router: 0.3.0 276 | jelly-signal: 0.4.0 277 | jest: 1.0.0 278 | js-abort-controller: 1.0.0 279 | js-bigints: 2.2.1 280 | js-date: 8.0.0 281 | js-fetch: 0.2.1 282 | js-fileio: 3.0.0 283 | js-intl: 1.0.4 284 | js-iterators: 0.1.1 285 | js-maps: 0.1.2 286 | js-promise: 1.0.0 287 | js-promise-aff: 1.0.0 288 | js-timers: 6.1.0 289 | js-uri: 3.1.0 290 | json: 1.1.0 291 | json-codecs: 5.0.0 292 | justifill: 0.5.0 293 | jwt: 0.0.9 294 | labeled-data: 0.2.0 295 | language-cst-parser: 0.14.0 296 | lazy: 6.0.0 297 | lazy-joe: 1.0.0 298 | lcg: 4.0.0 299 | leibniz: 5.0.0 300 | leveldb: 1.0.1 301 | liminal: 1.0.1 302 | linalg: 6.0.0 303 | lists: 7.0.0 304 | literals: 1.0.2 305 | logging: 3.0.0 306 | logging-journald: 0.4.0 307 | lumi-components: 18.0.0 308 | machines: 7.0.0 309 | maps-eager: 0.5.0 310 | marionette: 1.0.0 311 | marionette-react-basic-hooks: 0.1.1 312 | marked: 0.1.0 313 | matrices: 5.0.1 314 | matryoshka: 1.0.0 315 | maybe: 6.0.0 316 | media-types: 6.0.0 317 | meowclient: 1.0.0 318 | midi: 4.0.0 319 | milkis: 9.0.0 320 | minibench: 4.0.1 321 | mmorph: 7.0.0 322 | monad-control: 5.0.0 323 | monad-logger: 1.3.1 324 | monad-loops: 0.5.0 325 | monad-unlift: 1.0.1 326 | monoid-extras: 0.0.1 327 | monoidal: 0.16.0 328 | morello: 0.4.0 329 | mote: 3.0.0 330 | motsunabe: 2.0.0 331 | mvc: 0.0.1 332 | mysql: 6.0.1 333 | n3: 0.1.0 334 | nano-id: 1.1.0 335 | nanoid: 0.1.0 336 | naturals: 3.0.0 337 | nested-functor: 0.2.1 338 | newtype: 5.0.0 339 | nextjs: 0.1.1 340 | nextui: 0.2.0 341 | node-buffer: 9.0.0 342 | node-child-process: 11.1.0 343 | node-event-emitter: 3.0.0 344 | node-execa: 5.0.0 345 | node-fs: 9.2.0 346 | node-glob-basic: 1.3.0 347 | node-http: 9.1.0 348 | node-http2: 1.1.1 349 | node-human-signals: 1.0.0 350 | node-net: 5.1.0 351 | node-os: 5.1.0 352 | node-path: 5.0.0 353 | node-process: 11.2.0 354 | node-readline: 8.1.1 355 | node-sqlite3: 8.0.0 356 | node-stream-pipes: 2.1.6 357 | node-streams: 9.0.0 358 | node-tls: 0.3.1 359 | node-url: 7.0.1 360 | node-zlib: 0.4.0 361 | nonempty: 7.0.0 362 | now: 6.0.0 363 | npm-package-json: 2.0.0 364 | nullable: 6.0.0 365 | numberfield: 0.2.0 366 | numbers: 9.0.1 367 | oak: 3.1.1 368 | oak-debug: 1.2.2 369 | object-maps: 0.3.0 370 | ocarina: 1.5.4 371 | open-folds: 6.3.0 372 | open-memoize: 6.1.0 373 | open-pairing: 6.1.0 374 | options: 7.0.0 375 | optparse: 5.0.1 376 | ordered-collections: 3.2.0 377 | ordered-set: 0.4.0 378 | orders: 6.0.0 379 | owoify: 1.2.0 380 | pairs: 9.0.1 381 | parallel: 7.0.0 382 | parsing: 10.2.0 383 | parsing-dataview: 3.2.4 384 | partial: 4.0.0 385 | pathy: 9.0.0 386 | pha: 0.13.0 387 | phaser: 0.7.0 388 | phylio: 1.1.2 389 | pipes: 8.0.0 390 | pirates-charm: 0.0.1 391 | pmock: 0.9.0 392 | point-free: 1.0.0 393 | pointed-list: 0.5.1 394 | polymorphic-vectors: 4.0.0 395 | posix-types: 6.0.0 396 | postgresql: 2.0.17 397 | precise: 6.0.0 398 | precise-datetime: 7.0.0 399 | prelude: 6.0.1 400 | prettier-printer: 3.0.0 401 | profunctor: 6.0.1 402 | profunctor-lenses: 8.0.0 403 | protobuf: 4.3.0 404 | psa-utils: 8.0.0 405 | psci-support: 6.0.0 406 | punycode: 1.0.0 407 | qualified-do: 2.2.0 408 | quantities: 12.2.0 409 | quickcheck: 8.0.1 410 | quickcheck-combinators: 0.1.3 411 | quickcheck-laws: 7.0.0 412 | quickcheck-utf8: 0.0.0 413 | random: 6.0.0 414 | rationals: 6.0.0 415 | rdf: 0.1.0 416 | react: 11.0.0 417 | react-aria: 0.2.0 418 | react-basic: 17.0.0 419 | react-basic-classic: 3.0.0 420 | react-basic-dnd: 10.1.0 421 | react-basic-dom: 6.1.0 422 | react-basic-emotion: 7.1.0 423 | react-basic-hooks: 8.2.0 424 | react-basic-storybook: 2.0.0 425 | react-dom: 8.0.0 426 | react-halo: 3.0.0 427 | react-icons: 1.1.5 428 | react-markdown: 0.1.0 429 | react-testing-library: 4.0.1 430 | react-virtuoso: 1.0.0 431 | reactix: 0.6.1 432 | read: 1.0.1 433 | recharts: 1.1.0 434 | record: 4.0.0 435 | record-extra: 5.0.1 436 | record-ptional-fields: 0.1.2 437 | record-studio: 1.0.4 438 | refs: 6.0.0 439 | remotedata: 5.0.1 440 | repr: 0.5.0 441 | resize-observer: 1.0.0 442 | resource: 2.0.1 443 | resourcet: 1.0.0 444 | result: 1.0.3 445 | return: 0.2.0 446 | ring-modules: 5.0.1 447 | rito: 0.3.4 448 | roman: 0.4.0 449 | rough-notation: 1.0.2 450 | routing: 11.0.0 451 | routing-duplex: 0.7.0 452 | run: 5.0.0 453 | safe-coerce: 2.0.0 454 | safely: 4.0.1 455 | school-of-music: 1.3.0 456 | selection-foldable: 0.2.0 457 | selective-functors: 1.0.1 458 | semirings: 7.0.0 459 | signal: 13.0.0 460 | simple-emitter: 3.0.1 461 | simple-i18n: 2.0.1 462 | simple-json: 9.0.0 463 | simple-json-generics: 0.2.1 464 | simple-ulid: 3.0.0 465 | sized-matrices: 1.0.0 466 | sized-vectors: 5.0.2 467 | slug: 3.0.8 468 | small-ffi: 4.0.1 469 | soundfonts: 4.1.0 470 | sparse-matrices: 2.0.0 471 | sparse-polynomials: 3.0.0 472 | spec: 7.6.0 473 | spec-discovery: 8.3.0 474 | spec-mocha: 5.1.0 475 | spec-quickcheck: 5.0.1 476 | splitmix: 2.1.0 477 | ssrs: 1.0.0 478 | st: 6.2.0 479 | statistics: 0.3.2 480 | strictlypositiveint: 1.0.1 481 | string-parsers: 8.0.0 482 | strings: 6.0.1 483 | strings-extra: 4.0.0 484 | stringutils: 0.0.12 485 | substitute: 0.2.3 486 | supply: 0.2.0 487 | svg-parser: 3.0.0 488 | systemd-journald: 0.3.0 489 | tagged: 4.0.2 490 | tailrec: 6.1.0 491 | tecton: 0.2.1 492 | tecton-halogen: 0.2.0 493 | test-unit: 17.0.0 494 | thermite: 6.3.1 495 | thermite-dom: 0.3.1 496 | these: 6.0.0 497 | threading: 0.0.3 498 | toestand: 0.9.0 499 | transformation-matrix: 1.0.1 500 | transformers: 6.1.0 501 | tree-rose: 4.0.2 502 | ts-bridge: 4.0.0 503 | tuples: 7.0.0 504 | two-or-more: 1.0.0 505 | type-equality: 4.0.1 506 | typedenv: 2.0.1 507 | typelevel: 6.0.0 508 | typelevel-lists: 2.1.0 509 | typelevel-peano: 1.0.1 510 | typelevel-prelude: 7.0.0 511 | typelevel-regex: 0.0.3 512 | typelevel-rows: 0.1.0 513 | typisch: 0.4.0 514 | uint: 7.0.0 515 | ulid: 3.0.1 516 | uncurried-transformers: 1.1.0 517 | undefined: 2.0.0 518 | undefined-is-not-a-problem: 1.1.0 519 | unfoldable: 6.0.0 520 | unicode: 6.0.0 521 | unique: 0.6.1 522 | unlift: 1.0.1 523 | unordered-collections: 3.1.0 524 | unsafe-coerce: 6.0.0 525 | unsafe-reference: 5.0.0 526 | untagged-to-tagged: 0.1.4 527 | untagged-union: 1.0.0 528 | uri: 9.0.0 529 | url-immutable: 1.0.0 530 | uuid: 9.0.0 531 | uuidv4: 1.0.0 532 | validation: 6.0.0 533 | variant: 8.0.0 534 | variant-encodings: 2.0.0 535 | vectorfield: 1.0.1 536 | vectors: 2.1.0 537 | versions: 7.0.0 538 | visx: 0.0.2 539 | web-clipboard: 5.0.0 540 | web-cssom: 2.0.0 541 | web-cssom-view: 0.1.0 542 | web-dom: 6.0.0 543 | web-dom-parser: 8.0.0 544 | web-dom-xpath: 3.0.0 545 | web-encoding: 3.0.0 546 | web-events: 4.0.0 547 | web-fetch: 4.0.1 548 | web-file: 4.0.0 549 | web-geometry: 0.1.0 550 | web-html: 4.1.0 551 | web-pointerevents: 2.0.0 552 | web-proletarian: 1.0.0 553 | web-promise: 3.2.0 554 | web-resize-observer: 2.1.0 555 | web-router: 1.0.0 556 | web-socket: 4.0.0 557 | web-storage: 5.0.0 558 | web-streams: 4.0.0 559 | web-touchevents: 4.0.0 560 | web-uievents: 5.0.0 561 | web-url: 2.0.0 562 | web-workers: 1.1.0 563 | web-xhr: 5.0.1 564 | webextension-polyfill: 0.1.0 565 | webgpu: 0.0.1 566 | which: 2.0.0 567 | xterm: 1.0.0 568 | yoga-fetch: 1.0.1 569 | yoga-json: 5.1.0 570 | yoga-om: 0.1.0 571 | yoga-postgres: 6.0.0 572 | yoga-tree: 1.0.0 573 | z3: 0.0.2 574 | zipperarray: 2.0.0 575 | extra_packages: {} 576 | packages: 577 | aff: 578 | type: registry 579 | version: 7.1.0 580 | integrity: sha256-7hOC6uQO9XBAI5FD8F33ChLjFAiZVfd4BJMqlMh7TNU= 581 | dependencies: 582 | - arrays 583 | - bifunctors 584 | - control 585 | - datetime 586 | - effect 587 | - either 588 | - exceptions 589 | - foldable-traversable 590 | - functions 591 | - maybe 592 | - newtype 593 | - parallel 594 | - prelude 595 | - refs 596 | - tailrec 597 | - transformers 598 | - unsafe-coerce 599 | ansi: 600 | type: registry 601 | version: 7.0.0 602 | integrity: sha256-ZMB6HD+q9CXvn9fRCmJ8dvuDrOVHcjombL3oNOerVnE= 603 | dependencies: 604 | - foldable-traversable 605 | - lists 606 | - strings 607 | arrays: 608 | type: registry 609 | version: 7.3.0 610 | integrity: sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc= 611 | dependencies: 612 | - bifunctors 613 | - control 614 | - foldable-traversable 615 | - functions 616 | - maybe 617 | - nonempty 618 | - partial 619 | - prelude 620 | - safe-coerce 621 | - st 622 | - tailrec 623 | - tuples 624 | - unfoldable 625 | - unsafe-coerce 626 | avar: 627 | type: registry 628 | version: 5.0.0 629 | integrity: sha256-e7hf0x4hEpcygXP0LtvfvAQ49Bbj2aWtZT3gqM///0A= 630 | dependencies: 631 | - aff 632 | - effect 633 | - either 634 | - exceptions 635 | - functions 636 | - maybe 637 | bifunctors: 638 | type: registry 639 | version: 6.0.0 640 | integrity: sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw= 641 | dependencies: 642 | - const 643 | - either 644 | - newtype 645 | - prelude 646 | - tuples 647 | catenable-lists: 648 | type: registry 649 | version: 7.0.0 650 | integrity: sha256-76vYENhwF4BWTBsjeLuErCH2jqVT4M3R1HX+4RwSftA= 651 | dependencies: 652 | - control 653 | - foldable-traversable 654 | - lists 655 | - maybe 656 | - prelude 657 | - tuples 658 | - unfoldable 659 | console: 660 | type: registry 661 | version: 6.1.0 662 | integrity: sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM= 663 | dependencies: 664 | - effect 665 | - prelude 666 | const: 667 | type: registry 668 | version: 6.0.0 669 | integrity: sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc= 670 | dependencies: 671 | - invariant 672 | - newtype 673 | - prelude 674 | contravariant: 675 | type: registry 676 | version: 6.0.0 677 | integrity: sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c= 678 | dependencies: 679 | - const 680 | - either 681 | - newtype 682 | - prelude 683 | - tuples 684 | control: 685 | type: registry 686 | version: 6.0.0 687 | integrity: sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk= 688 | dependencies: 689 | - newtype 690 | - prelude 691 | datetime: 692 | type: registry 693 | version: 6.1.0 694 | integrity: sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI= 695 | dependencies: 696 | - bifunctors 697 | - control 698 | - either 699 | - enums 700 | - foldable-traversable 701 | - functions 702 | - gen 703 | - integers 704 | - lists 705 | - maybe 706 | - newtype 707 | - numbers 708 | - ordered-collections 709 | - partial 710 | - prelude 711 | - tuples 712 | distributive: 713 | type: registry 714 | version: 6.0.0 715 | integrity: sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ= 716 | dependencies: 717 | - identity 718 | - newtype 719 | - prelude 720 | - tuples 721 | - type-equality 722 | effect: 723 | type: registry 724 | version: 4.0.0 725 | integrity: sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M= 726 | dependencies: 727 | - prelude 728 | either: 729 | type: registry 730 | version: 6.1.0 731 | integrity: sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY= 732 | dependencies: 733 | - control 734 | - invariant 735 | - maybe 736 | - prelude 737 | enums: 738 | type: registry 739 | version: 6.0.1 740 | integrity: sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8= 741 | dependencies: 742 | - control 743 | - either 744 | - gen 745 | - maybe 746 | - newtype 747 | - nonempty 748 | - partial 749 | - prelude 750 | - tuples 751 | - unfoldable 752 | exceptions: 753 | type: registry 754 | version: 6.1.0 755 | integrity: sha256-K0T89IHtF3vBY7eSAO7eDOqSb2J9kZGAcDN5+IKsF8E= 756 | dependencies: 757 | - effect 758 | - either 759 | - maybe 760 | - prelude 761 | exists: 762 | type: registry 763 | version: 6.0.0 764 | integrity: sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8= 765 | dependencies: 766 | - unsafe-coerce 767 | foldable-traversable: 768 | type: registry 769 | version: 6.0.0 770 | integrity: sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM= 771 | dependencies: 772 | - bifunctors 773 | - const 774 | - control 775 | - either 776 | - functors 777 | - identity 778 | - maybe 779 | - newtype 780 | - orders 781 | - prelude 782 | - tuples 783 | fork: 784 | type: registry 785 | version: 6.0.0 786 | integrity: sha256-X7u0SuCvFbLbzuNEKLBNuWjmcroqMqit4xEzpQwAP7E= 787 | dependencies: 788 | - aff 789 | free: 790 | type: registry 791 | version: 7.1.0 792 | integrity: sha256-JAumgEsGSzJCNLD8AaFvuX7CpqS5yruCngi6yI7+V5k= 793 | dependencies: 794 | - catenable-lists 795 | - control 796 | - distributive 797 | - either 798 | - exists 799 | - foldable-traversable 800 | - invariant 801 | - lazy 802 | - maybe 803 | - prelude 804 | - tailrec 805 | - transformers 806 | - tuples 807 | - unsafe-coerce 808 | functions: 809 | type: registry 810 | version: 6.0.0 811 | integrity: sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI= 812 | dependencies: 813 | - prelude 814 | functors: 815 | type: registry 816 | version: 5.0.0 817 | integrity: sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU= 818 | dependencies: 819 | - bifunctors 820 | - const 821 | - contravariant 822 | - control 823 | - distributive 824 | - either 825 | - invariant 826 | - maybe 827 | - newtype 828 | - prelude 829 | - profunctor 830 | - tuples 831 | - unsafe-coerce 832 | gen: 833 | type: registry 834 | version: 4.0.0 835 | integrity: sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI= 836 | dependencies: 837 | - either 838 | - foldable-traversable 839 | - identity 840 | - maybe 841 | - newtype 842 | - nonempty 843 | - prelude 844 | - tailrec 845 | - tuples 846 | - unfoldable 847 | identity: 848 | type: registry 849 | version: 6.0.0 850 | integrity: sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY= 851 | dependencies: 852 | - control 853 | - invariant 854 | - newtype 855 | - prelude 856 | integers: 857 | type: registry 858 | version: 6.0.0 859 | integrity: sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158= 860 | dependencies: 861 | - maybe 862 | - numbers 863 | - prelude 864 | invariant: 865 | type: registry 866 | version: 6.0.0 867 | integrity: sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo= 868 | dependencies: 869 | - control 870 | - prelude 871 | lazy: 872 | type: registry 873 | version: 6.0.0 874 | integrity: sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU= 875 | dependencies: 876 | - control 877 | - foldable-traversable 878 | - invariant 879 | - prelude 880 | lcg: 881 | type: registry 882 | version: 4.0.0 883 | integrity: sha256-h7ME5cthLfbgJOJdsZcSfFpwXsx4rf8YmhebU+3iSYg= 884 | dependencies: 885 | - effect 886 | - integers 887 | - maybe 888 | - partial 889 | - prelude 890 | - random 891 | lists: 892 | type: registry 893 | version: 7.0.0 894 | integrity: sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI= 895 | dependencies: 896 | - bifunctors 897 | - control 898 | - foldable-traversable 899 | - lazy 900 | - maybe 901 | - newtype 902 | - nonempty 903 | - partial 904 | - prelude 905 | - tailrec 906 | - tuples 907 | - unfoldable 908 | maybe: 909 | type: registry 910 | version: 6.0.0 911 | integrity: sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q= 912 | dependencies: 913 | - control 914 | - invariant 915 | - newtype 916 | - prelude 917 | mmorph: 918 | type: registry 919 | version: 7.0.0 920 | integrity: sha256-urZlZNNqGeQFe5D/ClHlR8QgGBNHTMFPtJ5S5IpflTQ= 921 | dependencies: 922 | - free 923 | - functors 924 | - transformers 925 | newtype: 926 | type: registry 927 | version: 5.0.0 928 | integrity: sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw= 929 | dependencies: 930 | - prelude 931 | - safe-coerce 932 | nonempty: 933 | type: registry 934 | version: 7.0.0 935 | integrity: sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs= 936 | dependencies: 937 | - control 938 | - foldable-traversable 939 | - maybe 940 | - prelude 941 | - tuples 942 | - unfoldable 943 | now: 944 | type: registry 945 | version: 6.0.0 946 | integrity: sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY= 947 | dependencies: 948 | - datetime 949 | - effect 950 | numbers: 951 | type: registry 952 | version: 9.0.1 953 | integrity: sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk= 954 | dependencies: 955 | - functions 956 | - maybe 957 | ordered-collections: 958 | type: registry 959 | version: 3.2.0 960 | integrity: sha256-o9jqsj5rpJmMdoe/zyufWHFjYYFTTsJpgcuCnqCO6PM= 961 | dependencies: 962 | - arrays 963 | - foldable-traversable 964 | - gen 965 | - lists 966 | - maybe 967 | - partial 968 | - prelude 969 | - st 970 | - tailrec 971 | - tuples 972 | - unfoldable 973 | orders: 974 | type: registry 975 | version: 6.0.0 976 | integrity: sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink= 977 | dependencies: 978 | - newtype 979 | - prelude 980 | parallel: 981 | type: registry 982 | version: 7.0.0 983 | integrity: sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o= 984 | dependencies: 985 | - control 986 | - effect 987 | - either 988 | - foldable-traversable 989 | - functors 990 | - maybe 991 | - newtype 992 | - prelude 993 | - profunctor 994 | - refs 995 | - transformers 996 | partial: 997 | type: registry 998 | version: 4.0.0 999 | integrity: sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4= 1000 | dependencies: [] 1001 | pipes: 1002 | type: registry 1003 | version: 8.0.0 1004 | integrity: sha256-kvfqGM4cPA/wCcBHbp5psouFw5dZGvku2462x7ZBwSY= 1005 | dependencies: 1006 | - aff 1007 | - lists 1008 | - mmorph 1009 | - prelude 1010 | - tailrec 1011 | - transformers 1012 | - tuples 1013 | prelude: 1014 | type: registry 1015 | version: 6.0.1 1016 | integrity: sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0= 1017 | dependencies: [] 1018 | profunctor: 1019 | type: registry 1020 | version: 6.0.1 1021 | integrity: sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk= 1022 | dependencies: 1023 | - control 1024 | - distributive 1025 | - either 1026 | - exists 1027 | - invariant 1028 | - newtype 1029 | - prelude 1030 | - tuples 1031 | quickcheck: 1032 | type: registry 1033 | version: 8.0.1 1034 | integrity: sha256-ZvpccKQCvgslTXZCNmpYW4bUsFzhZd/kQUr2WmxFTGY= 1035 | dependencies: 1036 | - arrays 1037 | - console 1038 | - control 1039 | - effect 1040 | - either 1041 | - enums 1042 | - exceptions 1043 | - foldable-traversable 1044 | - gen 1045 | - identity 1046 | - integers 1047 | - lazy 1048 | - lcg 1049 | - lists 1050 | - maybe 1051 | - newtype 1052 | - nonempty 1053 | - numbers 1054 | - partial 1055 | - prelude 1056 | - record 1057 | - st 1058 | - strings 1059 | - tailrec 1060 | - transformers 1061 | - tuples 1062 | - unfoldable 1063 | random: 1064 | type: registry 1065 | version: 6.0.0 1066 | integrity: sha256-CJ611a35MPCE7XQMp0rdC6MCn76znlhisiCRgboAG+Q= 1067 | dependencies: 1068 | - effect 1069 | - integers 1070 | record: 1071 | type: registry 1072 | version: 4.0.0 1073 | integrity: sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg= 1074 | dependencies: 1075 | - functions 1076 | - prelude 1077 | - unsafe-coerce 1078 | refs: 1079 | type: registry 1080 | version: 6.0.0 1081 | integrity: sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s= 1082 | dependencies: 1083 | - effect 1084 | - prelude 1085 | safe-coerce: 1086 | type: registry 1087 | version: 2.0.0 1088 | integrity: sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU= 1089 | dependencies: 1090 | - unsafe-coerce 1091 | spec: 1092 | type: registry 1093 | version: 7.6.0 1094 | integrity: sha256-+merGdQbL9zWONbnt8S8J9afGJ59MQqGtS0qSd3yu4I= 1095 | dependencies: 1096 | - aff 1097 | - ansi 1098 | - arrays 1099 | - avar 1100 | - bifunctors 1101 | - control 1102 | - datetime 1103 | - effect 1104 | - either 1105 | - exceptions 1106 | - foldable-traversable 1107 | - fork 1108 | - identity 1109 | - integers 1110 | - lists 1111 | - maybe 1112 | - newtype 1113 | - now 1114 | - ordered-collections 1115 | - parallel 1116 | - pipes 1117 | - prelude 1118 | - refs 1119 | - strings 1120 | - tailrec 1121 | - transformers 1122 | - tuples 1123 | st: 1124 | type: registry 1125 | version: 6.2.0 1126 | integrity: sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY= 1127 | dependencies: 1128 | - partial 1129 | - prelude 1130 | - tailrec 1131 | - unsafe-coerce 1132 | strings: 1133 | type: registry 1134 | version: 6.0.1 1135 | integrity: sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k= 1136 | dependencies: 1137 | - arrays 1138 | - control 1139 | - either 1140 | - enums 1141 | - foldable-traversable 1142 | - gen 1143 | - integers 1144 | - maybe 1145 | - newtype 1146 | - nonempty 1147 | - partial 1148 | - prelude 1149 | - tailrec 1150 | - tuples 1151 | - unfoldable 1152 | - unsafe-coerce 1153 | tailrec: 1154 | type: registry 1155 | version: 6.1.0 1156 | integrity: sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk= 1157 | dependencies: 1158 | - bifunctors 1159 | - effect 1160 | - either 1161 | - identity 1162 | - maybe 1163 | - partial 1164 | - prelude 1165 | - refs 1166 | transformers: 1167 | type: registry 1168 | version: 6.1.0 1169 | integrity: sha256-3Bm+Z6tsC/paG888XkywDngJ2JMos+JfOhRlkVfb7gI= 1170 | dependencies: 1171 | - control 1172 | - distributive 1173 | - effect 1174 | - either 1175 | - exceptions 1176 | - foldable-traversable 1177 | - identity 1178 | - lazy 1179 | - maybe 1180 | - newtype 1181 | - prelude 1182 | - st 1183 | - tailrec 1184 | - tuples 1185 | - unfoldable 1186 | tuples: 1187 | type: registry 1188 | version: 7.0.0 1189 | integrity: sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M= 1190 | dependencies: 1191 | - control 1192 | - invariant 1193 | - prelude 1194 | type-equality: 1195 | type: registry 1196 | version: 4.0.1 1197 | integrity: sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw= 1198 | dependencies: [] 1199 | unfoldable: 1200 | type: registry 1201 | version: 6.0.0 1202 | integrity: sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg= 1203 | dependencies: 1204 | - foldable-traversable 1205 | - maybe 1206 | - partial 1207 | - prelude 1208 | - tuples 1209 | unsafe-coerce: 1210 | type: registry 1211 | version: 6.0.0 1212 | integrity: sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0= 1213 | dependencies: [] 1214 | --------------------------------------------------------------------------------