mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-30 21:05:08 +00:00
commit
0b7fc66ab3
13
.scalafix.conf
Normal file
13
.scalafix.conf
Normal file
@ -0,0 +1,13 @@
|
||||
rules = [
|
||||
ProcedureSyntax
|
||||
OrganizeImports
|
||||
]
|
||||
OrganizeImports {
|
||||
coalesceToWildcardImportThreshold = 3
|
||||
expandRelative = true
|
||||
groupedImports = Keep
|
||||
importsOrder = Ascii
|
||||
groups = ["re:javax?\\.", "scala.", "re:(cats|fs2)\\.", "docspell.", "*"]
|
||||
importSelectorsOrder = Ascii
|
||||
removeUnused = true
|
||||
}
|
@ -11,6 +11,12 @@ val elmCompileMode = settingKey[ElmCompileMode]("How to compile elm sources")
|
||||
|
||||
// --- Settings
|
||||
|
||||
val scalafixSettings = Seq(
|
||||
semanticdbEnabled := true, // enable SemanticDB
|
||||
semanticdbVersion := scalafixSemanticdb.revision, //"4.3.10", // use Scalafix compatible version
|
||||
ThisBuild / scalafixDependencies ++= Dependencies.organizeImports
|
||||
)
|
||||
|
||||
val sharedSettings = Seq(
|
||||
organization := "com.github.eikek",
|
||||
scalaVersion := "2.13.2",
|
||||
@ -37,7 +43,7 @@ val sharedSettings = Seq(
|
||||
(scalacOptions.value.filter(o => !o.contains("Xlint")) ++ Seq("-Xlint:_,-unused")),
|
||||
scalacOptions in (Test, console) :=
|
||||
(scalacOptions.value.filter(o => !o.contains("Xlint")) ++ Seq("-Xlint:_,-unused"))
|
||||
)
|
||||
) ++ scalafixSettings
|
||||
|
||||
val testSettings = Seq(
|
||||
testFrameworks += new TestFramework("minitest.runner.Framework"),
|
||||
@ -143,7 +149,6 @@ val openapiScalaSettings = Seq(
|
||||
)
|
||||
|
||||
|
||||
|
||||
// --- Modules
|
||||
|
||||
// Base module, everything depends on this – including restapi and
|
||||
|
@ -2,6 +2,7 @@ package docspell.analysis
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.analysis.contact.Contact
|
||||
import docspell.analysis.date.DateFind
|
||||
import docspell.analysis.nlp.StanfordNerClassifier
|
||||
|
@ -1,10 +1,10 @@
|
||||
package docspell.analysis.contact
|
||||
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.analysis.split._
|
||||
import docspell.common._
|
||||
|
||||
object Contact {
|
||||
private[this] val protocols = Set("ftp", "http", "https")
|
||||
|
@ -1,6 +1,7 @@
|
||||
package docspell.analysis.contact
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
|
||||
import docspell.common.LenientUri
|
||||
|
||||
case class Domain(labels: NonEmptyList[String], tld: String) {
|
||||
|
@ -2,12 +2,13 @@ package docspell.analysis.date
|
||||
|
||||
import java.time.LocalDate
|
||||
|
||||
import fs2.{Pure, Stream}
|
||||
import docspell.common._
|
||||
import docspell.analysis.split._
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import fs2.{Pure, Stream}
|
||||
|
||||
import docspell.analysis.split._
|
||||
import docspell.common._
|
||||
|
||||
object DateFind {
|
||||
|
||||
def findDates(text: String, lang: Language): Stream[Pure, NerDateLabel] =
|
||||
|
@ -3,16 +3,16 @@ package docspell.analysis.nlp
|
||||
import java.net.URL
|
||||
import java.util.zip.GZIPInputStream
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import edu.stanford.nlp.ie.AbstractSequenceClassifier
|
||||
import edu.stanford.nlp.ie.crf.CRFClassifier
|
||||
import edu.stanford.nlp.ling.{CoreAnnotations, CoreLabel}
|
||||
import org.log4s.getLogger
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import scala.util.Using
|
||||
import scala.jdk.CollectionConverters._
|
||||
|
||||
object StanfordNerClassifier {
|
||||
private[this] val logger = getLogger
|
||||
|
||||
|
@ -1,20 +1,21 @@
|
||||
package docspell.backend
|
||||
|
||||
import cats.effect.{Blocker, ConcurrentEffect, ContextShift, Resource}
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.blaze.BlazeClientBuilder
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
import cats.effect._
|
||||
|
||||
import docspell.backend.auth.Login
|
||||
import docspell.backend.ops._
|
||||
import docspell.backend.signup.OSignup
|
||||
import docspell.ftsclient.FtsClient
|
||||
import docspell.joexapi.client.JoexClient
|
||||
import docspell.store.Store
|
||||
import docspell.store.queue.JobQueue
|
||||
import docspell.store.usertask.UserTaskStore
|
||||
import docspell.ftsclient.FtsClient
|
||||
|
||||
import scala.concurrent.ExecutionContext
|
||||
import emil.javamail.{JavaMailEmil, Settings}
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.blaze.BlazeClientBuilder
|
||||
|
||||
trait BackendApp[F[_]] {
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package docspell.backend
|
||||
|
||||
import cats.effect._
|
||||
|
||||
import org.mindrot.jbcrypt.BCrypt
|
||||
|
||||
object Common {
|
||||
|
@ -2,6 +2,7 @@ package docspell.backend
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.records.RJob
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package docspell.backend
|
||||
|
||||
import docspell.common.Password
|
||||
|
||||
import org.mindrot.jbcrypt.BCrypt
|
||||
|
||||
object PasswordCrypt {
|
||||
|
@ -1,17 +1,18 @@
|
||||
package docspell.backend.auth
|
||||
|
||||
import java.time.Instant
|
||||
import javax.crypto.Mac
|
||||
import javax.crypto.spec.SecretKeySpec
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import java.time.Instant
|
||||
|
||||
import javax.crypto.Mac
|
||||
import javax.crypto.spec.SecretKeySpec
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
import docspell.backend.Common
|
||||
import AuthToken._
|
||||
import docspell.backend.auth.AuthToken._
|
||||
import docspell.common._
|
||||
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
case class AuthToken(millis: Long, account: AccountId, salt: String, sig: String) {
|
||||
def asString = s"$millis-${b64enc(account.asString)}-$salt-$sig"
|
||||
|
||||
|
@ -2,14 +2,16 @@ package docspell.backend.auth
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import Login._
|
||||
|
||||
import docspell.backend.auth.Login._
|
||||
import docspell.common._
|
||||
import docspell.store.Store
|
||||
import docspell.store.queries.QLogin
|
||||
import docspell.store.records.RUser
|
||||
|
||||
import org.log4s._
|
||||
import org.mindrot.jbcrypt.BCrypt
|
||||
import scodec.bits.ByteVector
|
||||
import org.log4s._
|
||||
|
||||
trait Login[F[_]] {
|
||||
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import docspell.common._
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.records.{RCollective, RContact, RUser}
|
||||
import OCollective._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.backend.PasswordCrypt
|
||||
import docspell.backend.ops.OCollective._
|
||||
import docspell.common._
|
||||
import docspell.store.queries.QCollective
|
||||
import docspell.store.records.{RCollective, RContact, RUser}
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
trait OCollective[F[_]] {
|
||||
|
||||
|
@ -1,10 +1,11 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.{AccountId, Ident}
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.records.{REquipment, RItem}
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
trait OEquipment[F[_]] {
|
||||
|
||||
|
@ -3,14 +3,15 @@ package docspell.backend.ops
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.backend.JobFactory
|
||||
import docspell.backend.ops.OItemSearch._
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
import docspell.backend.JobFactory
|
||||
import docspell.store.Store
|
||||
import docspell.store.records.RJob
|
||||
import docspell.store.queue.JobQueue
|
||||
import docspell.store.queries.QItem
|
||||
import OItemSearch.{Batch, ListItem, ListItemWithTags, Query}
|
||||
import docspell.store.queue.JobQueue
|
||||
import docspell.store.records.RJob
|
||||
|
||||
trait OFulltext[F[_]] {
|
||||
|
||||
|
@ -1,16 +1,18 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.data.OptionT
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.ftsclient.FtsClient
|
||||
import docspell.store.queries.{QAttachment, QItem}
|
||||
import docspell.store.records._
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
import doobie._
|
||||
import doobie.implicits._
|
||||
import org.log4s.getLogger
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.queries.{QAttachment, QItem}
|
||||
import docspell.common._
|
||||
import docspell.store.records._
|
||||
import docspell.ftsclient.FtsClient
|
||||
|
||||
trait OItem[F[_]] {
|
||||
|
||||
|
@ -1,26 +1,19 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import fs2.Stream
|
||||
import cats.data.OptionT
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import doobie.implicits._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.backend.ops.OItemSearch._
|
||||
import docspell.common._
|
||||
import docspell.store.Store
|
||||
import docspell.store.queries.{QAttachment, QItem}
|
||||
import OItemSearch.{
|
||||
AttachmentArchiveData,
|
||||
AttachmentData,
|
||||
AttachmentSourceData,
|
||||
Batch,
|
||||
ItemData,
|
||||
ListItem,
|
||||
ListItemWithTags,
|
||||
Query
|
||||
}
|
||||
import bitpeace.{FileMeta, RangeDef}
|
||||
import docspell.common._
|
||||
import docspell.store.records._
|
||||
|
||||
import bitpeace.{FileMeta, RangeDef}
|
||||
import doobie.implicits._
|
||||
|
||||
trait OItemSearch[F[_]] {
|
||||
def findItem(id: Ident, collective: Ident): F[Option[ItemData]]
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.data.OptionT
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.backend.ops.OJob.{CollectiveQueueState, JobCancelResult}
|
||||
import docspell.common.{Ident, JobState}
|
||||
import docspell.store.Store
|
||||
|
@ -1,15 +1,16 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
import cats.data.OptionT
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.{Ident, NodeType}
|
||||
import docspell.joexapi.client.JoexClient
|
||||
import docspell.store.Store
|
||||
import docspell.store.records.RNode
|
||||
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
trait OJoex[F[_]] {
|
||||
|
||||
def notifyAllNodes: F[Unit]
|
||||
|
@ -1,18 +1,19 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import fs2.Stream
|
||||
import cats.data.OptionT
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import cats.data.OptionT
|
||||
import emil._
|
||||
import bitpeace.{FileMeta, RangeDef}
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.backend.ops.OMail._
|
||||
import docspell.common._
|
||||
import docspell.store._
|
||||
import docspell.store.syntax.MimeTypes._
|
||||
import docspell.store.records._
|
||||
import docspell.store.queries.QMails
|
||||
import OMail.{ImapSettings, ItemMail, Sent, SmtpSettings}
|
||||
import docspell.store.records._
|
||||
import docspell.store.syntax.MimeTypes._
|
||||
|
||||
import bitpeace.{FileMeta, RangeDef}
|
||||
import emil._
|
||||
|
||||
trait OMail[F[_]] {
|
||||
|
||||
|
@ -2,10 +2,12 @@ package docspell.backend.ops
|
||||
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.syntax.all._
|
||||
import docspell.common.{Ident, LenientUri, NodeType}
|
||||
import docspell.store.Store
|
||||
import docspell.store.records.RNode
|
||||
|
||||
import org.log4s._
|
||||
|
||||
trait ONode[F[_]] {
|
||||
|
@ -1,12 +1,13 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.backend.ops.OOrganization._
|
||||
import docspell.common._
|
||||
import docspell.store._
|
||||
import docspell.store.records._
|
||||
import OOrganization._
|
||||
import docspell.store.queries.QOrganization
|
||||
import docspell.store.records._
|
||||
|
||||
trait OOrganization[F[_]] {
|
||||
def findAllOrg(account: AccountId, query: Option[String]): F[Vector[OrgAndContacts]]
|
||||
|
@ -1,10 +1,11 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.{AccountId, Ident}
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.records.RSource
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
trait OSource[F[_]] {
|
||||
|
||||
|
@ -1,10 +1,11 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.{AccountId, Ident}
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.records.{RTag, RTagItem}
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
trait OTag[F[_]] {
|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import bitpeace.MimetypeHint
|
||||
import cats.Functor
|
||||
import cats.data.{EitherT, OptionT}
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import docspell.backend.{Config, JobFactory}
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.backend.{Config, JobFactory}
|
||||
import docspell.common._
|
||||
import docspell.common.syntax.all._
|
||||
import docspell.store.Store
|
||||
import docspell.store.queue.JobQueue
|
||||
import docspell.store.records._
|
||||
|
||||
import bitpeace.MimetypeHint
|
||||
import org.log4s._
|
||||
|
||||
trait OUpload[F[_]] {
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.backend.ops
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.data.OptionT
|
||||
import io.circe.Encoder
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.queue.JobQueue
|
||||
import docspell.store.usertask._
|
||||
import docspell.common._
|
||||
|
||||
import io.circe.Encoder
|
||||
|
||||
trait OUserTask[F[_]] {
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package docspell.backend.signup
|
||||
|
||||
import docspell.common.{Duration, Password}
|
||||
|
||||
import io.circe._
|
||||
|
||||
case class Config(mode: Config.Mode, newInvitePassword: Password, inviteTime: Duration)
|
||||
|
@ -1,13 +1,15 @@
|
||||
package docspell.backend.signup
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Effect, Resource}
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.backend.PasswordCrypt
|
||||
import docspell.backend.ops.OCollective.RegisterData
|
||||
import docspell.common.syntax.all._
|
||||
import docspell.common._
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.common.syntax.all._
|
||||
import docspell.store.records.{RCollective, RInvitation, RUser}
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
import doobie.free.connection.ConnectionIO
|
||||
import org.log4s.getLogger
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
package docspell.common
|
||||
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
import cats.effect._
|
||||
import fs2.{Chunk, Pipe, Stream}
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
final case class Binary[F[_]](name: String, mime: MimeType, data: Stream[F, Byte]) {
|
||||
|
@ -1,11 +1,14 @@
|
||||
package docspell.common
|
||||
|
||||
import cats.implicits._
|
||||
import scala.concurrent.duration.{FiniteDuration, Duration => SDur}
|
||||
import java.time.{Duration => JDur}
|
||||
import java.util.concurrent.TimeUnit
|
||||
import io.circe._
|
||||
|
||||
import scala.concurrent.duration.{Duration => SDur, FiniteDuration}
|
||||
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
|
||||
import io.circe._
|
||||
|
||||
case class Duration(nanos: Long) {
|
||||
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.common
|
||||
|
||||
import java.io.IOException
|
||||
import java.nio.file._
|
||||
import java.nio.file.attribute.BasicFileAttributes
|
||||
import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor}
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
object File {
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.common
|
||||
|
||||
import scodec.bits.ByteVector
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
final class Hash(bytes: ByteVector) {
|
||||
|
||||
private def digest(name: String): String =
|
||||
|
@ -4,8 +4,9 @@ import java.security.SecureRandom
|
||||
import java.util.UUID
|
||||
|
||||
import cats.Eq
|
||||
import cats.implicits._
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.common
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import cats.data.NonEmptyList
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
|
||||
sealed trait ItemState { self: Product =>
|
||||
|
||||
final def name: String =
|
||||
|
@ -1,17 +1,19 @@
|
||||
package docspell.common
|
||||
|
||||
import java.net.URL
|
||||
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
import cats.data.NonEmptyList
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import docspell.common.LenientUri.Path
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import java.net.URLEncoder
|
||||
import scodec.bits.ByteVector
|
||||
import cats.effect.Resource
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
import java.net.URLEncoder
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
import cats.effect.Resource
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common.LenientUri.Path
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
/** A URI.
|
||||
*
|
||||
|
@ -1,7 +1,9 @@
|
||||
package docspell.common
|
||||
|
||||
import cats.effect.Sync
|
||||
|
||||
import docspell.common.syntax.all._
|
||||
|
||||
import org.log4s.{Logger => Log4sLogger}
|
||||
|
||||
trait Logger[F[_]] {
|
||||
|
@ -1,13 +1,16 @@
|
||||
package docspell.common
|
||||
|
||||
import cats.implicits._
|
||||
import java.time.LocalDate
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
import docspell.common._
|
||||
import cats.implicits._
|
||||
import cats.kernel.Order
|
||||
|
||||
import docspell.common.MetaProposal.Candidate
|
||||
import docspell.common._
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
import java.time.LocalDate
|
||||
import cats.kernel.Order
|
||||
|
||||
/** A proposed meta data to an item.
|
||||
*
|
||||
|
@ -2,7 +2,9 @@ package docspell.common
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
import cats.kernel.Monoid
|
||||
|
||||
import docspell.common.MetaProposal.Candidate
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
|
||||
|
@ -1,11 +1,14 @@
|
||||
package docspell.common
|
||||
|
||||
import docspell.common.syntax.all._
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import java.nio.charset.StandardCharsets
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
|
||||
import docspell.common.syntax.all._
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
|
||||
/** A MIME Type impl with just enough features for the use here.
|
||||
*/
|
||||
case class MimeType(primary: String, sub: String, params: Map[String, String]) {
|
||||
|
@ -1,8 +1,10 @@
|
||||
package docspell.common
|
||||
|
||||
import io.circe._, io.circe.generic.semiauto._
|
||||
import docspell.common.syntax.all._
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
|
||||
/** Arguments to the notification task.
|
||||
*
|
||||
* This tasks queries items with a due date and informs the user via
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.common
|
||||
|
||||
import cats.effect._
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
import cats.effect._
|
||||
|
||||
/** Captures thread pools to use in an application.
|
||||
*/
|
||||
case class Pools(
|
||||
|
@ -1,7 +1,8 @@
|
||||
package docspell.common
|
||||
|
||||
import cats.implicits._
|
||||
import cats.Order
|
||||
import cats.implicits._
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
|
||||
sealed trait Priority { self: Product =>
|
||||
|
@ -1,8 +1,10 @@
|
||||
package docspell.common
|
||||
|
||||
import io.circe._, io.circe.generic.semiauto._
|
||||
import docspell.common.ProcessItemArgs._
|
||||
import docspell.common.syntax.all._
|
||||
import ProcessItemArgs._
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
|
||||
/** Arguments to the process-item task.
|
||||
*
|
||||
|
@ -1,8 +1,10 @@
|
||||
package docspell.common
|
||||
|
||||
import io.circe._, io.circe.generic.semiauto._
|
||||
import docspell.common.syntax.all._
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
|
||||
/** Arguments to the poll-mailbox task.
|
||||
*
|
||||
* This tasks queries user mailboxes and pushes found mails into
|
||||
|
@ -5,12 +5,12 @@ import java.lang.ProcessBuilder.Redirect
|
||||
import java.nio.file.Path
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import fs2.{Stream, io, text}
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import cats.implicits._
|
||||
import fs2.{Stream, io, text}
|
||||
|
||||
object SystemCommand {
|
||||
|
||||
final case class Config(program: String, args: Seq[String], timeout: Duration) {
|
||||
|
@ -1,12 +1,14 @@
|
||||
package docspell.common
|
||||
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import java.util.concurrent.{Executors, ThreadFactory}
|
||||
import cats.effect._
|
||||
import scala.concurrent._
|
||||
import java.util.concurrent.ForkJoinPool
|
||||
import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory
|
||||
import java.util.concurrent.ForkJoinWorkerThread
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import java.util.concurrent.{Executors, ThreadFactory}
|
||||
|
||||
import scala.concurrent._
|
||||
|
||||
import cats.effect._
|
||||
|
||||
object ThreadFactories {
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package docspell.common
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
import java.time.temporal.ChronoUnit
|
||||
import java.time.{Instant, LocalDate, ZoneId}
|
||||
|
||||
import cats.effect.Sync
|
||||
|
||||
import io.circe.{Decoder, Encoder}
|
||||
import java.time.temporal.ChronoUnit
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
case class Timestamp(value: Instant) {
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package docspell.common.config
|
||||
|
||||
import scala.reflect.ClassTag
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import com.github.eikek.calev.CalEvent
|
||||
import pureconfig._
|
||||
import pureconfig.error.{CannotConvert, FailureReason}
|
||||
import scodec.bits.ByteVector
|
||||
import com.github.eikek.calev.CalEvent
|
||||
|
||||
import scala.reflect.ClassTag
|
||||
|
||||
object Implicits {
|
||||
implicit val lenientUriReader: ConfigReader[LenientUri] =
|
||||
|
@ -2,6 +2,7 @@ package docspell.common.syntax
|
||||
|
||||
import cats.effect.Sync
|
||||
import fs2.Stream
|
||||
|
||||
import org.log4s.Logger
|
||||
|
||||
trait LoggerSyntax {
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.common.syntax
|
||||
|
||||
import cats.effect.Sync
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import io.circe._
|
||||
import io.circe.parser._
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package docspell.common.syntax
|
||||
|
||||
import cats.implicits._
|
||||
|
||||
import io.circe.Decoder
|
||||
import io.circe.parser._
|
||||
|
||||
|
@ -2,9 +2,10 @@ package docspell.convert
|
||||
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
import fs2._
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.convert.ConversionResult.Handler
|
||||
import docspell.convert.extern.{Tesseract, Unoconv, WkHtmlPdf}
|
||||
|
@ -2,6 +2,7 @@ package docspell.convert
|
||||
|
||||
import cats.data.Kleisli
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common.MimeType
|
||||
|
||||
sealed trait ConversionResult[F[_]] {
|
||||
|
@ -1,7 +1,8 @@
|
||||
package docspell.convert
|
||||
import scodec.bits.ByteVector
|
||||
import java.nio.charset.Charset
|
||||
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
@FunctionalInterface
|
||||
trait SanitizeHtml {
|
||||
|
||||
|
@ -2,9 +2,10 @@ package docspell.convert.extern
|
||||
|
||||
import java.nio.file.Path
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.{Pipe, Stream}
|
||||
|
||||
import docspell.common._
|
||||
import docspell.convert.ConversionResult
|
||||
import docspell.convert.ConversionResult.{Handler, successPdf, successPdfTxt}
|
||||
|
@ -4,6 +4,7 @@ import java.nio.file.Path
|
||||
|
||||
import cats.effect._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.convert.ConversionResult
|
||||
import docspell.convert.ConversionResult.Handler
|
||||
|
@ -4,6 +4,7 @@ import java.nio.file.Path
|
||||
|
||||
import cats.effect._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.convert.ConversionResult
|
||||
import docspell.convert.ConversionResult.Handler
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.convert.extern
|
||||
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.file.Path
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.{Chunk, Stream}
|
||||
|
||||
import docspell.common._
|
||||
import docspell.convert.{ConversionResult, SanitizeHtml}
|
||||
import docspell.convert.ConversionResult.Handler
|
||||
import java.nio.charset.Charset
|
||||
import docspell.convert.{ConversionResult, SanitizeHtml}
|
||||
|
||||
object WkHtmlPdf {
|
||||
|
||||
|
@ -3,18 +3,20 @@ package docspell.convert.flexmark
|
||||
import java.io.{InputStream, InputStreamReader}
|
||||
import java.nio.charset.Charset
|
||||
import java.util
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension
|
||||
import com.vladsch.flexmark.ext.tables.TablesExtension
|
||||
import com.vladsch.flexmark.html.HtmlRenderer
|
||||
import com.vladsch.flexmark.parser.Parser
|
||||
import com.vladsch.flexmark.util.data.{DataKey, MutableDataSet}
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
||||
object Markdown {
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
package docspell.extract
|
||||
|
||||
import docspell.common.MimeType
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import docspell.common.MimeType
|
||||
|
||||
sealed trait ExtractResult {
|
||||
|
||||
def textOption: Option[String]
|
||||
|
@ -2,15 +2,16 @@ package docspell.extract
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.extract.internal.Text
|
||||
import docspell.extract.ocr.{OcrType, TextExtract}
|
||||
import docspell.extract.odf.{OdfExtract, OdfType}
|
||||
import docspell.extract.poi.{PoiExtract, PoiType}
|
||||
import docspell.extract.rtf.RtfExtract
|
||||
import docspell.extract.internal.Text
|
||||
import fs2.Stream
|
||||
import docspell.files.TikaMimetype
|
||||
import docspell.files.ImageSize
|
||||
import docspell.files.TikaMimetype
|
||||
|
||||
trait Extraction[F[_]] {
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package docspell.extract
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common.{Language, Logger}
|
||||
import docspell.extract.internal.Text
|
||||
import docspell.extract.ocr.{OcrConfig, TextExtract}
|
||||
import docspell.extract.pdfbox.PdfboxExtract
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
object PdfExtract {
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.nio.file.Path
|
||||
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
||||
object Ocr {
|
||||
|
@ -1,11 +1,12 @@
|
||||
package docspell.extract.ocr
|
||||
|
||||
import cats.effect.{Blocker, ContextShift, Sync}
|
||||
import docspell.common._
|
||||
import docspell.files._
|
||||
import docspell.extract.internal.Text
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.extract.internal.Text
|
||||
import docspell.files._
|
||||
|
||||
object TextExtract {
|
||||
|
||||
def extract[F[_]: Sync: ContextShift](
|
||||
|
@ -1,18 +1,20 @@
|
||||
package docspell.extract.odf
|
||||
|
||||
import java.io.{ByteArrayInputStream, InputStream}
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
import java.io.{ByteArrayInputStream, InputStream}
|
||||
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
import org.apache.tika.metadata.Metadata
|
||||
import org.apache.tika.parser.ParseContext
|
||||
import org.apache.tika.parser.odf.OpenDocumentParser
|
||||
import org.apache.tika.sax.BodyContentHandler
|
||||
|
||||
import scala.util.Try
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
object OdfExtract {
|
||||
|
||||
def get[F[_]: Sync](data: Stream[F, Byte]): F[Either[Throwable, Text]] =
|
||||
|
@ -3,15 +3,17 @@ package docspell.extract.pdfbox
|
||||
import java.io.InputStream
|
||||
import java.nio.file.Path
|
||||
|
||||
import cats.implicits._
|
||||
import scala.util.{Try, Using}
|
||||
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument
|
||||
import org.apache.pdfbox.text.PDFTextStripper
|
||||
|
||||
import scala.util.{Try, Using}
|
||||
import fs2.Stream
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
object PdfboxExtract {
|
||||
|
||||
def get[F[_]: Sync](data: Stream[F, Byte]): F[Either[Throwable, Text]] =
|
||||
|
@ -2,9 +2,17 @@ package docspell.extract.poi
|
||||
|
||||
import java.io.{ByteArrayInputStream, InputStream}
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import cats.data.EitherT
|
||||
import cats.implicits._
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.extract.internal.Text
|
||||
import docspell.files.TikaMimetype
|
||||
|
||||
import org.apache.poi.hssf.extractor.ExcelExtractor
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook
|
||||
import org.apache.poi.hwpf.extractor.WordExtractor
|
||||
@ -12,12 +20,6 @@ import org.apache.poi.xssf.extractor.XSSFExcelExtractor
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook
|
||||
import org.apache.poi.xwpf.extractor.XWPFWordExtractor
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument
|
||||
import fs2.Stream
|
||||
|
||||
import scala.util.Try
|
||||
import docspell.common._
|
||||
import docspell.files.TikaMimetype
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
object PoiExtract {
|
||||
|
||||
|
@ -1,16 +1,17 @@
|
||||
package docspell.extract.rtf
|
||||
|
||||
import java.io.{ByteArrayInputStream, InputStream}
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect.Sync
|
||||
import docspell.common.MimeType
|
||||
import docspell.extract.internal.Text
|
||||
import fs2.Stream
|
||||
import javax.swing.text.rtf.RTFEditorKit
|
||||
|
||||
import scala.util.Try
|
||||
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common.MimeType
|
||||
import docspell.extract.internal.Text
|
||||
|
||||
object RtfExtract {
|
||||
|
||||
val rtfType = MimeType.application("rtf")
|
||||
|
@ -2,16 +2,16 @@ package docspell.files
|
||||
|
||||
import java.io.{ByteArrayInputStream, InputStream}
|
||||
import java.nio.file.Path
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import fs2.Stream
|
||||
import javax.imageio.stream.{FileImageInputStream, ImageInputStream}
|
||||
import javax.imageio.{ImageIO, ImageReader}
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.{Try, Using}
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
object ImageSize {
|
||||
|
||||
/** Return the image size from its header without reading
|
||||
|
@ -1,19 +1,22 @@
|
||||
package docspell.files
|
||||
|
||||
import java.io.BufferedInputStream
|
||||
import java.nio.file.{Files, Path}
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.file.{Files, Path}
|
||||
|
||||
import scala.jdk.CollectionConverters._
|
||||
import scala.util.Using
|
||||
import cats.implicits._
|
||||
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import org.apache.tika.config.TikaConfig
|
||||
import org.apache.tika.metadata.{HttpHeaders, Metadata, TikaMetadataKeys}
|
||||
import org.apache.tika.mime.MediaType
|
||||
import org.apache.tika.parser.txt.Icu4jEncodingDetector
|
||||
import docspell.common._
|
||||
|
||||
object TikaMimetype {
|
||||
private val tika = new TikaConfig().getDetector
|
||||
|
@ -1,11 +1,13 @@
|
||||
package docspell.files
|
||||
|
||||
import java.io.InputStream
|
||||
import java.nio.file.Paths
|
||||
import java.util.zip.ZipInputStream
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.{Pipe, Stream}
|
||||
import java.io.InputStream
|
||||
import java.util.zip.ZipInputStream
|
||||
import java.nio.file.Paths
|
||||
|
||||
import docspell.common.Binary
|
||||
|
||||
object Zip {
|
||||
|
@ -1,11 +1,13 @@
|
||||
package docspell.ftsclient
|
||||
|
||||
import fs2.Stream
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import org.log4s.getLogger
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import org.log4s.getLogger
|
||||
|
||||
/** The fts client is the interface for docspell to a fulltext search
|
||||
* engine.
|
||||
*
|
||||
|
@ -1,8 +1,7 @@
|
||||
package docspell.ftsclient
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import FtsResult.ItemMatch
|
||||
import docspell.ftsclient.FtsResult.ItemMatch
|
||||
|
||||
final case class FtsResult(
|
||||
qtime: Duration,
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import io.circe._
|
||||
import docspell.common._
|
||||
|
||||
import io.circe._
|
||||
|
||||
final class Field(val name: String) extends AnyVal {
|
||||
|
||||
override def toString(): String = s"Field($name)"
|
||||
|
@ -1,9 +1,10 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
|
||||
import io.circe._
|
||||
import io.circe.syntax._
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
|
||||
trait JsonCodec {
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import docspell.ftsclient.FtsQuery
|
||||
|
||||
import io.circe._
|
||||
import io.circe.generic.semiauto._
|
||||
import docspell.ftsclient.FtsQuery
|
||||
|
||||
final case class QueryData(
|
||||
query: String,
|
||||
|
@ -1,15 +1,16 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import fs2.Stream
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.middleware.Logger
|
||||
import org.log4s.getLogger
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.middleware.Logger
|
||||
import org.log4s.getLogger
|
||||
|
||||
final class SolrFtsClient[F[_]: Effect](
|
||||
solrUpdate: SolrUpdate[F],
|
||||
solrSetup: SolrSetup[F],
|
||||
|
@ -1,15 +1,16 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import cats.effect._
|
||||
import org.http4s._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.circe._
|
||||
import org.http4s.circe.CirceEntityDecoder._
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
import _root_.io.circe.syntax._
|
||||
|
||||
import docspell.ftsclient._
|
||||
import JsonCodec._
|
||||
import docspell.ftssolr.JsonCodec._
|
||||
|
||||
import _root_.io.circe.syntax._
|
||||
import org.http4s._
|
||||
import org.http4s.circe.CirceEntityDecoder._
|
||||
import org.http4s.circe._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
|
||||
trait SolrQuery[F[_]] {
|
||||
|
||||
|
@ -1,15 +1,17 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import cats.effect._
|
||||
import org.http4s._
|
||||
import cats.implicits._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.circe._
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
import _root_.io.circe.syntax._
|
||||
|
||||
import docspell.common._
|
||||
|
||||
import _root_.io.circe._
|
||||
import _root_.io.circe.generic.semiauto._
|
||||
import docspell.common._
|
||||
import _root_.io.circe.syntax._
|
||||
import org.http4s._
|
||||
import org.http4s.circe._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
|
||||
trait SolrSetup[F[_]] {
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
package docspell.ftssolr
|
||||
|
||||
import cats.effect._
|
||||
import org.http4s._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.circe._
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
import _root_.io.circe._
|
||||
import _root_.io.circe.syntax._
|
||||
|
||||
import docspell.ftsclient._
|
||||
import JsonCodec._
|
||||
import docspell.ftssolr.JsonCodec._
|
||||
|
||||
import _root_.io.circe._
|
||||
import _root_.io.circe.syntax._
|
||||
import org.http4s._
|
||||
import org.http4s.circe._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.dsl.Http4sClientDsl
|
||||
|
||||
trait SolrUpdate[F[_]] {
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
package docspell.joex
|
||||
|
||||
import docspell.analysis.TextAnalysisConfig
|
||||
import docspell.backend.Config.Files
|
||||
import docspell.common._
|
||||
import docspell.joex.scheduler.{PeriodicSchedulerConfig, SchedulerConfig}
|
||||
import docspell.store.JdbcConfig
|
||||
import docspell.convert.ConvertConfig
|
||||
import docspell.extract.ExtractConfig
|
||||
import docspell.joex.hk.HouseKeepingConfig
|
||||
import docspell.backend.Config.Files
|
||||
import docspell.ftssolr.SolrConfig
|
||||
import docspell.joex.hk.HouseKeepingConfig
|
||||
import docspell.joex.scheduler.{PeriodicSchedulerConfig, SchedulerConfig}
|
||||
import docspell.store.JdbcConfig
|
||||
|
||||
case class Config(
|
||||
appId: Ident,
|
||||
|
@ -1,9 +1,10 @@
|
||||
package docspell.joex
|
||||
|
||||
import docspell.common.config.Implicits._
|
||||
import docspell.joex.scheduler.CountingScheme
|
||||
|
||||
import pureconfig._
|
||||
import pureconfig.generic.auto._
|
||||
import docspell.joex.scheduler.CountingScheme
|
||||
|
||||
object ConfigFile {
|
||||
import Implicits._
|
||||
|
@ -1,26 +1,29 @@
|
||||
package docspell.joex
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import emil.javamail._
|
||||
import fs2.concurrent.SignallingRef
|
||||
import scala.concurrent.ExecutionContext
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.blaze.BlazeClientBuilder
|
||||
import docspell.common._
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.concurrent.SignallingRef
|
||||
|
||||
import docspell.backend.ops._
|
||||
import docspell.common._
|
||||
import docspell.ftsclient.FtsClient
|
||||
import docspell.ftssolr.SolrFtsClient
|
||||
import docspell.joex.fts.{MigrationTask, ReIndexTask}
|
||||
import docspell.joex.hk._
|
||||
import docspell.joex.notify._
|
||||
import docspell.joex.fts.{MigrationTask, ReIndexTask}
|
||||
import docspell.joex.scanmailbox._
|
||||
import docspell.joex.process.ItemHandler
|
||||
import docspell.joex.scanmailbox._
|
||||
import docspell.joex.scheduler._
|
||||
import docspell.joexapi.client.JoexClient
|
||||
import docspell.store.Store
|
||||
import docspell.store.queue._
|
||||
import docspell.store.records.RJobLog
|
||||
import docspell.ftsclient.FtsClient
|
||||
import docspell.ftssolr.SolrFtsClient
|
||||
|
||||
import emil.javamail._
|
||||
import org.http4s.client.Client
|
||||
import org.http4s.client.blaze.BlazeClientBuilder
|
||||
|
||||
final class JoexAppImpl[F[_]: ConcurrentEffect: ContextShift: Timer](
|
||||
cfg: Config,
|
||||
|
@ -2,15 +2,17 @@ package docspell.joex
|
||||
|
||||
import cats.effect._
|
||||
import cats.effect.concurrent.Ref
|
||||
import docspell.common.Pools
|
||||
import docspell.joex.routes._
|
||||
import org.http4s.server.blaze.BlazeServerBuilder
|
||||
import org.http4s.implicits._
|
||||
import fs2.Stream
|
||||
import fs2.concurrent.SignallingRef
|
||||
|
||||
import docspell.common.Pools
|
||||
import docspell.joex.routes._
|
||||
|
||||
import org.http4s.HttpApp
|
||||
import org.http4s.server.middleware.Logger
|
||||
import org.http4s.implicits._
|
||||
import org.http4s.server.Router
|
||||
import org.http4s.server.blaze.BlazeServerBuilder
|
||||
import org.http4s.server.middleware.Logger
|
||||
|
||||
object JoexServer {
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
package docspell.joex
|
||||
|
||||
import cats.effect.{Blocker, ExitCode, IO, IOApp}
|
||||
import cats.implicits._
|
||||
|
||||
import java.nio.file.{Files, Paths}
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common.{Banner, Pools, ThreadFactories}
|
||||
|
||||
import org.log4s._
|
||||
|
||||
object Main extends IOApp {
|
||||
|
@ -1,9 +1,10 @@
|
||||
package docspell.joex.extract
|
||||
|
||||
import java.nio.charset.Charset
|
||||
|
||||
import emil.BodyContent
|
||||
import emil.jsoup._
|
||||
import scodec.bits.ByteVector
|
||||
import java.nio.charset.Charset
|
||||
|
||||
object JsoupSanitizer {
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
package docspell.joex.fts
|
||||
|
||||
import docspell.common.Logger
|
||||
import docspell.ftsclient.FtsClient
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.scheduler.Context
|
||||
import docspell.store.Store
|
||||
import docspell.ftsclient.FtsClient
|
||||
|
||||
case class FtsContext[F[_]](
|
||||
cfg: Config.FullTextSearch,
|
||||
|
@ -1,13 +1,14 @@
|
||||
package docspell.joex.fts
|
||||
|
||||
import cats.effect._
|
||||
import cats.data.{Kleisli, NonEmptyList}
|
||||
import cats.{ApplicativeError, FlatMap, Semigroup}
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import cats.{ApplicativeError, FlatMap, Semigroup}
|
||||
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
import docspell.joex.scheduler.Context
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.scheduler.Context
|
||||
import docspell.store.queries.{QAttachment, QItem}
|
||||
|
||||
object FtsWork {
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.joex.fts
|
||||
|
||||
import cats.Traverse
|
||||
import cats.data.{Kleisli, OptionT}
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import cats.data.{Kleisli, OptionT}
|
||||
import cats.Traverse
|
||||
|
||||
import docspell.common._
|
||||
import docspell.joex.Config
|
||||
import docspell.store.{AddResult, Store}
|
||||
import docspell.store.records.RFtsMigration
|
||||
import docspell.ftsclient._
|
||||
import docspell.joex.Config
|
||||
import docspell.store.records.RFtsMigration
|
||||
import docspell.store.{AddResult, Store}
|
||||
|
||||
case class Migration[F[_]](
|
||||
version: Int,
|
||||
|
@ -2,10 +2,11 @@ package docspell.joex.fts
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.ftsclient._
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.scheduler.Task
|
||||
import docspell.ftsclient._
|
||||
import docspell.store.records.RJob
|
||||
|
||||
object MigrationTask {
|
||||
|
@ -1,11 +1,12 @@
|
||||
package docspell.joex.fts
|
||||
|
||||
import cats.effect._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.scheduler.Task
|
||||
import docspell.ftsclient._
|
||||
import FtsWork.syntax._
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.fts.FtsWork.syntax._
|
||||
import docspell.joex.scheduler.Task
|
||||
|
||||
object ReIndexTask {
|
||||
type Args = ReIndexTaskArgs
|
||||
|
@ -1,7 +1,7 @@
|
||||
package docspell.joex.hk
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.joex.scheduler.Task
|
||||
|
@ -1,7 +1,7 @@
|
||||
package docspell.joex.hk
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.Stream
|
||||
|
||||
import docspell.common._
|
||||
|
@ -1,9 +1,9 @@
|
||||
package docspell.joex.hk
|
||||
|
||||
import com.github.eikek.calev.CalEvent
|
||||
import docspell.common._
|
||||
import docspell.joex.hk.HouseKeepingConfig._
|
||||
|
||||
import HouseKeepingConfig._
|
||||
import com.github.eikek.calev.CalEvent
|
||||
|
||||
case class HouseKeepingConfig(
|
||||
schedule: CalEvent,
|
||||
|
@ -1,14 +1,15 @@
|
||||
package docspell.joex.hk
|
||||
|
||||
import cats.implicits._
|
||||
import cats.effect._
|
||||
import com.github.eikek.calev._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.joex.Config
|
||||
import docspell.joex.scheduler.Task
|
||||
import docspell.store.records._
|
||||
|
||||
import com.github.eikek.calev._
|
||||
|
||||
object HouseKeepingTask {
|
||||
private val periodicId = Ident.unsafe("docspell-houskeeping")
|
||||
|
||||
|
@ -3,15 +3,16 @@ package docspell.joex.mail
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import fs2.{Pipe, Stream}
|
||||
import emil.{MimeType => _, _}
|
||||
import emil.javamail.syntax._
|
||||
import emil.tnef.TnefExtract
|
||||
import emil.markdown._
|
||||
import emil.jsoup._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.syntax.MimeTypes._
|
||||
|
||||
import emil.javamail.syntax._
|
||||
import emil.jsoup._
|
||||
import emil.markdown._
|
||||
import emil.tnef.TnefExtract
|
||||
import emil.{MimeType => _, _}
|
||||
|
||||
object ReadMail {
|
||||
|
||||
def readBytesP[F[_]: ConcurrentEffect: ContextShift](
|
||||
|
@ -1,12 +1,12 @@
|
||||
package docspell.joex.notify
|
||||
|
||||
import docspell.common._
|
||||
import docspell.joex.notify.YamuscaConverter._
|
||||
import docspell.store.queries.QItem
|
||||
|
||||
import yamusca.implicits._
|
||||
import yamusca.imports._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.queries.QItem
|
||||
import docspell.joex.notify.YamuscaConverter._
|
||||
|
||||
/** The context for rendering the e-mail template. */
|
||||
case class MailContext(
|
||||
items: List[MailContext.ItemData],
|
||||
|
@ -1,19 +1,20 @@
|
||||
package docspell.joex.notify
|
||||
|
||||
import cats.implicits._
|
||||
import cats.data.OptionT
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.backend.ops.OItemSearch.Batch
|
||||
import docspell.common._
|
||||
import docspell.joex.mail.EmilHeader
|
||||
import docspell.joex.scheduler.{Context, Task}
|
||||
import docspell.store.queries.QItem
|
||||
import docspell.store.records._
|
||||
|
||||
import emil._
|
||||
import emil.builder._
|
||||
import emil.markdown._
|
||||
import emil.javamail.syntax._
|
||||
|
||||
import docspell.common._
|
||||
import docspell.backend.ops.OItemSearch.Batch
|
||||
import docspell.store.records._
|
||||
import docspell.store.queries.QItem
|
||||
import docspell.joex.scheduler.{Context, Task}
|
||||
import cats.data.OptionT
|
||||
import docspell.joex.mail.EmilHeader
|
||||
import emil.markdown._
|
||||
|
||||
object NotifyDueItemsTask {
|
||||
val maxItems: Int = 7
|
||||
|
@ -1,9 +1,10 @@
|
||||
package docspell.joex.notify
|
||||
|
||||
import yamusca.imports._
|
||||
import yamusca.implicits._
|
||||
import docspell.common._
|
||||
|
||||
import yamusca.implicits._
|
||||
import yamusca.imports._
|
||||
|
||||
trait YamuscaConverter {
|
||||
|
||||
implicit val uriConverter: ValueConverter[LenientUri] =
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user