@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,98 @@
|
|
|
1
|
+
import { Privileges, app, BrowserWindow, ipcMain, protocol, net, shell, screen } from 'electron';
|
|
2
|
+
import { getLogger } from '@noego/logger';
|
|
3
|
+
import { RegisterRuntimeRouter } from '../runtime/runtime.cjs';
|
|
4
|
+
import { RendererLogCallback } from '../runtime/renderer_log_dispatcher.cjs';
|
|
5
|
+
import '../router/wood_router.cjs';
|
|
6
|
+
import '../types/operations.cjs';
|
|
7
|
+
|
|
8
|
+
type CleanupHandler = () => void | Promise<void>;
|
|
9
|
+
type WoodWindowConfig = {
|
|
10
|
+
title: string;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
defaultRoute?: string;
|
|
14
|
+
frame?: boolean;
|
|
15
|
+
transparent?: boolean;
|
|
16
|
+
resizable?: boolean;
|
|
17
|
+
alwaysOnTop?: boolean;
|
|
18
|
+
minWidth?: number;
|
|
19
|
+
minHeight?: number;
|
|
20
|
+
maxWidth?: number;
|
|
21
|
+
maxHeight?: number;
|
|
22
|
+
show?: boolean;
|
|
23
|
+
parent?: string;
|
|
24
|
+
modal?: boolean;
|
|
25
|
+
vibrancy?: string;
|
|
26
|
+
backgroundMaterial?: string;
|
|
27
|
+
backgroundColor?: string;
|
|
28
|
+
rememberBounds?: boolean;
|
|
29
|
+
contextMenu?: 'native' | 'custom';
|
|
30
|
+
};
|
|
31
|
+
type PrivilegedSchemeRegistration = {
|
|
32
|
+
scheme: string;
|
|
33
|
+
privileges: Privileges;
|
|
34
|
+
};
|
|
35
|
+
interface WoodMainAppBootResult {
|
|
36
|
+
scope?: string;
|
|
37
|
+
configureContainer?: (container: any) => void;
|
|
38
|
+
registerSchemesAsPrivileged?: PrivilegedSchemeRegistration[];
|
|
39
|
+
}
|
|
40
|
+
interface WoodMainBootContext {
|
|
41
|
+
electron: {
|
|
42
|
+
app: typeof app;
|
|
43
|
+
BrowserWindow: typeof BrowserWindow;
|
|
44
|
+
ipcMain: typeof ipcMain;
|
|
45
|
+
protocol: typeof protocol;
|
|
46
|
+
net: typeof net;
|
|
47
|
+
shell: typeof shell;
|
|
48
|
+
screen: typeof screen;
|
|
49
|
+
};
|
|
50
|
+
logger: ReturnType<typeof getLogger>;
|
|
51
|
+
}
|
|
52
|
+
interface WoodMainRuntimeContext extends WoodMainBootContext {
|
|
53
|
+
container: any;
|
|
54
|
+
applicationRoot: string;
|
|
55
|
+
getWindow: (windowId: string) => BrowserWindow | null;
|
|
56
|
+
createWindow: (windowId?: string) => BrowserWindow;
|
|
57
|
+
navigateWindow: (windowId: string, route: string) => Promise<void>;
|
|
58
|
+
broadcast: (channel: string, data: unknown) => void;
|
|
59
|
+
setRendererLogCallback: (callback: RendererLogCallback | null) => void;
|
|
60
|
+
getRendererLogCallback: () => RendererLogCallback | null;
|
|
61
|
+
getDebugMetadata: () => WoodDebugMetadata;
|
|
62
|
+
}
|
|
63
|
+
interface StartWoodMainOptions {
|
|
64
|
+
registerRuntime: (router: RegisterRuntimeRouter) => void;
|
|
65
|
+
windowDefs: Record<string, WoodWindowConfig>;
|
|
66
|
+
controllersDir: string;
|
|
67
|
+
middlewareDir: string;
|
|
68
|
+
outDir?: string;
|
|
69
|
+
scope?: string;
|
|
70
|
+
configureContainer?: (container: any) => void;
|
|
71
|
+
appBoot?: (context: WoodMainBootContext) => void | WoodMainAppBootResult | Promise<void | WoodMainAppBootResult>;
|
|
72
|
+
mainBoot?: (appBootResult: unknown, context: WoodMainRuntimeContext) => void | CleanupHandler | Promise<void | CleanupHandler>;
|
|
73
|
+
onBeforeQuit?: (context: WoodMainRuntimeContext) => void | Promise<void>;
|
|
74
|
+
onLoad?: (data: unknown, event?: unknown) => Promise<unknown>;
|
|
75
|
+
onContextMenu?: (data: unknown, event?: unknown) => Promise<unknown>;
|
|
76
|
+
}
|
|
77
|
+
interface WoodDebugWindowMetadata {
|
|
78
|
+
windowId: string;
|
|
79
|
+
title: string;
|
|
80
|
+
webContentsId: number;
|
|
81
|
+
url: string;
|
|
82
|
+
focused: boolean;
|
|
83
|
+
}
|
|
84
|
+
interface WoodDebugMetadata {
|
|
85
|
+
ok: boolean;
|
|
86
|
+
enabled: boolean;
|
|
87
|
+
mode: 'development' | 'production';
|
|
88
|
+
port?: number;
|
|
89
|
+
windows: WoodDebugWindowMetadata[];
|
|
90
|
+
}
|
|
91
|
+
declare function resolveWoodDebugMetadataConfiguration(env?: NodeJS.ProcessEnv): {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
mode: 'development' | 'production';
|
|
94
|
+
port?: number;
|
|
95
|
+
};
|
|
96
|
+
declare function startWoodMain(options: StartWoodMainOptions): void;
|
|
97
|
+
|
|
98
|
+
export { type PrivilegedSchemeRegistration, type StartWoodMainOptions, type WoodDebugMetadata, type WoodDebugWindowMetadata, type WoodMainAppBootResult, type WoodMainBootContext, type WoodMainRuntimeContext, type WoodWindowConfig, resolveWoodDebugMetadataConfiguration, startWoodMain };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Privileges, app, BrowserWindow, ipcMain, protocol, net, shell, screen } from 'electron';
|
|
2
|
+
import { getLogger } from '@noego/logger';
|
|
3
|
+
import { RegisterRuntimeRouter } from '../runtime/runtime.js';
|
|
4
|
+
import { RendererLogCallback } from '../runtime/renderer_log_dispatcher.js';
|
|
5
|
+
import '../router/wood_router.js';
|
|
6
|
+
import '../types/operations.js';
|
|
7
|
+
|
|
8
|
+
type CleanupHandler = () => void | Promise<void>;
|
|
9
|
+
type WoodWindowConfig = {
|
|
10
|
+
title: string;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
defaultRoute?: string;
|
|
14
|
+
frame?: boolean;
|
|
15
|
+
transparent?: boolean;
|
|
16
|
+
resizable?: boolean;
|
|
17
|
+
alwaysOnTop?: boolean;
|
|
18
|
+
minWidth?: number;
|
|
19
|
+
minHeight?: number;
|
|
20
|
+
maxWidth?: number;
|
|
21
|
+
maxHeight?: number;
|
|
22
|
+
show?: boolean;
|
|
23
|
+
parent?: string;
|
|
24
|
+
modal?: boolean;
|
|
25
|
+
vibrancy?: string;
|
|
26
|
+
backgroundMaterial?: string;
|
|
27
|
+
backgroundColor?: string;
|
|
28
|
+
rememberBounds?: boolean;
|
|
29
|
+
contextMenu?: 'native' | 'custom';
|
|
30
|
+
};
|
|
31
|
+
type PrivilegedSchemeRegistration = {
|
|
32
|
+
scheme: string;
|
|
33
|
+
privileges: Privileges;
|
|
34
|
+
};
|
|
35
|
+
interface WoodMainAppBootResult {
|
|
36
|
+
scope?: string;
|
|
37
|
+
configureContainer?: (container: any) => void;
|
|
38
|
+
registerSchemesAsPrivileged?: PrivilegedSchemeRegistration[];
|
|
39
|
+
}
|
|
40
|
+
interface WoodMainBootContext {
|
|
41
|
+
electron: {
|
|
42
|
+
app: typeof app;
|
|
43
|
+
BrowserWindow: typeof BrowserWindow;
|
|
44
|
+
ipcMain: typeof ipcMain;
|
|
45
|
+
protocol: typeof protocol;
|
|
46
|
+
net: typeof net;
|
|
47
|
+
shell: typeof shell;
|
|
48
|
+
screen: typeof screen;
|
|
49
|
+
};
|
|
50
|
+
logger: ReturnType<typeof getLogger>;
|
|
51
|
+
}
|
|
52
|
+
interface WoodMainRuntimeContext extends WoodMainBootContext {
|
|
53
|
+
container: any;
|
|
54
|
+
applicationRoot: string;
|
|
55
|
+
getWindow: (windowId: string) => BrowserWindow | null;
|
|
56
|
+
createWindow: (windowId?: string) => BrowserWindow;
|
|
57
|
+
navigateWindow: (windowId: string, route: string) => Promise<void>;
|
|
58
|
+
broadcast: (channel: string, data: unknown) => void;
|
|
59
|
+
setRendererLogCallback: (callback: RendererLogCallback | null) => void;
|
|
60
|
+
getRendererLogCallback: () => RendererLogCallback | null;
|
|
61
|
+
getDebugMetadata: () => WoodDebugMetadata;
|
|
62
|
+
}
|
|
63
|
+
interface StartWoodMainOptions {
|
|
64
|
+
registerRuntime: (router: RegisterRuntimeRouter) => void;
|
|
65
|
+
windowDefs: Record<string, WoodWindowConfig>;
|
|
66
|
+
controllersDir: string;
|
|
67
|
+
middlewareDir: string;
|
|
68
|
+
outDir?: string;
|
|
69
|
+
scope?: string;
|
|
70
|
+
configureContainer?: (container: any) => void;
|
|
71
|
+
appBoot?: (context: WoodMainBootContext) => void | WoodMainAppBootResult | Promise<void | WoodMainAppBootResult>;
|
|
72
|
+
mainBoot?: (appBootResult: unknown, context: WoodMainRuntimeContext) => void | CleanupHandler | Promise<void | CleanupHandler>;
|
|
73
|
+
onBeforeQuit?: (context: WoodMainRuntimeContext) => void | Promise<void>;
|
|
74
|
+
onLoad?: (data: unknown, event?: unknown) => Promise<unknown>;
|
|
75
|
+
onContextMenu?: (data: unknown, event?: unknown) => Promise<unknown>;
|
|
76
|
+
}
|
|
77
|
+
interface WoodDebugWindowMetadata {
|
|
78
|
+
windowId: string;
|
|
79
|
+
title: string;
|
|
80
|
+
webContentsId: number;
|
|
81
|
+
url: string;
|
|
82
|
+
focused: boolean;
|
|
83
|
+
}
|
|
84
|
+
interface WoodDebugMetadata {
|
|
85
|
+
ok: boolean;
|
|
86
|
+
enabled: boolean;
|
|
87
|
+
mode: 'development' | 'production';
|
|
88
|
+
port?: number;
|
|
89
|
+
windows: WoodDebugWindowMetadata[];
|
|
90
|
+
}
|
|
91
|
+
declare function resolveWoodDebugMetadataConfiguration(env?: NodeJS.ProcessEnv): {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
mode: 'development' | 'production';
|
|
94
|
+
port?: number;
|
|
95
|
+
};
|
|
96
|
+
declare function startWoodMain(options: StartWoodMainOptions): void;
|
|
97
|
+
|
|
98
|
+
export { type PrivilegedSchemeRegistration, type StartWoodMainOptions, type WoodDebugMetadata, type WoodDebugWindowMetadata, type WoodMainAppBootResult, type WoodMainBootContext, type WoodMainRuntimeContext, type WoodWindowConfig, resolveWoodDebugMetadataConfiguration, startWoodMain };
|
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import {
|
|
3
|
+
app as electronApp,
|
|
4
|
+
BrowserWindow,
|
|
5
|
+
ipcMain,
|
|
6
|
+
protocol,
|
|
7
|
+
net,
|
|
8
|
+
shell,
|
|
9
|
+
screen
|
|
10
|
+
} from "electron";
|
|
11
|
+
import { getLogger } from "@noego/logger";
|
|
12
|
+
import { WindowStateStore } from "../window/window_state_store.js";
|
|
13
|
+
import { getContainer } from "../runtime/get_container.js";
|
|
14
|
+
import { runtime as bootRuntime } from "../runtime/runtime.js";
|
|
15
|
+
import { setApplicationRoot } from "../runtime/application_root.js";
|
|
16
|
+
import {
|
|
17
|
+
getRendererLogDispatcher
|
|
18
|
+
} from "../runtime/renderer_log_dispatcher.js";
|
|
19
|
+
import { Ipc, getIpc } from "../ipc/index.js";
|
|
20
|
+
import { setIpcPushSender, clearIpcPushSender } from "../ipc/shared.js";
|
|
21
|
+
const DEFAULT_WOOD_REMOTE_DEBUGGING_PORT = 9333;
|
|
22
|
+
function resolveWoodDebugMetadataConfiguration(env = process.env) {
|
|
23
|
+
const isDevelopment = env.WOOD_MODE === "development";
|
|
24
|
+
if (!isDevelopment) {
|
|
25
|
+
return {
|
|
26
|
+
enabled: false,
|
|
27
|
+
mode: "production"
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const rawPort = env.WOOD_REMOTE_DEBUGGING_PORT;
|
|
31
|
+
const parsedPort = rawPort ? Number.parseInt(rawPort, 10) : DEFAULT_WOOD_REMOTE_DEBUGGING_PORT;
|
|
32
|
+
const port = Number.isFinite(parsedPort) && parsedPort > 0 ? parsedPort : DEFAULT_WOOD_REMOTE_DEBUGGING_PORT;
|
|
33
|
+
return {
|
|
34
|
+
enabled: true,
|
|
35
|
+
mode: "development",
|
|
36
|
+
port
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function resolveWindowDef(windowDefs, windowId = "main") {
|
|
40
|
+
const def = windowDefs[windowId];
|
|
41
|
+
if (!def) {
|
|
42
|
+
throw new Error(`Window "${windowId}" not defined in generated window defs.`);
|
|
43
|
+
}
|
|
44
|
+
return def;
|
|
45
|
+
}
|
|
46
|
+
function resolveRuntimePath(relativeOrAbsolutePath) {
|
|
47
|
+
if (path.isAbsolute(relativeOrAbsolutePath)) {
|
|
48
|
+
return relativeOrAbsolutePath;
|
|
49
|
+
}
|
|
50
|
+
return path.join(electronApp.getAppPath(), relativeOrAbsolutePath);
|
|
51
|
+
}
|
|
52
|
+
function toErrorMessage(error) {
|
|
53
|
+
return error instanceof Error ? error.message : String(error);
|
|
54
|
+
}
|
|
55
|
+
function startWoodMain(options) {
|
|
56
|
+
const logger = getLogger("wood:main").named("bootstrap");
|
|
57
|
+
const runtimeLogger = getLogger("wood:main").named("runtime");
|
|
58
|
+
const debugConfig = resolveWoodDebugMetadataConfiguration();
|
|
59
|
+
const windowState = new WindowStateStore();
|
|
60
|
+
const windows = /* @__PURE__ */ new Map();
|
|
61
|
+
let mainWindow = null;
|
|
62
|
+
let runtimeContext = null;
|
|
63
|
+
let mainBootCleanup;
|
|
64
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
65
|
+
stream.on("error", (error) => {
|
|
66
|
+
if (error.code === "EPIPE") {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (debugConfig.enabled && debugConfig.port) {
|
|
73
|
+
electronApp.commandLine.appendSwitch("remote-debugging-port", String(debugConfig.port));
|
|
74
|
+
electronApp.commandLine.appendSwitch("remote-debugging-address", "127.0.0.1");
|
|
75
|
+
logger.info("devtools remote debugging enabled", {
|
|
76
|
+
port: debugConfig.port,
|
|
77
|
+
mode: debugConfig.mode
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const bootContext = {
|
|
81
|
+
electron: {
|
|
82
|
+
app: electronApp,
|
|
83
|
+
BrowserWindow,
|
|
84
|
+
ipcMain,
|
|
85
|
+
protocol,
|
|
86
|
+
net,
|
|
87
|
+
shell,
|
|
88
|
+
screen
|
|
89
|
+
},
|
|
90
|
+
logger
|
|
91
|
+
};
|
|
92
|
+
void (async () => {
|
|
93
|
+
const appBootResult = options.appBoot ? await options.appBoot(bootContext) : void 0;
|
|
94
|
+
const bootOverrides = appBootResult ?? {};
|
|
95
|
+
const scope = bootOverrides.scope ?? options.scope ?? process.cwd();
|
|
96
|
+
const configureContainer = bootOverrides.configureContainer ?? options.configureContainer;
|
|
97
|
+
const privilegedSchemes = Array.isArray(bootOverrides.registerSchemesAsPrivileged) ? bootOverrides.registerSchemesAsPrivileged : [];
|
|
98
|
+
if (privilegedSchemes.length > 0) {
|
|
99
|
+
protocol.registerSchemesAsPrivileged(privilegedSchemes);
|
|
100
|
+
logger.info("registered privileged schemes", {
|
|
101
|
+
count: privilegedSchemes.length,
|
|
102
|
+
schemes: privilegedSchemes.map((entry) => entry.scheme)
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const outDir = options.outDir ?? "out";
|
|
106
|
+
const preloadPath = path.join(electronApp.getAppPath(), outDir, "preload", "index.js");
|
|
107
|
+
const rendererFile = path.join(electronApp.getAppPath(), outDir, "renderer", "index.html");
|
|
108
|
+
const container = getContainer({
|
|
109
|
+
scope,
|
|
110
|
+
...configureContainer ? { configure: configureContainer } : {}
|
|
111
|
+
});
|
|
112
|
+
const registrationContainer = container;
|
|
113
|
+
if (typeof registrationContainer.registerFunction === "function") {
|
|
114
|
+
registrationContainer.registerFunction(Ipc, () => getIpc());
|
|
115
|
+
}
|
|
116
|
+
const getWindow = (windowId) => {
|
|
117
|
+
const existing = windows.get(windowId);
|
|
118
|
+
if (!existing) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
if (existing.isDestroyed()) {
|
|
122
|
+
windows.delete(windowId);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return existing;
|
|
126
|
+
};
|
|
127
|
+
const findWindowIdByWebContents = (webContentsId) => {
|
|
128
|
+
for (const [windowId, win] of windows.entries()) {
|
|
129
|
+
if (win.isDestroyed()) {
|
|
130
|
+
windows.delete(windowId);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (win.webContents.id === webContentsId) {
|
|
134
|
+
return windowId;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
};
|
|
139
|
+
const waitForWindowReady = async (win) => {
|
|
140
|
+
const webContents = win.webContents;
|
|
141
|
+
const isLoading = typeof webContents.isLoadingMainFrame === "function" ? webContents.isLoadingMainFrame() : webContents.isLoading();
|
|
142
|
+
if (!isLoading) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
await new Promise((resolve) => {
|
|
146
|
+
webContents.once("did-finish-load", () => resolve());
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
const getDebugMetadata = () => {
|
|
150
|
+
const debugWindows = [];
|
|
151
|
+
for (const [windowId, win] of windows.entries()) {
|
|
152
|
+
if (win.isDestroyed()) {
|
|
153
|
+
windows.delete(windowId);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
debugWindows.push({
|
|
157
|
+
windowId,
|
|
158
|
+
title: win.getTitle(),
|
|
159
|
+
webContentsId: win.webContents.id,
|
|
160
|
+
url: win.webContents.getURL(),
|
|
161
|
+
focused: win.isFocused()
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
ok: true,
|
|
166
|
+
enabled: debugConfig.enabled,
|
|
167
|
+
mode: debugConfig.mode,
|
|
168
|
+
...debugConfig.port ? { port: debugConfig.port } : {},
|
|
169
|
+
windows: debugWindows
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
const createWindow = (windowId = "main") => {
|
|
173
|
+
const existing = getWindow(windowId);
|
|
174
|
+
if (existing) {
|
|
175
|
+
existing.show();
|
|
176
|
+
existing.focus();
|
|
177
|
+
return existing;
|
|
178
|
+
}
|
|
179
|
+
const windowDef = resolveWindowDef(options.windowDefs, windowId);
|
|
180
|
+
const defaultShow = windowDef.show ?? true;
|
|
181
|
+
const parentWindow = windowDef.parent ? getWindow(windowDef.parent) : null;
|
|
182
|
+
windowState.setScreen(screen);
|
|
183
|
+
const savedBounds = windowDef.rememberBounds ? windowState.getBounds(windowId) : null;
|
|
184
|
+
const windowOptions = {
|
|
185
|
+
width: savedBounds?.width ?? windowDef.width,
|
|
186
|
+
height: savedBounds?.height ?? windowDef.height,
|
|
187
|
+
...savedBounds ? { x: savedBounds.x, y: savedBounds.y } : {},
|
|
188
|
+
...windowDef.minWidth != null ? { minWidth: windowDef.minWidth } : {},
|
|
189
|
+
...windowDef.minHeight != null ? { minHeight: windowDef.minHeight } : {},
|
|
190
|
+
...windowDef.maxWidth != null ? { maxWidth: windowDef.maxWidth } : {},
|
|
191
|
+
...windowDef.maxHeight != null ? { maxHeight: windowDef.maxHeight } : {},
|
|
192
|
+
...typeof windowDef.modal === "boolean" ? { modal: windowDef.modal } : {},
|
|
193
|
+
...parentWindow ? { parent: parentWindow } : {},
|
|
194
|
+
title: windowDef.title,
|
|
195
|
+
frame: windowDef.frame ?? true,
|
|
196
|
+
transparent: windowDef.transparent ?? false,
|
|
197
|
+
resizable: windowDef.resizable ?? true,
|
|
198
|
+
alwaysOnTop: windowDef.alwaysOnTop ?? false,
|
|
199
|
+
...typeof windowDef.backgroundColor === "string" ? { backgroundColor: windowDef.backgroundColor } : {},
|
|
200
|
+
...process.platform === "darwin" && typeof windowDef.vibrancy === "string" ? {
|
|
201
|
+
vibrancy: windowDef.vibrancy,
|
|
202
|
+
visualEffectState: "active"
|
|
203
|
+
} : {},
|
|
204
|
+
...process.platform === "win32" && typeof windowDef.backgroundMaterial === "string" ? {
|
|
205
|
+
backgroundMaterial: windowDef.backgroundMaterial
|
|
206
|
+
} : {},
|
|
207
|
+
show: savedBounds ? false : defaultShow,
|
|
208
|
+
webPreferences: {
|
|
209
|
+
preload: preloadPath,
|
|
210
|
+
contextIsolation: true,
|
|
211
|
+
nodeIntegration: false
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const win = new BrowserWindow(windowOptions);
|
|
215
|
+
windows.set(windowId, win);
|
|
216
|
+
if (windowId === "main") {
|
|
217
|
+
mainWindow = win;
|
|
218
|
+
}
|
|
219
|
+
if (savedBounds?.isMaximized) {
|
|
220
|
+
win.maximize();
|
|
221
|
+
} else if (savedBounds?.isFullScreen) {
|
|
222
|
+
win.setFullScreen(true);
|
|
223
|
+
}
|
|
224
|
+
if (savedBounds && defaultShow) {
|
|
225
|
+
win.show();
|
|
226
|
+
}
|
|
227
|
+
if (windowDef.rememberBounds) {
|
|
228
|
+
const captureNormalBounds = () => {
|
|
229
|
+
if (!win.isMaximized() && !win.isFullScreen()) {
|
|
230
|
+
const rect = win.getBounds();
|
|
231
|
+
windowState.updateBoundsDebounced(windowId, {
|
|
232
|
+
...rect,
|
|
233
|
+
isMaximized: false,
|
|
234
|
+
isFullScreen: false
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
win.on("move", captureNormalBounds);
|
|
239
|
+
win.on("resize", captureNormalBounds);
|
|
240
|
+
win.on("close", () => {
|
|
241
|
+
const rect = win.getBounds();
|
|
242
|
+
windowState.saveBoundsSync(windowId, {
|
|
243
|
+
...rect,
|
|
244
|
+
isMaximized: win.isMaximized(),
|
|
245
|
+
isFullScreen: win.isFullScreen()
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
win.webContents.setWindowOpenHandler(({ url }) => {
|
|
250
|
+
if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
251
|
+
void shell.openExternal(url);
|
|
252
|
+
}
|
|
253
|
+
return { action: "deny" };
|
|
254
|
+
});
|
|
255
|
+
win.webContents.on("will-navigate", (event, url) => {
|
|
256
|
+
if (process.env.ELECTRON_RENDERER_URL && url.startsWith(process.env.ELECTRON_RENDERER_URL)) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
260
|
+
event.preventDefault();
|
|
261
|
+
void shell.openExternal(url);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
const rendererLogger = getLogger("wood:main").named(`renderer:${windowId}`);
|
|
265
|
+
const levelMap = {
|
|
266
|
+
0: "debug",
|
|
267
|
+
1: "info",
|
|
268
|
+
2: "warn",
|
|
269
|
+
3: "error"
|
|
270
|
+
};
|
|
271
|
+
win.webContents.on("console-message", (_event, level, message, line, sourceId) => {
|
|
272
|
+
const method = levelMap[level] ?? "info";
|
|
273
|
+
rendererLogger[method](message, { source: sourceId, line, windowId });
|
|
274
|
+
});
|
|
275
|
+
if (process.env.ELECTRON_RENDERER_URL) {
|
|
276
|
+
void win.loadURL(process.env.ELECTRON_RENDERER_URL);
|
|
277
|
+
} else {
|
|
278
|
+
void win.loadFile(rendererFile);
|
|
279
|
+
}
|
|
280
|
+
win.on("closed", () => {
|
|
281
|
+
windows.delete(windowId);
|
|
282
|
+
if (windowId === "main") {
|
|
283
|
+
mainWindow = null;
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
logger.info("window created", { windowId });
|
|
287
|
+
return win;
|
|
288
|
+
};
|
|
289
|
+
const navigateWindow = async (windowId, route) => {
|
|
290
|
+
const win = createWindow(windowId);
|
|
291
|
+
await waitForWindowReady(win);
|
|
292
|
+
win.webContents.send("__event:__navigate", { route });
|
|
293
|
+
win.show();
|
|
294
|
+
win.focus();
|
|
295
|
+
};
|
|
296
|
+
const dispatchPushEvent = (channel, data, options2) => {
|
|
297
|
+
const eventChannel = channel.startsWith("__event:") ? channel : `__event:${channel}`;
|
|
298
|
+
if (options2?.windowId) {
|
|
299
|
+
const target = getWindow(options2.windowId);
|
|
300
|
+
if (target && !target.isDestroyed()) {
|
|
301
|
+
target.webContents.send(eventChannel, data);
|
|
302
|
+
}
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
for (const [windowId, win] of windows.entries()) {
|
|
306
|
+
if (win.isDestroyed()) {
|
|
307
|
+
windows.delete(windowId);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
win.webContents.send(eventChannel, data);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
setIpcPushSender(dispatchPushEvent);
|
|
314
|
+
const broadcast = (channel, data) => {
|
|
315
|
+
for (const [windowId, win] of windows.entries()) {
|
|
316
|
+
if (win.isDestroyed()) {
|
|
317
|
+
windows.delete(windowId);
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
win.webContents.send(channel, data);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
runtimeContext = {
|
|
324
|
+
...bootContext,
|
|
325
|
+
container,
|
|
326
|
+
applicationRoot: "",
|
|
327
|
+
getWindow,
|
|
328
|
+
createWindow,
|
|
329
|
+
navigateWindow,
|
|
330
|
+
broadcast,
|
|
331
|
+
setRendererLogCallback: (callback) => {
|
|
332
|
+
getRendererLogDispatcher().setCallback(callback);
|
|
333
|
+
},
|
|
334
|
+
getRendererLogCallback: () => getRendererLogDispatcher().getCallback(),
|
|
335
|
+
getDebugMetadata
|
|
336
|
+
};
|
|
337
|
+
const bootstrap = async () => {
|
|
338
|
+
logger.info("bootstrap starting");
|
|
339
|
+
const applicationRoot = setApplicationRoot(path.join(electronApp.getPath("userData"), "wood"));
|
|
340
|
+
runtimeContext.applicationRoot = applicationRoot;
|
|
341
|
+
logger.info("application root configured", { applicationRoot });
|
|
342
|
+
if (options.mainBoot) {
|
|
343
|
+
const bootResult = await options.mainBoot(appBootResult, runtimeContext);
|
|
344
|
+
if (typeof bootResult === "function") {
|
|
345
|
+
mainBootCleanup = bootResult;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
await bootRuntime({
|
|
349
|
+
container,
|
|
350
|
+
ipcMain,
|
|
351
|
+
registerRuntime: options.registerRuntime,
|
|
352
|
+
controllersDir: resolveRuntimePath(options.controllersDir),
|
|
353
|
+
middlewareDir: resolveRuntimePath(options.middlewareDir),
|
|
354
|
+
onLoad: options.onLoad ?? (async () => {
|
|
355
|
+
throw new Error('Reserved channel "__load" is not configured for this app.');
|
|
356
|
+
}),
|
|
357
|
+
onNavigate: async (rawData) => {
|
|
358
|
+
const data = rawData;
|
|
359
|
+
if (!data.windowId) {
|
|
360
|
+
throw new Error("__navigate requires windowId");
|
|
361
|
+
}
|
|
362
|
+
if (!data.route) {
|
|
363
|
+
throw new Error("__navigate requires route");
|
|
364
|
+
}
|
|
365
|
+
await navigateWindow(data.windowId, data.route);
|
|
366
|
+
return { ok: true };
|
|
367
|
+
},
|
|
368
|
+
onWindow: async (rawData, event) => {
|
|
369
|
+
const data = rawData;
|
|
370
|
+
const action = data.action ?? "";
|
|
371
|
+
const windowId = data.windowId;
|
|
372
|
+
if (action === "current") {
|
|
373
|
+
const ipcEvent = event;
|
|
374
|
+
const senderWindowId = ipcEvent?.sender ? findWindowIdByWebContents(ipcEvent.sender.id) : null;
|
|
375
|
+
if (!senderWindowId) {
|
|
376
|
+
return { ok: false };
|
|
377
|
+
}
|
|
378
|
+
const senderWindowDef = resolveWindowDef(options.windowDefs, senderWindowId);
|
|
379
|
+
return {
|
|
380
|
+
ok: true,
|
|
381
|
+
windowId: senderWindowId,
|
|
382
|
+
defaultRoute: senderWindowDef.defaultRoute
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
if (action === "open") {
|
|
386
|
+
if (!windowId) {
|
|
387
|
+
throw new Error("__window.open requires windowId");
|
|
388
|
+
}
|
|
389
|
+
createWindow(windowId);
|
|
390
|
+
return { ok: true };
|
|
391
|
+
}
|
|
392
|
+
const win = windowId ? getWindow(windowId) : mainWindow;
|
|
393
|
+
if (!win) {
|
|
394
|
+
return { ok: false };
|
|
395
|
+
}
|
|
396
|
+
switch (action) {
|
|
397
|
+
case "close":
|
|
398
|
+
win.close();
|
|
399
|
+
return { ok: true };
|
|
400
|
+
case "focus":
|
|
401
|
+
win.show();
|
|
402
|
+
win.focus();
|
|
403
|
+
return { ok: true };
|
|
404
|
+
case "minimize":
|
|
405
|
+
win.minimize();
|
|
406
|
+
return { ok: true };
|
|
407
|
+
case "maximize":
|
|
408
|
+
win.isMaximized() ? win.unmaximize() : win.maximize();
|
|
409
|
+
return { ok: true };
|
|
410
|
+
default:
|
|
411
|
+
return { ok: false };
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
onDebug: async (rawData) => {
|
|
415
|
+
const data = rawData;
|
|
416
|
+
const action = data?.action ?? "";
|
|
417
|
+
if (action === "current") {
|
|
418
|
+
return getDebugMetadata();
|
|
419
|
+
}
|
|
420
|
+
return { ok: false };
|
|
421
|
+
},
|
|
422
|
+
onContextMenu: options.onContextMenu ?? (async (_rawData, event) => {
|
|
423
|
+
const ipcEvent = event;
|
|
424
|
+
const senderId = ipcEvent?.sender?.id;
|
|
425
|
+
runtimeLogger.debug("context menu requested", { senderId });
|
|
426
|
+
return { ok: true };
|
|
427
|
+
})
|
|
428
|
+
});
|
|
429
|
+
createWindow("main");
|
|
430
|
+
logger.info("bootstrap complete");
|
|
431
|
+
};
|
|
432
|
+
void electronApp.whenReady().then(bootstrap).catch((error) => {
|
|
433
|
+
logger.error("bootstrap failed", {
|
|
434
|
+
message: toErrorMessage(error),
|
|
435
|
+
stack: error instanceof Error ? error.stack : void 0
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
electronApp.on("before-quit", () => {
|
|
439
|
+
if (!runtimeContext) {
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
void (async () => {
|
|
443
|
+
try {
|
|
444
|
+
clearIpcPushSender();
|
|
445
|
+
if (mainBootCleanup) {
|
|
446
|
+
await mainBootCleanup();
|
|
447
|
+
}
|
|
448
|
+
if (options.onBeforeQuit) {
|
|
449
|
+
await options.onBeforeQuit(runtimeContext);
|
|
450
|
+
}
|
|
451
|
+
} catch (error) {
|
|
452
|
+
logger.warn("before-quit handler failed", { error: toErrorMessage(error) });
|
|
453
|
+
}
|
|
454
|
+
})();
|
|
455
|
+
});
|
|
456
|
+
electronApp.on("window-all-closed", () => {
|
|
457
|
+
electronApp.quit();
|
|
458
|
+
});
|
|
459
|
+
electronApp.on("activate", () => {
|
|
460
|
+
if (BrowserWindow.getAllWindows().length === 0) {
|
|
461
|
+
createWindow("main");
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
})().catch((error) => {
|
|
465
|
+
logger.error("startup failed before ready", {
|
|
466
|
+
message: toErrorMessage(error),
|
|
467
|
+
stack: error instanceof Error ? error.stack : void 0
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
export {
|
|
472
|
+
resolveWoodDebugMetadataConfiguration,
|
|
473
|
+
startWoodMain
|
|
474
|
+
};
|
|
475
|
+
//# sourceMappingURL=index.js.map
|