Ruck changelog
5.0.0
Major
Removed TypeScript triple slash reference comments from Ruck modules that were originally intended to enable DOM types. Ruck projects now must have a Deno config file (
deno.json
ordeno.jsonc
), containing:{ "compilerOptions": { "lib": [ "dom", "dom.iterable", "dom.asynciterable", "deno.ns", "deno.unstable" ] } }
Patch
- Updated dependencies.
- Updated GitHub Actions CI config:
- Updated
actions/checkout
to v3.
- Updated
- Implemented a
deno.json
Deno config file.
4.0.0
Major
- The
navigate
function powering Ruck app route navigation on the client that’s populated in the React contextNavigateContext
by the React componentClientProvider
now converts a relative URL used for optionurl
to an absolute URL usingdocument.baseURI
as the base instead oflocation.origin
. This is consistent with how a nativea
element with ahref
attribute relative to a documentbase
element navigates.
Minor
- The function
serve
optionclientImportMap
now also accepts an import map object.
Patch
- Updated dependencies.
- Use development versions of React related dependencies in the development import map.
- Function
documentHasStyleSheet
fixes and improvements:- A relative URL used for argument 1
href
now converts to an absolute URL usingdocument.baseURI
as the base instead oflocation.origin
. - Added runtime argument type checks.
- Added tests.
- A relative URL used for argument 1
- React hook
useOnClickRouteLink
fixes and improvements:- Now the click event handler doesn’t do anything if the event default action
is already prevented, if a non main mouse button was pressed, or if any of
the following keys were pressed during the click:
- Alt (in Safari, downloads the link)
- Control (in Safari, displays the link context menu)
- Meta (in Safari, opens the link in a new tab)
- Shift (in Safari, adds the link to Reading List)
- Added tests.
- Now the click event handler doesn’t do anything if the event default action
is already prevented, if a non main mouse button was pressed, or if any of
the following keys were pressed during the click:
- Added tests for the React component
Effect
. - Added tests for the function
hydrate
. - Moved code into
try
blocks in tests. - Tidied order of imports in tests.
- Tweaked whitespace in
scripts/test.sh
. - Added to the readme “Examples” section.
3.0.0
Major
- Updated the required Deno version to v1.20.1+.
- Removed a
@ts-ignore
comment within tests that’s redundant for TypeScript v4.6+.
Patch
- Updated dependencies.
- Updated
publicFileResponse.mjs
:- Prevent directories within a Ruck project public directory from being served as if they are files.
- Close the open file if there’s an error when preparing a public file response.
2.0.0
Major
- Route related function/module names and types have been improved to clarify in
which situations route content may be a promise. When a route is being
prepared and may have a promise for content it’s called a “route plan”, and
when the resolved content renders it’s just called a “route”. The word “plan”
was chosen because sometimes navigation to a route doesn’t go according to
plan; the content promise (typically from a dynamic import) could reject or
the navigation could be aborted before the content promise resolves and is
ready to render.
- Renamed the function/module
routeDetailsForContentWithCss.mjs
toroutePlanForContentWithCss.mjs
. - The
Router
type (fromserve.mjs
) intended for the default export of a projectpublic/router.mjs
module now returns a newRoutePlan
type (also fromserve.mjs
) instead ofRouteDetails
, which has been removed. - The
Route
type (fromserve.mjs
) for theRouteContext
React context value that theuseRoute
React hook returns no longer suggests thecontent
property could be a promise. This type was previously used for both when a route was planned and rendering, and while it’s ok to plan a route without using a promise for the content, it created the false impression that the content for a rendered route might be a promise. - Reworded several error messages within
serve.mjs
.
- Renamed the function/module
Patch
- Updated dependencies.
- Fixed a readme code example comment typo.
- Improved the readme code example for a Ruck app component.
1.1.0
Minor
- The Ruck app server request handler created by the
serve
function fromserve.mjs
now reads the request headersx-forwarded-proto
andx-forwarded-host
when determining the route URL, which should be what the client originally used to start the request. Reverse proxy servers (load balancers, CDNs, etc.) may forward client requests to the Ruck app server using a different protocol or host. E.g. Fly.io forwardshttps:
requests to the deployed server usinghttp:
.
Patch
- Fixed relative URLs to project files in the readme.
- Corrected an example shell script in the readme.
- Tweaked example code in the readme.
- Removed a redundant image from the
.github
directory.
1.0.0
Initial release.