- Find a solution to prevent event listeners rebind on each render (useCallback?,
actions
property) - Add a solution to create a state that does not involve visual re-render (react ref like?)
- Find a way to type the parameters in the pages in TypeScript
- Use curly braces instead of double-dots for defining a route parameter
- Documentation for @arachnide/css
- Documentation for @arachnide/html
- Documentation for @arachnide/event
- More events for @arachnide/event
- External library for easing the use of SVG elements (@arachnide/svg)
- Add ESLint for TypeScript & good practice linting as well as code formatting (no prettier) and run the linter in a GitHub Action
- Documentation for the whole API
- Publish the NPM package
- Add badges (NPM, License, bundle size, ...)
- Create a cool logo
- Add a solution to be able to key elements for optimization purpose and figure out what we need to do with keyed elements
- Add a package for mathml components (
@arachnide/mathml
) - Add many examples like
examples/router
,examples/styling
, etc... - Create a
@arachnide/create
package in order to use the commandnpm create @arachnide
and scafold a new project - Figure out how to create batch updates (might not be necessary and can be userland thanks to the
update
handler) - Lazy loading should be explicit & expressive and must be userland, examples and types that can help should be added in the docs & sources
- Add support for the View Transition Web API (provide more options for the
pages
props in this case) - Add a section about the security, especially when using the attributes
textContent
andinnerHTML
with untrusted sources - Try to find vulnerabilities, resolve them & document them if they are part of the standard HTML spec
- Rename DOMReference to simply Reference as it could be used for non-rendereable state updates as well
- Create a
@arachnide/accessibility
package that enforces best practice for accessibility in the Web - Create a
isVirtualHTMLElement
helper function and use it wherever possible - Rename
element
tocreateElement
- Create a
VirtualSVGElement
class - Create a
VirtualMathMLElement
class - Create a
createMathMLElement
function - Create a
createSVGElement
function - Create a
isVirtualSVGElement
helper - Create a
isVirtualMathMLElement
helper - Rename
VirtualHTMLElement
toVirtualNamedElement
instead since it serves thehtml
,svg
&mathml
libraries - Add a third generic type for the
startApplication
to allow typing the routes and unlock features like type checked route in thechangePage
function => Or maybe we can do simpler by using an enumeration and update thechangePage
to compute the parameters from the route provided - Add a
isVirtualElementAttributeRemoved
helper function to ease out the reading of the source-code in the@arachnide/core
package - Find a better solution that throwing in the source-code of
@arachnide/core
for errors (warnings? log adapter? error return?) - Slice through the attributes that needs to be added in order to prevent looping over attributes again
- Add comments where missing in the source-code of all of the packages
- Make the changePage handle better when feeded with dynamic parameters
- Handle an error where the user cannot go back to the previous page without error if the current page was an unknown page
- Make the wildcard count on routes that use partial wildcard like /articles/*/details
- Create a function
createApplication
that returns thestartApplication
function with contexts (logger, DOM, patcher, navigation, ...) - Create a
NavigationAdapterInterface
interface that will allow creating interface for the navigation - Use the
NavigationAdapterInterface
in thecreateApplication
and create the two implementation for theNavigation
API andHistory
API - Better not found page design
- Create our own custom CSS library with component functions
- Check if lazy loading of functions or pages can be put in a state?
- Create an icon of 512x512
- Add a package for handling meta informations (
@arachnide/meta
?@arachnide/seo
?@arachnide/head
?) - Should we do server-rendering? Maybe best to keep it simple on the client-side but might be interesting to update the diffing algorithm to account for nodes that have already been added by SSR?