Spry.vala 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Inversion;
  2. using Astralis;
  3. namespace Spry {
  4. public class SpryModule : Object, Module {
  5. public void register_components (Container container) throws Error {
  6. container.register_singleton<PathProvider>();
  7. container.register_scoped<ComponentFactory>();
  8. container.register_startup<ContinuationProvider>()
  9. .as<Endpoint>()
  10. .with_metadata<EndpointRoute>(new EndpointRoute("/_spry/cnu/{token}"));
  11. container.register_startup<StaticResourceProvider>()
  12. .as<Endpoint>()
  13. .with_metadata<EndpointRoute>(new EndpointRoute("/_spry/res/{resource}"));
  14. container.register_scoped<ComponentEndpoint>()
  15. .as<Endpoint>()
  16. .with_metadata<EndpointRoute>(new EndpointRoute("/_spry/com/{component-id}/{action}"));
  17. container.register_startup<Static.HtmxResource>()
  18. .as<Spry.StaticResource>();
  19. container.register_startup<Static.HtmxSseResource>()
  20. .as<Spry.StaticResource>();
  21. }
  22. }
  23. public class SpryConfigurator : Object {
  24. private Container container = inject<Container>();
  25. public void add_template<T>(string prefix) {
  26. container.register_transient<T>()
  27. .as<PageTemplate> ()
  28. .with_metadata<TemplateRoutePrefix>(new TemplateRoutePrefix(prefix));
  29. }
  30. }
  31. }