package sihl-email
Install
Dune Dependency
Authors
Maintainers
Sources
md5=ada35566185af0fdde18aed448d23aa8
sha512=4d7cae8948061249246d0a19ad8c1ea3dc5238557d6055b9fee3479af1451d089047c96524516aaea20f0896662a79919d7107ddc8911dd036e11cd5cdd5df7c
CHANGES.md.html
[0.6.0] - 2021-05-30
Added
Add CLI generators as built-in CLI commands
gen.service
(for generating CRUD services),gen.view
(for generating CRUD views) andgen.html
(for generating CRUD RESTful resources)Sihl.Web.Rest.{query, to_query_string, of_query_string, next_page, previous_page, last_page, first_page, query_filter, query_sort, query_limit, query_offset}
Add ParcelJS based asset pipeline to template project in
template
Database helpers to conveniently run exactly one caqti request
Sihl.Database.find
,Sihl.Database.find_opt
,Sihl.Database.exec
andSihl.Database.collect
The
search
function of the user service fromsihl-user
takes an optional argumentoffset
. This allows you to implement offset based pagination.
Changed
Replace the usaged of
Lwt.Syntax
withlwt_ppx
for nicer error messages in your Sihl appsRework built-in commands (
start
is nowserver
, commands are namespaced with.
)The command function in
Sihl.Command.make
returnsunit option Lwt.t
and Sihl takes care of printing the usage ifLwt.return None
is returnedReplaced
Sihl.Database.prepare_requests
withSihl.Database.prepare_search_request
Replaced
Sihl.Database.run_request
withSihl.Database.run_search_request
Make search query type
'a Sihl.Database.prepared_search_query
abstract to reduce API clutter. The search queries are highly specific to the implementation and are not likely to be re-used independently fromrun_search_request
.Change
query
to fully fledgedsearch
inSihl.Rest.SERVICE
to support paginated, filtered and sorted views
[0.5.0] - 2021-04-10
Added
Sihl.Web.Rest
provides helpers to quickly create HTML resources. This is useful to expose any service of typeSihl.Web.Rest.SERVICE
through the Internet by making it part of a web app.
[0.4.1] - 2021-03-31
Fixed
Register timezone removal migration in
sihl-queue
. This makes it easy to change the timezone on the server without breaking applications.
[0.4.0] - 2021-03-27
Changed
Get rid of
Sihl.Web.Middleware.htmx
,Sihl.Web.Htmx
can be used directly nowSihl.Web.Csrf.find
returnsstring option
, useOption.get
if you are sure that the CSRF middleware has been appliedTake custom
unauthenticated_handler
forSihl.Web.Middleware.bearer_token
and enforce existence ofBearer
token inAuthorization
headerWeb helpers moved from
Sihl.Web.Http
toSihl.Web
. InSihl.Web.Http
there is only the Opium based HTTP service.Replace middlewares with helpers where they don't have to be middlewares such as bearer token (
Sihl.Web.Request.bearer_token
), htmx (Sihl.Web.Htmx
) and session (Sihl.Web.Session
)Remove
form
middleware (Sihl.Web.Middleware.form
), useSihl.Web.Request
directly to parse form requestsReplace
Sihl.Web.Flash.find_custom
withSihl.Web.Flash.find
andSihl.Web.Flash.set_custom
withSihl.Web.Fash.set
to support key-value based semantics. If you need to store your custom string, simply store it under a key likeSihl.Web.Flash.set [("custom", value)] resp
and retrieve it withSihl.Web.Flash.find "custom" request
Use
conformist
0.4.0
Added
Read
Request-ID-X
header if present instead of generating a random id forSihl.Web.Id
Implement composable router API
Sihl.Web.{get, post, ...}
andSihl.Web.choose
.Implement job queue dashboard for
sihl-queue
[0.3.0] - 2021-03-12
Fixed
Replace functor based approach with service facade pattern based approach to increase ergonomy
Move
user_token
middleware tosihl-token
package
Added
Implement MariaDB and PostgreSql backends for all services except storage service
JSON Web Token backend for the token service
Default middlewares for server side rendered forms and JSON API
[0.2.2] - 2020-12-17
Fixed
Merge form data and urlencoded form parsing and provide them in one middleware
[0.2.1] - 2020-12-09
Fixed
Two subsequent
POST
request works now with the CSRF middleware
[0.2] - 2020-12-07
Fixed
Extract
sihl-core
,sihl-type
,sihl-contract
,sihl-user
,sihl-persistence
andsihl-web
as separate opam packagesIncrease session key size to 20 bytes
Sign session cookies with
SIHL_SECRET
Simplify session service API
Implement generic flash storage on top of session storage and replace the specific message service
Update to httpaf-based Opium 0.19.0
Added
File log reporter to store logs in
logs/error.log
andlogs/app.log
Add log source to log text
[0.1.10] - 2020-11-18
Fixed
Properly load
.env
files based on project root, can be set usingENV_FILES_PATH
Add custom error types for user actions to allow overriding errors displayed to users
Added
Determine project rood using markers such as the .git folder
[0.1.9] - 2020-11-16
Fixed
Get rid of
Core.Ctx.t
Make sure migrations and repo cleaners are registered when registering service
Sihl.Core.*
modules are now accessible directly underSihl.*
[0.1.8] - 2020-11-12
Fixed
Get rid of
Result.get_ok
because it swallows errors
[0.1.7] - 2020-11-03
Fixed
Simplify
Database.Service
API: Only providetransaction
,query
andfetch_pool
Fixe dune package names, private dune packages don't have generic names like
http
ordatabase
causing conflicts in a Sihl app
[0.1.6] - 2020-10-31
Fixed
Database.Service
andRepository.Service
are assumed to have just one implementation, so they are referenced directly in service implementations instead of passing them as functor argumentsExtract
Random.Service
from utils as standalone top level serviceMerge utils into one
utils.ml
file
HTTP API
Sihl.Http.Response
andSihl.Http.Request
have consistent APISihl.Middleware
contains all provided middlewaresImplement multi-part form data parsing
[0.1.5] - 2020-10-14
Fixed
Remove seed service since the same functionality
Simplify app abstraction, instead of
with_
use service APIs directlyExtract storage service as
sihl-storage
opam packageExtract email service as
sihl-email
opam packageExtract queue service as
sihl-queue
opam packageMove configuration and logging into core, neither of the are implemented as services
Replace
pcre
withre
as regex library to get rid of a system dependency on pcreSplit up
Sihl.Data
intoSihl.Migration
,Sihl.Repository
andSihl.Database
Move module signatures from
Foo.Service.Sig
toFoo.Sig
, the services might live in a third party opam package, but the signatures are staying insihl
Move
Sihl.App
toSihl.Core.App
and simplify app APIMove log service, config service and cmd service into core (they don't have to be provided to other services through functors)
Simplify Sihl app creation and service configuration
[0.1.4] - 2020-09-24
Fixed
Remove
reason
andtyxml-jsx
as dependency as they are not used anymore
Added
Various combinators for
Sihl.Seed.t
including constructor and field accessors
[0.1.3] - 2020-09-14
Added
Seed Service with commands
seedlist
andseedrun <name>
Fixed
Lifecycle API: A service now has two additional functions
start
andstop
, which are used in the lifecycle definitionDatabase service query functions
query
,atomic
andwith_connection
can now be nested
[0.1.2] - 2020-09-09
Fixed
Re-export
Sihl.Queue.Job.t
Export content types under
Sihl.Web
[0.1.1] - 2020-09-07
Fixed
Don't raise exception when user login fails if it is a user error
Remove dev tools as dev dependencies
Added
Storage service can remove files
Move README.md documentation to ocamldoc based documentation
[0.1.0] - 2020-09-03
Fixed
DB connection leaks caused deadlocks
Provide all service dependencies using functors
Move Opium & Cohttp specific stuff into the web server service implementation to allow for swappable implementation based on something like httpaf
Inject log service to all other services by default
Added
Support letters 0.2.0 for SMTP emailing
Switch to exception based service API
HTTP Response API to respond with file
Sihl.Web.Res.file
[0.0.56] - 2020-08-17
Fixed
Stop running integration tests during OPAM release
[0.0.55] - 2020-08-17
Added
Initial release of Sihl