package sihl-email
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- Changed
- [1.0.1] - 2021-09-17
- [1.0.0] - 2021-09-08
- [0.6.0] - 2021-04-30
- [0.5.0] - 2021-04-10
- [0.4.1] - 2021-03-31
- [0.4.0] - 2021-03-27
- [0.3.0] - 2021-03-12
- [0.2.2] - 2020-12-17
- [0.2.1] - 2020-12-09
- [0.2] - 2020-12-07
- [0.1.10] - 2020-11-18
- [0.1.9] - 2020-11-16
- [0.1.8] - 2020-11-12
- [0.1.7] - 2020-11-03
- [0.1.6] - 2020-10-31
- [0.1.5] - 2020-10-14
- [0.1.4] - 2020-09-24
- [0.1.3] - 2020-09-14
- [0.1.2] - 2020-09-09
- [0.1.1] - 2020-09-07
- [0.1.0] - 2020-09-03
- [0.0.56] - 2020-08-17
- [0.0.55] - 2020-08-17
Email service implementations for Sihl
Install
dune-project
Dependency
Authors
Maintainers
Sources
2.0.0.tar.gz
md5=8cde8cf002a145dc3223568924a34ba3
sha512=d61b776017feeb5e0a24624fa4c5db6f30d7c7badd8c696283cf51baf0c36d4d3335fee0fdf835e6d7289ce51d36439463014ce3b25a2eb15d05f331c094aa86
doc/CHANGES.html
[2.0.0] - 2021-10-04
Changed
- Added the concept of a service context
ctxwhich can be used for configuration that is valid for one function call only.
[1.0.1] - 2021-09-17
Added
- Support
multipart/form-datain CSRF middleware
[1.0.0] - 2021-09-08
Fixed
- It is now possible to register multiple instances of the same service type simultaneously
- Rename page title of queue dashboard
- Document
EMAIL_BYPASS_INTERCEPTandQUEUE_FORCE_ASYNC - Accept
true,Trueand1for truthy boolean env vars - Document global middlewares
- Fix issue where the default smtp certs path is an empty string
- Fix trailing slash middleware to work with
PREFIX_PATH
Changed
- The
search_queryforSihl.Database.prepare_search_requesthas to return the total amount of rows for that query without limit. On PostgreSQL and MariaDB this can be done withCOUNT(*) OVER() as total. Nocount_queryis needed anymore.
User service
- Add optional
given_nameandname - Deprecate
update_detailsin favor ofupdate - Consistent use of named arguments in service API
Added
- Optional argument
format_filterfor formatting the search keyword when filtering inSihl.Database.prepare_search_request
[0.6.0] - 2021-04-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.execandSihl.Database.collect - The
searchfunction of the user service fromsihl-usertakes an optional argumentoffset. This allows you to implement offset based pagination.
Changed
- Replace the usaged of
Lwt.Syntaxwithlwt_ppxfor nicer error messages in your Sihl apps - Rework built-in commands (
startis nowserver, commands are namespaced with.) - The command function in
Sihl.Command.makereturnsunit option Lwt.tand Sihl takes care of printing the usage ifLwt.return Noneis returned - Replaced
Sihl.Database.prepare_requestswithSihl.Database.prepare_search_request - Replaced
Sihl.Database.run_requestwithSihl.Database.run_search_request - Make search query type
'a Sihl.Database.prepared_search_queryabstract 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
queryto fully fledgedsearchinSihl.Rest.SERVICEto support paginated, filtered and sorted views
[0.5.0] - 2021-04-10
Added
Sihl.Web.Restprovides helpers to quickly create HTML resources. This is useful to expose any service of typeSihl.Web.Rest.SERVICEthrough 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.Htmxcan be used directly now Sihl.Web.Csrf.findreturnsstring option, useOption.getif you are sure that the CSRF middleware has been applied- Take custom
unauthenticated_handlerforSihl.Web.Middleware.bearer_tokenand enforce existence ofBearertoken inAuthorizationheader - Web helpers moved from
Sihl.Web.HttptoSihl.Web. InSihl.Web.Httpthere 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
formmiddleware (Sihl.Web.Middleware.form), useSihl.Web.Requestdirectly to parse form requests - Replace
Sihl.Web.Flash.find_customwithSihl.Web.Flash.findandSihl.Web.Flash.set_customwithSihl.Web.Fash.setto 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)] respand retrieve it withSihl.Web.Flash.find "custom" request - Use
conformist0.4.0
Added
- Read
Request-ID-Xheader 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_tokenmiddleware tosihl-tokenpackage
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
POSTrequest works now with the CSRF middleware
[0.2] - 2020-12-07
Fixed
- Extract
sihl-core,sihl-type,sihl-contract,sihl-user,sihl-persistenceandsihl-webas separate opam packages - Increase 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.logandlogs/app.log - Add log source to log text
[0.1.10] - 2020-11-18
Fixed
- Properly load
.envfiles 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_okbecause it swallows errors
[0.1.7] - 2020-11-03
Fixed
- Simplify
Database.ServiceAPI: Only providetransaction,queryandfetch_pool - Fixe dune package names, private dune packages don't have generic names like
httpordatabasecausing conflicts in a Sihl app
[0.1.6] - 2020-10-31
Fixed
Database.ServiceandRepository.Serviceare assumed to have just one implementation, so they are referenced directly in service implementations instead of passing them as functor arguments- Extract
Random.Servicefrom utils as standalone top level service - Merge utils into one
utils.mlfile
HTTP API
Sihl.Http.ResponseandSihl.Http.Requesthave consistent APISihl.Middlewarecontains all provided middlewares- Implement 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 directly - Extract storage service as
sihl-storageopam package - Extract email service as
sihl-emailopam package - Extract queue service as
sihl-queueopam package - Move configuration and logging into core, neither of the are implemented as services
- Replace
pcrewithreas regex library to get rid of a system dependency on pcre - Split up
Sihl.DataintoSihl.Migration,Sihl.RepositoryandSihl.Database - Move module signatures from
Foo.Service.SigtoFoo.Sig, the services might live in a third party opam package, but the signatures are staying insihl - Move
Sihl.ApptoSihl.Core.Appand simplify app API - Move 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
reasonandtyxml-jsxas dependency as they are not used anymore
Added
- Various combinators for
Sihl.Seed.tincluding constructor and field accessors
[0.1.3] - 2020-09-14
Added
- Seed Service with commands
seedlistandseedrun <name>
Fixed
- Lifecycle API: A service now has two additional functions
startandstop, which are used in the lifecycle definition - Database service query functions
query,atomicandwith_connectioncan 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
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- Changed
- [1.0.1] - 2021-09-17
- [1.0.0] - 2021-09-08
- [0.6.0] - 2021-04-30
- [0.5.0] - 2021-04-10
- [0.4.1] - 2021-03-31
- [0.4.0] - 2021-03-27
- [0.3.0] - 2021-03-12
- [0.2.2] - 2020-12-17
- [0.2.1] - 2020-12-09
- [0.2] - 2020-12-07
- [0.1.10] - 2020-11-18
- [0.1.9] - 2020-11-16
- [0.1.8] - 2020-11-12
- [0.1.7] - 2020-11-03
- [0.1.6] - 2020-10-31
- [0.1.5] - 2020-10-14
- [0.1.4] - 2020-09-24
- [0.1.3] - 2020-09-14
- [0.1.2] - 2020-09-09
- [0.1.1] - 2020-09-07
- [0.1.0] - 2020-09-03
- [0.0.56] - 2020-08-17
- [0.0.55] - 2020-08-17