@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,17 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var controller_contract_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(controller_contract_exports);
|
|
17
|
+
//# sourceMappingURL=controller_contract.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/controller_contract.ts"],"sourcesContent":["export interface ControllerState {}\n\nexport interface ControllerInput {}\n\nexport interface ControllerEvents {}\n\nexport interface PageController<\n S extends ControllerState = ControllerState,\n I extends ControllerInput = ControllerInput,\n E extends ControllerEvents = ControllerEvents,\n> {\n readonly state: S;\n readonly input: I;\n readonly events: E;\n initialize?(): void | Promise<void>;\n destroy(): void;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ControllerState {
|
|
2
|
+
}
|
|
3
|
+
interface ControllerInput {
|
|
4
|
+
}
|
|
5
|
+
interface ControllerEvents {
|
|
6
|
+
}
|
|
7
|
+
interface PageController<S extends ControllerState = ControllerState, I extends ControllerInput = ControllerInput, E extends ControllerEvents = ControllerEvents> {
|
|
8
|
+
readonly state: S;
|
|
9
|
+
readonly input: I;
|
|
10
|
+
readonly events: E;
|
|
11
|
+
initialize?(): void | Promise<void>;
|
|
12
|
+
destroy(): void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type { ControllerEvents, ControllerInput, ControllerState, PageController };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ControllerState {
|
|
2
|
+
}
|
|
3
|
+
interface ControllerInput {
|
|
4
|
+
}
|
|
5
|
+
interface ControllerEvents {
|
|
6
|
+
}
|
|
7
|
+
interface PageController<S extends ControllerState = ControllerState, I extends ControllerInput = ControllerInput, E extends ControllerEvents = ControllerEvents> {
|
|
8
|
+
readonly state: S;
|
|
9
|
+
readonly input: I;
|
|
10
|
+
readonly events: E;
|
|
11
|
+
initialize?(): void | Promise<void>;
|
|
12
|
+
destroy(): void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type { ControllerEvents, ControllerInput, ControllerState, PageController };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=controller_contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/global_polyfill.ts"],"sourcesContent":["const globalObj = globalThis as typeof globalThis & {\n global?: typeof globalThis;\n};\n\nif (typeof globalObj.global === 'undefined') {\n globalObj.global = globalThis;\n}\n"],"mappings":";AAAA,MAAM,YAAY;AAIlB,IAAI,OAAO,UAAU,WAAW,aAAa;AAC3C,YAAU,SAAS;AACrB;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/global_polyfill.ts"],"sourcesContent":["const globalObj = globalThis as typeof globalThis & {\n global?: typeof globalThis;\n};\n\nif (typeof globalObj.global === 'undefined') {\n globalObj.global = globalThis;\n}\n"],"mappings":"AAAA,MAAM,YAAY;AAIlB,IAAI,OAAO,UAAU,WAAW,aAAa;AAC3C,YAAU,SAAS;AACrB;","names":[]}
|
|
@@ -0,0 +1,451 @@
|
|
|
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 client_exports = {};
|
|
20
|
+
__export(client_exports, {
|
|
21
|
+
App: () => App,
|
|
22
|
+
Ipc: () => import_ipc.Ipc,
|
|
23
|
+
TraceProvider: () => import_tracing2.TraceProvider,
|
|
24
|
+
TraceProviderConfiguration: () => import_tracing2.TraceProviderConfiguration,
|
|
25
|
+
WOOD_INTERNAL_BRIDGE_KEY: () => WOOD_INTERNAL_BRIDGE_KEY,
|
|
26
|
+
WindowControls: () => WindowControls,
|
|
27
|
+
WoodController: () => import_wood_controller.WoodController,
|
|
28
|
+
clampMenuPosition: () => clampMenuPosition,
|
|
29
|
+
clearClientAppForTests: () => clearClientAppForTests,
|
|
30
|
+
clearClientContainerForTests: () => clearClientContainerForTests,
|
|
31
|
+
clearClientLoggersForTests: () => clearClientLoggersForTests,
|
|
32
|
+
clearClientNavigationForTests: () => clearClientNavigationForTests,
|
|
33
|
+
clearClientWindowControlsForTests: () => clearClientWindowControlsForTests,
|
|
34
|
+
clearTraceHubForTests: () => import_tracing.clearTraceHubForTests,
|
|
35
|
+
createLogger: () => createLogger,
|
|
36
|
+
createSvelteBoot: () => createSvelteBoot,
|
|
37
|
+
getApp: () => getApp,
|
|
38
|
+
getContainer: () => getContainer,
|
|
39
|
+
getIpc: () => import_ipc.getIpc,
|
|
40
|
+
getNavigation: () => import_navigation.getNavigation,
|
|
41
|
+
getWindowControls: () => getWindowControls,
|
|
42
|
+
startWood: () => startWood
|
|
43
|
+
});
|
|
44
|
+
module.exports = __toCommonJS(client_exports);
|
|
45
|
+
var import_global_polyfill = require("./global_polyfill.cjs");
|
|
46
|
+
var import_reflect_metadata = require("reflect-metadata");
|
|
47
|
+
var import_ioc = require("@noego/ioc");
|
|
48
|
+
var import_navigation = require("../navigation");
|
|
49
|
+
var import_ipc = require("../ipc/index.js");
|
|
50
|
+
var import_tracing = require("../tracing/index.js");
|
|
51
|
+
var import_wood_controller = require("./wood_controller.svelte");
|
|
52
|
+
var import_tracing2 = require("../tracing/index.js");
|
|
53
|
+
const CLIENT_CONTAINER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.client.container");
|
|
54
|
+
const CLIENT_APP_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.client.app");
|
|
55
|
+
const CLIENT_WINDOW_CONTROLS_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.client.window-controls");
|
|
56
|
+
const CLIENT_LOGGER_REGISTRY_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.client.logger-registry");
|
|
57
|
+
const INTERNAL_BRIDGE_GLOBAL_KEY = "__NOEGO_WOOD_BRIDGE__";
|
|
58
|
+
const WOOD_INTERNAL_BRIDGE_KEY = INTERNAL_BRIDGE_GLOBAL_KEY;
|
|
59
|
+
class App {
|
|
60
|
+
}
|
|
61
|
+
function resolveWoodBridge() {
|
|
62
|
+
const globalObj = globalThis;
|
|
63
|
+
const bridge = globalObj[INTERNAL_BRIDGE_GLOBAL_KEY] ?? globalObj.window?.[INTERNAL_BRIDGE_GLOBAL_KEY] ?? globalObj.wood ?? globalObj.window?.wood;
|
|
64
|
+
if (!bridge || typeof bridge !== "object") {
|
|
65
|
+
throw new Error(
|
|
66
|
+
`Wood bridge is not available on globalThis.${INTERNAL_BRIDGE_GLOBAL_KEY}.`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
return bridge;
|
|
70
|
+
}
|
|
71
|
+
function resolveRpcManifest(bridge) {
|
|
72
|
+
const manifest = bridge.__rpcManifest;
|
|
73
|
+
if (!Array.isArray(manifest)) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
'Wood bridge is missing "__rpcManifest". Regenerate preload with the latest @noego/wood.'
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
return manifest;
|
|
79
|
+
}
|
|
80
|
+
function resolveBridgeFunction(bridge, pathSegments, operationKey) {
|
|
81
|
+
let current = bridge;
|
|
82
|
+
for (const segment of pathSegments) {
|
|
83
|
+
if (!current || typeof current !== "object") {
|
|
84
|
+
throw new Error(
|
|
85
|
+
`Wood bridge operation "${operationKey}" is missing path "${pathSegments.join(".")}".`
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
current = current[segment];
|
|
89
|
+
}
|
|
90
|
+
if (typeof current !== "function") {
|
|
91
|
+
throw new Error(
|
|
92
|
+
`Wood bridge path "${pathSegments.join(".")}" for "${operationKey}" is not callable.`
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
return current;
|
|
96
|
+
}
|
|
97
|
+
function assertSerializable(value, operationKey) {
|
|
98
|
+
if (typeof structuredClone !== "function") {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
structuredClone(value);
|
|
103
|
+
} catch (error) {
|
|
104
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
105
|
+
throw new Error(
|
|
106
|
+
`App RPC "${operationKey}" payload is not serializable: ${reason}`
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function extractTraceConversationId(value) {
|
|
111
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
112
|
+
return void 0;
|
|
113
|
+
}
|
|
114
|
+
const record = value;
|
|
115
|
+
if (typeof record.conversationId === "number" || typeof record.conversationId === "string") {
|
|
116
|
+
return record.conversationId;
|
|
117
|
+
}
|
|
118
|
+
if (typeof record.threadId === "number" || typeof record.threadId === "string") {
|
|
119
|
+
return record.threadId;
|
|
120
|
+
}
|
|
121
|
+
return void 0;
|
|
122
|
+
}
|
|
123
|
+
function validateManifestEntry(entry, index) {
|
|
124
|
+
if (!entry.channel || !entry.controller || !entry.action) {
|
|
125
|
+
throw new Error(`Invalid Wood RPC manifest entry at index ${index}.`);
|
|
126
|
+
}
|
|
127
|
+
if (!Array.isArray(entry.path) || entry.path.length === 0) {
|
|
128
|
+
throw new Error(
|
|
129
|
+
`Invalid Wood RPC manifest path for "${entry.controller}.${entry.action}".`
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function createAppInstance() {
|
|
134
|
+
const bridge = resolveWoodBridge();
|
|
135
|
+
const manifest = resolveRpcManifest(bridge);
|
|
136
|
+
const app = {};
|
|
137
|
+
manifest.forEach((entry, index) => {
|
|
138
|
+
validateManifestEntry(entry, index);
|
|
139
|
+
const operationKey = `${entry.controller}.${entry.action}`;
|
|
140
|
+
const invoke = resolveBridgeFunction(bridge, entry.path, operationKey);
|
|
141
|
+
if (!app[entry.controller]) {
|
|
142
|
+
app[entry.controller] = {};
|
|
143
|
+
}
|
|
144
|
+
if (app[entry.controller][entry.action]) {
|
|
145
|
+
throw new Error(
|
|
146
|
+
`Duplicate RPC action "${operationKey}" in Wood manifest. Actions must be unique per controller.`
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
app[entry.controller][entry.action] = (...args) => {
|
|
150
|
+
if (entry.hasInput) {
|
|
151
|
+
if (args.length !== 1) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`App RPC "${operationKey}" expects exactly one payload argument.`
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
assertSerializable(args[0], operationKey);
|
|
157
|
+
const conversationId = extractTraceConversationId(args[0]);
|
|
158
|
+
(0, import_tracing.emitRendererTrace)("debug", {
|
|
159
|
+
source: "wood.client.app",
|
|
160
|
+
type: "rpc.request",
|
|
161
|
+
...conversationId !== void 0 ? { conversationId } : {},
|
|
162
|
+
payload: {
|
|
163
|
+
operationKey,
|
|
164
|
+
channel: entry.channel,
|
|
165
|
+
hasInput: entry.hasInput
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return invoke(args[0]).then((result) => {
|
|
169
|
+
(0, import_tracing.emitRendererTrace)("debug", {
|
|
170
|
+
source: "wood.client.app",
|
|
171
|
+
type: "rpc.response",
|
|
172
|
+
...conversationId !== void 0 ? { conversationId } : {},
|
|
173
|
+
payload: {
|
|
174
|
+
operationKey,
|
|
175
|
+
channel: entry.channel,
|
|
176
|
+
outcome: "ok"
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
return result;
|
|
180
|
+
}).catch((error) => {
|
|
181
|
+
(0, import_tracing.emitRendererTrace)("error", {
|
|
182
|
+
source: "wood.client.app",
|
|
183
|
+
type: "rpc.response",
|
|
184
|
+
message: error instanceof Error ? error.message : String(error),
|
|
185
|
+
...conversationId !== void 0 ? { conversationId } : {},
|
|
186
|
+
payload: {
|
|
187
|
+
operationKey,
|
|
188
|
+
channel: entry.channel,
|
|
189
|
+
outcome: "error"
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
throw error;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
if (args.length !== 0) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
`App RPC "${operationKey}" expects no arguments.`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
(0, import_tracing.emitRendererTrace)("debug", {
|
|
201
|
+
source: "wood.client.app",
|
|
202
|
+
type: "rpc.request",
|
|
203
|
+
payload: {
|
|
204
|
+
operationKey,
|
|
205
|
+
channel: entry.channel,
|
|
206
|
+
hasInput: entry.hasInput
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
return invoke().then((result) => {
|
|
210
|
+
(0, import_tracing.emitRendererTrace)("debug", {
|
|
211
|
+
source: "wood.client.app",
|
|
212
|
+
type: "rpc.response",
|
|
213
|
+
payload: {
|
|
214
|
+
operationKey,
|
|
215
|
+
channel: entry.channel,
|
|
216
|
+
outcome: "ok"
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
return result;
|
|
220
|
+
}).catch((error) => {
|
|
221
|
+
(0, import_tracing.emitRendererTrace)("error", {
|
|
222
|
+
source: "wood.client.app",
|
|
223
|
+
type: "rpc.response",
|
|
224
|
+
message: error instanceof Error ? error.message : String(error),
|
|
225
|
+
payload: {
|
|
226
|
+
operationKey,
|
|
227
|
+
channel: entry.channel,
|
|
228
|
+
outcome: "error"
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
throw error;
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
return app;
|
|
236
|
+
}
|
|
237
|
+
function getApp() {
|
|
238
|
+
const globalObj = globalThis;
|
|
239
|
+
if (!globalObj[CLIENT_APP_SYMBOL]) {
|
|
240
|
+
globalObj[CLIENT_APP_SYMBOL] = createAppInstance();
|
|
241
|
+
}
|
|
242
|
+
return globalObj[CLIENT_APP_SYMBOL];
|
|
243
|
+
}
|
|
244
|
+
function clearClientAppForTests() {
|
|
245
|
+
const globalObj = globalThis;
|
|
246
|
+
delete globalObj[CLIENT_APP_SYMBOL];
|
|
247
|
+
}
|
|
248
|
+
function resolveWindowControlsBridgeMethod(method) {
|
|
249
|
+
const bridge = resolveWoodBridge();
|
|
250
|
+
const fn = bridge.__window?.[method];
|
|
251
|
+
if (typeof fn !== "function") {
|
|
252
|
+
throw new Error(`Wood bridge does not expose "__window.${String(method)}".`);
|
|
253
|
+
}
|
|
254
|
+
return fn;
|
|
255
|
+
}
|
|
256
|
+
class WindowControls {
|
|
257
|
+
async open(windowId, options) {
|
|
258
|
+
const open = resolveWindowControlsBridgeMethod("open");
|
|
259
|
+
await open(windowId, options);
|
|
260
|
+
}
|
|
261
|
+
async close(windowId) {
|
|
262
|
+
const close = resolveWindowControlsBridgeMethod("close");
|
|
263
|
+
await close(windowId);
|
|
264
|
+
}
|
|
265
|
+
async focus(windowId) {
|
|
266
|
+
const focus = resolveWindowControlsBridgeMethod("focus");
|
|
267
|
+
await focus(windowId);
|
|
268
|
+
}
|
|
269
|
+
async minimize(windowId) {
|
|
270
|
+
const minimize = resolveWindowControlsBridgeMethod("minimize");
|
|
271
|
+
await minimize(windowId);
|
|
272
|
+
}
|
|
273
|
+
async maximize(windowId) {
|
|
274
|
+
const maximize = resolveWindowControlsBridgeMethod("maximize");
|
|
275
|
+
await maximize(windowId);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function getWindowControls() {
|
|
279
|
+
const globalObj = globalThis;
|
|
280
|
+
if (!globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL]) {
|
|
281
|
+
globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL] = new WindowControls();
|
|
282
|
+
}
|
|
283
|
+
return globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL];
|
|
284
|
+
}
|
|
285
|
+
function clearClientWindowControlsForTests() {
|
|
286
|
+
const globalObj = globalThis;
|
|
287
|
+
delete globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL];
|
|
288
|
+
}
|
|
289
|
+
function stringifyLogMessage(message) {
|
|
290
|
+
if (typeof message === "string") return message;
|
|
291
|
+
if (message instanceof Error) return message.message;
|
|
292
|
+
return String(message);
|
|
293
|
+
}
|
|
294
|
+
function writeConsole(level, logger, message, context) {
|
|
295
|
+
const prefix = `[${logger}] ${message}`;
|
|
296
|
+
switch (level) {
|
|
297
|
+
case "debug":
|
|
298
|
+
console.debug(prefix, context);
|
|
299
|
+
return;
|
|
300
|
+
case "warn":
|
|
301
|
+
console.warn(prefix, context);
|
|
302
|
+
return;
|
|
303
|
+
case "error":
|
|
304
|
+
console.error(prefix, context);
|
|
305
|
+
return;
|
|
306
|
+
default:
|
|
307
|
+
console.info(prefix, context);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
class RendererLogger {
|
|
311
|
+
constructor(loggerName) {
|
|
312
|
+
this.loggerName = loggerName;
|
|
313
|
+
this.backendConfigured = true;
|
|
314
|
+
}
|
|
315
|
+
debug(message, context) {
|
|
316
|
+
this.log("debug", message, context);
|
|
317
|
+
}
|
|
318
|
+
info(message, context) {
|
|
319
|
+
this.log("info", message, context);
|
|
320
|
+
}
|
|
321
|
+
warn(message, context) {
|
|
322
|
+
this.log("warn", message, context);
|
|
323
|
+
}
|
|
324
|
+
error(message, context) {
|
|
325
|
+
this.log("error", message, context);
|
|
326
|
+
}
|
|
327
|
+
log(level, rawMessage, context) {
|
|
328
|
+
const message = stringifyLogMessage(rawMessage);
|
|
329
|
+
if (!this.backendConfigured) {
|
|
330
|
+
writeConsole(level, this.loggerName, message, context);
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
let bridge;
|
|
334
|
+
try {
|
|
335
|
+
bridge = resolveWoodBridge();
|
|
336
|
+
} catch {
|
|
337
|
+
this.backendConfigured = false;
|
|
338
|
+
writeConsole(level, this.loggerName, message, context);
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (typeof bridge.__log !== "function") {
|
|
342
|
+
this.backendConfigured = false;
|
|
343
|
+
writeConsole(level, this.loggerName, message, context);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
void bridge.__log(level, this.loggerName, message, context).then((result) => {
|
|
347
|
+
if (!result?.ok || !result.configured || !result.forwarded) {
|
|
348
|
+
this.backendConfigured = false;
|
|
349
|
+
writeConsole(level, this.loggerName, message, context);
|
|
350
|
+
}
|
|
351
|
+
}).catch(() => {
|
|
352
|
+
this.backendConfigured = false;
|
|
353
|
+
writeConsole(level, this.loggerName, message, context);
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
function createLogger(name) {
|
|
358
|
+
const loggerName = name.trim() || "renderer";
|
|
359
|
+
const globalObj = globalThis;
|
|
360
|
+
if (!globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]) {
|
|
361
|
+
globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL] = /* @__PURE__ */ new Map();
|
|
362
|
+
}
|
|
363
|
+
const existing = globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]?.get(loggerName);
|
|
364
|
+
if (existing) return existing;
|
|
365
|
+
const logger = new RendererLogger(loggerName);
|
|
366
|
+
globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]?.set(loggerName, logger);
|
|
367
|
+
return logger;
|
|
368
|
+
}
|
|
369
|
+
function clearClientLoggersForTests() {
|
|
370
|
+
const globalObj = globalThis;
|
|
371
|
+
delete globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL];
|
|
372
|
+
}
|
|
373
|
+
function registerClientBuiltins(container) {
|
|
374
|
+
if (typeof container.registerFunction !== "function") {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
const traceConfiguration = new import_tracing.TraceProviderConfiguration();
|
|
378
|
+
traceConfiguration.configureRuntime("renderer");
|
|
379
|
+
container.registerFunction(import_navigation.Navigation, () => (0, import_navigation.getNavigation)());
|
|
380
|
+
container.registerFunction(App, () => getApp());
|
|
381
|
+
container.registerFunction(import_ipc.Ipc, () => (0, import_ipc.getIpc)());
|
|
382
|
+
container.registerFunction(WindowControls, () => getWindowControls());
|
|
383
|
+
container.registerFunction(import_tracing.TraceProviderConfiguration, () => traceConfiguration);
|
|
384
|
+
}
|
|
385
|
+
function createClientContainerInstance() {
|
|
386
|
+
const container = new import_ioc.Container();
|
|
387
|
+
registerClientBuiltins(container);
|
|
388
|
+
return container;
|
|
389
|
+
}
|
|
390
|
+
function getContainer() {
|
|
391
|
+
const globalObj = globalThis;
|
|
392
|
+
if (!globalObj[CLIENT_CONTAINER_SYMBOL]) {
|
|
393
|
+
globalObj[CLIENT_CONTAINER_SYMBOL] = createClientContainerInstance();
|
|
394
|
+
}
|
|
395
|
+
return globalObj[CLIENT_CONTAINER_SYMBOL];
|
|
396
|
+
}
|
|
397
|
+
function clearClientContainerForTests() {
|
|
398
|
+
const globalObj = globalThis;
|
|
399
|
+
delete globalObj[CLIENT_CONTAINER_SYMBOL];
|
|
400
|
+
}
|
|
401
|
+
function clearClientNavigationForTests() {
|
|
402
|
+
(0, import_navigation.clearNavigationForTests)();
|
|
403
|
+
}
|
|
404
|
+
function clampMenuPosition(x, y, menuWidth, menuHeight) {
|
|
405
|
+
const vw = typeof window !== "undefined" ? window.innerWidth : Infinity;
|
|
406
|
+
const vh = typeof window !== "undefined" ? window.innerHeight : Infinity;
|
|
407
|
+
return {
|
|
408
|
+
x: Math.min(x, Math.max(0, vw - menuWidth)),
|
|
409
|
+
y: Math.min(y, Math.max(0, vh - menuHeight))
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
function resolveTarget(target) {
|
|
413
|
+
if (!target) {
|
|
414
|
+
throw new Error("Missing renderer mount target");
|
|
415
|
+
}
|
|
416
|
+
return target;
|
|
417
|
+
}
|
|
418
|
+
function startWood(mountRoot, target) {
|
|
419
|
+
getContainer();
|
|
420
|
+
(0, import_navigation.getNavigation)();
|
|
421
|
+
return mountRoot(resolveTarget(target));
|
|
422
|
+
}
|
|
423
|
+
function createSvelteBoot(mountRoot) {
|
|
424
|
+
return (target) => mountRoot(resolveTarget(target));
|
|
425
|
+
}
|
|
426
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
427
|
+
0 && (module.exports = {
|
|
428
|
+
App,
|
|
429
|
+
Ipc,
|
|
430
|
+
TraceProvider,
|
|
431
|
+
TraceProviderConfiguration,
|
|
432
|
+
WOOD_INTERNAL_BRIDGE_KEY,
|
|
433
|
+
WindowControls,
|
|
434
|
+
WoodController,
|
|
435
|
+
clampMenuPosition,
|
|
436
|
+
clearClientAppForTests,
|
|
437
|
+
clearClientContainerForTests,
|
|
438
|
+
clearClientLoggersForTests,
|
|
439
|
+
clearClientNavigationForTests,
|
|
440
|
+
clearClientWindowControlsForTests,
|
|
441
|
+
clearTraceHubForTests,
|
|
442
|
+
createLogger,
|
|
443
|
+
createSvelteBoot,
|
|
444
|
+
getApp,
|
|
445
|
+
getContainer,
|
|
446
|
+
getIpc,
|
|
447
|
+
getNavigation,
|
|
448
|
+
getWindowControls,
|
|
449
|
+
startWood
|
|
450
|
+
});
|
|
451
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/index.ts"],"sourcesContent":["import './global_polyfill.cjs';\nimport 'reflect-metadata';\nimport { Container } from '@noego/ioc';\nimport {\n Navigation,\n getNavigation,\n clearNavigationForTests as clearNavigationSingletonForTests,\n} from '../navigation';\nimport { Ipc, getIpc } from '../ipc/index.js';\nimport {\n TraceProviderConfiguration,\n clearTraceHubForTests,\n emitRendererTrace,\n type TraceDispatchResult,\n} from '../tracing/index.js';\nexport type {\n ControllerEvents,\n ControllerInput,\n ControllerState,\n PageController,\n} from './controller_contract';\nexport { WoodController } from './wood_controller.svelte';\n\nconst CLIENT_CONTAINER_SYMBOL = Symbol.for('@noego/wood.client.container');\nconst CLIENT_APP_SYMBOL = Symbol.for('@noego/wood.client.app');\nconst CLIENT_WINDOW_CONTROLS_SYMBOL = Symbol.for('@noego/wood.client.window-controls');\nconst CLIENT_LOGGER_REGISTRY_SYMBOL = Symbol.for('@noego/wood.client.logger-registry');\nconst INTERNAL_BRIDGE_GLOBAL_KEY = '__NOEGO_WOOD_BRIDGE__';\n\nexport const WOOD_INTERNAL_BRIDGE_KEY = INTERNAL_BRIDGE_GLOBAL_KEY;\n\nexport interface WoodRpcManifestEntry {\n channel: string;\n controller: string;\n action: string;\n path: string[];\n hasInput: boolean;\n}\n\ntype WoodBridgeRpcFunction = (data?: unknown) => Promise<unknown>;\ntype WoodBridgeLike = Record<string, unknown> & {\n __rpcManifest?: WoodRpcManifestEntry[];\n __window?: {\n current?: () => Promise<unknown>;\n open?: (windowId: string, options?: Record<string, unknown>) => Promise<unknown>;\n close?: (windowId?: string) => Promise<unknown>;\n focus?: (windowId: string) => Promise<unknown>;\n minimize?: (windowId?: string) => Promise<unknown>;\n maximize?: (windowId?: string) => Promise<unknown>;\n };\n __log?: (\n level: string,\n logger: string,\n message: string,\n context?: unknown,\n ) => Promise<{\n ok: boolean;\n forwarded: boolean;\n configured: boolean;\n reason?: 'unconfigured' | 'callback-error';\n errorMessage?: string;\n }>;\n __trace?: (event: unknown) => Promise<TraceDispatchResult>;\n};\n\ntype GlobalWithClientContainer = typeof globalThis & {\n [CLIENT_CONTAINER_SYMBOL]?: any;\n};\n\ntype GlobalWithClientApp = typeof globalThis & {\n [CLIENT_APP_SYMBOL]?: App;\n};\n\ntype GlobalWithWindowControls = typeof globalThis & {\n [CLIENT_WINDOW_CONTROLS_SYMBOL]?: WindowControls;\n};\n\ntype GlobalWithLoggerRegistry = typeof globalThis & {\n [CLIENT_LOGGER_REGISTRY_SYMBOL]?: Map<string, RendererLogger>;\n};\n\ninterface WoodContainerRegistration {\n registerFunction?(\n token: any,\n resolver: (...args: any[]) => unknown,\n options?: Record<string, unknown>,\n ): void;\n}\n\nexport class App {\n [controllerName: string]: unknown;\n}\n\nfunction resolveWoodBridge(): WoodBridgeLike {\n const globalObj = globalThis as typeof globalThis & {\n [INTERNAL_BRIDGE_GLOBAL_KEY]?: unknown;\n wood?: unknown;\n window?: {\n [INTERNAL_BRIDGE_GLOBAL_KEY]?: unknown;\n wood?: unknown;\n };\n };\n\n const bridge = globalObj[INTERNAL_BRIDGE_GLOBAL_KEY]\n ?? globalObj.window?.[INTERNAL_BRIDGE_GLOBAL_KEY]\n ?? globalObj.wood\n ?? globalObj.window?.wood;\n if (!bridge || typeof bridge !== 'object') {\n throw new Error(\n `Wood bridge is not available on globalThis.${INTERNAL_BRIDGE_GLOBAL_KEY}.`,\n );\n }\n\n return bridge as WoodBridgeLike;\n}\n\nfunction resolveRpcManifest(bridge: WoodBridgeLike): WoodRpcManifestEntry[] {\n const manifest = bridge.__rpcManifest;\n if (!Array.isArray(manifest)) {\n throw new Error(\n 'Wood bridge is missing \"__rpcManifest\". Regenerate preload with the latest @noego/wood.',\n );\n }\n\n return manifest;\n}\n\nfunction resolveBridgeFunction(\n bridge: WoodBridgeLike,\n pathSegments: string[],\n operationKey: string,\n): WoodBridgeRpcFunction {\n let current: unknown = bridge;\n\n for (const segment of pathSegments) {\n if (!current || typeof current !== 'object') {\n throw new Error(\n `Wood bridge operation \"${operationKey}\" is missing path \"${pathSegments.join('.')}\".`,\n );\n }\n current = (current as Record<string, unknown>)[segment];\n }\n\n if (typeof current !== 'function') {\n throw new Error(\n `Wood bridge path \"${pathSegments.join('.')}\" for \"${operationKey}\" is not callable.`,\n );\n }\n\n return current as WoodBridgeRpcFunction;\n}\n\nfunction assertSerializable(value: unknown, operationKey: string): void {\n if (typeof structuredClone !== 'function') {\n return;\n }\n\n try {\n structuredClone(value);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(\n `App RPC \"${operationKey}\" payload is not serializable: ${reason}`,\n );\n }\n}\n\nfunction extractTraceConversationId(value: unknown): number | string | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined;\n }\n\n const record = value as Record<string, unknown>;\n if (typeof record.conversationId === 'number' || typeof record.conversationId === 'string') {\n return record.conversationId;\n }\n if (typeof record.threadId === 'number' || typeof record.threadId === 'string') {\n return record.threadId;\n }\n\n return undefined;\n}\n\nfunction validateManifestEntry(entry: WoodRpcManifestEntry, index: number): void {\n if (!entry.channel || !entry.controller || !entry.action) {\n throw new Error(`Invalid Wood RPC manifest entry at index ${index}.`);\n }\n if (!Array.isArray(entry.path) || entry.path.length === 0) {\n throw new Error(\n `Invalid Wood RPC manifest path for \"${entry.controller}.${entry.action}\".`,\n );\n }\n}\n\nfunction createAppInstance(): App {\n const bridge = resolveWoodBridge();\n const manifest = resolveRpcManifest(bridge);\n const app: Record<string, Record<string, (...args: unknown[]) => Promise<unknown>>> = {};\n\n manifest.forEach((entry, index) => {\n validateManifestEntry(entry, index);\n\n const operationKey = `${entry.controller}.${entry.action}`;\n const invoke = resolveBridgeFunction(bridge, entry.path, operationKey);\n\n if (!app[entry.controller]) {\n app[entry.controller] = {};\n }\n\n if (app[entry.controller][entry.action]) {\n throw new Error(\n `Duplicate RPC action \"${operationKey}\" in Wood manifest. Actions must be unique per controller.`,\n );\n }\n\n app[entry.controller][entry.action] = (...args: unknown[]): Promise<unknown> => {\n if (entry.hasInput) {\n if (args.length !== 1) {\n throw new Error(\n `App RPC \"${operationKey}\" expects exactly one payload argument.`,\n );\n }\n assertSerializable(args[0], operationKey);\n const conversationId = extractTraceConversationId(args[0]);\n emitRendererTrace('debug', {\n source: 'wood.client.app',\n type: 'rpc.request',\n ...(conversationId !== undefined ? { conversationId } : {}),\n payload: {\n operationKey,\n channel: entry.channel,\n hasInput: entry.hasInput,\n },\n });\n return invoke(args[0])\n .then((result) => {\n emitRendererTrace('debug', {\n source: 'wood.client.app',\n type: 'rpc.response',\n ...(conversationId !== undefined ? { conversationId } : {}),\n payload: {\n operationKey,\n channel: entry.channel,\n outcome: 'ok',\n },\n });\n return result;\n })\n .catch((error) => {\n emitRendererTrace('error', {\n source: 'wood.client.app',\n type: 'rpc.response',\n message: error instanceof Error ? error.message : String(error),\n ...(conversationId !== undefined ? { conversationId } : {}),\n payload: {\n operationKey,\n channel: entry.channel,\n outcome: 'error',\n },\n });\n throw error;\n });\n }\n\n if (args.length !== 0) {\n throw new Error(\n `App RPC \"${operationKey}\" expects no arguments.`,\n );\n }\n\n emitRendererTrace('debug', {\n source: 'wood.client.app',\n type: 'rpc.request',\n payload: {\n operationKey,\n channel: entry.channel,\n hasInput: entry.hasInput,\n },\n });\n return invoke()\n .then((result) => {\n emitRendererTrace('debug', {\n source: 'wood.client.app',\n type: 'rpc.response',\n payload: {\n operationKey,\n channel: entry.channel,\n outcome: 'ok',\n },\n });\n return result;\n })\n .catch((error) => {\n emitRendererTrace('error', {\n source: 'wood.client.app',\n type: 'rpc.response',\n message: error instanceof Error ? error.message : String(error),\n payload: {\n operationKey,\n channel: entry.channel,\n outcome: 'error',\n },\n });\n throw error;\n });\n };\n });\n\n return app as unknown as App;\n}\n\nexport function getApp(): App {\n const globalObj = globalThis as GlobalWithClientApp;\n if (!globalObj[CLIENT_APP_SYMBOL]) {\n globalObj[CLIENT_APP_SYMBOL] = createAppInstance();\n }\n return globalObj[CLIENT_APP_SYMBOL] as App;\n}\n\n/** Test-only helper to clear the client App singleton. */\nexport function clearClientAppForTests(): void {\n const globalObj = globalThis as GlobalWithClientApp;\n delete globalObj[CLIENT_APP_SYMBOL];\n}\n\nfunction resolveWindowControlsBridgeMethod<T>(\n method: keyof NonNullable<WoodBridgeLike['__window']>,\n): T {\n const bridge = resolveWoodBridge();\n const fn = bridge.__window?.[method];\n if (typeof fn !== 'function') {\n throw new Error(`Wood bridge does not expose \"__window.${String(method)}\".`);\n }\n return fn as unknown as T;\n}\n\nexport class WindowControls {\n async open(windowId: string, options?: Record<string, unknown>): Promise<void> {\n const open = resolveWindowControlsBridgeMethod<\n (id: string, opts?: Record<string, unknown>) => Promise<unknown>\n >('open');\n await open(windowId, options);\n }\n\n async close(windowId?: string): Promise<void> {\n const close = resolveWindowControlsBridgeMethod<\n (id?: string) => Promise<unknown>\n >('close');\n await close(windowId);\n }\n\n async focus(windowId: string): Promise<void> {\n const focus = resolveWindowControlsBridgeMethod<\n (id: string) => Promise<unknown>\n >('focus');\n await focus(windowId);\n }\n\n async minimize(windowId?: string): Promise<void> {\n const minimize = resolveWindowControlsBridgeMethod<\n (id?: string) => Promise<unknown>\n >('minimize');\n await minimize(windowId);\n }\n\n async maximize(windowId?: string): Promise<void> {\n const maximize = resolveWindowControlsBridgeMethod<\n (id?: string) => Promise<unknown>\n >('maximize');\n await maximize(windowId);\n }\n}\n\nexport function getWindowControls(): WindowControls {\n const globalObj = globalThis as GlobalWithWindowControls;\n if (!globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL]) {\n globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL] = new WindowControls();\n }\n return globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL] as WindowControls;\n}\n\n/** Test-only helper to clear the client WindowControls singleton. */\nexport function clearClientWindowControlsForTests(): void {\n const globalObj = globalThis as GlobalWithWindowControls;\n delete globalObj[CLIENT_WINDOW_CONTROLS_SYMBOL];\n}\n\ntype RendererLogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nfunction stringifyLogMessage(message: unknown): string {\n if (typeof message === 'string') return message;\n if (message instanceof Error) return message.message;\n return String(message);\n}\n\nfunction writeConsole(level: RendererLogLevel, logger: string, message: string, context?: unknown): void {\n const prefix = `[${logger}] ${message}`;\n switch (level) {\n case 'debug':\n console.debug(prefix, context);\n return;\n case 'warn':\n console.warn(prefix, context);\n return;\n case 'error':\n console.error(prefix, context);\n return;\n default:\n console.info(prefix, context);\n }\n}\n\nclass RendererLogger {\n private backendConfigured = true;\n\n constructor(private readonly loggerName: string) {}\n\n debug(message: unknown, context?: unknown): void {\n this.log('debug', message, context);\n }\n\n info(message: unknown, context?: unknown): void {\n this.log('info', message, context);\n }\n\n warn(message: unknown, context?: unknown): void {\n this.log('warn', message, context);\n }\n\n error(message: unknown, context?: unknown): void {\n this.log('error', message, context);\n }\n\n private log(level: RendererLogLevel, rawMessage: unknown, context?: unknown): void {\n const message = stringifyLogMessage(rawMessage);\n if (!this.backendConfigured) {\n writeConsole(level, this.loggerName, message, context);\n return;\n }\n\n let bridge: WoodBridgeLike;\n try {\n bridge = resolveWoodBridge();\n } catch {\n this.backendConfigured = false;\n writeConsole(level, this.loggerName, message, context);\n return;\n }\n\n if (typeof bridge.__log !== 'function') {\n this.backendConfigured = false;\n writeConsole(level, this.loggerName, message, context);\n return;\n }\n\n void bridge.__log(level, this.loggerName, message, context)\n .then((result) => {\n if (!result?.ok || !result.configured || !result.forwarded) {\n this.backendConfigured = false;\n writeConsole(level, this.loggerName, message, context);\n }\n })\n .catch(() => {\n this.backendConfigured = false;\n writeConsole(level, this.loggerName, message, context);\n });\n }\n}\n\ntype RendererLoggerShape = {\n debug(message: unknown, context?: unknown): void;\n info(message: unknown, context?: unknown): void;\n warn(message: unknown, context?: unknown): void;\n error(message: unknown, context?: unknown): void;\n};\n\nexport function createLogger(name: string): RendererLoggerShape {\n const loggerName = name.trim() || 'renderer';\n const globalObj = globalThis as GlobalWithLoggerRegistry;\n if (!globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]) {\n globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL] = new Map<string, RendererLogger>();\n }\n\n const existing = globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]?.get(loggerName);\n if (existing) return existing;\n\n const logger = new RendererLogger(loggerName);\n globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL]?.set(loggerName, logger);\n return logger;\n}\n\n/** Test-only helper to clear client logger singletons. */\nexport function clearClientLoggersForTests(): void {\n const globalObj = globalThis as GlobalWithLoggerRegistry;\n delete globalObj[CLIENT_LOGGER_REGISTRY_SYMBOL];\n}\n\nfunction registerClientBuiltins(container: WoodContainerRegistration): void {\n if (typeof container.registerFunction !== 'function') {\n return;\n }\n\n const traceConfiguration = new TraceProviderConfiguration();\n traceConfiguration.configureRuntime('renderer');\n\n container.registerFunction(Navigation, () => getNavigation());\n container.registerFunction(App, () => getApp());\n container.registerFunction(Ipc, () => getIpc());\n container.registerFunction(WindowControls, () => getWindowControls());\n container.registerFunction(TraceProviderConfiguration, () => traceConfiguration);\n}\n\nfunction createClientContainerInstance(): any {\n const container = new Container();\n registerClientBuiltins(container as WoodContainerRegistration);\n return container;\n}\n\n/**\n * Return a process-global client container instance.\n *\n * - First call creates the container and stores it on a symbol.\n * - Later calls return the same container instance.\n */\nexport function getContainer(): any {\n const globalObj = globalThis as GlobalWithClientContainer;\n if (!globalObj[CLIENT_CONTAINER_SYMBOL]) {\n globalObj[CLIENT_CONTAINER_SYMBOL] = createClientContainerInstance();\n }\n return globalObj[CLIENT_CONTAINER_SYMBOL];\n}\n\n/** Test-only helper to clear the client container singleton. */\nexport function clearClientContainerForTests(): void {\n const globalObj = globalThis as GlobalWithClientContainer;\n delete globalObj[CLIENT_CONTAINER_SYMBOL];\n}\n\n/** Test-only helper to clear the client navigation singleton. */\nexport function clearClientNavigationForTests(): void {\n clearNavigationSingletonForTests();\n}\n\n/** Clamp a menu position so it stays within viewport bounds. */\nexport function clampMenuPosition(\n x: number,\n y: number,\n menuWidth: number,\n menuHeight: number,\n): { x: number; y: number } {\n const vw = typeof window !== 'undefined' ? window.innerWidth : Infinity;\n const vh = typeof window !== 'undefined' ? window.innerHeight : Infinity;\n return {\n x: Math.min(x, Math.max(0, vw - menuWidth)),\n y: Math.min(y, Math.max(0, vh - menuHeight)),\n };\n}\n\nfunction resolveTarget(target: Element | null): Element {\n if (!target) {\n throw new Error('Missing renderer mount target');\n }\n return target;\n}\n\n/**\n * Start a Wood renderer app by mounting it to a target element.\n * Usage:\n * import { app } from './generated/app.cjs';\n * startWood(app, document.getElementById('app'));\n */\nexport function startWood<T>(\n mountRoot: (target: Element) => T,\n target: Element | null,\n) {\n // Ensure container singleton exists and registers built-in client tokens.\n getContainer();\n // Ensure navigation singleton exists at first client boot.\n getNavigation();\n return mountRoot(resolveTarget(target));\n}\n\n/**\n * Backward-compatible helper that returns a target-aware boot function.\n * Usage:\n * const boot = createSvelteBoot(app);\n * const mounted = boot(document.getElementById('app'));\n */\nexport function createSvelteBoot<T>(\n mountRoot: (target: Element) => T,\n) {\n return (target: Element | null): T => mountRoot(resolveTarget(target));\n}\n\nexport { getNavigation };\nexport { Ipc, getIpc };\nexport { clearTraceHubForTests };\nexport { TraceProvider, TraceProviderConfiguration } from '../tracing/index.js';\nexport type {\n FrameworkTracer,\n TraceCaptureOptions,\n TraceEvent,\n TraceInput,\n TraceLevel,\n TraceProcess,\n TraceProviderMode,\n TraceRuntime,\n TraceWaitOptions,\n} from '../tracing/index.js';\n"],"mappings":"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","names":["import_tracing","clearNavigationSingletonForTests"]}
|