@noego/wood 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -0
- package/bin/axe.js +202 -0
- package/bin/stick.js +96 -0
- package/bin/wood.js +572 -0
- package/dist/bridge/backend_bridge.cjs +186 -0
- package/dist/bridge/backend_bridge.cjs.map +1 -0
- package/dist/bridge/backend_bridge.d.cts +32 -0
- package/dist/bridge/backend_bridge.d.ts +32 -0
- package/dist/bridge/backend_bridge.js +152 -0
- package/dist/bridge/backend_bridge.js.map +1 -0
- package/dist/bridge/backend_entry.cjs +64 -0
- package/dist/bridge/backend_entry.cjs.map +1 -0
- package/dist/bridge/backend_entry.d.cts +14 -0
- package/dist/bridge/backend_entry.d.ts +14 -0
- package/dist/bridge/backend_entry.js +39 -0
- package/dist/bridge/backend_entry.js.map +1 -0
- package/dist/bridge/index.cjs +34 -0
- package/dist/bridge/index.cjs.map +1 -0
- package/dist/bridge/index.d.cts +2 -0
- package/dist/bridge/index.d.ts +2 -0
- package/dist/bridge/index.js +8 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/client/controller_contract.cjs +17 -0
- package/dist/client/controller_contract.cjs.map +1 -0
- package/dist/client/controller_contract.d.cts +15 -0
- package/dist/client/controller_contract.d.ts +15 -0
- package/dist/client/controller_contract.js +1 -0
- package/dist/client/controller_contract.js.map +1 -0
- package/dist/client/global_polyfill.cjs +6 -0
- package/dist/client/global_polyfill.cjs.map +1 -0
- package/dist/client/global_polyfill.d.cts +2 -0
- package/dist/client/global_polyfill.d.ts +2 -0
- package/dist/client/global_polyfill.js +5 -0
- package/dist/client/global_polyfill.js.map +1 -0
- package/dist/client/index.cjs +451 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +75 -0
- package/dist/client/index.d.ts +75 -0
- package/dist/client/index.js +414 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/wood_controller.svelte.cjs +110 -0
- package/dist/client/wood_controller.svelte.cjs.map +1 -0
- package/dist/client/wood_controller.svelte.d.cts +30 -0
- package/dist/client/wood_controller.svelte.d.ts +30 -0
- package/dist/client/wood_controller.svelte.js +86 -0
- package/dist/client/wood_controller.svelte.js.map +1 -0
- package/dist/codegen/controller_registration_generator.cjs +138 -0
- package/dist/codegen/controller_registration_generator.cjs.map +1 -0
- package/dist/codegen/controller_registration_generator.d.cts +18 -0
- package/dist/codegen/controller_registration_generator.d.ts +18 -0
- package/dist/codegen/controller_registration_generator.js +104 -0
- package/dist/codegen/controller_registration_generator.js.map +1 -0
- package/dist/codegen/index.cjs +50 -0
- package/dist/codegen/index.cjs.map +1 -0
- package/dist/codegen/index.d.cts +10 -0
- package/dist/codegen/index.d.ts +10 -0
- package/dist/codegen/index.js +19 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/preload_generator.cjs +151 -0
- package/dist/codegen/preload_generator.cjs.map +1 -0
- package/dist/codegen/preload_generator.d.cts +8 -0
- package/dist/codegen/preload_generator.d.ts +8 -0
- package/dist/codegen/preload_generator.js +127 -0
- package/dist/codegen/preload_generator.js.map +1 -0
- package/dist/codegen/renderer_app_generator.cjs +397 -0
- package/dist/codegen/renderer_app_generator.cjs.map +1 -0
- package/dist/codegen/renderer_app_generator.d.cts +13 -0
- package/dist/codegen/renderer_app_generator.d.ts +13 -0
- package/dist/codegen/renderer_app_generator.js +363 -0
- package/dist/codegen/renderer_app_generator.js.map +1 -0
- package/dist/codegen/renderer_controller_registration_generator.cjs +122 -0
- package/dist/codegen/renderer_controller_registration_generator.cjs.map +1 -0
- package/dist/codegen/renderer_controller_registration_generator.d.cts +9 -0
- package/dist/codegen/renderer_controller_registration_generator.d.ts +9 -0
- package/dist/codegen/renderer_controller_registration_generator.js +88 -0
- package/dist/codegen/renderer_controller_registration_generator.js.map +1 -0
- package/dist/codegen/renderer_view_manifest_generator.cjs +126 -0
- package/dist/codegen/renderer_view_manifest_generator.cjs.map +1 -0
- package/dist/codegen/renderer_view_manifest_generator.d.cts +11 -0
- package/dist/codegen/renderer_view_manifest_generator.d.ts +11 -0
- package/dist/codegen/renderer_view_manifest_generator.js +92 -0
- package/dist/codegen/renderer_view_manifest_generator.js.map +1 -0
- package/dist/codegen/runtime_generator.cjs +156 -0
- package/dist/codegen/runtime_generator.cjs.map +1 -0
- package/dist/codegen/runtime_generator.d.cts +14 -0
- package/dist/codegen/runtime_generator.d.ts +14 -0
- package/dist/codegen/runtime_generator.js +122 -0
- package/dist/codegen/runtime_generator.js.map +1 -0
- package/dist/codegen/test_mock_generator.cjs +98 -0
- package/dist/codegen/test_mock_generator.cjs.map +1 -0
- package/dist/codegen/test_mock_generator.d.cts +5 -0
- package/dist/codegen/test_mock_generator.d.ts +5 -0
- package/dist/codegen/test_mock_generator.js +74 -0
- package/dist/codegen/test_mock_generator.js.map +1 -0
- package/dist/codegen/type_generator.cjs +203 -0
- package/dist/codegen/type_generator.cjs.map +1 -0
- package/dist/codegen/type_generator.d.cts +5 -0
- package/dist/codegen/type_generator.d.ts +5 -0
- package/dist/codegen/type_generator.js +179 -0
- package/dist/codegen/type_generator.js.map +1 -0
- package/dist/components/contextMenu.cjs +163 -0
- package/dist/components/contextMenu.cjs.map +1 -0
- package/dist/components/contextMenu.d.cts +43 -0
- package/dist/components/contextMenu.d.ts +43 -0
- package/dist/components/contextMenu.js +138 -0
- package/dist/components/contextMenu.js.map +1 -0
- package/dist/config/config_parser.cjs +176 -0
- package/dist/config/config_parser.cjs.map +1 -0
- package/dist/config/config_parser.d.cts +9 -0
- package/dist/config/config_parser.d.ts +9 -0
- package/dist/config/config_parser.js +142 -0
- package/dist/config/config_parser.js.map +1 -0
- package/dist/config/index.cjs +29 -0
- package/dist/config/index.cjs.map +1 -0
- package/dist/config/index.d.cts +2 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -0
- package/dist/controller/__fixtures__/controllers/chat.cjs +32 -0
- package/dist/controller/__fixtures__/controllers/chat.cjs.map +1 -0
- package/dist/controller/__fixtures__/controllers/chat.d.cts +11 -0
- package/dist/controller/__fixtures__/controllers/chat.d.ts +11 -0
- package/dist/controller/__fixtures__/controllers/chat.js +12 -0
- package/dist/controller/__fixtures__/controllers/chat.js.map +1 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.cjs +29 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.cjs.map +1 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.d.cts +3 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.d.ts +3 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.js +5 -0
- package/dist/controller/__fixtures__/controllers/not_a_class.js.map +1 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.cjs +32 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.cjs.map +1 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.d.cts +12 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.d.ts +12 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.js +12 -0
- package/dist/controller/__fixtures__/controllers/settings.controller.js.map +1 -0
- package/dist/controller/__fixtures__/controllers/test.cjs +29 -0
- package/dist/controller/__fixtures__/controllers/test.cjs.map +1 -0
- package/dist/controller/__fixtures__/controllers/test.d.cts +7 -0
- package/dist/controller/__fixtures__/controllers/test.d.ts +7 -0
- package/dist/controller/__fixtures__/controllers/test.js +9 -0
- package/dist/controller/__fixtures__/controllers/test.js.map +1 -0
- package/dist/controller/controller_resolver.cjs +180 -0
- package/dist/controller/controller_resolver.cjs.map +1 -0
- package/dist/controller/controller_resolver.d.cts +51 -0
- package/dist/controller/controller_resolver.d.ts +51 -0
- package/dist/controller/controller_resolver.js +145 -0
- package/dist/controller/controller_resolver.js.map +1 -0
- package/dist/controller/index.cjs +31 -0
- package/dist/controller/index.cjs.map +1 -0
- package/dist/controller/index.d.cts +2 -0
- package/dist/controller/index.d.ts +2 -0
- package/dist/controller/index.js +6 -0
- package/dist/controller/index.js.map +1 -0
- package/dist/dev/backend_watcher.cjs +108 -0
- package/dist/dev/backend_watcher.cjs.map +1 -0
- package/dist/dev/backend_watcher.d.cts +22 -0
- package/dist/dev/backend_watcher.d.ts +22 -0
- package/dist/dev/backend_watcher.js +84 -0
- package/dist/dev/backend_watcher.js.map +1 -0
- package/dist/dev/dev_metadata.cjs +94 -0
- package/dist/dev/dev_metadata.cjs.map +1 -0
- package/dist/dev/dev_metadata.d.cts +20 -0
- package/dist/dev/dev_metadata.d.ts +20 -0
- package/dist/dev/dev_metadata.js +52 -0
- package/dist/dev/dev_metadata.js.map +1 -0
- package/dist/dev/esbuild_backend.cjs +124 -0
- package/dist/dev/esbuild_backend.cjs.map +1 -0
- package/dist/dev/esbuild_backend.d.cts +30 -0
- package/dist/dev/esbuild_backend.d.ts +30 -0
- package/dist/dev/esbuild_backend.js +90 -0
- package/dist/dev/esbuild_backend.js.map +1 -0
- package/dist/dev/index.cjs +57 -0
- package/dist/dev/index.cjs.map +1 -0
- package/dist/dev/index.d.cts +8 -0
- package/dist/dev/index.d.ts +8 -0
- package/dist/dev/index.js +31 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/wood_dev_server.cjs +220 -0
- package/dist/dev/wood_dev_server.cjs.map +1 -0
- package/dist/dev/wood_dev_server.d.cts +39 -0
- package/dist/dev/wood_dev_server.d.ts +39 -0
- package/dist/dev/wood_dev_server.js +186 -0
- package/dist/dev/wood_dev_server.js.map +1 -0
- package/dist/dev/yaml_watcher.cjs +142 -0
- package/dist/dev/yaml_watcher.cjs.map +1 -0
- package/dist/dev/yaml_watcher.d.cts +22 -0
- package/dist/dev/yaml_watcher.d.ts +22 -0
- package/dist/dev/yaml_watcher.js +108 -0
- package/dist/dev/yaml_watcher.js.map +1 -0
- package/dist/electron/index.cjs +176 -0
- package/dist/electron/index.cjs.map +1 -0
- package/dist/electron/index.d.cts +29 -0
- package/dist/electron/index.d.ts +29 -0
- package/dist/electron/index.js +140 -0
- package/dist/electron/index.js.map +1 -0
- package/dist/index.cjs +178 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +41 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc/index.cjs +80 -0
- package/dist/ipc/index.cjs.map +1 -0
- package/dist/ipc/index.d.cts +12 -0
- package/dist/ipc/index.d.ts +12 -0
- package/dist/ipc/index.js +57 -0
- package/dist/ipc/index.js.map +1 -0
- package/dist/ipc/shared.cjs +50 -0
- package/dist/ipc/shared.cjs.map +1 -0
- package/dist/ipc/shared.d.cts +10 -0
- package/dist/ipc/shared.d.ts +10 -0
- package/dist/ipc/shared.js +23 -0
- package/dist/ipc/shared.js.map +1 -0
- package/dist/loader/__fixtures__/layouts/app.load.cjs +27 -0
- package/dist/loader/__fixtures__/layouts/app.load.cjs.map +1 -0
- package/dist/loader/__fixtures__/layouts/app.load.d.cts +5 -0
- package/dist/loader/__fixtures__/layouts/app.load.d.ts +5 -0
- package/dist/loader/__fixtures__/layouts/app.load.js +7 -0
- package/dist/loader/__fixtures__/layouts/app.load.js.map +1 -0
- package/dist/loader/__fixtures__/views/test/page.load.cjs +27 -0
- package/dist/loader/__fixtures__/views/test/page.load.cjs.map +1 -0
- package/dist/loader/__fixtures__/views/test/page.load.d.cts +6 -0
- package/dist/loader/__fixtures__/views/test/page.load.d.ts +6 -0
- package/dist/loader/__fixtures__/views/test/page.load.js +7 -0
- package/dist/loader/__fixtures__/views/test/page.load.js.map +1 -0
- package/dist/loader/index.cjs +29 -0
- package/dist/loader/index.cjs.map +1 -0
- package/dist/loader/index.d.cts +3 -0
- package/dist/loader/index.d.ts +3 -0
- package/dist/loader/index.js +5 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/loader_runner.cjs +109 -0
- package/dist/loader/loader_runner.cjs.map +1 -0
- package/dist/loader/loader_runner.d.cts +27 -0
- package/dist/loader/loader_runner.d.ts +27 -0
- package/dist/loader/loader_runner.js +75 -0
- package/dist/loader/loader_runner.js.map +1 -0
- package/dist/main/index.cjs +500 -0
- package/dist/main/index.cjs.map +1 -0
- package/dist/main/index.d.cts +98 -0
- package/dist/main/index.d.ts +98 -0
- package/dist/main/index.js +475 -0
- package/dist/main/index.js.map +1 -0
- package/dist/middleware/__fixtures__/middleware/auth.cjs +44 -0
- package/dist/middleware/__fixtures__/middleware/auth.cjs.map +1 -0
- package/dist/middleware/__fixtures__/middleware/auth.d.cts +6 -0
- package/dist/middleware/__fixtures__/middleware/auth.d.ts +6 -0
- package/dist/middleware/__fixtures__/middleware/auth.js +19 -0
- package/dist/middleware/__fixtures__/middleware/auth.js.map +1 -0
- package/dist/middleware/__fixtures__/middleware/sequence.cjs +47 -0
- package/dist/middleware/__fixtures__/middleware/sequence.cjs.map +1 -0
- package/dist/middleware/__fixtures__/middleware/sequence.d.cts +7 -0
- package/dist/middleware/__fixtures__/middleware/sequence.d.ts +7 -0
- package/dist/middleware/__fixtures__/middleware/sequence.js +21 -0
- package/dist/middleware/__fixtures__/middleware/sequence.js.map +1 -0
- package/dist/middleware/index.cjs +34 -0
- package/dist/middleware/index.cjs.map +1 -0
- package/dist/middleware/index.d.cts +3 -0
- package/dist/middleware/index.d.ts +3 -0
- package/dist/middleware/index.js +8 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/middleware_pipeline.cjs +55 -0
- package/dist/middleware/middleware_pipeline.cjs.map +1 -0
- package/dist/middleware/middleware_pipeline.d.cts +13 -0
- package/dist/middleware/middleware_pipeline.d.ts +13 -0
- package/dist/middleware/middleware_pipeline.js +30 -0
- package/dist/middleware/middleware_pipeline.js.map +1 -0
- package/dist/middleware/middleware_resolver.cjs +91 -0
- package/dist/middleware/middleware_resolver.cjs.map +1 -0
- package/dist/middleware/middleware_resolver.d.cts +19 -0
- package/dist/middleware/middleware_resolver.d.ts +19 -0
- package/dist/middleware/middleware_resolver.js +57 -0
- package/dist/middleware/middleware_resolver.js.map +1 -0
- package/dist/navigation/index.cjs +205 -0
- package/dist/navigation/index.cjs.map +1 -0
- package/dist/navigation/index.d.cts +34 -0
- package/dist/navigation/index.d.ts +34 -0
- package/dist/navigation/index.js +176 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/parser/index.cjs +36 -0
- package/dist/parser/index.cjs.map +1 -0
- package/dist/parser/index.d.cts +4 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.js +9 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/operations_parser.cjs +94 -0
- package/dist/parser/operations_parser.cjs.map +1 -0
- package/dist/parser/operations_parser.d.cts +7 -0
- package/dist/parser/operations_parser.d.ts +7 -0
- package/dist/parser/operations_parser.js +59 -0
- package/dist/parser/operations_parser.js.map +1 -0
- package/dist/parser/views_parser.cjs +153 -0
- package/dist/parser/views_parser.cjs.map +1 -0
- package/dist/parser/views_parser.d.cts +11 -0
- package/dist/parser/views_parser.d.ts +11 -0
- package/dist/parser/views_parser.js +118 -0
- package/dist/parser/views_parser.js.map +1 -0
- package/dist/router/index.cjs +31 -0
- package/dist/router/index.cjs.map +1 -0
- package/dist/router/index.d.cts +2 -0
- package/dist/router/index.d.ts +2 -0
- package/dist/router/index.js +6 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/wood_router.cjs +246 -0
- package/dist/router/wood_router.cjs.map +1 -0
- package/dist/router/wood_router.d.cts +70 -0
- package/dist/router/wood_router.d.ts +70 -0
- package/dist/router/wood_router.js +221 -0
- package/dist/router/wood_router.js.map +1 -0
- package/dist/runtime/application_root.cjs +98 -0
- package/dist/runtime/application_root.cjs.map +1 -0
- package/dist/runtime/application_root.d.cts +5 -0
- package/dist/runtime/application_root.d.ts +5 -0
- package/dist/runtime/application_root.js +61 -0
- package/dist/runtime/application_root.js.map +1 -0
- package/dist/runtime/get_container.cjs +96 -0
- package/dist/runtime/get_container.cjs.map +1 -0
- package/dist/runtime/get_container.d.cts +16 -0
- package/dist/runtime/get_container.d.ts +16 -0
- package/dist/runtime/get_container.js +60 -0
- package/dist/runtime/get_container.js.map +1 -0
- package/dist/runtime/index.cjs +49 -0
- package/dist/runtime/index.cjs.map +1 -0
- package/dist/runtime/index.d.cts +8 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.js +24 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/renderer_log_dispatcher.cjs +79 -0
- package/dist/runtime/renderer_log_dispatcher.cjs.map +1 -0
- package/dist/runtime/renderer_log_dispatcher.d.cts +27 -0
- package/dist/runtime/renderer_log_dispatcher.d.ts +27 -0
- package/dist/runtime/renderer_log_dispatcher.js +54 -0
- package/dist/runtime/renderer_log_dispatcher.js.map +1 -0
- package/dist/runtime/runtime.cjs +158 -0
- package/dist/runtime/runtime.cjs.map +1 -0
- package/dist/runtime/runtime.d.cts +35 -0
- package/dist/runtime/runtime.d.ts +35 -0
- package/dist/runtime/runtime.js +136 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/stick/allow_cli.cjs +39 -0
- package/dist/stick/allow_cli.cjs.map +1 -0
- package/dist/stick/allow_cli.d.cts +6 -0
- package/dist/stick/allow_cli.d.ts +6 -0
- package/dist/stick/allow_cli.js +15 -0
- package/dist/stick/allow_cli.js.map +1 -0
- package/dist/stick/index.cjs +276 -0
- package/dist/stick/index.cjs.map +1 -0
- package/dist/stick/index.d.cts +111 -0
- package/dist/stick/index.d.ts +111 -0
- package/dist/stick/index.js +237 -0
- package/dist/stick/index.js.map +1 -0
- package/dist/stick/static_renderer.cjs +144 -0
- package/dist/stick/static_renderer.cjs.map +1 -0
- package/dist/stick/static_renderer.d.cts +51 -0
- package/dist/stick/static_renderer.d.ts +51 -0
- package/dist/stick/static_renderer.js +119 -0
- package/dist/stick/static_renderer.js.map +1 -0
- package/dist/stick/template_resolver.cjs +156 -0
- package/dist/stick/template_resolver.cjs.map +1 -0
- package/dist/stick/template_resolver.d.cts +7 -0
- package/dist/stick/template_resolver.d.ts +7 -0
- package/dist/stick/template_resolver.js +122 -0
- package/dist/stick/template_resolver.js.map +1 -0
- package/dist/testing/create_controller_harness.cjs +175 -0
- package/dist/testing/create_controller_harness.cjs.map +1 -0
- package/dist/testing/create_controller_harness.d.cts +37 -0
- package/dist/testing/create_controller_harness.d.ts +37 -0
- package/dist/testing/create_controller_harness.js +162 -0
- package/dist/testing/create_controller_harness.js.map +1 -0
- package/dist/testing/create_router_bridge.cjs +103 -0
- package/dist/testing/create_router_bridge.cjs.map +1 -0
- package/dist/testing/create_router_bridge.d.cts +71 -0
- package/dist/testing/create_router_bridge.d.ts +71 -0
- package/dist/testing/create_router_bridge.js +78 -0
- package/dist/testing/create_router_bridge.js.map +1 -0
- package/dist/testing/create_test_container.cjs +72 -0
- package/dist/testing/create_test_container.cjs.map +1 -0
- package/dist/testing/create_test_container.d.cts +14 -0
- package/dist/testing/create_test_container.d.ts +14 -0
- package/dist/testing/create_test_container.js +48 -0
- package/dist/testing/create_test_container.js.map +1 -0
- package/dist/testing/create_test_router.cjs +57 -0
- package/dist/testing/create_test_router.cjs.map +1 -0
- package/dist/testing/create_test_router.d.cts +19 -0
- package/dist/testing/create_test_router.d.ts +19 -0
- package/dist/testing/create_test_router.js +33 -0
- package/dist/testing/create_test_router.js.map +1 -0
- package/dist/testing/index.cjs +48 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.d.cts +12 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.js +22 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock_electron.cjs +100 -0
- package/dist/testing/mock_electron.cjs.map +1 -0
- package/dist/testing/mock_electron.d.cts +12 -0
- package/dist/testing/mock_electron.d.ts +12 -0
- package/dist/testing/mock_electron.js +75 -0
- package/dist/testing/mock_electron.js.map +1 -0
- package/dist/tracing/index.cjs +56 -0
- package/dist/tracing/index.cjs.map +1 -0
- package/dist/tracing/index.d.cts +4 -0
- package/dist/tracing/index.d.ts +4 -0
- package/dist/tracing/index.js +35 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/trace_hub.cjs +213 -0
- package/dist/tracing/trace_hub.cjs.map +1 -0
- package/dist/tracing/trace_hub.d.cts +47 -0
- package/dist/tracing/trace_hub.d.ts +47 -0
- package/dist/tracing/trace_hub.js +172 -0
- package/dist/tracing/trace_hub.js.map +1 -0
- package/dist/tracing/trace_provider.cjs +200 -0
- package/dist/tracing/trace_provider.cjs.map +1 -0
- package/dist/tracing/trace_provider.d.cts +69 -0
- package/dist/tracing/trace_provider.d.ts +69 -0
- package/dist/tracing/trace_provider.js +179 -0
- package/dist/tracing/trace_provider.js.map +1 -0
- package/dist/types/bridge.cjs +51 -0
- package/dist/types/bridge.cjs.map +1 -0
- package/dist/types/bridge.d.cts +56 -0
- package/dist/types/bridge.d.ts +56 -0
- package/dist/types/bridge.js +25 -0
- package/dist/types/bridge.js.map +1 -0
- package/dist/types/config.cjs +17 -0
- package/dist/types/config.cjs.map +1 -0
- package/dist/types/config.d.cts +74 -0
- package/dist/types/config.d.ts +74 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/context.cjs +17 -0
- package/dist/types/context.cjs.map +1 -0
- package/dist/types/context.d.cts +61 -0
- package/dist/types/context.d.ts +61 -0
- package/dist/types/context.js +1 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/context_menu.cjs +17 -0
- package/dist/types/context_menu.cjs.map +1 -0
- package/dist/types/context_menu.d.cts +30 -0
- package/dist/types/context_menu.d.ts +30 -0
- package/dist/types/context_menu.js +1 -0
- package/dist/types/context_menu.js.map +1 -0
- package/dist/types/index.cjs +33 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +6 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/operations.cjs +17 -0
- package/dist/types/operations.cjs.map +1 -0
- package/dist/types/operations.d.cts +39 -0
- package/dist/types/operations.d.ts +39 -0
- package/dist/types/operations.js +1 -0
- package/dist/types/operations.js.map +1 -0
- package/dist/types/views.cjs +17 -0
- package/dist/types/views.cjs.map +1 -0
- package/dist/types/views.d.cts +44 -0
- package/dist/types/views.d.ts +44 -0
- package/dist/types/views.js +1 -0
- package/dist/types/views.js.map +1 -0
- package/dist/validation/index.cjs +29 -0
- package/dist/validation/index.cjs.map +1 -0
- package/dist/validation/index.d.cts +1 -0
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.js +5 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/schema_validator.cjs +86 -0
- package/dist/validation/schema_validator.cjs.map +1 -0
- package/dist/validation/schema_validator.d.cts +24 -0
- package/dist/validation/schema_validator.d.ts +24 -0
- package/dist/validation/schema_validator.js +52 -0
- package/dist/validation/schema_validator.js.map +1 -0
- package/dist/window/index.cjs +32 -0
- package/dist/window/index.cjs.map +1 -0
- package/dist/window/index.d.cts +4 -0
- package/dist/window/index.d.ts +4 -0
- package/dist/window/index.js +7 -0
- package/dist/window/index.js.map +1 -0
- package/dist/window/window_manager.cjs +354 -0
- package/dist/window/window_manager.cjs.map +1 -0
- package/dist/window/window_manager.d.cts +172 -0
- package/dist/window/window_manager.d.ts +172 -0
- package/dist/window/window_manager.js +330 -0
- package/dist/window/window_manager.js.map +1 -0
- package/dist/window/window_state_store.cjs +129 -0
- package/dist/window/window_state_store.cjs.map +1 -0
- package/dist/window/window_state_store.d.cts +39 -0
- package/dist/window/window_state_store.d.ts +39 -0
- package/dist/window/window_state_store.js +105 -0
- package/dist/window/window_state_store.js.map +1 -0
- package/loaders/loader.mjs +46 -0
- package/package.json +119 -0
- package/src/components/ContextMenuProvider.svelte +145 -0
- package/src/components/NavigationShell.svelte +204 -0
- package/src/components/WoodRecursiveRender.svelte +91 -0
- package/src/components/contextMenu.ts +228 -0
- package/src/components/index.d.ts +14 -0
- package/src/components/index.js +2 -0
- package/src/stick/WoodRecursiveRender.svelte +74 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dev_exports = {};
|
|
20
|
+
__export(dev_exports, {
|
|
21
|
+
BackendWatcher: () => import_backend_watcher.BackendWatcher,
|
|
22
|
+
DEFAULT_WOOD_REMOTE_DEBUGGING_PORT: () => import_dev_metadata.DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,
|
|
23
|
+
EsbuildBackend: () => import_esbuild_backend.EsbuildBackend,
|
|
24
|
+
WOOD_DEV_DIRECTORY: () => import_dev_metadata.WOOD_DEV_DIRECTORY,
|
|
25
|
+
WOOD_DEV_METADATA_BASENAME: () => import_dev_metadata.WOOD_DEV_METADATA_BASENAME,
|
|
26
|
+
WoodDevServer: () => import_wood_dev_server.WoodDevServer,
|
|
27
|
+
YamlWatcher: () => import_yaml_watcher.YamlWatcher,
|
|
28
|
+
readWoodDevMetadata: () => import_dev_metadata.readWoodDevMetadata,
|
|
29
|
+
removeWoodDevMetadata: () => import_dev_metadata.removeWoodDevMetadata,
|
|
30
|
+
resolveWoodDevDirectory: () => import_dev_metadata.resolveWoodDevDirectory,
|
|
31
|
+
resolveWoodDevMetadataPath: () => import_dev_metadata.resolveWoodDevMetadataPath,
|
|
32
|
+
resolveWoodRemoteDebuggingPort: () => import_dev_metadata.resolveWoodRemoteDebuggingPort,
|
|
33
|
+
writeWoodDevMetadata: () => import_dev_metadata.writeWoodDevMetadata
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(dev_exports);
|
|
36
|
+
var import_wood_dev_server = require("./wood_dev_server.cjs");
|
|
37
|
+
var import_backend_watcher = require("./backend_watcher.js");
|
|
38
|
+
var import_dev_metadata = require("./dev_metadata.js");
|
|
39
|
+
var import_yaml_watcher = require("./yaml_watcher.js");
|
|
40
|
+
var import_esbuild_backend = require("./esbuild_backend.cjs");
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
BackendWatcher,
|
|
44
|
+
DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,
|
|
45
|
+
EsbuildBackend,
|
|
46
|
+
WOOD_DEV_DIRECTORY,
|
|
47
|
+
WOOD_DEV_METADATA_BASENAME,
|
|
48
|
+
WoodDevServer,
|
|
49
|
+
YamlWatcher,
|
|
50
|
+
readWoodDevMetadata,
|
|
51
|
+
removeWoodDevMetadata,
|
|
52
|
+
resolveWoodDevDirectory,
|
|
53
|
+
resolveWoodDevMetadataPath,
|
|
54
|
+
resolveWoodRemoteDebuggingPort,
|
|
55
|
+
writeWoodDevMetadata
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dev/index.ts"],"sourcesContent":["export { WoodDevServer } from './wood_dev_server.cjs';\nexport type { DevServerOptions } from './wood_dev_server.cjs';\nexport { BackendWatcher } from './backend_watcher.js';\nexport type { BackendWatcherOptions } from './backend_watcher.js';\nexport {\n DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,\n WOOD_DEV_DIRECTORY,\n WOOD_DEV_METADATA_BASENAME,\n resolveWoodRemoteDebuggingPort,\n resolveWoodDevDirectory,\n resolveWoodDevMetadataPath,\n writeWoodDevMetadata,\n readWoodDevMetadata,\n removeWoodDevMetadata,\n} from './dev_metadata.js';\nexport type { WoodDevMetadata } from './dev_metadata.js';\nexport { YamlWatcher } from './yaml_watcher.js';\nexport type { YamlWatcherOptions } from './yaml_watcher.js';\nexport { EsbuildBackend } from './esbuild_backend.cjs';\nexport type { EsbuildBackendOptions } from './esbuild_backend.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA8B;AAE9B,6BAA+B;AAE/B,0BAUO;AAEP,0BAA4B;AAE5B,6BAA+B;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DevServerOptions, WoodDevServer } from './wood_dev_server.cjs';
|
|
2
|
+
export { BackendWatcher, BackendWatcherOptions } from './backend_watcher.cjs';
|
|
3
|
+
export { DEFAULT_WOOD_REMOTE_DEBUGGING_PORT, WOOD_DEV_DIRECTORY, WOOD_DEV_METADATA_BASENAME, WoodDevMetadata, readWoodDevMetadata, removeWoodDevMetadata, resolveWoodDevDirectory, resolveWoodDevMetadataPath, resolveWoodRemoteDebuggingPort, writeWoodDevMetadata } from './dev_metadata.cjs';
|
|
4
|
+
export { YamlWatcher, YamlWatcherOptions } from './yaml_watcher.cjs';
|
|
5
|
+
export { EsbuildBackend, EsbuildBackendOptions } from './esbuild_backend.cjs';
|
|
6
|
+
import '../types/config.cjs';
|
|
7
|
+
import '../bridge/backend_bridge.cjs';
|
|
8
|
+
import 'esbuild';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DevServerOptions, WoodDevServer } from './wood_dev_server.js';
|
|
2
|
+
export { BackendWatcher, BackendWatcherOptions } from './backend_watcher.js';
|
|
3
|
+
export { DEFAULT_WOOD_REMOTE_DEBUGGING_PORT, WOOD_DEV_DIRECTORY, WOOD_DEV_METADATA_BASENAME, WoodDevMetadata, readWoodDevMetadata, removeWoodDevMetadata, resolveWoodDevDirectory, resolveWoodDevMetadataPath, resolveWoodRemoteDebuggingPort, writeWoodDevMetadata } from './dev_metadata.js';
|
|
4
|
+
export { YamlWatcher, YamlWatcherOptions } from './yaml_watcher.js';
|
|
5
|
+
export { EsbuildBackend, EsbuildBackendOptions } from './esbuild_backend.js';
|
|
6
|
+
import '../types/config.js';
|
|
7
|
+
import '../bridge/backend_bridge.js';
|
|
8
|
+
import 'esbuild';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WoodDevServer } from "./wood_dev_server.js";
|
|
2
|
+
import { BackendWatcher } from "./backend_watcher.js";
|
|
3
|
+
import {
|
|
4
|
+
DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,
|
|
5
|
+
WOOD_DEV_DIRECTORY,
|
|
6
|
+
WOOD_DEV_METADATA_BASENAME,
|
|
7
|
+
resolveWoodRemoteDebuggingPort,
|
|
8
|
+
resolveWoodDevDirectory,
|
|
9
|
+
resolveWoodDevMetadataPath,
|
|
10
|
+
writeWoodDevMetadata,
|
|
11
|
+
readWoodDevMetadata,
|
|
12
|
+
removeWoodDevMetadata
|
|
13
|
+
} from "./dev_metadata.js";
|
|
14
|
+
import { YamlWatcher } from "./yaml_watcher.js";
|
|
15
|
+
import { EsbuildBackend } from "./esbuild_backend.js";
|
|
16
|
+
export {
|
|
17
|
+
BackendWatcher,
|
|
18
|
+
DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,
|
|
19
|
+
EsbuildBackend,
|
|
20
|
+
WOOD_DEV_DIRECTORY,
|
|
21
|
+
WOOD_DEV_METADATA_BASENAME,
|
|
22
|
+
WoodDevServer,
|
|
23
|
+
YamlWatcher,
|
|
24
|
+
readWoodDevMetadata,
|
|
25
|
+
removeWoodDevMetadata,
|
|
26
|
+
resolveWoodDevDirectory,
|
|
27
|
+
resolveWoodDevMetadataPath,
|
|
28
|
+
resolveWoodRemoteDebuggingPort,
|
|
29
|
+
writeWoodDevMetadata
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dev/index.ts"],"sourcesContent":["export { WoodDevServer } from './wood_dev_server.js';\nexport type { DevServerOptions } from './wood_dev_server.js';\nexport { BackendWatcher } from './backend_watcher.js';\nexport type { BackendWatcherOptions } from './backend_watcher.js';\nexport {\n DEFAULT_WOOD_REMOTE_DEBUGGING_PORT,\n WOOD_DEV_DIRECTORY,\n WOOD_DEV_METADATA_BASENAME,\n resolveWoodRemoteDebuggingPort,\n resolveWoodDevDirectory,\n resolveWoodDevMetadataPath,\n writeWoodDevMetadata,\n readWoodDevMetadata,\n removeWoodDevMetadata,\n} from './dev_metadata.js';\nexport type { WoodDevMetadata } from './dev_metadata.js';\nexport { YamlWatcher } from './yaml_watcher.js';\nexport type { YamlWatcherOptions } from './yaml_watcher.js';\nexport { EsbuildBackend } from './esbuild_backend.js';\nexport type { EsbuildBackendOptions } from './esbuild_backend.js';\n"],"mappings":"AAAA,SAAS,qBAAqB;AAE9B,SAAS,sBAAsB;AAE/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB;","names":[]}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var wood_dev_server_exports = {};
|
|
30
|
+
__export(wood_dev_server_exports, {
|
|
31
|
+
WoodDevServer: () => WoodDevServer
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(wood_dev_server_exports);
|
|
34
|
+
var import_fs = require("fs");
|
|
35
|
+
var import_path = __toESM(require("path"), 1);
|
|
36
|
+
var import_logger = require("@noego/logger");
|
|
37
|
+
var import_config_parser = require("../config/config_parser.cjs");
|
|
38
|
+
var import_operations_parser = require("../parser/operations_parser.cjs");
|
|
39
|
+
var import_views_parser = require("../parser/views_parser.cjs");
|
|
40
|
+
var import_preload_generator = require("../codegen/preload_generator.cjs");
|
|
41
|
+
var import_type_generator = require("../codegen/type_generator.cjs");
|
|
42
|
+
var import_test_mock_generator = require("../codegen/test_mock_generator.cjs");
|
|
43
|
+
var import_controller_registration_generator = require("../codegen/controller_registration_generator.cjs");
|
|
44
|
+
var import_runtime_generator = require("../codegen/runtime_generator.cjs");
|
|
45
|
+
var import_renderer_app_generator = require("../codegen/renderer_app_generator.cjs");
|
|
46
|
+
var import_backend_bridge = require("../bridge/backend_bridge.cjs");
|
|
47
|
+
var import_backend_watcher = require("./backend_watcher.cjs");
|
|
48
|
+
var import_yaml_watcher = require("./yaml_watcher.cjs");
|
|
49
|
+
var import_esbuild_backend = require("./esbuild_backend.cjs");
|
|
50
|
+
const logger = (0, import_logger.getLogger)("wood:dev");
|
|
51
|
+
class WoodDevServer {
|
|
52
|
+
constructor(options = {}) {
|
|
53
|
+
this.config = null;
|
|
54
|
+
this.bridge = null;
|
|
55
|
+
this.backendWatcher = null;
|
|
56
|
+
this.yamlWatcher = null;
|
|
57
|
+
this.esbuild = null;
|
|
58
|
+
this.cwd = options.cwd ?? process.cwd();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Start the Wood development server.
|
|
62
|
+
*
|
|
63
|
+
* Automatically sets process.env.WOOD_MODE = 'development' so the app
|
|
64
|
+
* can conditionally use dynamic controller imports (dev) vs pre-registered
|
|
65
|
+
* controllers from the generated file (production).
|
|
66
|
+
*
|
|
67
|
+
* Steps:
|
|
68
|
+
* 1. Parse config
|
|
69
|
+
* 2. Parse + stitch YAML
|
|
70
|
+
* 3. Generate preload, types, mock
|
|
71
|
+
* 4. Build backend with esbuild
|
|
72
|
+
* 5. (electron-vite would be started here -- omitted for MVP)
|
|
73
|
+
* 6. Spawn backend via bridge
|
|
74
|
+
* 7. Start watchers
|
|
75
|
+
*/
|
|
76
|
+
async start() {
|
|
77
|
+
process.env.WOOD_MODE = "development";
|
|
78
|
+
const configPath = import_path.default.resolve(this.cwd, "wood.config.yml");
|
|
79
|
+
this.config = (0, import_config_parser.parseConfig)(configPath);
|
|
80
|
+
logger.info("config loaded", { outDir: this.config.outDir });
|
|
81
|
+
const opsYamlPath = import_path.default.resolve(this.cwd, this.config.main.openapi);
|
|
82
|
+
const opsContent = (0, import_fs.readFileSync)(opsYamlPath, "utf-8");
|
|
83
|
+
const operations = (0, import_operations_parser.parseOperations)(opsContent);
|
|
84
|
+
logger.info("operations parsed", { count: operations.size });
|
|
85
|
+
const viewsYamlPath = import_path.default.resolve(this.cwd, this.config.renderer.openapi);
|
|
86
|
+
const viewsContent = (0, import_fs.readFileSync)(viewsYamlPath, "utf-8");
|
|
87
|
+
const views = (0, import_views_parser.parseViews)(viewsContent);
|
|
88
|
+
logger.info("views parsed", { count: views.length });
|
|
89
|
+
const outDir = import_path.default.resolve(this.cwd, this.config.outDir);
|
|
90
|
+
(0, import_fs.mkdirSync)(outDir, { recursive: true });
|
|
91
|
+
const preloadCode = (0, import_preload_generator.generatePreload)(operations);
|
|
92
|
+
(0, import_fs.writeFileSync)(import_path.default.join(outDir, "preload.generated.ts"), preloadCode);
|
|
93
|
+
const typesCode = (0, import_type_generator.generateTypes)(operations);
|
|
94
|
+
(0, import_fs.writeFileSync)(import_path.default.join(outDir, "wood.d.ts"), typesCode);
|
|
95
|
+
const mockCode = (0, import_test_mock_generator.generateTestMock)(operations);
|
|
96
|
+
(0, import_fs.writeFileSync)(import_path.default.join(outDir, "wood.mock.ts"), mockCode);
|
|
97
|
+
const controllersDir = import_path.default.resolve(this.cwd, this.config.main.controllers);
|
|
98
|
+
const controllerRegCode = (0, import_controller_registration_generator.generateControllerRegistration)(operations, {
|
|
99
|
+
controllersDir,
|
|
100
|
+
outDir
|
|
101
|
+
});
|
|
102
|
+
(0, import_fs.writeFileSync)(import_path.default.join(outDir, "controllers.generated.ts"), controllerRegCode);
|
|
103
|
+
const runtimeCode = (0, import_runtime_generator.generateRuntime)(operations, {
|
|
104
|
+
controllersDir,
|
|
105
|
+
outDir
|
|
106
|
+
});
|
|
107
|
+
(0, import_fs.writeFileSync)(import_path.default.join(outDir, "runtime.generated.ts"), runtimeCode);
|
|
108
|
+
const rendererComponentDir = import_path.default.resolve(this.cwd, this.config.renderer.componentDir);
|
|
109
|
+
const rendererOutDir = import_path.default.resolve(this.cwd, this.config.renderer.componentDir, "generated");
|
|
110
|
+
(0, import_fs.mkdirSync)(rendererOutDir, { recursive: true });
|
|
111
|
+
(0, import_fs.writeFileSync)(
|
|
112
|
+
import_path.default.join(rendererOutDir, "app.ts"),
|
|
113
|
+
(0, import_renderer_app_generator.generateRendererApp)(views, {
|
|
114
|
+
componentDir: rendererComponentDir,
|
|
115
|
+
outDir: rendererOutDir,
|
|
116
|
+
entryViewKey: this.config.renderer.entry
|
|
117
|
+
})
|
|
118
|
+
);
|
|
119
|
+
logger.info("codegen complete", { outDir });
|
|
120
|
+
const backendEntry = this.config.main.entry;
|
|
121
|
+
const backendOutfile = import_path.default.join(this.config.outDir, "backend", "index.js");
|
|
122
|
+
this.esbuild = new import_esbuild_backend.EsbuildBackend({
|
|
123
|
+
entryPoint: backendEntry,
|
|
124
|
+
outfile: backendOutfile,
|
|
125
|
+
cwd: this.cwd,
|
|
126
|
+
external: this.config.build ? [] : void 0
|
|
127
|
+
});
|
|
128
|
+
await this.esbuild.build();
|
|
129
|
+
await this.esbuild.createContext();
|
|
130
|
+
if (this.config.dev?.splitServe !== false) {
|
|
131
|
+
const resolvedBackendEntry = import_path.default.resolve(this.cwd, backendOutfile);
|
|
132
|
+
this.bridge = new import_backend_bridge.BackendBridge({
|
|
133
|
+
backendEntry: resolvedBackendEntry,
|
|
134
|
+
onReady: () => {
|
|
135
|
+
logger.info("backend ready (split-serve)");
|
|
136
|
+
},
|
|
137
|
+
onPush: (channel, data) => {
|
|
138
|
+
logger.debug("backend push", { channel, data });
|
|
139
|
+
},
|
|
140
|
+
onExit: (code, signal) => {
|
|
141
|
+
logger.debug("backend exited", { code, signal });
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
await this.bridge.start();
|
|
145
|
+
}
|
|
146
|
+
if (this.config.dev?.watch !== false) {
|
|
147
|
+
this.startWatchers(outDir);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** Stop the dev server and clean up all resources. */
|
|
151
|
+
async stop() {
|
|
152
|
+
this.backendWatcher?.stop();
|
|
153
|
+
this.yamlWatcher?.stop();
|
|
154
|
+
if (this.bridge) {
|
|
155
|
+
await this.bridge.stop();
|
|
156
|
+
logger.info("backend bridge stopped");
|
|
157
|
+
}
|
|
158
|
+
if (this.esbuild) {
|
|
159
|
+
await this.esbuild.dispose();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Get the parsed config. */
|
|
163
|
+
getConfig() {
|
|
164
|
+
return this.config;
|
|
165
|
+
}
|
|
166
|
+
startWatchers(outDir) {
|
|
167
|
+
if (!this.config) return;
|
|
168
|
+
if (this.bridge && this.esbuild) {
|
|
169
|
+
const backendPatterns = [
|
|
170
|
+
`${this.config.main.controllers}/**/*.ts`,
|
|
171
|
+
`${this.config.main.middleware}/**/*.ts`,
|
|
172
|
+
`${this.config.main.entry}`,
|
|
173
|
+
...this.config.main.watch ?? []
|
|
174
|
+
];
|
|
175
|
+
const esbuild = this.esbuild;
|
|
176
|
+
this.backendWatcher = new import_backend_watcher.BackendWatcher({
|
|
177
|
+
patterns: backendPatterns,
|
|
178
|
+
bridge: this.bridge,
|
|
179
|
+
buildFn: () => esbuild.rebuild().then(() => {
|
|
180
|
+
}),
|
|
181
|
+
cwd: this.cwd
|
|
182
|
+
});
|
|
183
|
+
this.backendWatcher.start();
|
|
184
|
+
logger.info("backend watcher started", { patterns: backendPatterns });
|
|
185
|
+
}
|
|
186
|
+
this.yamlWatcher = new import_yaml_watcher.YamlWatcher({
|
|
187
|
+
operationsYamlPath: this.config.main.openapi,
|
|
188
|
+
viewsYamlPath: this.config.renderer.openapi,
|
|
189
|
+
controllersDir: this.config.main.controllers,
|
|
190
|
+
outDir,
|
|
191
|
+
cwd: this.cwd,
|
|
192
|
+
onViewsChange: async () => {
|
|
193
|
+
const viewsContent = (0, import_fs.readFileSync)(
|
|
194
|
+
import_path.default.resolve(this.cwd, this.config.renderer.openapi),
|
|
195
|
+
"utf-8"
|
|
196
|
+
);
|
|
197
|
+
const views = (0, import_views_parser.parseViews)(viewsContent);
|
|
198
|
+
const rendererComponentDir = import_path.default.resolve(this.cwd, this.config.renderer.componentDir);
|
|
199
|
+
const rendererOutDir = import_path.default.resolve(this.cwd, this.config.renderer.componentDir, "generated");
|
|
200
|
+
(0, import_fs.mkdirSync)(rendererOutDir, { recursive: true });
|
|
201
|
+
(0, import_fs.writeFileSync)(
|
|
202
|
+
import_path.default.join(rendererOutDir, "app.ts"),
|
|
203
|
+
(0, import_renderer_app_generator.generateRendererApp)(views, {
|
|
204
|
+
componentDir: rendererComponentDir,
|
|
205
|
+
outDir: rendererOutDir,
|
|
206
|
+
entryViewKey: this.config.renderer.entry
|
|
207
|
+
})
|
|
208
|
+
);
|
|
209
|
+
logger.info("views renderer codegen regenerated", { rendererOutDir });
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
this.yamlWatcher.start();
|
|
213
|
+
logger.info("yaml watcher started");
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
217
|
+
0 && (module.exports = {
|
|
218
|
+
WoodDevServer
|
|
219
|
+
});
|
|
220
|
+
//# sourceMappingURL=wood_dev_server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dev/wood_dev_server.ts"],"sourcesContent":["import { readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport path from 'path';\nimport { getLogger } from '@noego/logger';\nimport { parseConfig } from '../config/config_parser.cjs';\nimport { parseOperations } from '../parser/operations_parser.cjs';\nimport { parseViews } from '../parser/views_parser.cjs';\nimport { generatePreload } from '../codegen/preload_generator.cjs';\nimport { generateTypes } from '../codegen/type_generator.cjs';\nimport { generateTestMock } from '../codegen/test_mock_generator.cjs';\nimport { generateControllerRegistration } from '../codegen/controller_registration_generator.cjs';\nimport { generateRuntime } from '../codegen/runtime_generator.cjs';\nimport { generateRendererApp } from '../codegen/renderer_app_generator.cjs';\nimport { BackendBridge } from '../bridge/backend_bridge.cjs';\nimport { BackendWatcher } from './backend_watcher.cjs';\nimport { YamlWatcher } from './yaml_watcher.cjs';\nimport { EsbuildBackend } from './esbuild_backend.cjs';\nimport type { WoodConfig } from '../types/index.cjs';\n\nconst logger = getLogger('wood:dev');\n\nexport interface DevServerOptions {\n configPath?: string;\n cwd?: string;\n}\n\nexport class WoodDevServer {\n private config: WoodConfig | null = null;\n private bridge: BackendBridge | null = null;\n private backendWatcher: BackendWatcher | null = null;\n private yamlWatcher: YamlWatcher | null = null;\n private esbuild: EsbuildBackend | null = null;\n private cwd: string;\n\n constructor(options: DevServerOptions = {}) {\n this.cwd = options.cwd ?? process.cwd();\n }\n\n /**\n * Start the Wood development server.\n *\n * Automatically sets process.env.WOOD_MODE = 'development' so the app\n * can conditionally use dynamic controller imports (dev) vs pre-registered\n * controllers from the generated file (production).\n *\n * Steps:\n * 1. Parse config\n * 2. Parse + stitch YAML\n * 3. Generate preload, types, mock\n * 4. Build backend with esbuild\n * 5. (electron-vite would be started here -- omitted for MVP)\n * 6. Spawn backend via bridge\n * 7. Start watchers\n */\n async start(): Promise<void> {\n process.env.WOOD_MODE = 'development';\n\n // 1. Parse config\n const configPath = path.resolve(this.cwd, 'wood.config.yml');\n this.config = parseConfig(configPath);\n logger.info('config loaded', { outDir: this.config.outDir });\n\n // 2. Parse operations YAML\n const opsYamlPath = path.resolve(this.cwd, this.config.main.openapi);\n const opsContent = readFileSync(opsYamlPath, 'utf-8');\n const operations = parseOperations(opsContent);\n logger.info('operations parsed', { count: operations.size });\n\n // 3. Parse views YAML\n const viewsYamlPath = path.resolve(this.cwd, this.config.renderer.openapi);\n const viewsContent = readFileSync(viewsYamlPath, 'utf-8');\n const views = parseViews(viewsContent);\n logger.info('views parsed', { count: views.length });\n\n // 4. Generate files\n const outDir = path.resolve(this.cwd, this.config.outDir);\n mkdirSync(outDir, { recursive: true });\n\n const preloadCode = generatePreload(operations);\n writeFileSync(path.join(outDir, 'preload.generated.ts'), preloadCode);\n\n const typesCode = generateTypes(operations);\n writeFileSync(path.join(outDir, 'wood.d.ts'), typesCode);\n\n const mockCode = generateTestMock(operations);\n writeFileSync(path.join(outDir, 'wood.mock.ts'), mockCode);\n\n const controllersDir = path.resolve(this.cwd, this.config.main.controllers);\n const controllerRegCode = generateControllerRegistration(operations, {\n controllersDir,\n outDir,\n });\n writeFileSync(path.join(outDir, 'controllers.generated.ts'), controllerRegCode);\n\n const runtimeCode = generateRuntime(operations, {\n controllersDir,\n outDir,\n });\n writeFileSync(path.join(outDir, 'runtime.generated.ts'), runtimeCode);\n\n const rendererComponentDir = path.resolve(this.cwd, this.config.renderer.componentDir);\n const rendererOutDir = path.resolve(this.cwd, this.config.renderer.componentDir, 'generated');\n mkdirSync(rendererOutDir, { recursive: true });\n\n writeFileSync(\n path.join(rendererOutDir, 'app.ts'),\n generateRendererApp(views, {\n componentDir: rendererComponentDir,\n outDir: rendererOutDir,\n entryViewKey: this.config.renderer.entry,\n }),\n );\n\n logger.info('codegen complete', { outDir });\n\n // 5. Build backend with esbuild (initial build + create incremental context)\n const backendEntry = this.config.main.entry;\n const backendOutfile = path.join(this.config.outDir, 'backend', 'index.js');\n\n this.esbuild = new EsbuildBackend({\n entryPoint: backendEntry,\n outfile: backendOutfile,\n cwd: this.cwd,\n external: this.config.build ? [] : undefined,\n });\n\n await this.esbuild.build();\n await this.esbuild.createContext();\n\n // 6. Start backend bridge (split-serve)\n if (this.config.dev?.splitServe !== false) {\n const resolvedBackendEntry = path.resolve(this.cwd, backendOutfile);\n this.bridge = new BackendBridge({\n backendEntry: resolvedBackendEntry,\n onReady: () => {\n logger.info('backend ready (split-serve)');\n },\n onPush: (channel, data) => {\n logger.debug('backend push', { channel, data });\n },\n onExit: (code, signal) => {\n logger.debug('backend exited', { code, signal });\n },\n });\n await this.bridge.start();\n }\n\n // 7. Start watchers\n if (this.config.dev?.watch !== false) {\n this.startWatchers(outDir);\n }\n }\n\n /** Stop the dev server and clean up all resources. */\n async stop(): Promise<void> {\n this.backendWatcher?.stop();\n this.yamlWatcher?.stop();\n\n if (this.bridge) {\n await this.bridge.stop();\n logger.info('backend bridge stopped');\n }\n\n if (this.esbuild) {\n await this.esbuild.dispose();\n }\n }\n\n /** Get the parsed config. */\n getConfig(): WoodConfig | null {\n return this.config;\n }\n\n private startWatchers(outDir: string): void {\n if (!this.config) return;\n\n // Backend watcher: server + middleware files -> rebuild + restart\n if (this.bridge && this.esbuild) {\n const backendPatterns = [\n `${this.config.main.controllers}/**/*.ts`,\n `${this.config.main.middleware}/**/*.ts`,\n `${this.config.main.entry}`,\n ...(this.config.main.watch ?? []),\n ];\n\n const esbuild = this.esbuild;\n this.backendWatcher = new BackendWatcher({\n patterns: backendPatterns,\n bridge: this.bridge,\n buildFn: () => esbuild.rebuild().then(() => {}),\n cwd: this.cwd,\n });\n this.backendWatcher.start();\n logger.info('backend watcher started', { patterns: backendPatterns });\n }\n\n // YAML watcher: operations + views YAML -> regenerate codegen\n this.yamlWatcher = new YamlWatcher({\n operationsYamlPath: this.config.main.openapi,\n viewsYamlPath: this.config.renderer.openapi,\n controllersDir: this.config.main.controllers,\n outDir,\n cwd: this.cwd,\n onViewsChange: async () => {\n // Re-parse views and regenerate client router manifest\n const viewsContent = readFileSync(\n path.resolve(this.cwd, this.config!.renderer.openapi),\n 'utf-8',\n );\n const views = parseViews(viewsContent);\n\n const rendererComponentDir = path.resolve(this.cwd, this.config!.renderer.componentDir);\n const rendererOutDir = path.resolve(this.cwd, this.config!.renderer.componentDir, 'generated');\n mkdirSync(rendererOutDir, { recursive: true });\n\n writeFileSync(\n path.join(rendererOutDir, 'app.ts'),\n generateRendererApp(views, {\n componentDir: rendererComponentDir,\n outDir: rendererOutDir,\n entryViewKey: this.config!.renderer.entry,\n }),\n );\n\n logger.info('views renderer codegen regenerated', { rendererOutDir });\n },\n });\n this.yamlWatcher.start();\n logger.info('yaml watcher started');\n }\n}\n"],"mappings":"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","names":["path"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { WoodConfig } from '../types/config.cjs';
|
|
2
|
+
|
|
3
|
+
interface DevServerOptions {
|
|
4
|
+
configPath?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
}
|
|
7
|
+
declare class WoodDevServer {
|
|
8
|
+
private config;
|
|
9
|
+
private bridge;
|
|
10
|
+
private backendWatcher;
|
|
11
|
+
private yamlWatcher;
|
|
12
|
+
private esbuild;
|
|
13
|
+
private cwd;
|
|
14
|
+
constructor(options?: DevServerOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Start the Wood development server.
|
|
17
|
+
*
|
|
18
|
+
* Automatically sets process.env.WOOD_MODE = 'development' so the app
|
|
19
|
+
* can conditionally use dynamic controller imports (dev) vs pre-registered
|
|
20
|
+
* controllers from the generated file (production).
|
|
21
|
+
*
|
|
22
|
+
* Steps:
|
|
23
|
+
* 1. Parse config
|
|
24
|
+
* 2. Parse + stitch YAML
|
|
25
|
+
* 3. Generate preload, types, mock
|
|
26
|
+
* 4. Build backend with esbuild
|
|
27
|
+
* 5. (electron-vite would be started here -- omitted for MVP)
|
|
28
|
+
* 6. Spawn backend via bridge
|
|
29
|
+
* 7. Start watchers
|
|
30
|
+
*/
|
|
31
|
+
start(): Promise<void>;
|
|
32
|
+
/** Stop the dev server and clean up all resources. */
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
/** Get the parsed config. */
|
|
35
|
+
getConfig(): WoodConfig | null;
|
|
36
|
+
private startWatchers;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { type DevServerOptions, WoodDevServer };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { WoodConfig } from '../types/config.js';
|
|
2
|
+
|
|
3
|
+
interface DevServerOptions {
|
|
4
|
+
configPath?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
}
|
|
7
|
+
declare class WoodDevServer {
|
|
8
|
+
private config;
|
|
9
|
+
private bridge;
|
|
10
|
+
private backendWatcher;
|
|
11
|
+
private yamlWatcher;
|
|
12
|
+
private esbuild;
|
|
13
|
+
private cwd;
|
|
14
|
+
constructor(options?: DevServerOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Start the Wood development server.
|
|
17
|
+
*
|
|
18
|
+
* Automatically sets process.env.WOOD_MODE = 'development' so the app
|
|
19
|
+
* can conditionally use dynamic controller imports (dev) vs pre-registered
|
|
20
|
+
* controllers from the generated file (production).
|
|
21
|
+
*
|
|
22
|
+
* Steps:
|
|
23
|
+
* 1. Parse config
|
|
24
|
+
* 2. Parse + stitch YAML
|
|
25
|
+
* 3. Generate preload, types, mock
|
|
26
|
+
* 4. Build backend with esbuild
|
|
27
|
+
* 5. (electron-vite would be started here -- omitted for MVP)
|
|
28
|
+
* 6. Spawn backend via bridge
|
|
29
|
+
* 7. Start watchers
|
|
30
|
+
*/
|
|
31
|
+
start(): Promise<void>;
|
|
32
|
+
/** Stop the dev server and clean up all resources. */
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
/** Get the parsed config. */
|
|
35
|
+
getConfig(): WoodConfig | null;
|
|
36
|
+
private startWatchers;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { type DevServerOptions, WoodDevServer };
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { getLogger } from "@noego/logger";
|
|
4
|
+
import { parseConfig } from "../config/config_parser.js";
|
|
5
|
+
import { parseOperations } from "../parser/operations_parser.js";
|
|
6
|
+
import { parseViews } from "../parser/views_parser.js";
|
|
7
|
+
import { generatePreload } from "../codegen/preload_generator.js";
|
|
8
|
+
import { generateTypes } from "../codegen/type_generator.js";
|
|
9
|
+
import { generateTestMock } from "../codegen/test_mock_generator.js";
|
|
10
|
+
import { generateControllerRegistration } from "../codegen/controller_registration_generator.js";
|
|
11
|
+
import { generateRuntime } from "../codegen/runtime_generator.js";
|
|
12
|
+
import { generateRendererApp } from "../codegen/renderer_app_generator.js";
|
|
13
|
+
import { BackendBridge } from "../bridge/backend_bridge.js";
|
|
14
|
+
import { BackendWatcher } from "./backend_watcher.js";
|
|
15
|
+
import { YamlWatcher } from "./yaml_watcher.js";
|
|
16
|
+
import { EsbuildBackend } from "./esbuild_backend.js";
|
|
17
|
+
const logger = getLogger("wood:dev");
|
|
18
|
+
class WoodDevServer {
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.config = null;
|
|
21
|
+
this.bridge = null;
|
|
22
|
+
this.backendWatcher = null;
|
|
23
|
+
this.yamlWatcher = null;
|
|
24
|
+
this.esbuild = null;
|
|
25
|
+
this.cwd = options.cwd ?? process.cwd();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Start the Wood development server.
|
|
29
|
+
*
|
|
30
|
+
* Automatically sets process.env.WOOD_MODE = 'development' so the app
|
|
31
|
+
* can conditionally use dynamic controller imports (dev) vs pre-registered
|
|
32
|
+
* controllers from the generated file (production).
|
|
33
|
+
*
|
|
34
|
+
* Steps:
|
|
35
|
+
* 1. Parse config
|
|
36
|
+
* 2. Parse + stitch YAML
|
|
37
|
+
* 3. Generate preload, types, mock
|
|
38
|
+
* 4. Build backend with esbuild
|
|
39
|
+
* 5. (electron-vite would be started here -- omitted for MVP)
|
|
40
|
+
* 6. Spawn backend via bridge
|
|
41
|
+
* 7. Start watchers
|
|
42
|
+
*/
|
|
43
|
+
async start() {
|
|
44
|
+
process.env.WOOD_MODE = "development";
|
|
45
|
+
const configPath = path.resolve(this.cwd, "wood.config.yml");
|
|
46
|
+
this.config = parseConfig(configPath);
|
|
47
|
+
logger.info("config loaded", { outDir: this.config.outDir });
|
|
48
|
+
const opsYamlPath = path.resolve(this.cwd, this.config.main.openapi);
|
|
49
|
+
const opsContent = readFileSync(opsYamlPath, "utf-8");
|
|
50
|
+
const operations = parseOperations(opsContent);
|
|
51
|
+
logger.info("operations parsed", { count: operations.size });
|
|
52
|
+
const viewsYamlPath = path.resolve(this.cwd, this.config.renderer.openapi);
|
|
53
|
+
const viewsContent = readFileSync(viewsYamlPath, "utf-8");
|
|
54
|
+
const views = parseViews(viewsContent);
|
|
55
|
+
logger.info("views parsed", { count: views.length });
|
|
56
|
+
const outDir = path.resolve(this.cwd, this.config.outDir);
|
|
57
|
+
mkdirSync(outDir, { recursive: true });
|
|
58
|
+
const preloadCode = generatePreload(operations);
|
|
59
|
+
writeFileSync(path.join(outDir, "preload.generated.ts"), preloadCode);
|
|
60
|
+
const typesCode = generateTypes(operations);
|
|
61
|
+
writeFileSync(path.join(outDir, "wood.d.ts"), typesCode);
|
|
62
|
+
const mockCode = generateTestMock(operations);
|
|
63
|
+
writeFileSync(path.join(outDir, "wood.mock.ts"), mockCode);
|
|
64
|
+
const controllersDir = path.resolve(this.cwd, this.config.main.controllers);
|
|
65
|
+
const controllerRegCode = generateControllerRegistration(operations, {
|
|
66
|
+
controllersDir,
|
|
67
|
+
outDir
|
|
68
|
+
});
|
|
69
|
+
writeFileSync(path.join(outDir, "controllers.generated.ts"), controllerRegCode);
|
|
70
|
+
const runtimeCode = generateRuntime(operations, {
|
|
71
|
+
controllersDir,
|
|
72
|
+
outDir
|
|
73
|
+
});
|
|
74
|
+
writeFileSync(path.join(outDir, "runtime.generated.ts"), runtimeCode);
|
|
75
|
+
const rendererComponentDir = path.resolve(this.cwd, this.config.renderer.componentDir);
|
|
76
|
+
const rendererOutDir = path.resolve(this.cwd, this.config.renderer.componentDir, "generated");
|
|
77
|
+
mkdirSync(rendererOutDir, { recursive: true });
|
|
78
|
+
writeFileSync(
|
|
79
|
+
path.join(rendererOutDir, "app.ts"),
|
|
80
|
+
generateRendererApp(views, {
|
|
81
|
+
componentDir: rendererComponentDir,
|
|
82
|
+
outDir: rendererOutDir,
|
|
83
|
+
entryViewKey: this.config.renderer.entry
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
logger.info("codegen complete", { outDir });
|
|
87
|
+
const backendEntry = this.config.main.entry;
|
|
88
|
+
const backendOutfile = path.join(this.config.outDir, "backend", "index.js");
|
|
89
|
+
this.esbuild = new EsbuildBackend({
|
|
90
|
+
entryPoint: backendEntry,
|
|
91
|
+
outfile: backendOutfile,
|
|
92
|
+
cwd: this.cwd,
|
|
93
|
+
external: this.config.build ? [] : void 0
|
|
94
|
+
});
|
|
95
|
+
await this.esbuild.build();
|
|
96
|
+
await this.esbuild.createContext();
|
|
97
|
+
if (this.config.dev?.splitServe !== false) {
|
|
98
|
+
const resolvedBackendEntry = path.resolve(this.cwd, backendOutfile);
|
|
99
|
+
this.bridge = new BackendBridge({
|
|
100
|
+
backendEntry: resolvedBackendEntry,
|
|
101
|
+
onReady: () => {
|
|
102
|
+
logger.info("backend ready (split-serve)");
|
|
103
|
+
},
|
|
104
|
+
onPush: (channel, data) => {
|
|
105
|
+
logger.debug("backend push", { channel, data });
|
|
106
|
+
},
|
|
107
|
+
onExit: (code, signal) => {
|
|
108
|
+
logger.debug("backend exited", { code, signal });
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
await this.bridge.start();
|
|
112
|
+
}
|
|
113
|
+
if (this.config.dev?.watch !== false) {
|
|
114
|
+
this.startWatchers(outDir);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Stop the dev server and clean up all resources. */
|
|
118
|
+
async stop() {
|
|
119
|
+
this.backendWatcher?.stop();
|
|
120
|
+
this.yamlWatcher?.stop();
|
|
121
|
+
if (this.bridge) {
|
|
122
|
+
await this.bridge.stop();
|
|
123
|
+
logger.info("backend bridge stopped");
|
|
124
|
+
}
|
|
125
|
+
if (this.esbuild) {
|
|
126
|
+
await this.esbuild.dispose();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Get the parsed config. */
|
|
130
|
+
getConfig() {
|
|
131
|
+
return this.config;
|
|
132
|
+
}
|
|
133
|
+
startWatchers(outDir) {
|
|
134
|
+
if (!this.config) return;
|
|
135
|
+
if (this.bridge && this.esbuild) {
|
|
136
|
+
const backendPatterns = [
|
|
137
|
+
`${this.config.main.controllers}/**/*.ts`,
|
|
138
|
+
`${this.config.main.middleware}/**/*.ts`,
|
|
139
|
+
`${this.config.main.entry}`,
|
|
140
|
+
...this.config.main.watch ?? []
|
|
141
|
+
];
|
|
142
|
+
const esbuild = this.esbuild;
|
|
143
|
+
this.backendWatcher = new BackendWatcher({
|
|
144
|
+
patterns: backendPatterns,
|
|
145
|
+
bridge: this.bridge,
|
|
146
|
+
buildFn: () => esbuild.rebuild().then(() => {
|
|
147
|
+
}),
|
|
148
|
+
cwd: this.cwd
|
|
149
|
+
});
|
|
150
|
+
this.backendWatcher.start();
|
|
151
|
+
logger.info("backend watcher started", { patterns: backendPatterns });
|
|
152
|
+
}
|
|
153
|
+
this.yamlWatcher = new YamlWatcher({
|
|
154
|
+
operationsYamlPath: this.config.main.openapi,
|
|
155
|
+
viewsYamlPath: this.config.renderer.openapi,
|
|
156
|
+
controllersDir: this.config.main.controllers,
|
|
157
|
+
outDir,
|
|
158
|
+
cwd: this.cwd,
|
|
159
|
+
onViewsChange: async () => {
|
|
160
|
+
const viewsContent = readFileSync(
|
|
161
|
+
path.resolve(this.cwd, this.config.renderer.openapi),
|
|
162
|
+
"utf-8"
|
|
163
|
+
);
|
|
164
|
+
const views = parseViews(viewsContent);
|
|
165
|
+
const rendererComponentDir = path.resolve(this.cwd, this.config.renderer.componentDir);
|
|
166
|
+
const rendererOutDir = path.resolve(this.cwd, this.config.renderer.componentDir, "generated");
|
|
167
|
+
mkdirSync(rendererOutDir, { recursive: true });
|
|
168
|
+
writeFileSync(
|
|
169
|
+
path.join(rendererOutDir, "app.ts"),
|
|
170
|
+
generateRendererApp(views, {
|
|
171
|
+
componentDir: rendererComponentDir,
|
|
172
|
+
outDir: rendererOutDir,
|
|
173
|
+
entryViewKey: this.config.renderer.entry
|
|
174
|
+
})
|
|
175
|
+
);
|
|
176
|
+
logger.info("views renderer codegen regenerated", { rendererOutDir });
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
this.yamlWatcher.start();
|
|
180
|
+
logger.info("yaml watcher started");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export {
|
|
184
|
+
WoodDevServer
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=wood_dev_server.js.map
|