# gs-std [GS Open Source](https://garrity.co/oss.html) | [License (Apache 2.0)](./LICENSE) Garrity Software standard types and operations with minimal dependencies. - [Usage](#usage) - [Core Module](#core-module) - [I/O Module](#io-module) - [Effect Module](#effect-module) ## Usage This artifact is available in the Garrity Software Maven repository. ```scala externalResolvers += "Garrity Software Releases" at "https://maven.garrity.co/releases" // No Dependencies val GsStdCore: ModuleID = "gs" %% "gs-std-core-v0" % "$VERSION" // Depends on Cats Effect and Fs2 val GsStdIO: ModuleID = "gs" %% "gs-std-io-v0" % "$VERSION" // Depends on Cats Effect and Fs2 val GsStdEffect: ModuleID = "gs" %% "gs-std-effect-v0" % "$VERSION" ``` ## Core Module Provides standard types, wrappers, and tools. - Common semantic types (e.g. `CreatedAt`). - Encoding and representing encoded data. - Hashing algorithms and representing hashes. - Reasoning about bytes and blobs. ## I/O Module ### File Helpers `Files`: These provide support for reading and writing files. Provides wrapping around `java.nio.file.Files`. Note that for streaming operations, `fs2.io` provides everything conveniently and does not benefit from wrapping. ### Resource Helpers These provide support for reading files from packaged resource directories (e.g. `src/main/resources`). ## Effect Module This module relies on the [Core Module](#core-module) and takes advantage of the types defined therein. ### Random Numbers `Rng[F[_]]`: Effectful random number generator with creation/testing helpers. ### Dates and Times `DateTimeProvider[F[_]]`: Effectful provider for dates and times. Provides an implementation based on clock injection. Helps to decouple date/time use from static methods.