- Added
serve_static()
method toFire
to serve a directory of static files directly outside the request loop - Move code over to rlang style programming
- Fixed a test failure only affecting the CRAN M1 machine
- Update to work with new future release
- Move from assertthat to rlang based type checking
- General upkeep (new CI, redocument, etc)
- Avoid tests that fails on some CRAN machines due to new testthat version
- Fix bug where delayed logging would result in wrong message being logged (#39)
- Remove some tests as new later architecture makes certain async operations untestable (#40)
- pkgdown site now available at https://fiery.data-imaginist.com
- Fix bug with root mounting of app where the root would be stripped before checking if it exists.
- Fix a bug when evaluating multiple futures at once, where the removal of the futures would throw an error (#28)
- Fix a bug preventing setting loggers on cloned apps (#30)
- The call that raises a caught error is now recorded in the log (#33)
- Add logging API. Set custom loggers with
set_logger()
and send messages to the log withlog()
. Logging is automatically delayed so it doesn't slow down request and message handling (#18). - Added
access_log_format
field to define how requests are logged. - Added
is_running()
method to query the state of the server. - Capture errors in each handler for events and delayed execution, so that evaluation of the other handlers are unaffected (#20).
- Document the use of delayed evaluation. See
?delay_doc
Fire$new()
now takes a port and host argument to set these fields on initialisation. (fixes #5)- BREAKING Results from before-request and before-message events are now
passed on to the request and message handlers as a list in the
arg_list
argument rather than as single arguments. - The host and port are now advertised when a server is started/resumed (#11)
- Fire objects now has a print method (#12)
- BREAKING fiery now uses the
reqres
Request and Response classes for handling http exchange. - BREAKING
attach()
now expect aon_attach()
method rather than aonAttach()
method from the plugin. It also expects aname
field and optionally arequire
field - BREAKING The
header
event now expect handlers to return a logical, withTRUE
indicating further processing, andFALSE
indicating termination. - Cycle events are now triggered when running with
block = FALSE
making the two run modes identical in their life cycle events. - BREAKING The
after-request
event will no longer pass the response to handlers. This can be retrieved from therequest
object. - The server can now be mounted at a path, which will strip that path from
request paths thus making the app logic independent on mounting. Use the
root
field to access and change the root location. - Websocket connections can now be closed from the server by using the
close_ws_con()
method. - Better documentation. Events and plugins now has their own documentation entries (fixes #10).
- Convert roxygen documentation to md format
- BREAKING fields now uses snake_case rather than camelCase for a more
consistent interface. This means
refreshRate
->refresh_rate
,triggerDir
->trigger_dir
. - Switch to MIT License
- Catch errors in start and resume event handlers
- DelayStack uses
sequential
futures withlazy = TRUE
because previously usedlazy
futures are deprecated
- Changed default host to 127.0.0.1
- Fixed test errors on Windows builders
- Added
fake_request
to generate fake, rook-compliant, request objects. Useful for testing - Added
header
method toFire
for setting global header policies - Added standard 4xx responses
- Added
FutureStack
class and subclasses to capture expressions for later, timed, and async evaluation - Added
delay
,remove_delay
,time
,remove_time
,async
, andremove_async
methods toFire
for adding delayed, timed, and async expressions for evaluation
- Added Fire class encapsulating the server runtime
- Added HandlerStack class to store and trigger event handlers