@noego/wood 0.4.10 → 0.5.0
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 +118 -42
- package/dist/bridge/backend_bridge.cjs.map +1 -1
- package/dist/bridge/backend_bridge.js.map +1 -1
- package/dist/client/index.cjs +78 -21
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +18 -3
- package/dist/client/index.d.ts +18 -3
- package/dist/client/index.js +80 -22
- package/dist/client/index.js.map +1 -1
- package/dist/client/renderer_log_transport.cjs +151 -0
- package/dist/client/renderer_log_transport.cjs.map +1 -0
- package/dist/client/renderer_log_transport.d.cts +54 -0
- package/dist/client/renderer_log_transport.d.ts +54 -0
- package/dist/client/renderer_log_transport.js +123 -0
- package/dist/client/renderer_log_transport.js.map +1 -0
- package/dist/codegen/controller_registration_generator.cjs +13 -2
- package/dist/codegen/controller_registration_generator.cjs.map +1 -1
- package/dist/codegen/controller_registration_generator.d.cts +12 -1
- package/dist/codegen/controller_registration_generator.d.ts +12 -1
- package/dist/codegen/controller_registration_generator.js +10 -1
- package/dist/codegen/controller_registration_generator.js.map +1 -1
- package/dist/codegen/index.d.cts +1 -0
- package/dist/codegen/index.d.ts +1 -0
- package/dist/codegen/preload_generator.cjs +13 -6
- package/dist/codegen/preload_generator.cjs.map +1 -1
- package/dist/codegen/preload_generator.d.cts +11 -2
- package/dist/codegen/preload_generator.d.ts +11 -2
- package/dist/codegen/preload_generator.js +13 -6
- package/dist/codegen/preload_generator.js.map +1 -1
- package/dist/codegen/renderer_app_generator.cjs +78 -42
- package/dist/codegen/renderer_app_generator.cjs.map +1 -1
- package/dist/codegen/renderer_app_generator.js +78 -42
- package/dist/codegen/renderer_app_generator.js.map +1 -1
- package/dist/codegen/type_generator.cjs +1 -0
- package/dist/codegen/type_generator.cjs.map +1 -1
- package/dist/codegen/type_generator.js +1 -0
- package/dist/codegen/type_generator.js.map +1 -1
- package/dist/config/config_parser.cjs +95 -4
- package/dist/config/config_parser.cjs.map +1 -1
- package/dist/config/config_parser.d.cts +10 -2
- package/dist/config/config_parser.d.ts +10 -2
- package/dist/config/config_parser.js +92 -3
- package/dist/config/config_parser.js.map +1 -1
- package/dist/config/index.cjs +6 -2
- package/dist/config/index.cjs.map +1 -1
- package/dist/config/index.d.cts +2 -2
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +8 -2
- package/dist/config/index.js.map +1 -1
- package/dist/controller/controller_resolver.cjs +51 -3
- package/dist/controller/controller_resolver.cjs.map +1 -1
- package/dist/controller/controller_resolver.d.cts +27 -4
- package/dist/controller/controller_resolver.d.ts +27 -4
- package/dist/controller/controller_resolver.js +48 -2
- package/dist/controller/controller_resolver.js.map +1 -1
- package/dist/controller/index.cjs +6 -2
- package/dist/controller/index.cjs.map +1 -1
- package/dist/controller/index.d.cts +1 -1
- package/dist/controller/index.d.ts +1 -1
- package/dist/controller/index.js +4 -2
- package/dist/controller/index.js.map +1 -1
- package/dist/dev/wood_dev_server.cjs +4 -1
- package/dist/dev/wood_dev_server.cjs.map +1 -1
- package/dist/dev/wood_dev_server.js +5 -2
- package/dist/dev/wood_dev_server.js.map +1 -1
- package/dist/dev/yaml_watcher.cjs +1 -1
- package/dist/dev/yaml_watcher.cjs.map +1 -1
- package/dist/dev/yaml_watcher.d.cts +4 -0
- package/dist/dev/yaml_watcher.d.ts +4 -0
- package/dist/dev/yaml_watcher.js +1 -1
- package/dist/dev/yaml_watcher.js.map +1 -1
- package/dist/frontend/frontend_lifecycle.cjs +74 -0
- package/dist/frontend/frontend_lifecycle.cjs.map +1 -0
- package/dist/frontend/frontend_lifecycle.d.cts +50 -0
- package/dist/frontend/frontend_lifecycle.d.ts +50 -0
- package/dist/frontend/frontend_lifecycle.js +50 -0
- package/dist/frontend/frontend_lifecycle.js.map +1 -0
- package/dist/frontend/frontend_page.cjs +122 -0
- package/dist/frontend/frontend_page.cjs.map +1 -0
- package/dist/frontend/frontend_page.d.cts +62 -0
- package/dist/frontend/frontend_page.d.ts +62 -0
- package/dist/frontend/frontend_page.js +98 -0
- package/dist/frontend/frontend_page.js.map +1 -0
- package/dist/frontend/frontend_surface.cjs +249 -0
- package/dist/frontend/frontend_surface.cjs.map +1 -0
- package/dist/frontend/frontend_surface.d.cts +64 -0
- package/dist/frontend/frontend_surface.d.ts +64 -0
- package/dist/frontend/frontend_surface.js +224 -0
- package/dist/frontend/frontend_surface.js.map +1 -0
- package/dist/frontend/index.cjs +52 -0
- package/dist/frontend/index.cjs.map +1 -0
- package/dist/frontend/index.d.cts +10 -0
- package/dist/frontend/index.d.ts +10 -0
- package/dist/frontend/index.js +19 -0
- package/dist/frontend/index.js.map +1 -0
- package/dist/frontend/page_catalog.cjs +135 -0
- package/dist/frontend/page_catalog.cjs.map +1 -0
- package/dist/frontend/page_catalog.d.cts +56 -0
- package/dist/frontend/page_catalog.d.ts +56 -0
- package/dist/frontend/page_catalog.js +108 -0
- package/dist/frontend/page_catalog.js.map +1 -0
- package/dist/frontend/tracked_transport.cjs +55 -0
- package/dist/frontend/tracked_transport.cjs.map +1 -0
- package/dist/frontend/tracked_transport.d.cts +36 -0
- package/dist/frontend/tracked_transport.d.ts +36 -0
- package/dist/frontend/tracked_transport.js +31 -0
- package/dist/frontend/tracked_transport.js.map +1 -0
- package/dist/frontend/work_registry.cjs +153 -0
- package/dist/frontend/work_registry.cjs.map +1 -0
- package/dist/frontend/work_registry.d.cts +70 -0
- package/dist/frontend/work_registry.d.ts +70 -0
- package/dist/frontend/work_registry.js +128 -0
- package/dist/frontend/work_registry.js.map +1 -0
- package/dist/index.cjs +24 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -7
- package/dist/index.d.ts +10 -7
- package/dist/index.js +27 -4
- package/dist/index.js.map +1 -1
- package/dist/main/index.cjs +10 -0
- package/dist/main/index.cjs.map +1 -1
- package/dist/main/index.d.cts +14 -2
- package/dist/main/index.d.ts +14 -2
- package/dist/main/index.js +16 -0
- package/dist/main/index.js.map +1 -1
- package/dist/middleware/middleware_resolver.cjs +22 -1
- package/dist/middleware/middleware_resolver.cjs.map +1 -1
- package/dist/middleware/middleware_resolver.d.cts +13 -1
- package/dist/middleware/middleware_resolver.d.ts +13 -1
- package/dist/middleware/middleware_resolver.js +22 -1
- package/dist/middleware/middleware_resolver.js.map +1 -1
- package/dist/navigation/index.cjs +3 -0
- package/dist/navigation/index.cjs.map +1 -1
- package/dist/navigation/index.d.cts +25 -1
- package/dist/navigation/index.d.ts +25 -1
- package/dist/navigation/index.js +2 -0
- package/dist/navigation/index.js.map +1 -1
- package/dist/{middleware/__fixtures__/middleware/auth.cjs → navigation/layout_preservation.cjs} +18 -20
- package/dist/navigation/layout_preservation.cjs.map +1 -0
- package/dist/navigation/layout_preservation.d.cts +2 -0
- package/dist/navigation/layout_preservation.d.ts +2 -0
- package/dist/navigation/layout_preservation.js +18 -0
- package/dist/navigation/layout_preservation.js.map +1 -0
- package/dist/parser/index.cjs +2 -0
- package/dist/parser/index.cjs.map +1 -1
- package/dist/parser/index.d.cts +1 -1
- package/dist/parser/index.d.ts +1 -1
- package/dist/parser/index.js +2 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/operations_parser.cjs +6 -0
- package/dist/parser/operations_parser.cjs.map +1 -1
- package/dist/parser/operations_parser.d.cts +9 -2
- package/dist/parser/operations_parser.d.ts +9 -2
- package/dist/parser/operations_parser.js +5 -0
- package/dist/parser/operations_parser.js.map +1 -1
- package/dist/parser/views_parser.cjs.map +1 -1
- package/dist/parser/views_parser.js.map +1 -1
- package/dist/router/index.d.cts +1 -0
- package/dist/router/index.d.ts +1 -0
- package/dist/router/wood_router.cjs +35 -3
- package/dist/router/wood_router.cjs.map +1 -1
- package/dist/router/wood_router.d.cts +15 -0
- package/dist/router/wood_router.d.ts +15 -0
- package/dist/router/wood_router.js +36 -4
- package/dist/router/wood_router.js.map +1 -1
- package/dist/runtime/get_container.cjs +9 -34
- package/dist/runtime/get_container.cjs.map +1 -1
- package/dist/runtime/get_container.d.cts +24 -4
- package/dist/runtime/get_container.d.ts +24 -4
- package/dist/runtime/get_container.js +8 -23
- package/dist/runtime/get_container.js.map +1 -1
- package/dist/runtime/index.cjs +9 -0
- package/dist/runtime/index.cjs.map +1 -1
- package/dist/runtime/index.d.cts +5 -2
- package/dist/runtime/index.d.ts +5 -2
- package/dist/runtime/index.js +10 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderer_config_extension.cjs +50 -0
- package/dist/runtime/renderer_config_extension.cjs.map +1 -0
- package/dist/runtime/renderer_config_extension.d.cts +19 -0
- package/dist/runtime/renderer_config_extension.d.ts +19 -0
- package/dist/runtime/renderer_config_extension.js +24 -0
- package/dist/runtime/renderer_config_extension.js.map +1 -0
- package/dist/runtime/renderer_log_batch_receiver.cjs +73 -0
- package/dist/runtime/renderer_log_batch_receiver.cjs.map +1 -0
- package/dist/runtime/renderer_log_batch_receiver.d.cts +29 -0
- package/dist/runtime/renderer_log_batch_receiver.d.ts +29 -0
- package/dist/runtime/renderer_log_batch_receiver.js +48 -0
- package/dist/runtime/renderer_log_batch_receiver.js.map +1 -0
- package/dist/runtime/renderer_trace_batch_receiver_registry.d.cts +1 -1
- package/dist/runtime/renderer_trace_batch_receiver_registry.d.ts +1 -1
- package/dist/runtime/runtime.cjs +14 -0
- package/dist/runtime/runtime.cjs.map +1 -1
- package/dist/runtime/runtime.d.cts +2 -1
- package/dist/runtime/runtime.d.ts +2 -1
- package/dist/runtime/runtime.js +14 -0
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/stick/index.cjs.map +1 -1
- package/dist/stick/index.js.map +1 -1
- package/dist/testing/browser.cjs +104 -23
- package/dist/testing/browser.cjs.map +1 -1
- package/dist/testing/browser.d.cts +8 -3
- package/dist/testing/browser.d.ts +8 -3
- package/dist/testing/browser.js +102 -22
- package/dist/testing/browser.js.map +1 -1
- package/dist/testing/create_controller_harness.cjs +28 -8
- package/dist/testing/create_controller_harness.cjs.map +1 -1
- package/dist/testing/create_controller_harness.d.cts +17 -2
- package/dist/testing/create_controller_harness.d.ts +17 -2
- package/dist/testing/create_controller_harness.js +28 -8
- package/dist/testing/create_controller_harness.js.map +1 -1
- package/dist/testing/create_router_bridge.d.cts +1 -0
- package/dist/testing/create_router_bridge.d.ts +1 -0
- package/dist/testing/create_test_router.d.cts +1 -0
- package/dist/testing/create_test_router.d.ts +1 -0
- package/dist/testing/index.cjs +31 -0
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.d.cts +20 -5
- package/dist/testing/index.d.ts +20 -5
- package/dist/testing/index.js +19 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/{controller/__fixtures__/controllers/not_a_class.cjs → testing/test_wood.cjs} +15 -7
- package/dist/testing/test_wood.cjs.map +1 -0
- package/dist/testing/test_wood.d.cts +16 -0
- package/dist/testing/test_wood.d.ts +16 -0
- package/dist/testing/test_wood.js +12 -0
- package/dist/testing/test_wood.js.map +1 -0
- package/dist/testing/test_wood_config.cjs +272 -0
- package/dist/testing/test_wood_config.cjs.map +1 -0
- package/dist/testing/test_wood_config.d.cts +111 -0
- package/dist/testing/test_wood_config.d.ts +111 -0
- package/dist/testing/test_wood_config.js +247 -0
- package/dist/testing/test_wood_config.js.map +1 -0
- package/dist/testing/wood_config_source.cjs +146 -0
- package/dist/testing/wood_config_source.cjs.map +1 -0
- package/dist/testing/wood_config_source.d.cts +36 -0
- package/dist/testing/wood_config_source.d.ts +36 -0
- package/dist/testing/wood_config_source.js +112 -0
- package/dist/testing/wood_config_source.js.map +1 -0
- package/dist/testing/wood_env_renderer.cjs +210 -0
- package/dist/testing/wood_env_renderer.cjs.map +1 -0
- package/dist/testing/wood_env_renderer.d.cts +74 -0
- package/dist/testing/wood_env_renderer.d.ts +74 -0
- package/dist/testing/wood_env_renderer.js +188 -0
- package/dist/testing/wood_env_renderer.js.map +1 -0
- package/dist/testing/wood_test_selection.cjs +94 -0
- package/dist/testing/wood_test_selection.cjs.map +1 -0
- package/dist/testing/wood_test_selection.d.cts +39 -0
- package/dist/testing/wood_test_selection.d.ts +39 -0
- package/dist/testing/wood_test_selection.js +68 -0
- package/dist/testing/wood_test_selection.js.map +1 -0
- package/dist/trace-testing/index.d.cts +1 -2
- package/dist/trace-testing/index.d.ts +1 -2
- package/dist/trace-testing/trace_recorder.cjs +1 -1
- package/dist/trace-testing/trace_recorder.cjs.map +1 -1
- package/dist/trace-testing/trace_recorder.d.cts +1 -2
- package/dist/trace-testing/trace_recorder.d.ts +1 -2
- package/dist/trace-testing/trace_recorder.js +1 -1
- package/dist/trace-testing/trace_recorder.js.map +1 -1
- package/dist/trace-transport/index.d.cts +1 -1
- package/dist/trace-transport/index.d.ts +1 -1
- package/dist/{trace_hub-Cob54qRx.d.cts → trace_hub-Cpo_nVze.d.cts} +21 -1
- package/dist/{trace_hub-Cob54qRx.d.ts → trace_hub-Cpo_nVze.d.ts} +21 -1
- package/dist/tracing/index.cjs +9 -2
- package/dist/tracing/index.cjs.map +1 -1
- package/dist/tracing/index.d.cts +3 -2
- package/dist/tracing/index.d.ts +3 -2
- package/dist/tracing/index.js +7 -1
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/renderer_trace_batch_host.d.cts +1 -1
- package/dist/tracing/renderer_trace_batch_host.d.ts +1 -1
- package/dist/tracing/renderer_trace_batch_transport.cjs +48 -6
- package/dist/tracing/renderer_trace_batch_transport.cjs.map +1 -1
- package/dist/tracing/renderer_trace_batch_transport.d.cts +17 -1
- package/dist/tracing/renderer_trace_batch_transport.d.ts +17 -1
- package/dist/tracing/renderer_trace_batch_transport.js +48 -6
- package/dist/tracing/renderer_trace_batch_transport.js.map +1 -1
- package/dist/tracing/trace_batch_adapter.cjs +110 -0
- package/dist/tracing/trace_batch_adapter.cjs.map +1 -0
- package/dist/tracing/trace_batch_adapter.d.cts +36 -0
- package/dist/tracing/trace_batch_adapter.d.ts +36 -0
- package/dist/tracing/trace_batch_adapter.js +86 -0
- package/dist/tracing/trace_batch_adapter.js.map +1 -0
- package/dist/tracing/trace_commit_writer.d.cts +1 -1
- package/dist/tracing/trace_commit_writer.d.ts +1 -1
- package/dist/tracing/trace_hub.cjs +87 -20
- package/dist/tracing/trace_hub.cjs.map +1 -1
- package/dist/tracing/trace_hub.d.cts +1 -1
- package/dist/tracing/trace_hub.d.ts +1 -1
- package/dist/tracing/trace_hub.js +85 -20
- package/dist/tracing/trace_hub.js.map +1 -1
- package/dist/tracing/trace_provider.cjs +21 -6
- package/dist/tracing/trace_provider.cjs.map +1 -1
- package/dist/tracing/trace_provider.d.cts +13 -4
- package/dist/tracing/trace_provider.d.ts +13 -4
- package/dist/tracing/trace_provider.js +22 -7
- package/dist/tracing/trace_provider.js.map +1 -1
- package/dist/tracing/types/wood_trace_batch.types.cjs.map +1 -1
- package/dist/tracing/types/wood_trace_batch.types.d.cts +15 -1
- package/dist/tracing/types/wood_trace_batch.types.d.ts +15 -1
- package/dist/tracing/types/wood_trace_sink.types.d.cts +1 -1
- package/dist/tracing/types/wood_trace_sink.types.d.ts +1 -1
- package/dist/tracing/wood_trace_batch_contract.cjs +2 -0
- package/dist/tracing/wood_trace_batch_contract.cjs.map +1 -1
- package/dist/tracing/wood_trace_batch_contract.d.cts +1 -1
- package/dist/tracing/wood_trace_batch_contract.d.ts +1 -1
- package/dist/tracing/wood_trace_batch_contract.js +2 -0
- package/dist/tracing/wood_trace_batch_contract.js.map +1 -1
- package/dist/transport/build_transport_bridge.cjs +4 -2
- package/dist/transport/build_transport_bridge.cjs.map +1 -1
- package/dist/transport/build_transport_bridge.d.cts +7 -1
- package/dist/transport/build_transport_bridge.d.ts +7 -1
- package/dist/transport/build_transport_bridge.js +2 -1
- package/dist/transport/build_transport_bridge.js.map +1 -1
- package/dist/transport/in_process_router_transport.d.cts +1 -0
- package/dist/transport/in_process_router_transport.d.ts +1 -0
- package/dist/transport/index.d.cts +1 -0
- package/dist/transport/index.d.ts +1 -0
- package/dist/types/config.cjs.map +1 -1
- package/dist/types/config.d.cts +47 -1
- package/dist/types/config.d.ts +47 -1
- package/dist/types/context.cjs +12 -0
- package/dist/types/context.cjs.map +1 -1
- package/dist/types/context.d.cts +27 -1
- package/dist/types/context.d.ts +27 -1
- package/dist/types/context.js +4 -0
- package/dist/types/context.js.map +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/operations.cjs.map +1 -1
- package/dist/types/operations.d.cts +2 -0
- package/dist/types/operations.d.ts +2 -0
- package/docs/axe.md +706 -0
- package/package.json +13 -5
- package/src/components/NavigationShell.scopes.browser.test.ts +363 -0
- package/src/components/NavigationShell.svelte +126 -49
- package/dist/controller/__fixtures__/controllers/chat.cjs +0 -32
- package/dist/controller/__fixtures__/controllers/chat.cjs.map +0 -1
- package/dist/controller/__fixtures__/controllers/chat.d.cts +0 -11
- package/dist/controller/__fixtures__/controllers/chat.d.ts +0 -11
- package/dist/controller/__fixtures__/controllers/chat.js +0 -12
- package/dist/controller/__fixtures__/controllers/chat.js.map +0 -1
- package/dist/controller/__fixtures__/controllers/not_a_class.cjs.map +0 -1
- package/dist/controller/__fixtures__/controllers/not_a_class.d.cts +0 -3
- package/dist/controller/__fixtures__/controllers/not_a_class.d.ts +0 -3
- package/dist/controller/__fixtures__/controllers/not_a_class.js +0 -5
- package/dist/controller/__fixtures__/controllers/not_a_class.js.map +0 -1
- package/dist/controller/__fixtures__/controllers/settings.controller.cjs +0 -32
- package/dist/controller/__fixtures__/controllers/settings.controller.cjs.map +0 -1
- package/dist/controller/__fixtures__/controllers/settings.controller.d.cts +0 -12
- package/dist/controller/__fixtures__/controllers/settings.controller.d.ts +0 -12
- package/dist/controller/__fixtures__/controllers/settings.controller.js +0 -12
- package/dist/controller/__fixtures__/controllers/settings.controller.js.map +0 -1
- package/dist/controller/__fixtures__/controllers/test.cjs +0 -29
- package/dist/controller/__fixtures__/controllers/test.cjs.map +0 -1
- package/dist/controller/__fixtures__/controllers/test.d.cts +0 -7
- package/dist/controller/__fixtures__/controllers/test.d.ts +0 -7
- package/dist/controller/__fixtures__/controllers/test.js +0 -9
- package/dist/controller/__fixtures__/controllers/test.js.map +0 -1
- package/dist/loader/__fixtures__/layouts/app.load.cjs +0 -27
- package/dist/loader/__fixtures__/layouts/app.load.cjs.map +0 -1
- package/dist/loader/__fixtures__/layouts/app.load.d.cts +0 -5
- package/dist/loader/__fixtures__/layouts/app.load.d.ts +0 -5
- package/dist/loader/__fixtures__/layouts/app.load.js +0 -7
- package/dist/loader/__fixtures__/layouts/app.load.js.map +0 -1
- package/dist/loader/__fixtures__/views/test/page.load.cjs +0 -27
- package/dist/loader/__fixtures__/views/test/page.load.cjs.map +0 -1
- package/dist/loader/__fixtures__/views/test/page.load.d.cts +0 -6
- package/dist/loader/__fixtures__/views/test/page.load.d.ts +0 -6
- package/dist/loader/__fixtures__/views/test/page.load.js +0 -7
- package/dist/loader/__fixtures__/views/test/page.load.js.map +0 -1
- package/dist/middleware/__fixtures__/middleware/auth.cjs.map +0 -1
- package/dist/middleware/__fixtures__/middleware/auth.d.cts +0 -6
- package/dist/middleware/__fixtures__/middleware/auth.d.ts +0 -6
- package/dist/middleware/__fixtures__/middleware/auth.js +0 -19
- package/dist/middleware/__fixtures__/middleware/auth.js.map +0 -1
- package/dist/middleware/__fixtures__/middleware/sequence.cjs +0 -47
- package/dist/middleware/__fixtures__/middleware/sequence.cjs.map +0 -1
- package/dist/middleware/__fixtures__/middleware/sequence.d.cts +0 -7
- package/dist/middleware/__fixtures__/middleware/sequence.d.ts +0 -7
- package/dist/middleware/__fixtures__/middleware/sequence.js +0 -21
- package/dist/middleware/__fixtures__/middleware/sequence.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/get_container.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/get_container.ts"],"sourcesContent":["import { createContainer } from '@noego/ioc';\nimport type { IContainer } from '@noego/ioc';\nimport { getLogger } from '@noego/logger';\n\nconst logger = getLogger('wood:runtime:container');\n\nconst CONTAINER_REGISTRY_SYMBOL = Symbol.for('@noego/wood.container.registry');\n\nexport interface GetContainerOptions {\n /** Scope key for the container instance. Defaults to process.cwd(). */\n scope?: string;\n /** Called only when a new scoped container is created. */\n configure?: (container: any) => void;\n}\n\nexport interface CreateWoodRootOptions {\n /** Applied to the fresh root before it is returned. */\n configure?: (container: IContainer) => void;\n}\n\n/**\n * Create an explicit Wood composition root: a fresh real `@noego/ioc`\n * container owned by the caller. This is the canonical construction path —\n * runtime boot, tests, and tools receive/create a root explicitly and pass\n * it down; operation/renderer scopes are children of it.\n *\n * Decorator metadata uses `Symbol.for(...)` keys and the global\n * reflect-metadata registry, so consumer-decorated classes resolve\n * correctly regardless of which package instance created the container —\n * the old `createRequire` consumer-package resolution is unnecessary.\n */\nexport function createWoodRoot(options: CreateWoodRootOptions = {}): IContainer {\n const root = createContainer() as IContainer;\n options.configure?.(root);\n return root;\n}\n\ntype ContainerRegistry = Map<string, any>;\n\nfunction registry(): ContainerRegistry {\n const globalObj = globalThis as typeof globalThis & {\n [CONTAINER_REGISTRY_SYMBOL]?: ContainerRegistry;\n };\n\n if (!globalObj[CONTAINER_REGISTRY_SYMBOL]) {\n globalObj[CONTAINER_REGISTRY_SYMBOL] = new Map<string, any>();\n logger.info('container registry created', { symbol: CONTAINER_REGISTRY_SYMBOL.toString() });\n }\n\n return globalObj[CONTAINER_REGISTRY_SYMBOL]!;\n}\n\n/**\n * COMPAT: return a process-global scoped container from the registry.\n *\n * The canonical architecture owns an explicit root (see createWoodRoot);\n * this global accessor remains as a runtime-boundary convenience while\n * consumers migrate. Note its known trap: `configure` runs only on first\n * creation for a scope key.\n */\nexport function getContainer(options: GetContainerOptions = {}): any {\n const scope = options.scope ?? process.cwd();\n const containers = registry();\n\n const existing = containers.get(scope);\n if (existing) {\n logger.info('container reused', { scope });\n return existing;\n }\n\n const created = createWoodRoot();\n containers.set(scope, created);\n logger.info('container created', { scope });\n\n if (options.configure) {\n options.configure(created);\n logger.info('container configured', { scope });\n }\n\n return created;\n}\n\nexport function clearContainerRegistryForTests(): void {\n const containers = registry();\n containers.clear();\n logger.info('container registry cleared');\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAEhC,SAAS,iBAAiB;AAE1B,MAAM,SAAS,UAAU,wBAAwB;AAEjD,MAAM,4BAA4B,uBAAO,IAAI,gCAAgC;AAyBtE,SAAS,eAAe,UAAiC,CAAC,GAAe;AAC9E,QAAM,OAAO,gBAAgB;AAC7B,UAAQ,YAAY,IAAI;AACxB,SAAO;AACT;AAIA,SAAS,WAA8B;AACrC,QAAM,YAAY;AAIlB,MAAI,CAAC,UAAU,yBAAyB,GAAG;AACzC,cAAU,yBAAyB,IAAI,oBAAI,IAAiB;AAC5D,WAAO,KAAK,8BAA8B,EAAE,QAAQ,0BAA0B,SAAS,EAAE,CAAC;AAAA,EAC5F;AAEA,SAAO,UAAU,yBAAyB;AAC5C;AAUO,SAAS,aAAa,UAA+B,CAAC,GAAQ;AACnE,QAAM,QAAQ,QAAQ,SAAS,QAAQ,IAAI;AAC3C,QAAM,aAAa,SAAS;AAE5B,QAAM,WAAW,WAAW,IAAI,KAAK;AACrC,MAAI,UAAU;AACZ,WAAO,KAAK,oBAAoB,EAAE,MAAM,CAAC;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe;AAC/B,aAAW,IAAI,OAAO,OAAO;AAC7B,SAAO,KAAK,qBAAqB,EAAE,MAAM,CAAC;AAE1C,MAAI,QAAQ,WAAW;AACrB,YAAQ,UAAU,OAAO;AACzB,WAAO,KAAK,wBAAwB,EAAE,MAAM,CAAC;AAAA,EAC/C;AAEA,SAAO;AACT;AAEO,SAAS,iCAAuC;AACrD,QAAM,aAAa,SAAS;AAC5B,aAAW,MAAM;AACjB,SAAO,KAAK,4BAA4B;AAC1C;","names":[]}
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -22,13 +22,17 @@ __export(runtime_exports, {
|
|
|
22
22
|
clearContainerRegistryForTests: () => import_get_container.clearContainerRegistryForTests,
|
|
23
23
|
clearRendererLogDispatcherForTests: () => import_renderer_log_dispatcher.clearRendererLogDispatcherForTests,
|
|
24
24
|
clearRendererTraceBatchReceiverForTests: () => import_renderer_trace_batch_receiver_registry.clearRendererTraceBatchReceiverForTests,
|
|
25
|
+
createWoodRoot: () => import_get_container.createWoodRoot,
|
|
25
26
|
dispatchRendererTracePayload: () => import_tracing.dispatchRendererTracePayload,
|
|
26
27
|
getApplicationRoot: () => import_application_root.getApplicationRoot,
|
|
27
28
|
getContainer: () => import_get_container.getContainer,
|
|
29
|
+
getRendererConfigExtension: () => import_renderer_config_extension.getRendererConfigExtension,
|
|
28
30
|
getRendererLogDispatcher: () => import_renderer_log_dispatcher.getRendererLogDispatcher,
|
|
29
31
|
getRendererTraceBatchReceiver: () => import_renderer_trace_batch_receiver_registry.getRendererTraceBatchReceiver,
|
|
32
|
+
resolveRendererConfigExtension: () => import_renderer_config_extension.resolveRendererConfigExtension,
|
|
30
33
|
runtime: () => import_runtime.runtime,
|
|
31
34
|
setApplicationRoot: () => import_application_root.setApplicationRoot,
|
|
35
|
+
setRendererConfigExtension: () => import_renderer_config_extension.setRendererConfigExtension,
|
|
32
36
|
setRendererTraceBatchReceiver: () => import_renderer_trace_batch_receiver_registry.setRendererTraceBatchReceiver
|
|
33
37
|
});
|
|
34
38
|
module.exports = __toCommonJS(runtime_exports);
|
|
@@ -37,6 +41,7 @@ var import_application_root = require("./application_root.js");
|
|
|
37
41
|
var import_runtime = require("./runtime.js");
|
|
38
42
|
var import_renderer_log_dispatcher = require("./renderer_log_dispatcher.js");
|
|
39
43
|
var import_renderer_trace_batch_receiver_registry = require("./renderer_trace_batch_receiver_registry.js");
|
|
44
|
+
var import_renderer_config_extension = require("./renderer_config_extension.js");
|
|
40
45
|
var import_tracing = require("../tracing/index.js");
|
|
41
46
|
// Annotate the CommonJS export names for ESM import in node:
|
|
42
47
|
0 && (module.exports = {
|
|
@@ -44,13 +49,17 @@ var import_tracing = require("../tracing/index.js");
|
|
|
44
49
|
clearContainerRegistryForTests,
|
|
45
50
|
clearRendererLogDispatcherForTests,
|
|
46
51
|
clearRendererTraceBatchReceiverForTests,
|
|
52
|
+
createWoodRoot,
|
|
47
53
|
dispatchRendererTracePayload,
|
|
48
54
|
getApplicationRoot,
|
|
49
55
|
getContainer,
|
|
56
|
+
getRendererConfigExtension,
|
|
50
57
|
getRendererLogDispatcher,
|
|
51
58
|
getRendererTraceBatchReceiver,
|
|
59
|
+
resolveRendererConfigExtension,
|
|
52
60
|
runtime,
|
|
53
61
|
setApplicationRoot,
|
|
62
|
+
setRendererConfigExtension,
|
|
54
63
|
setRendererTraceBatchReceiver
|
|
55
64
|
});
|
|
56
65
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/index.ts"],"sourcesContent":["export { getContainer, clearContainerRegistryForTests } from './get_container.js';\nexport type { GetContainerOptions } from './get_container.js';\n\nexport {\n getApplicationRoot,\n setApplicationRoot,\n clearApplicationRootForTests,\n} from './application_root.js';\n\nexport { runtime } from './runtime.js';\nexport type { RuntimeOptions, RuntimeResult, RegisterRuntimeRouter } from './runtime.js';\n\nexport {\n getRendererLogDispatcher,\n clearRendererLogDispatcherForTests,\n} from './renderer_log_dispatcher.js';\nexport type {\n RendererLogLevel,\n RendererLogEntry,\n RendererLogCallback,\n RendererLogDispatchResult,\n} from './renderer_log_dispatcher.js';\n\nexport {\n clearRendererTraceBatchReceiverForTests,\n getRendererTraceBatchReceiver,\n setRendererTraceBatchReceiver,\n} from './renderer_trace_batch_receiver_registry.js';\n\nexport { dispatchRendererTracePayload } from '../tracing/index.js';\nexport type { TraceDispatchResult } from '../tracing/index.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/index.ts"],"sourcesContent":["export { createWoodRoot, getContainer, clearContainerRegistryForTests } from './get_container.js';\nexport type { GetContainerOptions, CreateWoodRootOptions } from './get_container.js';\n\nexport {\n getApplicationRoot,\n setApplicationRoot,\n clearApplicationRootForTests,\n} from './application_root.js';\n\nexport { runtime } from './runtime.js';\nexport type { RuntimeOptions, RuntimeResult, RegisterRuntimeRouter } from './runtime.js';\n\nexport {\n getRendererLogDispatcher,\n clearRendererLogDispatcherForTests,\n} from './renderer_log_dispatcher.js';\nexport type {\n RendererLogLevel,\n RendererLogEntry,\n RendererLogCallback,\n RendererLogDispatchResult,\n} from './renderer_log_dispatcher.js';\n\nexport {\n clearRendererTraceBatchReceiverForTests,\n getRendererTraceBatchReceiver,\n setRendererTraceBatchReceiver,\n} from './renderer_trace_batch_receiver_registry.js';\n\nexport {\n getRendererConfigExtension,\n resolveRendererConfigExtension,\n setRendererConfigExtension,\n} from './renderer_config_extension.js';\nexport type { RendererConfigExtension } from './renderer_config_extension.js';\n\nexport { dispatchRendererTracePayload } from '../tracing/index.js';\nexport type { TraceDispatchResult } from '../tracing/index.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA6E;AAG7E,8BAIO;AAEP,qBAAwB;AAGxB,qCAGO;AAQP,oDAIO;AAEP,uCAIO;AAGP,qBAA6C;","names":[]}
|
package/dist/runtime/index.d.cts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
export { GetContainerOptions, clearContainerRegistryForTests, getContainer } from './get_container.cjs';
|
|
1
|
+
export { CreateWoodRootOptions, GetContainerOptions, clearContainerRegistryForTests, createWoodRoot, getContainer } from './get_container.cjs';
|
|
2
2
|
export { clearApplicationRootForTests, getApplicationRoot, setApplicationRoot } from './application_root.cjs';
|
|
3
3
|
export { RegisterRuntimeRouter, RuntimeOptions, RuntimeResult, runtime } from './runtime.cjs';
|
|
4
4
|
export { RendererLogCallback, RendererLogDispatchResult, RendererLogEntry, RendererLogLevel, clearRendererLogDispatcherForTests, getRendererLogDispatcher } from './renderer_log_dispatcher.cjs';
|
|
5
5
|
export { clearRendererTraceBatchReceiverForTests, getRendererTraceBatchReceiver, setRendererTraceBatchReceiver } from './renderer_trace_batch_receiver_registry.cjs';
|
|
6
|
-
export {
|
|
6
|
+
export { RendererConfigExtension, getRendererConfigExtension, resolveRendererConfigExtension, setRendererConfigExtension } from './renderer_config_extension.cjs';
|
|
7
|
+
export { T as TraceDispatchResult, o as dispatchRendererTracePayload } from '../trace_hub-Cpo_nVze.cjs';
|
|
8
|
+
import '@noego/ioc';
|
|
7
9
|
import '../router/wood_router.cjs';
|
|
8
10
|
import '../types/operations.cjs';
|
|
11
|
+
import '../types/context.cjs';
|
|
9
12
|
import '../tracing/types/wood_trace_batch.types.cjs';
|
|
10
13
|
import '@noego/telemetry/core';
|
|
11
14
|
import './app_env.cjs';
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
export { GetContainerOptions, clearContainerRegistryForTests, getContainer } from './get_container.js';
|
|
1
|
+
export { CreateWoodRootOptions, GetContainerOptions, clearContainerRegistryForTests, createWoodRoot, getContainer } from './get_container.js';
|
|
2
2
|
export { clearApplicationRootForTests, getApplicationRoot, setApplicationRoot } from './application_root.js';
|
|
3
3
|
export { RegisterRuntimeRouter, RuntimeOptions, RuntimeResult, runtime } from './runtime.js';
|
|
4
4
|
export { RendererLogCallback, RendererLogDispatchResult, RendererLogEntry, RendererLogLevel, clearRendererLogDispatcherForTests, getRendererLogDispatcher } from './renderer_log_dispatcher.js';
|
|
5
5
|
export { clearRendererTraceBatchReceiverForTests, getRendererTraceBatchReceiver, setRendererTraceBatchReceiver } from './renderer_trace_batch_receiver_registry.js';
|
|
6
|
-
export {
|
|
6
|
+
export { RendererConfigExtension, getRendererConfigExtension, resolveRendererConfigExtension, setRendererConfigExtension } from './renderer_config_extension.js';
|
|
7
|
+
export { T as TraceDispatchResult, o as dispatchRendererTracePayload } from '../trace_hub-Cpo_nVze.js';
|
|
8
|
+
import '@noego/ioc';
|
|
7
9
|
import '../router/wood_router.js';
|
|
8
10
|
import '../types/operations.js';
|
|
11
|
+
import '../types/context.js';
|
|
9
12
|
import '../tracing/types/wood_trace_batch.types.js';
|
|
10
13
|
import '@noego/telemetry/core';
|
|
11
14
|
import './app_env.js';
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getContainer, clearContainerRegistryForTests } from "./get_container.js";
|
|
1
|
+
import { createWoodRoot, getContainer, clearContainerRegistryForTests } from "./get_container.js";
|
|
2
2
|
import {
|
|
3
3
|
getApplicationRoot,
|
|
4
4
|
setApplicationRoot,
|
|
@@ -14,19 +14,28 @@ import {
|
|
|
14
14
|
getRendererTraceBatchReceiver,
|
|
15
15
|
setRendererTraceBatchReceiver
|
|
16
16
|
} from "./renderer_trace_batch_receiver_registry.js";
|
|
17
|
+
import {
|
|
18
|
+
getRendererConfigExtension,
|
|
19
|
+
resolveRendererConfigExtension,
|
|
20
|
+
setRendererConfigExtension
|
|
21
|
+
} from "./renderer_config_extension.js";
|
|
17
22
|
import { dispatchRendererTracePayload } from "../tracing/index.js";
|
|
18
23
|
export {
|
|
19
24
|
clearApplicationRootForTests,
|
|
20
25
|
clearContainerRegistryForTests,
|
|
21
26
|
clearRendererLogDispatcherForTests,
|
|
22
27
|
clearRendererTraceBatchReceiverForTests,
|
|
28
|
+
createWoodRoot,
|
|
23
29
|
dispatchRendererTracePayload,
|
|
24
30
|
getApplicationRoot,
|
|
25
31
|
getContainer,
|
|
32
|
+
getRendererConfigExtension,
|
|
26
33
|
getRendererLogDispatcher,
|
|
27
34
|
getRendererTraceBatchReceiver,
|
|
35
|
+
resolveRendererConfigExtension,
|
|
28
36
|
runtime,
|
|
29
37
|
setApplicationRoot,
|
|
38
|
+
setRendererConfigExtension,
|
|
30
39
|
setRendererTraceBatchReceiver
|
|
31
40
|
};
|
|
32
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/index.ts"],"sourcesContent":["export { getContainer, clearContainerRegistryForTests } from './get_container.js';\nexport type { GetContainerOptions } from './get_container.js';\n\nexport {\n getApplicationRoot,\n setApplicationRoot,\n clearApplicationRootForTests,\n} from './application_root.js';\n\nexport { runtime } from './runtime.js';\nexport type { RuntimeOptions, RuntimeResult, RegisterRuntimeRouter } from './runtime.js';\n\nexport {\n getRendererLogDispatcher,\n clearRendererLogDispatcherForTests,\n} from './renderer_log_dispatcher.js';\nexport type {\n RendererLogLevel,\n RendererLogEntry,\n RendererLogCallback,\n RendererLogDispatchResult,\n} from './renderer_log_dispatcher.js';\n\nexport {\n clearRendererTraceBatchReceiverForTests,\n getRendererTraceBatchReceiver,\n setRendererTraceBatchReceiver,\n} from './renderer_trace_batch_receiver_registry.js';\n\nexport { dispatchRendererTracePayload } from '../tracing/index.js';\nexport type { TraceDispatchResult } from '../tracing/index.js';\n"],"mappings":"AAAA,SAAS,cAAc,sCAAsC;
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/index.ts"],"sourcesContent":["export { createWoodRoot, getContainer, clearContainerRegistryForTests } from './get_container.js';\nexport type { GetContainerOptions, CreateWoodRootOptions } from './get_container.js';\n\nexport {\n getApplicationRoot,\n setApplicationRoot,\n clearApplicationRootForTests,\n} from './application_root.js';\n\nexport { runtime } from './runtime.js';\nexport type { RuntimeOptions, RuntimeResult, RegisterRuntimeRouter } from './runtime.js';\n\nexport {\n getRendererLogDispatcher,\n clearRendererLogDispatcherForTests,\n} from './renderer_log_dispatcher.js';\nexport type {\n RendererLogLevel,\n RendererLogEntry,\n RendererLogCallback,\n RendererLogDispatchResult,\n} from './renderer_log_dispatcher.js';\n\nexport {\n clearRendererTraceBatchReceiverForTests,\n getRendererTraceBatchReceiver,\n setRendererTraceBatchReceiver,\n} from './renderer_trace_batch_receiver_registry.js';\n\nexport {\n getRendererConfigExtension,\n resolveRendererConfigExtension,\n setRendererConfigExtension,\n} from './renderer_config_extension.js';\nexport type { RendererConfigExtension } from './renderer_config_extension.js';\n\nexport { dispatchRendererTracePayload } from '../tracing/index.js';\nexport type { TraceDispatchResult } from '../tracing/index.js';\n"],"mappings":"AAAA,SAAS,gBAAgB,cAAc,sCAAsC;AAG7E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,eAAe;AAGxB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,oCAAoC;","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 renderer_config_extension_exports = {};
|
|
20
|
+
__export(renderer_config_extension_exports, {
|
|
21
|
+
getRendererConfigExtension: () => getRendererConfigExtension,
|
|
22
|
+
resolveRendererConfigExtension: () => resolveRendererConfigExtension,
|
|
23
|
+
setRendererConfigExtension: () => setRendererConfigExtension
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(renderer_config_extension_exports);
|
|
26
|
+
const EXTENSION_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.runtime.renderer-config-extension");
|
|
27
|
+
function setRendererConfigExtension(extension) {
|
|
28
|
+
globalThis[EXTENSION_SYMBOL] = extension;
|
|
29
|
+
}
|
|
30
|
+
function getRendererConfigExtension() {
|
|
31
|
+
return globalThis[EXTENSION_SYMBOL] ?? null;
|
|
32
|
+
}
|
|
33
|
+
async function resolveRendererConfigExtension() {
|
|
34
|
+
const extension = getRendererConfigExtension();
|
|
35
|
+
if (!extension) return {};
|
|
36
|
+
try {
|
|
37
|
+
const value = await extension();
|
|
38
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return {};
|
|
39
|
+
return { ...value };
|
|
40
|
+
} catch {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
45
|
+
0 && (module.exports = {
|
|
46
|
+
getRendererConfigExtension,
|
|
47
|
+
resolveRendererConfigExtension,
|
|
48
|
+
setRendererConfigExtension
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=renderer_config_extension.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/renderer_config_extension.ts"],"sourcesContent":["const EXTENSION_SYMBOL = Symbol.for('@noego/wood.runtime.renderer-config-extension');\n\n/**\n * App-supplied provider of extra fields merged into the `__woodConfig` payload\n * the renderer fetches at boot. Lets the main process hand renderers boot-time\n * facts Wood itself knows nothing about — e.g. the loopback port and per-boot\n * token of an external log sink — without a new IPC channel or preload method.\n *\n * Reserved Wood keys (rendererTrace*, appEnv) always win over extension keys.\n */\nexport type RendererConfigExtension = () =>\n | Readonly<Record<string, unknown>>\n | Promise<Readonly<Record<string, unknown>>>;\n\ntype GlobalWithExtension = typeof globalThis & {\n [EXTENSION_SYMBOL]?: RendererConfigExtension | null;\n};\n\nexport function setRendererConfigExtension(extension: RendererConfigExtension | null): void {\n (globalThis as GlobalWithExtension)[EXTENSION_SYMBOL] = extension;\n}\n\nexport function getRendererConfigExtension(): RendererConfigExtension | null {\n return (globalThis as GlobalWithExtension)[EXTENSION_SYMBOL] ?? null;\n}\n\n/**\n * Resolves the extension fields for one `__woodConfig` request. A throwing or\n * malformed extension yields `{}` — config delivery must never fail the\n * renderer boot because of an app-side provider.\n */\nexport async function resolveRendererConfigExtension(): Promise<Record<string, unknown>> {\n const extension = getRendererConfigExtension();\n if (!extension) return {};\n try {\n const value = await extension();\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {};\n return { ...value };\n } catch {\n return {};\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,mBAAmB,uBAAO,IAAI,+CAA+C;AAkB5E,SAAS,2BAA2B,WAAiD;AAC1F,EAAC,WAAmC,gBAAgB,IAAI;AAC1D;AAEO,SAAS,6BAA6D;AAC3E,SAAQ,WAAmC,gBAAgB,KAAK;AAClE;AAOA,eAAsB,iCAAmE;AACvF,QAAM,YAAY,2BAA2B;AAC7C,MAAI,CAAC,UAAW,QAAO,CAAC;AACxB,MAAI;AACF,UAAM,QAAQ,MAAM,UAAU;AAC9B,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACjF,WAAO,EAAE,GAAG,MAAM;AAAA,EACpB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-supplied provider of extra fields merged into the `__woodConfig` payload
|
|
3
|
+
* the renderer fetches at boot. Lets the main process hand renderers boot-time
|
|
4
|
+
* facts Wood itself knows nothing about — e.g. the loopback port and per-boot
|
|
5
|
+
* token of an external log sink — without a new IPC channel or preload method.
|
|
6
|
+
*
|
|
7
|
+
* Reserved Wood keys (rendererTrace*, appEnv) always win over extension keys.
|
|
8
|
+
*/
|
|
9
|
+
type RendererConfigExtension = () => Readonly<Record<string, unknown>> | Promise<Readonly<Record<string, unknown>>>;
|
|
10
|
+
declare function setRendererConfigExtension(extension: RendererConfigExtension | null): void;
|
|
11
|
+
declare function getRendererConfigExtension(): RendererConfigExtension | null;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the extension fields for one `__woodConfig` request. A throwing or
|
|
14
|
+
* malformed extension yields `{}` — config delivery must never fail the
|
|
15
|
+
* renderer boot because of an app-side provider.
|
|
16
|
+
*/
|
|
17
|
+
declare function resolveRendererConfigExtension(): Promise<Record<string, unknown>>;
|
|
18
|
+
|
|
19
|
+
export { type RendererConfigExtension, getRendererConfigExtension, resolveRendererConfigExtension, setRendererConfigExtension };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-supplied provider of extra fields merged into the `__woodConfig` payload
|
|
3
|
+
* the renderer fetches at boot. Lets the main process hand renderers boot-time
|
|
4
|
+
* facts Wood itself knows nothing about — e.g. the loopback port and per-boot
|
|
5
|
+
* token of an external log sink — without a new IPC channel or preload method.
|
|
6
|
+
*
|
|
7
|
+
* Reserved Wood keys (rendererTrace*, appEnv) always win over extension keys.
|
|
8
|
+
*/
|
|
9
|
+
type RendererConfigExtension = () => Readonly<Record<string, unknown>> | Promise<Readonly<Record<string, unknown>>>;
|
|
10
|
+
declare function setRendererConfigExtension(extension: RendererConfigExtension | null): void;
|
|
11
|
+
declare function getRendererConfigExtension(): RendererConfigExtension | null;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the extension fields for one `__woodConfig` request. A throwing or
|
|
14
|
+
* malformed extension yields `{}` — config delivery must never fail the
|
|
15
|
+
* renderer boot because of an app-side provider.
|
|
16
|
+
*/
|
|
17
|
+
declare function resolveRendererConfigExtension(): Promise<Record<string, unknown>>;
|
|
18
|
+
|
|
19
|
+
export { type RendererConfigExtension, getRendererConfigExtension, resolveRendererConfigExtension, setRendererConfigExtension };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const EXTENSION_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.runtime.renderer-config-extension");
|
|
2
|
+
function setRendererConfigExtension(extension) {
|
|
3
|
+
globalThis[EXTENSION_SYMBOL] = extension;
|
|
4
|
+
}
|
|
5
|
+
function getRendererConfigExtension() {
|
|
6
|
+
return globalThis[EXTENSION_SYMBOL] ?? null;
|
|
7
|
+
}
|
|
8
|
+
async function resolveRendererConfigExtension() {
|
|
9
|
+
const extension = getRendererConfigExtension();
|
|
10
|
+
if (!extension) return {};
|
|
11
|
+
try {
|
|
12
|
+
const value = await extension();
|
|
13
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return {};
|
|
14
|
+
return { ...value };
|
|
15
|
+
} catch {
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
getRendererConfigExtension,
|
|
21
|
+
resolveRendererConfigExtension,
|
|
22
|
+
setRendererConfigExtension
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=renderer_config_extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/renderer_config_extension.ts"],"sourcesContent":["const EXTENSION_SYMBOL = Symbol.for('@noego/wood.runtime.renderer-config-extension');\n\n/**\n * App-supplied provider of extra fields merged into the `__woodConfig` payload\n * the renderer fetches at boot. Lets the main process hand renderers boot-time\n * facts Wood itself knows nothing about — e.g. the loopback port and per-boot\n * token of an external log sink — without a new IPC channel or preload method.\n *\n * Reserved Wood keys (rendererTrace*, appEnv) always win over extension keys.\n */\nexport type RendererConfigExtension = () =>\n | Readonly<Record<string, unknown>>\n | Promise<Readonly<Record<string, unknown>>>;\n\ntype GlobalWithExtension = typeof globalThis & {\n [EXTENSION_SYMBOL]?: RendererConfigExtension | null;\n};\n\nexport function setRendererConfigExtension(extension: RendererConfigExtension | null): void {\n (globalThis as GlobalWithExtension)[EXTENSION_SYMBOL] = extension;\n}\n\nexport function getRendererConfigExtension(): RendererConfigExtension | null {\n return (globalThis as GlobalWithExtension)[EXTENSION_SYMBOL] ?? null;\n}\n\n/**\n * Resolves the extension fields for one `__woodConfig` request. A throwing or\n * malformed extension yields `{}` — config delivery must never fail the\n * renderer boot because of an app-side provider.\n */\nexport async function resolveRendererConfigExtension(): Promise<Record<string, unknown>> {\n const extension = getRendererConfigExtension();\n if (!extension) return {};\n try {\n const value = await extension();\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {};\n return { ...value };\n } catch {\n return {};\n }\n}\n"],"mappings":"AAAA,MAAM,mBAAmB,uBAAO,IAAI,+CAA+C;AAkB5E,SAAS,2BAA2B,WAAiD;AAC1F,EAAC,WAAmC,gBAAgB,IAAI;AAC1D;AAEO,SAAS,6BAA6D;AAC3E,SAAQ,WAAmC,gBAAgB,KAAK;AAClE;AAOA,eAAsB,iCAAmE;AACvF,QAAM,YAAY,2BAA2B;AAC7C,MAAI,CAAC,UAAW,QAAO,CAAC;AACxB,MAAI;AACF,UAAM,QAAQ,MAAM,UAAU;AAC9B,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACjF,WAAO,EAAE,GAAG,MAAM;AAAA,EACpB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;","names":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
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 renderer_log_batch_receiver_exports = {};
|
|
20
|
+
__export(renderer_log_batch_receiver_exports, {
|
|
21
|
+
dispatchRendererLogBatch: () => dispatchRendererLogBatch,
|
|
22
|
+
setRendererLogRecordFilter: () => setRendererLogRecordFilter
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(renderer_log_batch_receiver_exports);
|
|
25
|
+
var import_logger = require("@noego/logger");
|
|
26
|
+
var import_stream = require("@noego/trace/stream");
|
|
27
|
+
const FILTER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.runtime.renderer-log-record-filter");
|
|
28
|
+
function setRendererLogRecordFilter(filter) {
|
|
29
|
+
globalThis[FILTER_SYMBOL] = filter;
|
|
30
|
+
}
|
|
31
|
+
function isValidRecord(value) {
|
|
32
|
+
if (typeof value !== "object" || value === null) return false;
|
|
33
|
+
const r = value;
|
|
34
|
+
return typeof r.id === "string" && Number.isFinite(r.occurredAtMs) && typeof r.producerId === "string" && Number.isSafeInteger(r.sequence) && typeof r.level === "string" && typeof r.logger === "string" && typeof r.message === "string" && typeof r.service === "string" && typeof r.environment === "string";
|
|
35
|
+
}
|
|
36
|
+
function dispatchRendererLogBatch(rawPayload) {
|
|
37
|
+
let records;
|
|
38
|
+
try {
|
|
39
|
+
records = (0, import_stream.unwrapRecordBatch)(rawPayload);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return {
|
|
42
|
+
ok: false,
|
|
43
|
+
ingested: 0,
|
|
44
|
+
filtered: 0,
|
|
45
|
+
reason: "malformed-batch",
|
|
46
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
for (const record of records) {
|
|
50
|
+
if (!isValidRecord(record)) {
|
|
51
|
+
return { ok: false, ingested: 0, filtered: 0, reason: "malformed-record" };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const filter = globalThis[FILTER_SYMBOL] ?? null;
|
|
55
|
+
const manager = (0, import_logger.getManager)();
|
|
56
|
+
let ingested = 0;
|
|
57
|
+
let filtered = 0;
|
|
58
|
+
for (const record of records) {
|
|
59
|
+
if (filter && !filter(record)) {
|
|
60
|
+
filtered += 1;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
manager.ingest(Object.freeze({ ...record }));
|
|
64
|
+
ingested += 1;
|
|
65
|
+
}
|
|
66
|
+
return { ok: true, ingested, filtered };
|
|
67
|
+
}
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
dispatchRendererLogBatch,
|
|
71
|
+
setRendererLogRecordFilter
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=renderer_log_batch_receiver.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/renderer_log_batch_receiver.ts"],"sourcesContent":["import { getManager, type LogRecord } from '@noego/logger';\nimport { unwrapRecordBatch, type RecordBatch } from '@noego/trace/stream';\n\nconst FILTER_SYMBOL = Symbol.for('@noego/wood.runtime.renderer-log-record-filter');\n\n/**\n * Optional app-installed predicate applied to each received renderer record\n * before it is merged into the main process log stream. Return false to drop\n * (e.g. known-noise ResizeObserver loop errors). Filtering never rewrites the\n * record.\n */\nexport type RendererLogRecordFilter = (record: LogRecord) => boolean;\n\ntype GlobalWithFilter = typeof globalThis & {\n [FILTER_SYMBOL]?: RendererLogRecordFilter | null;\n};\n\nexport function setRendererLogRecordFilter(filter: RendererLogRecordFilter | null): void {\n (globalThis as GlobalWithFilter)[FILTER_SYMBOL] = filter;\n}\n\nexport type RendererLogBatchResult = {\n ok: boolean;\n ingested: number;\n filtered: number;\n reason?: 'malformed-batch' | 'malformed-record';\n errorMessage?: string;\n};\n\nfunction isValidRecord(value: unknown): value is LogRecord {\n if (typeof value !== 'object' || value === null) return false;\n const r = value as Record<string, unknown>;\n return typeof r.id === 'string'\n && Number.isFinite(r.occurredAtMs)\n && typeof r.producerId === 'string'\n && Number.isSafeInteger(r.sequence)\n && typeof r.level === 'string'\n && typeof r.logger === 'string'\n && typeof r.message === 'string'\n && typeof r.service === 'string'\n && typeof r.environment === 'string';\n}\n\n/**\n * Receives one renderer log batch from the __log_batch IPC channel: validates\n * the envelope, verifies each record's admitted shape, applies the optional\n * app filter, and merges surviving records into the main process stream via\n * LoggingManager.ingest — identity and occurredAtMs preserved exactly.\n *\n * A malformed envelope or record rejects the batch whole (mirrors\n * unwrapRecordBatch semantics: never partially merge a corrupt batch).\n */\nexport function dispatchRendererLogBatch(rawPayload: unknown): RendererLogBatchResult {\n let records: readonly LogRecord[];\n try {\n records = unwrapRecordBatch(rawPayload as RecordBatch<LogRecord>);\n } catch (error) {\n return {\n ok: false,\n ingested: 0,\n filtered: 0,\n reason: 'malformed-batch',\n errorMessage: error instanceof Error ? error.message : String(error),\n };\n }\n\n for (const record of records) {\n if (!isValidRecord(record)) {\n return { ok: false, ingested: 0, filtered: 0, reason: 'malformed-record' };\n }\n }\n\n const filter = (globalThis as GlobalWithFilter)[FILTER_SYMBOL] ?? null;\n const manager = getManager();\n let ingested = 0;\n let filtered = 0;\n for (const record of records) {\n if (filter && !filter(record)) {\n filtered += 1;\n continue;\n }\n manager.ingest(Object.freeze({ ...record }) as LogRecord);\n ingested += 1;\n }\n\n return { ok: true, ingested, filtered };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2C;AAC3C,oBAAoD;AAEpD,MAAM,gBAAgB,uBAAO,IAAI,gDAAgD;AAc1E,SAAS,2BAA2B,QAA8C;AACvF,EAAC,WAAgC,aAAa,IAAI;AACpD;AAUA,SAAS,cAAc,OAAoC;AACzD,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,IAAI;AACV,SAAO,OAAO,EAAE,OAAO,YAClB,OAAO,SAAS,EAAE,YAAY,KAC9B,OAAO,EAAE,eAAe,YACxB,OAAO,cAAc,EAAE,QAAQ,KAC/B,OAAO,EAAE,UAAU,YACnB,OAAO,EAAE,WAAW,YACpB,OAAO,EAAE,YAAY,YACrB,OAAO,EAAE,YAAY,YACrB,OAAO,EAAE,gBAAgB;AAChC;AAWO,SAAS,yBAAyB,YAA6C;AACpF,MAAI;AACJ,MAAI;AACF,kBAAU,iCAAkB,UAAoC;AAAA,EAClE,SAAS,OAAO;AACd,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,cAAc,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE;AAAA,EACF;AAEA,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,cAAc,MAAM,GAAG;AAC1B,aAAO,EAAE,IAAI,OAAO,UAAU,GAAG,UAAU,GAAG,QAAQ,mBAAmB;AAAA,IAC3E;AAAA,EACF;AAEA,QAAM,SAAU,WAAgC,aAAa,KAAK;AAClE,QAAM,cAAU,0BAAW;AAC3B,MAAI,WAAW;AACf,MAAI,WAAW;AACf,aAAW,UAAU,SAAS;AAC5B,QAAI,UAAU,CAAC,OAAO,MAAM,GAAG;AAC7B,kBAAY;AACZ;AAAA,IACF;AACA,YAAQ,OAAO,OAAO,OAAO,EAAE,GAAG,OAAO,CAAC,CAAc;AACxD,gBAAY;AAAA,EACd;AAEA,SAAO,EAAE,IAAI,MAAM,UAAU,SAAS;AACxC;","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LogRecord } from '@noego/logger';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Optional app-installed predicate applied to each received renderer record
|
|
5
|
+
* before it is merged into the main process log stream. Return false to drop
|
|
6
|
+
* (e.g. known-noise ResizeObserver loop errors). Filtering never rewrites the
|
|
7
|
+
* record.
|
|
8
|
+
*/
|
|
9
|
+
type RendererLogRecordFilter = (record: LogRecord) => boolean;
|
|
10
|
+
declare function setRendererLogRecordFilter(filter: RendererLogRecordFilter | null): void;
|
|
11
|
+
type RendererLogBatchResult = {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
ingested: number;
|
|
14
|
+
filtered: number;
|
|
15
|
+
reason?: 'malformed-batch' | 'malformed-record';
|
|
16
|
+
errorMessage?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Receives one renderer log batch from the __log_batch IPC channel: validates
|
|
20
|
+
* the envelope, verifies each record's admitted shape, applies the optional
|
|
21
|
+
* app filter, and merges surviving records into the main process stream via
|
|
22
|
+
* LoggingManager.ingest — identity and occurredAtMs preserved exactly.
|
|
23
|
+
*
|
|
24
|
+
* A malformed envelope or record rejects the batch whole (mirrors
|
|
25
|
+
* unwrapRecordBatch semantics: never partially merge a corrupt batch).
|
|
26
|
+
*/
|
|
27
|
+
declare function dispatchRendererLogBatch(rawPayload: unknown): RendererLogBatchResult;
|
|
28
|
+
|
|
29
|
+
export { type RendererLogBatchResult, type RendererLogRecordFilter, dispatchRendererLogBatch, setRendererLogRecordFilter };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LogRecord } from '@noego/logger';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Optional app-installed predicate applied to each received renderer record
|
|
5
|
+
* before it is merged into the main process log stream. Return false to drop
|
|
6
|
+
* (e.g. known-noise ResizeObserver loop errors). Filtering never rewrites the
|
|
7
|
+
* record.
|
|
8
|
+
*/
|
|
9
|
+
type RendererLogRecordFilter = (record: LogRecord) => boolean;
|
|
10
|
+
declare function setRendererLogRecordFilter(filter: RendererLogRecordFilter | null): void;
|
|
11
|
+
type RendererLogBatchResult = {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
ingested: number;
|
|
14
|
+
filtered: number;
|
|
15
|
+
reason?: 'malformed-batch' | 'malformed-record';
|
|
16
|
+
errorMessage?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Receives one renderer log batch from the __log_batch IPC channel: validates
|
|
20
|
+
* the envelope, verifies each record's admitted shape, applies the optional
|
|
21
|
+
* app filter, and merges surviving records into the main process stream via
|
|
22
|
+
* LoggingManager.ingest — identity and occurredAtMs preserved exactly.
|
|
23
|
+
*
|
|
24
|
+
* A malformed envelope or record rejects the batch whole (mirrors
|
|
25
|
+
* unwrapRecordBatch semantics: never partially merge a corrupt batch).
|
|
26
|
+
*/
|
|
27
|
+
declare function dispatchRendererLogBatch(rawPayload: unknown): RendererLogBatchResult;
|
|
28
|
+
|
|
29
|
+
export { type RendererLogBatchResult, type RendererLogRecordFilter, dispatchRendererLogBatch, setRendererLogRecordFilter };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getManager } from "@noego/logger";
|
|
2
|
+
import { unwrapRecordBatch } from "@noego/trace/stream";
|
|
3
|
+
const FILTER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.runtime.renderer-log-record-filter");
|
|
4
|
+
function setRendererLogRecordFilter(filter) {
|
|
5
|
+
globalThis[FILTER_SYMBOL] = filter;
|
|
6
|
+
}
|
|
7
|
+
function isValidRecord(value) {
|
|
8
|
+
if (typeof value !== "object" || value === null) return false;
|
|
9
|
+
const r = value;
|
|
10
|
+
return typeof r.id === "string" && Number.isFinite(r.occurredAtMs) && typeof r.producerId === "string" && Number.isSafeInteger(r.sequence) && typeof r.level === "string" && typeof r.logger === "string" && typeof r.message === "string" && typeof r.service === "string" && typeof r.environment === "string";
|
|
11
|
+
}
|
|
12
|
+
function dispatchRendererLogBatch(rawPayload) {
|
|
13
|
+
let records;
|
|
14
|
+
try {
|
|
15
|
+
records = unwrapRecordBatch(rawPayload);
|
|
16
|
+
} catch (error) {
|
|
17
|
+
return {
|
|
18
|
+
ok: false,
|
|
19
|
+
ingested: 0,
|
|
20
|
+
filtered: 0,
|
|
21
|
+
reason: "malformed-batch",
|
|
22
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
for (const record of records) {
|
|
26
|
+
if (!isValidRecord(record)) {
|
|
27
|
+
return { ok: false, ingested: 0, filtered: 0, reason: "malformed-record" };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const filter = globalThis[FILTER_SYMBOL] ?? null;
|
|
31
|
+
const manager = getManager();
|
|
32
|
+
let ingested = 0;
|
|
33
|
+
let filtered = 0;
|
|
34
|
+
for (const record of records) {
|
|
35
|
+
if (filter && !filter(record)) {
|
|
36
|
+
filtered += 1;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
manager.ingest(Object.freeze({ ...record }));
|
|
40
|
+
ingested += 1;
|
|
41
|
+
}
|
|
42
|
+
return { ok: true, ingested, filtered };
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
dispatchRendererLogBatch,
|
|
46
|
+
setRendererLogRecordFilter
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=renderer_log_batch_receiver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/renderer_log_batch_receiver.ts"],"sourcesContent":["import { getManager, type LogRecord } from '@noego/logger';\nimport { unwrapRecordBatch, type RecordBatch } from '@noego/trace/stream';\n\nconst FILTER_SYMBOL = Symbol.for('@noego/wood.runtime.renderer-log-record-filter');\n\n/**\n * Optional app-installed predicate applied to each received renderer record\n * before it is merged into the main process log stream. Return false to drop\n * (e.g. known-noise ResizeObserver loop errors). Filtering never rewrites the\n * record.\n */\nexport type RendererLogRecordFilter = (record: LogRecord) => boolean;\n\ntype GlobalWithFilter = typeof globalThis & {\n [FILTER_SYMBOL]?: RendererLogRecordFilter | null;\n};\n\nexport function setRendererLogRecordFilter(filter: RendererLogRecordFilter | null): void {\n (globalThis as GlobalWithFilter)[FILTER_SYMBOL] = filter;\n}\n\nexport type RendererLogBatchResult = {\n ok: boolean;\n ingested: number;\n filtered: number;\n reason?: 'malformed-batch' | 'malformed-record';\n errorMessage?: string;\n};\n\nfunction isValidRecord(value: unknown): value is LogRecord {\n if (typeof value !== 'object' || value === null) return false;\n const r = value as Record<string, unknown>;\n return typeof r.id === 'string'\n && Number.isFinite(r.occurredAtMs)\n && typeof r.producerId === 'string'\n && Number.isSafeInteger(r.sequence)\n && typeof r.level === 'string'\n && typeof r.logger === 'string'\n && typeof r.message === 'string'\n && typeof r.service === 'string'\n && typeof r.environment === 'string';\n}\n\n/**\n * Receives one renderer log batch from the __log_batch IPC channel: validates\n * the envelope, verifies each record's admitted shape, applies the optional\n * app filter, and merges surviving records into the main process stream via\n * LoggingManager.ingest — identity and occurredAtMs preserved exactly.\n *\n * A malformed envelope or record rejects the batch whole (mirrors\n * unwrapRecordBatch semantics: never partially merge a corrupt batch).\n */\nexport function dispatchRendererLogBatch(rawPayload: unknown): RendererLogBatchResult {\n let records: readonly LogRecord[];\n try {\n records = unwrapRecordBatch(rawPayload as RecordBatch<LogRecord>);\n } catch (error) {\n return {\n ok: false,\n ingested: 0,\n filtered: 0,\n reason: 'malformed-batch',\n errorMessage: error instanceof Error ? error.message : String(error),\n };\n }\n\n for (const record of records) {\n if (!isValidRecord(record)) {\n return { ok: false, ingested: 0, filtered: 0, reason: 'malformed-record' };\n }\n }\n\n const filter = (globalThis as GlobalWithFilter)[FILTER_SYMBOL] ?? null;\n const manager = getManager();\n let ingested = 0;\n let filtered = 0;\n for (const record of records) {\n if (filter && !filter(record)) {\n filtered += 1;\n continue;\n }\n manager.ingest(Object.freeze({ ...record }) as LogRecord);\n ingested += 1;\n }\n\n return { ok: true, ingested, filtered };\n}\n"],"mappings":"AAAA,SAAS,kBAAkC;AAC3C,SAAS,yBAA2C;AAEpD,MAAM,gBAAgB,uBAAO,IAAI,gDAAgD;AAc1E,SAAS,2BAA2B,QAA8C;AACvF,EAAC,WAAgC,aAAa,IAAI;AACpD;AAUA,SAAS,cAAc,OAAoC;AACzD,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,IAAI;AACV,SAAO,OAAO,EAAE,OAAO,YAClB,OAAO,SAAS,EAAE,YAAY,KAC9B,OAAO,EAAE,eAAe,YACxB,OAAO,cAAc,EAAE,QAAQ,KAC/B,OAAO,EAAE,UAAU,YACnB,OAAO,EAAE,WAAW,YACpB,OAAO,EAAE,YAAY,YACrB,OAAO,EAAE,YAAY,YACrB,OAAO,EAAE,gBAAgB;AAChC;AAWO,SAAS,yBAAyB,YAA6C;AACpF,MAAI;AACJ,MAAI;AACF,cAAU,kBAAkB,UAAoC;AAAA,EAClE,SAAS,OAAO;AACd,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,cAAc,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE;AAAA,EACF;AAEA,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,cAAc,MAAM,GAAG;AAC1B,aAAO,EAAE,IAAI,OAAO,UAAU,GAAG,UAAU,GAAG,QAAQ,mBAAmB;AAAA,IAC3E;AAAA,EACF;AAEA,QAAM,SAAU,WAAgC,aAAa,KAAK;AAClE,QAAM,UAAU,WAAW;AAC3B,MAAI,WAAW;AACf,MAAI,WAAW;AACf,aAAW,UAAU,SAAS;AAC5B,QAAI,UAAU,CAAC,OAAO,MAAM,GAAG;AAC7B,kBAAY;AACZ;AAAA,IACF;AACA,YAAQ,OAAO,OAAO,OAAO,EAAE,GAAG,OAAO,CAAC,CAAc;AACxD,gBAAY;AAAA,EACd;AAEA,SAAO,EAAE,IAAI,MAAM,UAAU,SAAS;AACxC;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WoodTraceBatchReceiver } from '../tracing/types/wood_trace_batch.types.cjs';
|
|
2
2
|
import '@noego/telemetry/core';
|
|
3
|
-
import '../trace_hub-
|
|
3
|
+
import '../trace_hub-Cpo_nVze.cjs';
|
|
4
4
|
import 'rxjs';
|
|
5
5
|
|
|
6
6
|
declare function setRendererTraceBatchReceiver(receiver: WoodTraceBatchReceiver | null): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WoodTraceBatchReceiver } from '../tracing/types/wood_trace_batch.types.js';
|
|
2
2
|
import '@noego/telemetry/core';
|
|
3
|
-
import '../trace_hub-
|
|
3
|
+
import '../trace_hub-Cpo_nVze.js';
|
|
4
4
|
import 'rxjs';
|
|
5
5
|
|
|
6
6
|
declare function setRendererTraceBatchReceiver(receiver: WoodTraceBatchReceiver | null): void;
|
package/dist/runtime/runtime.cjs
CHANGED
|
@@ -27,6 +27,8 @@ var import_get_container = require("./get_container.cjs");
|
|
|
27
27
|
var import_tracing = require("../tracing/index.js");
|
|
28
28
|
var import_tracing2 = require("../tracing/index.js");
|
|
29
29
|
var import_renderer_log_dispatcher = require("./renderer_log_dispatcher.js");
|
|
30
|
+
var import_renderer_log_batch_receiver = require("./renderer_log_batch_receiver.js");
|
|
31
|
+
var import_renderer_config_extension = require("./renderer_config_extension.js");
|
|
30
32
|
var import_renderer_trace_batch_receiver_registry = require("./renderer_trace_batch_receiver_registry.js");
|
|
31
33
|
var import_app_env = require("./app_env.js");
|
|
32
34
|
const logger = (0, import_logger.getLogger)("wood:runtime");
|
|
@@ -137,6 +139,8 @@ function registerReservedRuntimeHandlers(router, options, settings, rendererTrac
|
|
|
137
139
|
requireRuntimeHandler("__contextMenu", "onContextMenu", options.onContextMenu)
|
|
138
140
|
);
|
|
139
141
|
router.registerReservedHandler("__woodConfig", async () => ({
|
|
142
|
+
// App extension fields first so Wood's reserved keys always win.
|
|
143
|
+
...await (0, import_renderer_config_extension.resolveRendererConfigExtension)(),
|
|
140
144
|
rendererTraceEnabled: settings.rendererTraceEnabled,
|
|
141
145
|
rendererTraceMinLevel: settings.rendererTraceMinLevel,
|
|
142
146
|
rendererTraceBatchEnabled: settings.rendererTraceBatchEnabled,
|
|
@@ -187,6 +191,16 @@ function registerRendererLogBridge(ipcMain) {
|
|
|
187
191
|
}
|
|
188
192
|
});
|
|
189
193
|
});
|
|
194
|
+
ipcMain.removeAllListeners?.("__log_batch");
|
|
195
|
+
ipcMain.on("__log_batch", (_event, rawPayload) => {
|
|
196
|
+
const result = (0, import_renderer_log_batch_receiver.dispatchRendererLogBatch)(rawPayload);
|
|
197
|
+
if (!result.ok) {
|
|
198
|
+
logger.warn("renderer log batch rejected", {
|
|
199
|
+
reason: result.reason ?? null,
|
|
200
|
+
errorMessage: result.errorMessage ?? null
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
});
|
|
190
204
|
logger.info("renderer log bridge registered (fire-and-forget)");
|
|
191
205
|
}
|
|
192
206
|
// Annotate the CommonJS export names for ESM import in node:
|