Main.vala 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Astralis;
  2. using Invercargill;
  3. using Invercargill.DataStructures;
  4. using Inversion;
  5. using Spry;
  6. using Demo.Static;
  7. void main(string[] args) {
  8. int port = args.length > 1 ? int.parse(args[1]) : 8080;
  9. try {
  10. var application = new WebApplication(port);
  11. // Enable compression
  12. application.use_compression();
  13. // Add Spry module for component actions
  14. application.add_module<SpryModule>();
  15. // Configure templates
  16. var spry_cfg = application.configure_with<SpryConfigurator>();
  17. spry_cfg.add_template<MainTemplate>("");
  18. // Register static resources
  19. application.container.register_startup<DocsCssResource>()
  20. .as<Spry.StaticResource>();
  21. // Register demo stores (singletons for state persistence)
  22. application.add_singleton<CounterDemoStore>();
  23. application.add_singleton<TodoDemoStore>();
  24. // Add Components
  25. application.add_transient<CodeBlockComponent>();
  26. application.add_transient<DemoHostComponent>();
  27. application.add_transient<NavSidebarComponent>();
  28. // Add Demo Components
  29. application.add_transient<SimpleCounterDemo>();
  30. application.add_transient<TodoListDemo>();
  31. application.add_transient<TodoItemDemo>();
  32. application.add_transient<ProgressDemo>();
  33. application.add_transient<ProgressDemoWithSSE>();
  34. // Register page components
  35. application.add_transient<HomePage>();
  36. application.add_endpoint<HomePage>(new EndpointRoute("/"));
  37. // Components documentation pages
  38. application.add_transient<ComponentsOverviewPage>();
  39. application.add_endpoint<ComponentsOverviewPage>(new EndpointRoute("/components/overview"));
  40. application.add_transient<ComponentsTemplateSyntaxPage>();
  41. application.add_endpoint<ComponentsTemplateSyntaxPage>(new EndpointRoute("/components/template-syntax"));
  42. application.add_transient<ComponentsActionsPage>();
  43. application.add_endpoint<ComponentsActionsPage>(new EndpointRoute("/components/actions"));
  44. application.add_transient<ComponentsOutletsPage>();
  45. application.add_endpoint<ComponentsOutletsPage>(new EndpointRoute("/components/outlets"));
  46. application.add_transient<ComponentsContinuationsPage>();
  47. application.add_endpoint<ComponentsContinuationsPage>(new EndpointRoute("/components/continuations"));
  48. // Page Components documentation pages
  49. application.add_transient<PageComponentsOverviewPage>();
  50. application.add_endpoint<PageComponentsOverviewPage>(new EndpointRoute("/page-components/overview"));
  51. application.add_transient<PageTemplatesPage>();
  52. application.add_endpoint<PageTemplatesPage>(new EndpointRoute("/page-components/templates"));
  53. // Static Resources documentation pages
  54. application.add_transient<StaticResourcesOverviewPage>();
  55. application.add_endpoint<StaticResourcesOverviewPage>(new EndpointRoute("/static-resources/overview"));
  56. application.add_transient<StaticResourcesMkssrPage>();
  57. application.add_endpoint<StaticResourcesMkssrPage>(new EndpointRoute("/static-resources/spry-mkssr"));
  58. application.run();
  59. } catch (Error e) {
  60. printerr("Error: %s\n", e.message);
  61. Process.exit(1);
  62. }
  63. }