Skip to content

Latest commit

 

History

History
51 lines (51 loc) · 4.23 KB

TODO.md

File metadata and controls

51 lines (51 loc) · 4.23 KB
  • 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 command npm 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 and innerHTML 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 to createElement
  • 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 to VirtualNamedElement instead since it serves the html, svg & mathml libraries
  • Add a third generic type for the startApplication to allow typing the routes and unlock features like type checked route in the changePage function => Or maybe we can do simpler by using an enumeration and update the changePage 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 the startApplication function with contexts (logger, DOM, patcher, navigation, ...)
  • Create a NavigationAdapterInterface interface that will allow creating interface for the navigation
  • Use the NavigationAdapterInterface in the createApplication and create the two implementation for the Navigation API and History 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?