@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.
Files changed (499) hide show
  1. package/README.md +107 -0
  2. package/bin/axe.js +202 -0
  3. package/bin/stick.js +96 -0
  4. package/bin/wood.js +572 -0
  5. package/dist/bridge/backend_bridge.cjs +186 -0
  6. package/dist/bridge/backend_bridge.cjs.map +1 -0
  7. package/dist/bridge/backend_bridge.d.cts +32 -0
  8. package/dist/bridge/backend_bridge.d.ts +32 -0
  9. package/dist/bridge/backend_bridge.js +152 -0
  10. package/dist/bridge/backend_bridge.js.map +1 -0
  11. package/dist/bridge/backend_entry.cjs +64 -0
  12. package/dist/bridge/backend_entry.cjs.map +1 -0
  13. package/dist/bridge/backend_entry.d.cts +14 -0
  14. package/dist/bridge/backend_entry.d.ts +14 -0
  15. package/dist/bridge/backend_entry.js +39 -0
  16. package/dist/bridge/backend_entry.js.map +1 -0
  17. package/dist/bridge/index.cjs +34 -0
  18. package/dist/bridge/index.cjs.map +1 -0
  19. package/dist/bridge/index.d.cts +2 -0
  20. package/dist/bridge/index.d.ts +2 -0
  21. package/dist/bridge/index.js +8 -0
  22. package/dist/bridge/index.js.map +1 -0
  23. package/dist/client/controller_contract.cjs +17 -0
  24. package/dist/client/controller_contract.cjs.map +1 -0
  25. package/dist/client/controller_contract.d.cts +15 -0
  26. package/dist/client/controller_contract.d.ts +15 -0
  27. package/dist/client/controller_contract.js +1 -0
  28. package/dist/client/controller_contract.js.map +1 -0
  29. package/dist/client/global_polyfill.cjs +6 -0
  30. package/dist/client/global_polyfill.cjs.map +1 -0
  31. package/dist/client/global_polyfill.d.cts +2 -0
  32. package/dist/client/global_polyfill.d.ts +2 -0
  33. package/dist/client/global_polyfill.js +5 -0
  34. package/dist/client/global_polyfill.js.map +1 -0
  35. package/dist/client/index.cjs +451 -0
  36. package/dist/client/index.cjs.map +1 -0
  37. package/dist/client/index.d.cts +75 -0
  38. package/dist/client/index.d.ts +75 -0
  39. package/dist/client/index.js +414 -0
  40. package/dist/client/index.js.map +1 -0
  41. package/dist/client/wood_controller.svelte.cjs +110 -0
  42. package/dist/client/wood_controller.svelte.cjs.map +1 -0
  43. package/dist/client/wood_controller.svelte.d.cts +30 -0
  44. package/dist/client/wood_controller.svelte.d.ts +30 -0
  45. package/dist/client/wood_controller.svelte.js +86 -0
  46. package/dist/client/wood_controller.svelte.js.map +1 -0
  47. package/dist/codegen/controller_registration_generator.cjs +138 -0
  48. package/dist/codegen/controller_registration_generator.cjs.map +1 -0
  49. package/dist/codegen/controller_registration_generator.d.cts +18 -0
  50. package/dist/codegen/controller_registration_generator.d.ts +18 -0
  51. package/dist/codegen/controller_registration_generator.js +104 -0
  52. package/dist/codegen/controller_registration_generator.js.map +1 -0
  53. package/dist/codegen/index.cjs +50 -0
  54. package/dist/codegen/index.cjs.map +1 -0
  55. package/dist/codegen/index.d.cts +10 -0
  56. package/dist/codegen/index.d.ts +10 -0
  57. package/dist/codegen/index.js +19 -0
  58. package/dist/codegen/index.js.map +1 -0
  59. package/dist/codegen/preload_generator.cjs +151 -0
  60. package/dist/codegen/preload_generator.cjs.map +1 -0
  61. package/dist/codegen/preload_generator.d.cts +8 -0
  62. package/dist/codegen/preload_generator.d.ts +8 -0
  63. package/dist/codegen/preload_generator.js +127 -0
  64. package/dist/codegen/preload_generator.js.map +1 -0
  65. package/dist/codegen/renderer_app_generator.cjs +397 -0
  66. package/dist/codegen/renderer_app_generator.cjs.map +1 -0
  67. package/dist/codegen/renderer_app_generator.d.cts +13 -0
  68. package/dist/codegen/renderer_app_generator.d.ts +13 -0
  69. package/dist/codegen/renderer_app_generator.js +363 -0
  70. package/dist/codegen/renderer_app_generator.js.map +1 -0
  71. package/dist/codegen/renderer_controller_registration_generator.cjs +122 -0
  72. package/dist/codegen/renderer_controller_registration_generator.cjs.map +1 -0
  73. package/dist/codegen/renderer_controller_registration_generator.d.cts +9 -0
  74. package/dist/codegen/renderer_controller_registration_generator.d.ts +9 -0
  75. package/dist/codegen/renderer_controller_registration_generator.js +88 -0
  76. package/dist/codegen/renderer_controller_registration_generator.js.map +1 -0
  77. package/dist/codegen/renderer_view_manifest_generator.cjs +126 -0
  78. package/dist/codegen/renderer_view_manifest_generator.cjs.map +1 -0
  79. package/dist/codegen/renderer_view_manifest_generator.d.cts +11 -0
  80. package/dist/codegen/renderer_view_manifest_generator.d.ts +11 -0
  81. package/dist/codegen/renderer_view_manifest_generator.js +92 -0
  82. package/dist/codegen/renderer_view_manifest_generator.js.map +1 -0
  83. package/dist/codegen/runtime_generator.cjs +156 -0
  84. package/dist/codegen/runtime_generator.cjs.map +1 -0
  85. package/dist/codegen/runtime_generator.d.cts +14 -0
  86. package/dist/codegen/runtime_generator.d.ts +14 -0
  87. package/dist/codegen/runtime_generator.js +122 -0
  88. package/dist/codegen/runtime_generator.js.map +1 -0
  89. package/dist/codegen/test_mock_generator.cjs +98 -0
  90. package/dist/codegen/test_mock_generator.cjs.map +1 -0
  91. package/dist/codegen/test_mock_generator.d.cts +5 -0
  92. package/dist/codegen/test_mock_generator.d.ts +5 -0
  93. package/dist/codegen/test_mock_generator.js +74 -0
  94. package/dist/codegen/test_mock_generator.js.map +1 -0
  95. package/dist/codegen/type_generator.cjs +203 -0
  96. package/dist/codegen/type_generator.cjs.map +1 -0
  97. package/dist/codegen/type_generator.d.cts +5 -0
  98. package/dist/codegen/type_generator.d.ts +5 -0
  99. package/dist/codegen/type_generator.js +179 -0
  100. package/dist/codegen/type_generator.js.map +1 -0
  101. package/dist/components/contextMenu.cjs +163 -0
  102. package/dist/components/contextMenu.cjs.map +1 -0
  103. package/dist/components/contextMenu.d.cts +43 -0
  104. package/dist/components/contextMenu.d.ts +43 -0
  105. package/dist/components/contextMenu.js +138 -0
  106. package/dist/components/contextMenu.js.map +1 -0
  107. package/dist/config/config_parser.cjs +176 -0
  108. package/dist/config/config_parser.cjs.map +1 -0
  109. package/dist/config/config_parser.d.cts +9 -0
  110. package/dist/config/config_parser.d.ts +9 -0
  111. package/dist/config/config_parser.js +142 -0
  112. package/dist/config/config_parser.js.map +1 -0
  113. package/dist/config/index.cjs +29 -0
  114. package/dist/config/index.cjs.map +1 -0
  115. package/dist/config/index.d.cts +2 -0
  116. package/dist/config/index.d.ts +2 -0
  117. package/dist/config/index.js +5 -0
  118. package/dist/config/index.js.map +1 -0
  119. package/dist/controller/__fixtures__/controllers/chat.cjs +32 -0
  120. package/dist/controller/__fixtures__/controllers/chat.cjs.map +1 -0
  121. package/dist/controller/__fixtures__/controllers/chat.d.cts +11 -0
  122. package/dist/controller/__fixtures__/controllers/chat.d.ts +11 -0
  123. package/dist/controller/__fixtures__/controllers/chat.js +12 -0
  124. package/dist/controller/__fixtures__/controllers/chat.js.map +1 -0
  125. package/dist/controller/__fixtures__/controllers/not_a_class.cjs +29 -0
  126. package/dist/controller/__fixtures__/controllers/not_a_class.cjs.map +1 -0
  127. package/dist/controller/__fixtures__/controllers/not_a_class.d.cts +3 -0
  128. package/dist/controller/__fixtures__/controllers/not_a_class.d.ts +3 -0
  129. package/dist/controller/__fixtures__/controllers/not_a_class.js +5 -0
  130. package/dist/controller/__fixtures__/controllers/not_a_class.js.map +1 -0
  131. package/dist/controller/__fixtures__/controllers/settings.controller.cjs +32 -0
  132. package/dist/controller/__fixtures__/controllers/settings.controller.cjs.map +1 -0
  133. package/dist/controller/__fixtures__/controllers/settings.controller.d.cts +12 -0
  134. package/dist/controller/__fixtures__/controllers/settings.controller.d.ts +12 -0
  135. package/dist/controller/__fixtures__/controllers/settings.controller.js +12 -0
  136. package/dist/controller/__fixtures__/controllers/settings.controller.js.map +1 -0
  137. package/dist/controller/__fixtures__/controllers/test.cjs +29 -0
  138. package/dist/controller/__fixtures__/controllers/test.cjs.map +1 -0
  139. package/dist/controller/__fixtures__/controllers/test.d.cts +7 -0
  140. package/dist/controller/__fixtures__/controllers/test.d.ts +7 -0
  141. package/dist/controller/__fixtures__/controllers/test.js +9 -0
  142. package/dist/controller/__fixtures__/controllers/test.js.map +1 -0
  143. package/dist/controller/controller_resolver.cjs +180 -0
  144. package/dist/controller/controller_resolver.cjs.map +1 -0
  145. package/dist/controller/controller_resolver.d.cts +51 -0
  146. package/dist/controller/controller_resolver.d.ts +51 -0
  147. package/dist/controller/controller_resolver.js +145 -0
  148. package/dist/controller/controller_resolver.js.map +1 -0
  149. package/dist/controller/index.cjs +31 -0
  150. package/dist/controller/index.cjs.map +1 -0
  151. package/dist/controller/index.d.cts +2 -0
  152. package/dist/controller/index.d.ts +2 -0
  153. package/dist/controller/index.js +6 -0
  154. package/dist/controller/index.js.map +1 -0
  155. package/dist/dev/backend_watcher.cjs +108 -0
  156. package/dist/dev/backend_watcher.cjs.map +1 -0
  157. package/dist/dev/backend_watcher.d.cts +22 -0
  158. package/dist/dev/backend_watcher.d.ts +22 -0
  159. package/dist/dev/backend_watcher.js +84 -0
  160. package/dist/dev/backend_watcher.js.map +1 -0
  161. package/dist/dev/dev_metadata.cjs +94 -0
  162. package/dist/dev/dev_metadata.cjs.map +1 -0
  163. package/dist/dev/dev_metadata.d.cts +20 -0
  164. package/dist/dev/dev_metadata.d.ts +20 -0
  165. package/dist/dev/dev_metadata.js +52 -0
  166. package/dist/dev/dev_metadata.js.map +1 -0
  167. package/dist/dev/esbuild_backend.cjs +124 -0
  168. package/dist/dev/esbuild_backend.cjs.map +1 -0
  169. package/dist/dev/esbuild_backend.d.cts +30 -0
  170. package/dist/dev/esbuild_backend.d.ts +30 -0
  171. package/dist/dev/esbuild_backend.js +90 -0
  172. package/dist/dev/esbuild_backend.js.map +1 -0
  173. package/dist/dev/index.cjs +57 -0
  174. package/dist/dev/index.cjs.map +1 -0
  175. package/dist/dev/index.d.cts +8 -0
  176. package/dist/dev/index.d.ts +8 -0
  177. package/dist/dev/index.js +31 -0
  178. package/dist/dev/index.js.map +1 -0
  179. package/dist/dev/wood_dev_server.cjs +220 -0
  180. package/dist/dev/wood_dev_server.cjs.map +1 -0
  181. package/dist/dev/wood_dev_server.d.cts +39 -0
  182. package/dist/dev/wood_dev_server.d.ts +39 -0
  183. package/dist/dev/wood_dev_server.js +186 -0
  184. package/dist/dev/wood_dev_server.js.map +1 -0
  185. package/dist/dev/yaml_watcher.cjs +142 -0
  186. package/dist/dev/yaml_watcher.cjs.map +1 -0
  187. package/dist/dev/yaml_watcher.d.cts +22 -0
  188. package/dist/dev/yaml_watcher.d.ts +22 -0
  189. package/dist/dev/yaml_watcher.js +108 -0
  190. package/dist/dev/yaml_watcher.js.map +1 -0
  191. package/dist/electron/index.cjs +176 -0
  192. package/dist/electron/index.cjs.map +1 -0
  193. package/dist/electron/index.d.cts +29 -0
  194. package/dist/electron/index.d.ts +29 -0
  195. package/dist/electron/index.js +140 -0
  196. package/dist/electron/index.js.map +1 -0
  197. package/dist/index.cjs +178 -0
  198. package/dist/index.cjs.map +1 -0
  199. package/dist/index.d.cts +41 -0
  200. package/dist/index.d.ts +41 -0
  201. package/dist/index.js +122 -0
  202. package/dist/index.js.map +1 -0
  203. package/dist/ipc/index.cjs +80 -0
  204. package/dist/ipc/index.cjs.map +1 -0
  205. package/dist/ipc/index.d.cts +12 -0
  206. package/dist/ipc/index.d.ts +12 -0
  207. package/dist/ipc/index.js +57 -0
  208. package/dist/ipc/index.js.map +1 -0
  209. package/dist/ipc/shared.cjs +50 -0
  210. package/dist/ipc/shared.cjs.map +1 -0
  211. package/dist/ipc/shared.d.cts +10 -0
  212. package/dist/ipc/shared.d.ts +10 -0
  213. package/dist/ipc/shared.js +23 -0
  214. package/dist/ipc/shared.js.map +1 -0
  215. package/dist/loader/__fixtures__/layouts/app.load.cjs +27 -0
  216. package/dist/loader/__fixtures__/layouts/app.load.cjs.map +1 -0
  217. package/dist/loader/__fixtures__/layouts/app.load.d.cts +5 -0
  218. package/dist/loader/__fixtures__/layouts/app.load.d.ts +5 -0
  219. package/dist/loader/__fixtures__/layouts/app.load.js +7 -0
  220. package/dist/loader/__fixtures__/layouts/app.load.js.map +1 -0
  221. package/dist/loader/__fixtures__/views/test/page.load.cjs +27 -0
  222. package/dist/loader/__fixtures__/views/test/page.load.cjs.map +1 -0
  223. package/dist/loader/__fixtures__/views/test/page.load.d.cts +6 -0
  224. package/dist/loader/__fixtures__/views/test/page.load.d.ts +6 -0
  225. package/dist/loader/__fixtures__/views/test/page.load.js +7 -0
  226. package/dist/loader/__fixtures__/views/test/page.load.js.map +1 -0
  227. package/dist/loader/index.cjs +29 -0
  228. package/dist/loader/index.cjs.map +1 -0
  229. package/dist/loader/index.d.cts +3 -0
  230. package/dist/loader/index.d.ts +3 -0
  231. package/dist/loader/index.js +5 -0
  232. package/dist/loader/index.js.map +1 -0
  233. package/dist/loader/loader_runner.cjs +109 -0
  234. package/dist/loader/loader_runner.cjs.map +1 -0
  235. package/dist/loader/loader_runner.d.cts +27 -0
  236. package/dist/loader/loader_runner.d.ts +27 -0
  237. package/dist/loader/loader_runner.js +75 -0
  238. package/dist/loader/loader_runner.js.map +1 -0
  239. package/dist/main/index.cjs +500 -0
  240. package/dist/main/index.cjs.map +1 -0
  241. package/dist/main/index.d.cts +98 -0
  242. package/dist/main/index.d.ts +98 -0
  243. package/dist/main/index.js +475 -0
  244. package/dist/main/index.js.map +1 -0
  245. package/dist/middleware/__fixtures__/middleware/auth.cjs +44 -0
  246. package/dist/middleware/__fixtures__/middleware/auth.cjs.map +1 -0
  247. package/dist/middleware/__fixtures__/middleware/auth.d.cts +6 -0
  248. package/dist/middleware/__fixtures__/middleware/auth.d.ts +6 -0
  249. package/dist/middleware/__fixtures__/middleware/auth.js +19 -0
  250. package/dist/middleware/__fixtures__/middleware/auth.js.map +1 -0
  251. package/dist/middleware/__fixtures__/middleware/sequence.cjs +47 -0
  252. package/dist/middleware/__fixtures__/middleware/sequence.cjs.map +1 -0
  253. package/dist/middleware/__fixtures__/middleware/sequence.d.cts +7 -0
  254. package/dist/middleware/__fixtures__/middleware/sequence.d.ts +7 -0
  255. package/dist/middleware/__fixtures__/middleware/sequence.js +21 -0
  256. package/dist/middleware/__fixtures__/middleware/sequence.js.map +1 -0
  257. package/dist/middleware/index.cjs +34 -0
  258. package/dist/middleware/index.cjs.map +1 -0
  259. package/dist/middleware/index.d.cts +3 -0
  260. package/dist/middleware/index.d.ts +3 -0
  261. package/dist/middleware/index.js +8 -0
  262. package/dist/middleware/index.js.map +1 -0
  263. package/dist/middleware/middleware_pipeline.cjs +55 -0
  264. package/dist/middleware/middleware_pipeline.cjs.map +1 -0
  265. package/dist/middleware/middleware_pipeline.d.cts +13 -0
  266. package/dist/middleware/middleware_pipeline.d.ts +13 -0
  267. package/dist/middleware/middleware_pipeline.js +30 -0
  268. package/dist/middleware/middleware_pipeline.js.map +1 -0
  269. package/dist/middleware/middleware_resolver.cjs +91 -0
  270. package/dist/middleware/middleware_resolver.cjs.map +1 -0
  271. package/dist/middleware/middleware_resolver.d.cts +19 -0
  272. package/dist/middleware/middleware_resolver.d.ts +19 -0
  273. package/dist/middleware/middleware_resolver.js +57 -0
  274. package/dist/middleware/middleware_resolver.js.map +1 -0
  275. package/dist/navigation/index.cjs +205 -0
  276. package/dist/navigation/index.cjs.map +1 -0
  277. package/dist/navigation/index.d.cts +34 -0
  278. package/dist/navigation/index.d.ts +34 -0
  279. package/dist/navigation/index.js +176 -0
  280. package/dist/navigation/index.js.map +1 -0
  281. package/dist/parser/index.cjs +36 -0
  282. package/dist/parser/index.cjs.map +1 -0
  283. package/dist/parser/index.d.cts +4 -0
  284. package/dist/parser/index.d.ts +4 -0
  285. package/dist/parser/index.js +9 -0
  286. package/dist/parser/index.js.map +1 -0
  287. package/dist/parser/operations_parser.cjs +94 -0
  288. package/dist/parser/operations_parser.cjs.map +1 -0
  289. package/dist/parser/operations_parser.d.cts +7 -0
  290. package/dist/parser/operations_parser.d.ts +7 -0
  291. package/dist/parser/operations_parser.js +59 -0
  292. package/dist/parser/operations_parser.js.map +1 -0
  293. package/dist/parser/views_parser.cjs +153 -0
  294. package/dist/parser/views_parser.cjs.map +1 -0
  295. package/dist/parser/views_parser.d.cts +11 -0
  296. package/dist/parser/views_parser.d.ts +11 -0
  297. package/dist/parser/views_parser.js +118 -0
  298. package/dist/parser/views_parser.js.map +1 -0
  299. package/dist/router/index.cjs +31 -0
  300. package/dist/router/index.cjs.map +1 -0
  301. package/dist/router/index.d.cts +2 -0
  302. package/dist/router/index.d.ts +2 -0
  303. package/dist/router/index.js +6 -0
  304. package/dist/router/index.js.map +1 -0
  305. package/dist/router/wood_router.cjs +246 -0
  306. package/dist/router/wood_router.cjs.map +1 -0
  307. package/dist/router/wood_router.d.cts +70 -0
  308. package/dist/router/wood_router.d.ts +70 -0
  309. package/dist/router/wood_router.js +221 -0
  310. package/dist/router/wood_router.js.map +1 -0
  311. package/dist/runtime/application_root.cjs +98 -0
  312. package/dist/runtime/application_root.cjs.map +1 -0
  313. package/dist/runtime/application_root.d.cts +5 -0
  314. package/dist/runtime/application_root.d.ts +5 -0
  315. package/dist/runtime/application_root.js +61 -0
  316. package/dist/runtime/application_root.js.map +1 -0
  317. package/dist/runtime/get_container.cjs +96 -0
  318. package/dist/runtime/get_container.cjs.map +1 -0
  319. package/dist/runtime/get_container.d.cts +16 -0
  320. package/dist/runtime/get_container.d.ts +16 -0
  321. package/dist/runtime/get_container.js +60 -0
  322. package/dist/runtime/get_container.js.map +1 -0
  323. package/dist/runtime/index.cjs +49 -0
  324. package/dist/runtime/index.cjs.map +1 -0
  325. package/dist/runtime/index.d.cts +8 -0
  326. package/dist/runtime/index.d.ts +8 -0
  327. package/dist/runtime/index.js +24 -0
  328. package/dist/runtime/index.js.map +1 -0
  329. package/dist/runtime/renderer_log_dispatcher.cjs +79 -0
  330. package/dist/runtime/renderer_log_dispatcher.cjs.map +1 -0
  331. package/dist/runtime/renderer_log_dispatcher.d.cts +27 -0
  332. package/dist/runtime/renderer_log_dispatcher.d.ts +27 -0
  333. package/dist/runtime/renderer_log_dispatcher.js +54 -0
  334. package/dist/runtime/renderer_log_dispatcher.js.map +1 -0
  335. package/dist/runtime/runtime.cjs +158 -0
  336. package/dist/runtime/runtime.cjs.map +1 -0
  337. package/dist/runtime/runtime.d.cts +35 -0
  338. package/dist/runtime/runtime.d.ts +35 -0
  339. package/dist/runtime/runtime.js +136 -0
  340. package/dist/runtime/runtime.js.map +1 -0
  341. package/dist/stick/allow_cli.cjs +39 -0
  342. package/dist/stick/allow_cli.cjs.map +1 -0
  343. package/dist/stick/allow_cli.d.cts +6 -0
  344. package/dist/stick/allow_cli.d.ts +6 -0
  345. package/dist/stick/allow_cli.js +15 -0
  346. package/dist/stick/allow_cli.js.map +1 -0
  347. package/dist/stick/index.cjs +276 -0
  348. package/dist/stick/index.cjs.map +1 -0
  349. package/dist/stick/index.d.cts +111 -0
  350. package/dist/stick/index.d.ts +111 -0
  351. package/dist/stick/index.js +237 -0
  352. package/dist/stick/index.js.map +1 -0
  353. package/dist/stick/static_renderer.cjs +144 -0
  354. package/dist/stick/static_renderer.cjs.map +1 -0
  355. package/dist/stick/static_renderer.d.cts +51 -0
  356. package/dist/stick/static_renderer.d.ts +51 -0
  357. package/dist/stick/static_renderer.js +119 -0
  358. package/dist/stick/static_renderer.js.map +1 -0
  359. package/dist/stick/template_resolver.cjs +156 -0
  360. package/dist/stick/template_resolver.cjs.map +1 -0
  361. package/dist/stick/template_resolver.d.cts +7 -0
  362. package/dist/stick/template_resolver.d.ts +7 -0
  363. package/dist/stick/template_resolver.js +122 -0
  364. package/dist/stick/template_resolver.js.map +1 -0
  365. package/dist/testing/create_controller_harness.cjs +175 -0
  366. package/dist/testing/create_controller_harness.cjs.map +1 -0
  367. package/dist/testing/create_controller_harness.d.cts +37 -0
  368. package/dist/testing/create_controller_harness.d.ts +37 -0
  369. package/dist/testing/create_controller_harness.js +162 -0
  370. package/dist/testing/create_controller_harness.js.map +1 -0
  371. package/dist/testing/create_router_bridge.cjs +103 -0
  372. package/dist/testing/create_router_bridge.cjs.map +1 -0
  373. package/dist/testing/create_router_bridge.d.cts +71 -0
  374. package/dist/testing/create_router_bridge.d.ts +71 -0
  375. package/dist/testing/create_router_bridge.js +78 -0
  376. package/dist/testing/create_router_bridge.js.map +1 -0
  377. package/dist/testing/create_test_container.cjs +72 -0
  378. package/dist/testing/create_test_container.cjs.map +1 -0
  379. package/dist/testing/create_test_container.d.cts +14 -0
  380. package/dist/testing/create_test_container.d.ts +14 -0
  381. package/dist/testing/create_test_container.js +48 -0
  382. package/dist/testing/create_test_container.js.map +1 -0
  383. package/dist/testing/create_test_router.cjs +57 -0
  384. package/dist/testing/create_test_router.cjs.map +1 -0
  385. package/dist/testing/create_test_router.d.cts +19 -0
  386. package/dist/testing/create_test_router.d.ts +19 -0
  387. package/dist/testing/create_test_router.js +33 -0
  388. package/dist/testing/create_test_router.js.map +1 -0
  389. package/dist/testing/index.cjs +48 -0
  390. package/dist/testing/index.cjs.map +1 -0
  391. package/dist/testing/index.d.cts +12 -0
  392. package/dist/testing/index.d.ts +12 -0
  393. package/dist/testing/index.js +22 -0
  394. package/dist/testing/index.js.map +1 -0
  395. package/dist/testing/mock_electron.cjs +100 -0
  396. package/dist/testing/mock_electron.cjs.map +1 -0
  397. package/dist/testing/mock_electron.d.cts +12 -0
  398. package/dist/testing/mock_electron.d.ts +12 -0
  399. package/dist/testing/mock_electron.js +75 -0
  400. package/dist/testing/mock_electron.js.map +1 -0
  401. package/dist/tracing/index.cjs +56 -0
  402. package/dist/tracing/index.cjs.map +1 -0
  403. package/dist/tracing/index.d.cts +4 -0
  404. package/dist/tracing/index.d.ts +4 -0
  405. package/dist/tracing/index.js +35 -0
  406. package/dist/tracing/index.js.map +1 -0
  407. package/dist/tracing/trace_hub.cjs +213 -0
  408. package/dist/tracing/trace_hub.cjs.map +1 -0
  409. package/dist/tracing/trace_hub.d.cts +47 -0
  410. package/dist/tracing/trace_hub.d.ts +47 -0
  411. package/dist/tracing/trace_hub.js +172 -0
  412. package/dist/tracing/trace_hub.js.map +1 -0
  413. package/dist/tracing/trace_provider.cjs +200 -0
  414. package/dist/tracing/trace_provider.cjs.map +1 -0
  415. package/dist/tracing/trace_provider.d.cts +69 -0
  416. package/dist/tracing/trace_provider.d.ts +69 -0
  417. package/dist/tracing/trace_provider.js +179 -0
  418. package/dist/tracing/trace_provider.js.map +1 -0
  419. package/dist/types/bridge.cjs +51 -0
  420. package/dist/types/bridge.cjs.map +1 -0
  421. package/dist/types/bridge.d.cts +56 -0
  422. package/dist/types/bridge.d.ts +56 -0
  423. package/dist/types/bridge.js +25 -0
  424. package/dist/types/bridge.js.map +1 -0
  425. package/dist/types/config.cjs +17 -0
  426. package/dist/types/config.cjs.map +1 -0
  427. package/dist/types/config.d.cts +74 -0
  428. package/dist/types/config.d.ts +74 -0
  429. package/dist/types/config.js +1 -0
  430. package/dist/types/config.js.map +1 -0
  431. package/dist/types/context.cjs +17 -0
  432. package/dist/types/context.cjs.map +1 -0
  433. package/dist/types/context.d.cts +61 -0
  434. package/dist/types/context.d.ts +61 -0
  435. package/dist/types/context.js +1 -0
  436. package/dist/types/context.js.map +1 -0
  437. package/dist/types/context_menu.cjs +17 -0
  438. package/dist/types/context_menu.cjs.map +1 -0
  439. package/dist/types/context_menu.d.cts +30 -0
  440. package/dist/types/context_menu.d.ts +30 -0
  441. package/dist/types/context_menu.js +1 -0
  442. package/dist/types/context_menu.js.map +1 -0
  443. package/dist/types/index.cjs +33 -0
  444. package/dist/types/index.cjs.map +1 -0
  445. package/dist/types/index.d.cts +6 -0
  446. package/dist/types/index.d.ts +6 -0
  447. package/dist/types/index.js +7 -0
  448. package/dist/types/index.js.map +1 -0
  449. package/dist/types/operations.cjs +17 -0
  450. package/dist/types/operations.cjs.map +1 -0
  451. package/dist/types/operations.d.cts +39 -0
  452. package/dist/types/operations.d.ts +39 -0
  453. package/dist/types/operations.js +1 -0
  454. package/dist/types/operations.js.map +1 -0
  455. package/dist/types/views.cjs +17 -0
  456. package/dist/types/views.cjs.map +1 -0
  457. package/dist/types/views.d.cts +44 -0
  458. package/dist/types/views.d.ts +44 -0
  459. package/dist/types/views.js +1 -0
  460. package/dist/types/views.js.map +1 -0
  461. package/dist/validation/index.cjs +29 -0
  462. package/dist/validation/index.cjs.map +1 -0
  463. package/dist/validation/index.d.cts +1 -0
  464. package/dist/validation/index.d.ts +1 -0
  465. package/dist/validation/index.js +5 -0
  466. package/dist/validation/index.js.map +1 -0
  467. package/dist/validation/schema_validator.cjs +86 -0
  468. package/dist/validation/schema_validator.cjs.map +1 -0
  469. package/dist/validation/schema_validator.d.cts +24 -0
  470. package/dist/validation/schema_validator.d.ts +24 -0
  471. package/dist/validation/schema_validator.js +52 -0
  472. package/dist/validation/schema_validator.js.map +1 -0
  473. package/dist/window/index.cjs +32 -0
  474. package/dist/window/index.cjs.map +1 -0
  475. package/dist/window/index.d.cts +4 -0
  476. package/dist/window/index.d.ts +4 -0
  477. package/dist/window/index.js +7 -0
  478. package/dist/window/index.js.map +1 -0
  479. package/dist/window/window_manager.cjs +354 -0
  480. package/dist/window/window_manager.cjs.map +1 -0
  481. package/dist/window/window_manager.d.cts +172 -0
  482. package/dist/window/window_manager.d.ts +172 -0
  483. package/dist/window/window_manager.js +330 -0
  484. package/dist/window/window_manager.js.map +1 -0
  485. package/dist/window/window_state_store.cjs +129 -0
  486. package/dist/window/window_state_store.cjs.map +1 -0
  487. package/dist/window/window_state_store.d.cts +39 -0
  488. package/dist/window/window_state_store.d.ts +39 -0
  489. package/dist/window/window_state_store.js +105 -0
  490. package/dist/window/window_state_store.js.map +1 -0
  491. package/loaders/loader.mjs +46 -0
  492. package/package.json +119 -0
  493. package/src/components/ContextMenuProvider.svelte +145 -0
  494. package/src/components/NavigationShell.svelte +204 -0
  495. package/src/components/WoodRecursiveRender.svelte +91 -0
  496. package/src/components/contextMenu.ts +228 -0
  497. package/src/components/index.d.ts +14 -0
  498. package/src/components/index.js +2 -0
  499. package/src/stick/WoodRecursiveRender.svelte +74 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ipc/index.ts"],"sourcesContent":["import {\n getIpcPushSender,\n type IpcPushOptions,\n} from './shared.js';\n\nconst IPC_SINGLETON_SYMBOL = Symbol.for('@noego/wood.ipc.singleton');\n\ntype IpcListener = (payload: unknown) => void;\ntype IpcUnsubscribe = () => void;\n\ntype WoodBridgeLike = {\n on?: (channel: string, callback: (...args: unknown[]) => void) => IpcUnsubscribe;\n};\n\nconst INTERNAL_BRIDGE_GLOBAL_KEY = '__NOEGO_WOOD_BRIDGE__';\n\ntype GlobalWithIpc = typeof globalThis & {\n [IPC_SINGLETON_SYMBOL]?: Ipc;\n [INTERNAL_BRIDGE_GLOBAL_KEY]?: unknown;\n wood?: unknown;\n window?: {\n [key: string]: unknown;\n wood?: unknown;\n };\n};\n\nfunction getGlobal(): GlobalWithIpc {\n return globalThis as GlobalWithIpc;\n}\n\nfunction resolveBridge(): WoodBridgeLike | null {\n const globalObj = getGlobal();\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 return null;\n }\n return bridge as WoodBridgeLike;\n}\n\nfunction normalizeCallbackPayload(args: unknown[]): unknown {\n if (args.length <= 1) {\n return args[0];\n }\n return args;\n}\n\nexport class Ipc {\n send(channel: string, payload: unknown, options?: IpcPushOptions): boolean {\n const sender = getIpcPushSender();\n if (!sender) {\n return false;\n }\n sender(channel, payload, options);\n return true;\n }\n\n emit(channel: string, payload: unknown, options?: IpcPushOptions): boolean {\n return this.send(channel, payload, options);\n }\n\n on(channel: string, listener: IpcListener): IpcUnsubscribe {\n const bridge = resolveBridge();\n if (!bridge || typeof bridge.on !== 'function') {\n return () => {};\n }\n return bridge.on(channel, (...args: unknown[]) => {\n listener(normalizeCallbackPayload(args));\n });\n }\n}\n\nexport function getIpc(): Ipc {\n const globalObj = getGlobal();\n if (!globalObj[IPC_SINGLETON_SYMBOL]) {\n globalObj[IPC_SINGLETON_SYMBOL] = new Ipc();\n }\n return globalObj[IPC_SINGLETON_SYMBOL] as Ipc;\n}\n\nexport type { IpcPushOptions };\n\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAGO;AAEP,MAAM,uBAAuB,uBAAO,IAAI,2BAA2B;AASnE,MAAM,6BAA6B;AAYnC,SAAS,YAA2B;AAClC,SAAO;AACT;AAEA,SAAS,gBAAuC;AAC9C,QAAM,YAAY,UAAU;AAC5B,QAAM,SAAS,UAAU,0BAA0B,KAC9C,UAAU,SAAS,0BAA0B,KAC7C,UAAU,QACV,UAAU,QAAQ;AACvB,MAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,MAA0B;AAC1D,MAAI,KAAK,UAAU,GAAG;AACpB,WAAO,KAAK,CAAC;AAAA,EACf;AACA,SAAO;AACT;AAEO,MAAM,IAAI;AAAA,EACf,KAAK,SAAiB,SAAkB,SAAmC;AACzE,UAAM,aAAS,gCAAiB;AAChC,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,WAAO,SAAS,SAAS,OAAO;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,SAAiB,SAAkB,SAAmC;AACzE,WAAO,KAAK,KAAK,SAAS,SAAS,OAAO;AAAA,EAC5C;AAAA,EAEA,GAAG,SAAiB,UAAuC;AACzD,UAAM,SAAS,cAAc;AAC7B,QAAI,CAAC,UAAU,OAAO,OAAO,OAAO,YAAY;AAC9C,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,WAAO,OAAO,GAAG,SAAS,IAAI,SAAoB;AAChD,eAAS,yBAAyB,IAAI,CAAC;AAAA,IACzC,CAAC;AAAA,EACH;AACF;AAEO,SAAS,SAAc;AAC5B,QAAM,YAAY,UAAU;AAC5B,MAAI,CAAC,UAAU,oBAAoB,GAAG;AACpC,cAAU,oBAAoB,IAAI,IAAI,IAAI;AAAA,EAC5C;AACA,SAAO,UAAU,oBAAoB;AACvC;","names":[]}
@@ -0,0 +1,12 @@
1
+ import { IpcPushOptions } from './shared.cjs';
2
+
3
+ type IpcListener = (payload: unknown) => void;
4
+ type IpcUnsubscribe = () => void;
5
+ declare class Ipc {
6
+ send(channel: string, payload: unknown, options?: IpcPushOptions): boolean;
7
+ emit(channel: string, payload: unknown, options?: IpcPushOptions): boolean;
8
+ on(channel: string, listener: IpcListener): IpcUnsubscribe;
9
+ }
10
+ declare function getIpc(): Ipc;
11
+
12
+ export { Ipc, IpcPushOptions, getIpc };
@@ -0,0 +1,12 @@
1
+ import { IpcPushOptions } from './shared.js';
2
+
3
+ type IpcListener = (payload: unknown) => void;
4
+ type IpcUnsubscribe = () => void;
5
+ declare class Ipc {
6
+ send(channel: string, payload: unknown, options?: IpcPushOptions): boolean;
7
+ emit(channel: string, payload: unknown, options?: IpcPushOptions): boolean;
8
+ on(channel: string, listener: IpcListener): IpcUnsubscribe;
9
+ }
10
+ declare function getIpc(): Ipc;
11
+
12
+ export { Ipc, IpcPushOptions, getIpc };
@@ -0,0 +1,57 @@
1
+ import {
2
+ getIpcPushSender
3
+ } from "./shared.js";
4
+ const IPC_SINGLETON_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.ipc.singleton");
5
+ const INTERNAL_BRIDGE_GLOBAL_KEY = "__NOEGO_WOOD_BRIDGE__";
6
+ function getGlobal() {
7
+ return globalThis;
8
+ }
9
+ function resolveBridge() {
10
+ const globalObj = getGlobal();
11
+ const bridge = globalObj[INTERNAL_BRIDGE_GLOBAL_KEY] ?? globalObj.window?.[INTERNAL_BRIDGE_GLOBAL_KEY] ?? globalObj.wood ?? globalObj.window?.wood;
12
+ if (!bridge || typeof bridge !== "object") {
13
+ return null;
14
+ }
15
+ return bridge;
16
+ }
17
+ function normalizeCallbackPayload(args) {
18
+ if (args.length <= 1) {
19
+ return args[0];
20
+ }
21
+ return args;
22
+ }
23
+ class Ipc {
24
+ send(channel, payload, options) {
25
+ const sender = getIpcPushSender();
26
+ if (!sender) {
27
+ return false;
28
+ }
29
+ sender(channel, payload, options);
30
+ return true;
31
+ }
32
+ emit(channel, payload, options) {
33
+ return this.send(channel, payload, options);
34
+ }
35
+ on(channel, listener) {
36
+ const bridge = resolveBridge();
37
+ if (!bridge || typeof bridge.on !== "function") {
38
+ return () => {
39
+ };
40
+ }
41
+ return bridge.on(channel, (...args) => {
42
+ listener(normalizeCallbackPayload(args));
43
+ });
44
+ }
45
+ }
46
+ function getIpc() {
47
+ const globalObj = getGlobal();
48
+ if (!globalObj[IPC_SINGLETON_SYMBOL]) {
49
+ globalObj[IPC_SINGLETON_SYMBOL] = new Ipc();
50
+ }
51
+ return globalObj[IPC_SINGLETON_SYMBOL];
52
+ }
53
+ export {
54
+ Ipc,
55
+ getIpc
56
+ };
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ipc/index.ts"],"sourcesContent":["import {\n getIpcPushSender,\n type IpcPushOptions,\n} from './shared.js';\n\nconst IPC_SINGLETON_SYMBOL = Symbol.for('@noego/wood.ipc.singleton');\n\ntype IpcListener = (payload: unknown) => void;\ntype IpcUnsubscribe = () => void;\n\ntype WoodBridgeLike = {\n on?: (channel: string, callback: (...args: unknown[]) => void) => IpcUnsubscribe;\n};\n\nconst INTERNAL_BRIDGE_GLOBAL_KEY = '__NOEGO_WOOD_BRIDGE__';\n\ntype GlobalWithIpc = typeof globalThis & {\n [IPC_SINGLETON_SYMBOL]?: Ipc;\n [INTERNAL_BRIDGE_GLOBAL_KEY]?: unknown;\n wood?: unknown;\n window?: {\n [key: string]: unknown;\n wood?: unknown;\n };\n};\n\nfunction getGlobal(): GlobalWithIpc {\n return globalThis as GlobalWithIpc;\n}\n\nfunction resolveBridge(): WoodBridgeLike | null {\n const globalObj = getGlobal();\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 return null;\n }\n return bridge as WoodBridgeLike;\n}\n\nfunction normalizeCallbackPayload(args: unknown[]): unknown {\n if (args.length <= 1) {\n return args[0];\n }\n return args;\n}\n\nexport class Ipc {\n send(channel: string, payload: unknown, options?: IpcPushOptions): boolean {\n const sender = getIpcPushSender();\n if (!sender) {\n return false;\n }\n sender(channel, payload, options);\n return true;\n }\n\n emit(channel: string, payload: unknown, options?: IpcPushOptions): boolean {\n return this.send(channel, payload, options);\n }\n\n on(channel: string, listener: IpcListener): IpcUnsubscribe {\n const bridge = resolveBridge();\n if (!bridge || typeof bridge.on !== 'function') {\n return () => {};\n }\n return bridge.on(channel, (...args: unknown[]) => {\n listener(normalizeCallbackPayload(args));\n });\n }\n}\n\nexport function getIpc(): Ipc {\n const globalObj = getGlobal();\n if (!globalObj[IPC_SINGLETON_SYMBOL]) {\n globalObj[IPC_SINGLETON_SYMBOL] = new Ipc();\n }\n return globalObj[IPC_SINGLETON_SYMBOL] as Ipc;\n}\n\nexport type { IpcPushOptions };\n\n"],"mappings":"AAAA;AAAA,EACE;AAAA,OAEK;AAEP,MAAM,uBAAuB,uBAAO,IAAI,2BAA2B;AASnE,MAAM,6BAA6B;AAYnC,SAAS,YAA2B;AAClC,SAAO;AACT;AAEA,SAAS,gBAAuC;AAC9C,QAAM,YAAY,UAAU;AAC5B,QAAM,SAAS,UAAU,0BAA0B,KAC9C,UAAU,SAAS,0BAA0B,KAC7C,UAAU,QACV,UAAU,QAAQ;AACvB,MAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,MAA0B;AAC1D,MAAI,KAAK,UAAU,GAAG;AACpB,WAAO,KAAK,CAAC;AAAA,EACf;AACA,SAAO;AACT;AAEO,MAAM,IAAI;AAAA,EACf,KAAK,SAAiB,SAAkB,SAAmC;AACzE,UAAM,SAAS,iBAAiB;AAChC,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,WAAO,SAAS,SAAS,OAAO;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,SAAiB,SAAkB,SAAmC;AACzE,WAAO,KAAK,KAAK,SAAS,SAAS,OAAO;AAAA,EAC5C;AAAA,EAEA,GAAG,SAAiB,UAAuC;AACzD,UAAM,SAAS,cAAc;AAC7B,QAAI,CAAC,UAAU,OAAO,OAAO,OAAO,YAAY;AAC9C,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,WAAO,OAAO,GAAG,SAAS,IAAI,SAAoB;AAChD,eAAS,yBAAyB,IAAI,CAAC;AAAA,IACzC,CAAC;AAAA,EACH;AACF;AAEO,SAAS,SAAc;AAC5B,QAAM,YAAY,UAAU;AAC5B,MAAI,CAAC,UAAU,oBAAoB,GAAG;AACpC,cAAU,oBAAoB,IAAI,IAAI,IAAI;AAAA,EAC5C;AACA,SAAO,UAAU,oBAAoB;AACvC;","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 shared_exports = {};
20
+ __export(shared_exports, {
21
+ clearIpcPushSender: () => clearIpcPushSender,
22
+ clearIpcPushSenderForTests: () => clearIpcPushSenderForTests,
23
+ getIpcPushSender: () => getIpcPushSender,
24
+ setIpcPushSender: () => setIpcPushSender
25
+ });
26
+ module.exports = __toCommonJS(shared_exports);
27
+ const IPC_PUSH_SENDER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.ipc.push-sender");
28
+ function globalState() {
29
+ return globalThis;
30
+ }
31
+ function setIpcPushSender(sender) {
32
+ globalState()[IPC_PUSH_SENDER_SYMBOL] = sender;
33
+ }
34
+ function getIpcPushSender() {
35
+ return globalState()[IPC_PUSH_SENDER_SYMBOL] ?? null;
36
+ }
37
+ function clearIpcPushSender() {
38
+ delete globalState()[IPC_PUSH_SENDER_SYMBOL];
39
+ }
40
+ function clearIpcPushSenderForTests() {
41
+ clearIpcPushSender();
42
+ }
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ clearIpcPushSender,
46
+ clearIpcPushSenderForTests,
47
+ getIpcPushSender,
48
+ setIpcPushSender
49
+ });
50
+ //# sourceMappingURL=shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ipc/shared.ts"],"sourcesContent":["const IPC_PUSH_SENDER_SYMBOL = Symbol.for('@noego/wood.ipc.push-sender');\n\ntype GlobalWithIpcPushSender = typeof globalThis & {\n [IPC_PUSH_SENDER_SYMBOL]?: IpcPushSender;\n};\n\nexport interface IpcPushOptions {\n windowId?: string;\n}\n\nexport type IpcPushSender = (\n channel: string,\n payload: unknown,\n options?: IpcPushOptions,\n) => void;\n\nfunction globalState(): GlobalWithIpcPushSender {\n return globalThis as GlobalWithIpcPushSender;\n}\n\nexport function setIpcPushSender(sender: IpcPushSender): void {\n globalState()[IPC_PUSH_SENDER_SYMBOL] = sender;\n}\n\nexport function getIpcPushSender(): IpcPushSender | null {\n return globalState()[IPC_PUSH_SENDER_SYMBOL] ?? null;\n}\n\nexport function clearIpcPushSender(): void {\n delete globalState()[IPC_PUSH_SENDER_SYMBOL];\n}\n\nexport function clearIpcPushSenderForTests(): void {\n clearIpcPushSender();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,yBAAyB,uBAAO,IAAI,6BAA6B;AAgBvE,SAAS,cAAuC;AAC9C,SAAO;AACT;AAEO,SAAS,iBAAiB,QAA6B;AAC5D,cAAY,EAAE,sBAAsB,IAAI;AAC1C;AAEO,SAAS,mBAAyC;AACvD,SAAO,YAAY,EAAE,sBAAsB,KAAK;AAClD;AAEO,SAAS,qBAA2B;AACzC,SAAO,YAAY,EAAE,sBAAsB;AAC7C;AAEO,SAAS,6BAAmC;AACjD,qBAAmB;AACrB;","names":[]}
@@ -0,0 +1,10 @@
1
+ interface IpcPushOptions {
2
+ windowId?: string;
3
+ }
4
+ type IpcPushSender = (channel: string, payload: unknown, options?: IpcPushOptions) => void;
5
+ declare function setIpcPushSender(sender: IpcPushSender): void;
6
+ declare function getIpcPushSender(): IpcPushSender | null;
7
+ declare function clearIpcPushSender(): void;
8
+ declare function clearIpcPushSenderForTests(): void;
9
+
10
+ export { type IpcPushOptions, type IpcPushSender, clearIpcPushSender, clearIpcPushSenderForTests, getIpcPushSender, setIpcPushSender };
@@ -0,0 +1,10 @@
1
+ interface IpcPushOptions {
2
+ windowId?: string;
3
+ }
4
+ type IpcPushSender = (channel: string, payload: unknown, options?: IpcPushOptions) => void;
5
+ declare function setIpcPushSender(sender: IpcPushSender): void;
6
+ declare function getIpcPushSender(): IpcPushSender | null;
7
+ declare function clearIpcPushSender(): void;
8
+ declare function clearIpcPushSenderForTests(): void;
9
+
10
+ export { type IpcPushOptions, type IpcPushSender, clearIpcPushSender, clearIpcPushSenderForTests, getIpcPushSender, setIpcPushSender };
@@ -0,0 +1,23 @@
1
+ const IPC_PUSH_SENDER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/wood.ipc.push-sender");
2
+ function globalState() {
3
+ return globalThis;
4
+ }
5
+ function setIpcPushSender(sender) {
6
+ globalState()[IPC_PUSH_SENDER_SYMBOL] = sender;
7
+ }
8
+ function getIpcPushSender() {
9
+ return globalState()[IPC_PUSH_SENDER_SYMBOL] ?? null;
10
+ }
11
+ function clearIpcPushSender() {
12
+ delete globalState()[IPC_PUSH_SENDER_SYMBOL];
13
+ }
14
+ function clearIpcPushSenderForTests() {
15
+ clearIpcPushSender();
16
+ }
17
+ export {
18
+ clearIpcPushSender,
19
+ clearIpcPushSenderForTests,
20
+ getIpcPushSender,
21
+ setIpcPushSender
22
+ };
23
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ipc/shared.ts"],"sourcesContent":["const IPC_PUSH_SENDER_SYMBOL = Symbol.for('@noego/wood.ipc.push-sender');\n\ntype GlobalWithIpcPushSender = typeof globalThis & {\n [IPC_PUSH_SENDER_SYMBOL]?: IpcPushSender;\n};\n\nexport interface IpcPushOptions {\n windowId?: string;\n}\n\nexport type IpcPushSender = (\n channel: string,\n payload: unknown,\n options?: IpcPushOptions,\n) => void;\n\nfunction globalState(): GlobalWithIpcPushSender {\n return globalThis as GlobalWithIpcPushSender;\n}\n\nexport function setIpcPushSender(sender: IpcPushSender): void {\n globalState()[IPC_PUSH_SENDER_SYMBOL] = sender;\n}\n\nexport function getIpcPushSender(): IpcPushSender | null {\n return globalState()[IPC_PUSH_SENDER_SYMBOL] ?? null;\n}\n\nexport function clearIpcPushSender(): void {\n delete globalState()[IPC_PUSH_SENDER_SYMBOL];\n}\n\nexport function clearIpcPushSenderForTests(): void {\n clearIpcPushSender();\n}\n"],"mappings":"AAAA,MAAM,yBAAyB,uBAAO,IAAI,6BAA6B;AAgBvE,SAAS,cAAuC;AAC9C,SAAO;AACT;AAEO,SAAS,iBAAiB,QAA6B;AAC5D,cAAY,EAAE,sBAAsB,IAAI;AAC1C;AAEO,SAAS,mBAAyC;AACvD,SAAO,YAAY,EAAE,sBAAsB,KAAK;AAClD;AAEO,SAAS,qBAA2B;AACzC,SAAO,YAAY,EAAE,sBAAsB;AAC7C;AAEO,SAAS,6BAAmC;AACjD,qBAAmB;AACrB;","names":[]}
@@ -0,0 +1,27 @@
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 app_load_exports = {};
20
+ __export(app_load_exports, {
21
+ default: () => load
22
+ });
23
+ module.exports = __toCommonJS(app_load_exports);
24
+ async function load(request) {
25
+ return { layoutData: "app-layout" };
26
+ }
27
+ //# sourceMappingURL=app.load.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/loader/__fixtures__/layouts/app.load.ts"],"sourcesContent":["export default async function load(request: any) {\n return { layoutData: 'app-layout' };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAO,KAA4B,SAAc;AAC/C,SAAO,EAAE,YAAY,aAAa;AACpC;","names":[]}
@@ -0,0 +1,5 @@
1
+ declare function load(request: any): Promise<{
2
+ layoutData: string;
3
+ }>;
4
+
5
+ export { load as default };
@@ -0,0 +1,5 @@
1
+ declare function load(request: any): Promise<{
2
+ layoutData: string;
3
+ }>;
4
+
5
+ export { load as default };
@@ -0,0 +1,7 @@
1
+ async function load(request) {
2
+ return { layoutData: "app-layout" };
3
+ }
4
+ export {
5
+ load as default
6
+ };
7
+ //# sourceMappingURL=app.load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/loader/__fixtures__/layouts/app.load.ts"],"sourcesContent":["export default async function load(request: any) {\n return { layoutData: 'app-layout' };\n}\n"],"mappings":"AAAA,eAAO,KAA4B,SAAc;AAC/C,SAAO,EAAE,YAAY,aAAa;AACpC;","names":[]}
@@ -0,0 +1,27 @@
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 page_load_exports = {};
20
+ __export(page_load_exports, {
21
+ default: () => load
22
+ });
23
+ module.exports = __toCommonJS(page_load_exports);
24
+ async function load(request) {
25
+ return { testData: "hello", url: request.url };
26
+ }
27
+ //# sourceMappingURL=page.load.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/loader/__fixtures__/views/test/page.load.ts"],"sourcesContent":["export default async function load(request: any) {\n return { testData: 'hello', url: request.url };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAO,KAA4B,SAAc;AAC/C,SAAO,EAAE,UAAU,SAAS,KAAK,QAAQ,IAAI;AAC/C;","names":[]}
@@ -0,0 +1,6 @@
1
+ declare function load(request: any): Promise<{
2
+ testData: string;
3
+ url: any;
4
+ }>;
5
+
6
+ export { load as default };
@@ -0,0 +1,6 @@
1
+ declare function load(request: any): Promise<{
2
+ testData: string;
3
+ url: any;
4
+ }>;
5
+
6
+ export { load as default };
@@ -0,0 +1,7 @@
1
+ async function load(request) {
2
+ return { testData: "hello", url: request.url };
3
+ }
4
+ export {
5
+ load as default
6
+ };
7
+ //# sourceMappingURL=page.load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/loader/__fixtures__/views/test/page.load.ts"],"sourcesContent":["export default async function load(request: any) {\n return { testData: 'hello', url: request.url };\n}\n"],"mappings":"AAAA,eAAO,KAA4B,SAAc;AAC/C,SAAO,EAAE,UAAU,SAAS,KAAK,QAAQ,IAAI;AAC/C;","names":[]}
@@ -0,0 +1,29 @@
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 loader_exports = {};
20
+ __export(loader_exports, {
21
+ LoaderRunner: () => import_loader_runner.LoaderRunner
22
+ });
23
+ module.exports = __toCommonJS(loader_exports);
24
+ var import_loader_runner = require("./loader_runner.cjs");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ LoaderRunner
28
+ });
29
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loader/index.ts"],"sourcesContent":["export { LoaderRunner } from './loader_runner.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA6B;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { LoaderRunner } from './loader_runner.cjs';
2
+ import '../types/context.cjs';
3
+ import '../types/views.cjs';
@@ -0,0 +1,3 @@
1
+ export { LoaderRunner } from './loader_runner.js';
2
+ import '../types/context.js';
3
+ import '../types/views.js';
@@ -0,0 +1,5 @@
1
+ import { LoaderRunner } from "./loader_runner.js";
2
+ export {
3
+ LoaderRunner
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loader/index.ts"],"sourcesContent":["export { LoaderRunner } from './loader_runner.js';\n"],"mappings":"AAAA,SAAS,oBAAoB;","names":[]}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var loader_runner_exports = {};
30
+ __export(loader_runner_exports, {
31
+ LoaderRunner: () => LoaderRunner
32
+ });
33
+ module.exports = __toCommonJS(loader_runner_exports);
34
+ var import_path = __toESM(require("path"), 1);
35
+ var import_fs = require("fs");
36
+ var import_logger = require("@noego/logger");
37
+ const logger = (0, import_logger.getLogger)("wood:loader");
38
+ class LoaderRunner {
39
+ constructor(componentDir) {
40
+ this.cache = /* @__PURE__ */ new Map();
41
+ this.componentDir = componentDir;
42
+ }
43
+ /**
44
+ * Discover the loader file for a view component.
45
+ * Convention: for `pages/chat/main.svelte`, look for `pages/chat/main.load.ts`
46
+ */
47
+ getLoaderPath(viewPath) {
48
+ const basePath = viewPath.replace(/\.svelte$/, ".load.ts");
49
+ return import_path.default.resolve(this.componentDir, basePath);
50
+ }
51
+ /**
52
+ * Load a loader function with mtime-based cache invalidation.
53
+ * Returns null when no loader file exists (not an error).
54
+ */
55
+ async loadLoader(loaderPath) {
56
+ try {
57
+ const stat = (0, import_fs.statSync)(loaderPath);
58
+ const mtime = stat.mtimeMs;
59
+ const cached = this.cache.get(loaderPath);
60
+ if (cached && cached.mtime === mtime) {
61
+ return cached.fn;
62
+ }
63
+ const mod = await import(`${loaderPath}?t=${Date.now()}`);
64
+ const fn = mod.default;
65
+ if (typeof fn !== "function") {
66
+ logger.warn(`Loader at "${loaderPath}" does not export a default function`);
67
+ return null;
68
+ }
69
+ logger.debug(`Loaded loader: ${loaderPath}`);
70
+ this.cache.set(loaderPath, { fn, mtime, filePath: loaderPath });
71
+ return fn;
72
+ } catch {
73
+ return null;
74
+ }
75
+ }
76
+ /**
77
+ * Execute all loaders for a matched route.
78
+ * Layout loaders run in parallel, view loader runs after.
79
+ */
80
+ async executeLoaders(viewDef, requestData) {
81
+ const layoutLoaderPromises = viewDef.layouts.map(async (layoutPath) => {
82
+ const loaderPath = this.getLoaderPath(layoutPath);
83
+ const loader = await this.loadLoader(loaderPath);
84
+ if (loader) {
85
+ return loader(requestData);
86
+ }
87
+ return void 0;
88
+ });
89
+ const layoutData = await Promise.all(layoutLoaderPromises);
90
+ const viewLoaderPath = this.getLoaderPath(viewDef.viewPath);
91
+ const viewLoader = await this.loadLoader(viewLoaderPath);
92
+ const viewData = viewLoader ? await viewLoader(requestData) : {};
93
+ logger.debug(`Executed loaders for view "${viewDef.pageName}": ${viewDef.layouts.length} layout(s)`);
94
+ return {
95
+ layoutData: layoutData.filter((d) => d !== void 0),
96
+ viewData
97
+ };
98
+ }
99
+ /** Clear the loader cache. */
100
+ clearCache() {
101
+ this.cache.clear();
102
+ logger.debug("Loader cache cleared");
103
+ }
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ LoaderRunner
108
+ });
109
+ //# sourceMappingURL=loader_runner.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loader/loader_runner.ts"],"sourcesContent":["import path from 'path';\nimport { statSync } from 'fs';\nimport { getLogger } from '@noego/logger';\nimport type { RequestData, LoaderResult } from '../types/context.cjs';\nimport type { ViewDef } from '../types/views.cjs';\n\nconst logger = getLogger('wood:loader');\n\ninterface LoaderEntry {\n fn: (request: RequestData) => Promise<unknown>;\n mtime: number;\n filePath: string;\n}\n\nexport class LoaderRunner {\n private cache = new Map<string, LoaderEntry>();\n private componentDir: string;\n\n constructor(componentDir: string) {\n this.componentDir = componentDir;\n }\n\n /**\n * Discover the loader file for a view component.\n * Convention: for `pages/chat/main.svelte`, look for `pages/chat/main.load.ts`\n */\n private getLoaderPath(viewPath: string): string {\n const basePath = viewPath.replace(/\\.svelte$/, '.load.ts');\n return path.resolve(this.componentDir, basePath);\n }\n\n /**\n * Load a loader function with mtime-based cache invalidation.\n * Returns null when no loader file exists (not an error).\n */\n private async loadLoader(loaderPath: string): Promise<((request: RequestData) => Promise<unknown>) | null> {\n try {\n const stat = statSync(loaderPath);\n const mtime = stat.mtimeMs;\n\n const cached = this.cache.get(loaderPath);\n if (cached && cached.mtime === mtime) {\n return cached.fn;\n }\n\n // Dynamic import with cache-bust query for dev reloading\n const mod = await import(`${loaderPath}?t=${Date.now()}`);\n const fn = mod.default;\n\n if (typeof fn !== 'function') {\n logger.warn(`Loader at \"${loaderPath}\" does not export a default function`);\n return null;\n }\n\n logger.debug(`Loaded loader: ${loaderPath}`);\n this.cache.set(loaderPath, { fn, mtime, filePath: loaderPath });\n return fn;\n } catch {\n return null;\n }\n }\n\n /**\n * Execute all loaders for a matched route.\n * Layout loaders run in parallel, view loader runs after.\n */\n async executeLoaders(\n viewDef: ViewDef,\n requestData: RequestData,\n ): Promise<LoaderResult> {\n // Load layout loaders in parallel\n const layoutLoaderPromises = viewDef.layouts.map(async (layoutPath) => {\n const loaderPath = this.getLoaderPath(layoutPath);\n const loader = await this.loadLoader(loaderPath);\n if (loader) {\n return loader(requestData);\n }\n return undefined;\n });\n\n const layoutData = await Promise.all(layoutLoaderPromises);\n\n // Load view loader\n const viewLoaderPath = this.getLoaderPath(viewDef.viewPath);\n const viewLoader = await this.loadLoader(viewLoaderPath);\n const viewData = viewLoader ? await viewLoader(requestData) : {};\n\n logger.debug(`Executed loaders for view \"${viewDef.pageName}\": ${viewDef.layouts.length} layout(s)`);\n\n return {\n layoutData: layoutData.filter((d) => d !== undefined),\n viewData,\n };\n }\n\n /** Clear the loader cache. */\n clearCache(): void {\n this.cache.clear();\n logger.debug('Loader cache cleared');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,gBAAyB;AACzB,oBAA0B;AAI1B,MAAM,aAAS,yBAAU,aAAa;AAQ/B,MAAM,aAAa;AAAA,EAIxB,YAAY,cAAsB;AAHlC,SAAQ,QAAQ,oBAAI,IAAyB;AAI3C,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAc,UAA0B;AAC9C,UAAM,WAAW,SAAS,QAAQ,aAAa,UAAU;AACzD,WAAO,YAAAA,QAAK,QAAQ,KAAK,cAAc,QAAQ;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,WAAW,YAAkF;AACzG,QAAI;AACF,YAAM,WAAO,oBAAS,UAAU;AAChC,YAAM,QAAQ,KAAK;AAEnB,YAAM,SAAS,KAAK,MAAM,IAAI,UAAU;AACxC,UAAI,UAAU,OAAO,UAAU,OAAO;AACpC,eAAO,OAAO;AAAA,MAChB;AAGA,YAAM,MAAM,MAAM,OAAO,GAAG,UAAU,MAAM,KAAK,IAAI,CAAC;AACtD,YAAM,KAAK,IAAI;AAEf,UAAI,OAAO,OAAO,YAAY;AAC5B,eAAO,KAAK,cAAc,UAAU,sCAAsC;AAC1E,eAAO;AAAA,MACT;AAEA,aAAO,MAAM,kBAAkB,UAAU,EAAE;AAC3C,WAAK,MAAM,IAAI,YAAY,EAAE,IAAI,OAAO,UAAU,WAAW,CAAC;AAC9D,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eACJ,SACA,aACuB;AAEvB,UAAM,uBAAuB,QAAQ,QAAQ,IAAI,OAAO,eAAe;AACrE,YAAM,aAAa,KAAK,cAAc,UAAU;AAChD,YAAM,SAAS,MAAM,KAAK,WAAW,UAAU;AAC/C,UAAI,QAAQ;AACV,eAAO,OAAO,WAAW;AAAA,MAC3B;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,aAAa,MAAM,QAAQ,IAAI,oBAAoB;AAGzD,UAAM,iBAAiB,KAAK,cAAc,QAAQ,QAAQ;AAC1D,UAAM,aAAa,MAAM,KAAK,WAAW,cAAc;AACvD,UAAM,WAAW,aAAa,MAAM,WAAW,WAAW,IAAI,CAAC;AAE/D,WAAO,MAAM,8BAA8B,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,MAAM,YAAY;AAEnG,WAAO;AAAA,MACL,YAAY,WAAW,OAAO,CAAC,MAAM,MAAM,MAAS;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,aAAmB;AACjB,SAAK,MAAM,MAAM;AACjB,WAAO,MAAM,sBAAsB;AAAA,EACrC;AACF;","names":["path"]}
@@ -0,0 +1,27 @@
1
+ import { RequestData, LoaderResult } from '../types/context.cjs';
2
+ import { ViewDef } from '../types/views.cjs';
3
+
4
+ declare class LoaderRunner {
5
+ private cache;
6
+ private componentDir;
7
+ constructor(componentDir: string);
8
+ /**
9
+ * Discover the loader file for a view component.
10
+ * Convention: for `pages/chat/main.svelte`, look for `pages/chat/main.load.ts`
11
+ */
12
+ private getLoaderPath;
13
+ /**
14
+ * Load a loader function with mtime-based cache invalidation.
15
+ * Returns null when no loader file exists (not an error).
16
+ */
17
+ private loadLoader;
18
+ /**
19
+ * Execute all loaders for a matched route.
20
+ * Layout loaders run in parallel, view loader runs after.
21
+ */
22
+ executeLoaders(viewDef: ViewDef, requestData: RequestData): Promise<LoaderResult>;
23
+ /** Clear the loader cache. */
24
+ clearCache(): void;
25
+ }
26
+
27
+ export { LoaderRunner };
@@ -0,0 +1,27 @@
1
+ import { RequestData, LoaderResult } from '../types/context.js';
2
+ import { ViewDef } from '../types/views.js';
3
+
4
+ declare class LoaderRunner {
5
+ private cache;
6
+ private componentDir;
7
+ constructor(componentDir: string);
8
+ /**
9
+ * Discover the loader file for a view component.
10
+ * Convention: for `pages/chat/main.svelte`, look for `pages/chat/main.load.ts`
11
+ */
12
+ private getLoaderPath;
13
+ /**
14
+ * Load a loader function with mtime-based cache invalidation.
15
+ * Returns null when no loader file exists (not an error).
16
+ */
17
+ private loadLoader;
18
+ /**
19
+ * Execute all loaders for a matched route.
20
+ * Layout loaders run in parallel, view loader runs after.
21
+ */
22
+ executeLoaders(viewDef: ViewDef, requestData: RequestData): Promise<LoaderResult>;
23
+ /** Clear the loader cache. */
24
+ clearCache(): void;
25
+ }
26
+
27
+ export { LoaderRunner };
@@ -0,0 +1,75 @@
1
+ import path from "path";
2
+ import { statSync } from "fs";
3
+ import { getLogger } from "@noego/logger";
4
+ const logger = getLogger("wood:loader");
5
+ class LoaderRunner {
6
+ constructor(componentDir) {
7
+ this.cache = /* @__PURE__ */ new Map();
8
+ this.componentDir = componentDir;
9
+ }
10
+ /**
11
+ * Discover the loader file for a view component.
12
+ * Convention: for `pages/chat/main.svelte`, look for `pages/chat/main.load.ts`
13
+ */
14
+ getLoaderPath(viewPath) {
15
+ const basePath = viewPath.replace(/\.svelte$/, ".load.ts");
16
+ return path.resolve(this.componentDir, basePath);
17
+ }
18
+ /**
19
+ * Load a loader function with mtime-based cache invalidation.
20
+ * Returns null when no loader file exists (not an error).
21
+ */
22
+ async loadLoader(loaderPath) {
23
+ try {
24
+ const stat = statSync(loaderPath);
25
+ const mtime = stat.mtimeMs;
26
+ const cached = this.cache.get(loaderPath);
27
+ if (cached && cached.mtime === mtime) {
28
+ return cached.fn;
29
+ }
30
+ const mod = await import(`${loaderPath}?t=${Date.now()}`);
31
+ const fn = mod.default;
32
+ if (typeof fn !== "function") {
33
+ logger.warn(`Loader at "${loaderPath}" does not export a default function`);
34
+ return null;
35
+ }
36
+ logger.debug(`Loaded loader: ${loaderPath}`);
37
+ this.cache.set(loaderPath, { fn, mtime, filePath: loaderPath });
38
+ return fn;
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * Execute all loaders for a matched route.
45
+ * Layout loaders run in parallel, view loader runs after.
46
+ */
47
+ async executeLoaders(viewDef, requestData) {
48
+ const layoutLoaderPromises = viewDef.layouts.map(async (layoutPath) => {
49
+ const loaderPath = this.getLoaderPath(layoutPath);
50
+ const loader = await this.loadLoader(loaderPath);
51
+ if (loader) {
52
+ return loader(requestData);
53
+ }
54
+ return void 0;
55
+ });
56
+ const layoutData = await Promise.all(layoutLoaderPromises);
57
+ const viewLoaderPath = this.getLoaderPath(viewDef.viewPath);
58
+ const viewLoader = await this.loadLoader(viewLoaderPath);
59
+ const viewData = viewLoader ? await viewLoader(requestData) : {};
60
+ logger.debug(`Executed loaders for view "${viewDef.pageName}": ${viewDef.layouts.length} layout(s)`);
61
+ return {
62
+ layoutData: layoutData.filter((d) => d !== void 0),
63
+ viewData
64
+ };
65
+ }
66
+ /** Clear the loader cache. */
67
+ clearCache() {
68
+ this.cache.clear();
69
+ logger.debug("Loader cache cleared");
70
+ }
71
+ }
72
+ export {
73
+ LoaderRunner
74
+ };
75
+ //# sourceMappingURL=loader_runner.js.map