@madojs/mado 0.12.0 → 0.13.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 (154) hide show
  1. package/AGENTS.md +15 -8
  2. package/CHANGELOG.md +66 -0
  3. package/README.md +25 -3
  4. package/dist/src/component.d.ts +3 -1
  5. package/dist/src/component.d.ts.map +1 -0
  6. package/dist/src/component.js +65 -30
  7. package/dist/src/component.js.map +1 -1
  8. package/dist/src/context.d.ts +13 -32
  9. package/dist/src/context.d.ts.map +1 -0
  10. package/dist/src/context.js +73 -48
  11. package/dist/src/context.js.map +1 -1
  12. package/dist/src/css.d.ts +1 -0
  13. package/dist/src/css.d.ts.map +1 -0
  14. package/dist/src/css.js.map +1 -1
  15. package/dist/src/devtools-hook.d.ts +14 -0
  16. package/dist/src/devtools-hook.d.ts.map +1 -0
  17. package/dist/src/devtools-hook.js +27 -0
  18. package/dist/src/devtools-hook.js.map +1 -0
  19. package/dist/src/devtools.d.ts +24 -22
  20. package/dist/src/devtools.d.ts.map +1 -0
  21. package/dist/src/devtools.js +230 -58
  22. package/dist/src/devtools.js.map +1 -1
  23. package/dist/src/diagnostics.d.ts +12 -0
  24. package/dist/src/diagnostics.d.ts.map +1 -0
  25. package/dist/src/diagnostics.js +68 -8
  26. package/dist/src/diagnostics.js.map +1 -1
  27. package/dist/src/each.d.ts +1 -5
  28. package/dist/src/each.d.ts.map +1 -0
  29. package/dist/src/each.js +0 -8
  30. package/dist/src/each.js.map +1 -1
  31. package/dist/src/forms.d.ts +27 -96
  32. package/dist/src/forms.d.ts.map +1 -0
  33. package/dist/src/forms.js +184 -394
  34. package/dist/src/forms.js.map +1 -1
  35. package/dist/src/head.d.ts +1 -0
  36. package/dist/src/head.d.ts.map +1 -0
  37. package/dist/src/head.js +2 -1
  38. package/dist/src/head.js.map +1 -1
  39. package/dist/src/html/bindings.d.ts +1 -0
  40. package/dist/src/html/bindings.d.ts.map +1 -0
  41. package/dist/src/html/bindings.js.map +1 -1
  42. package/dist/src/html/parser.d.ts +3 -4
  43. package/dist/src/html/parser.d.ts.map +1 -0
  44. package/dist/src/html/parser.js +63 -14
  45. package/dist/src/html/parser.js.map +1 -1
  46. package/dist/src/html/template-types.d.ts +1 -0
  47. package/dist/src/html/template-types.d.ts.map +1 -0
  48. package/dist/src/html/template-types.js.map +1 -1
  49. package/dist/src/html/template.d.ts +5 -1
  50. package/dist/src/html/template.d.ts.map +1 -0
  51. package/dist/src/html/template.js +78 -3
  52. package/dist/src/html/template.js.map +1 -1
  53. package/dist/src/index.d.ts +7 -8
  54. package/dist/src/index.d.ts.map +1 -0
  55. package/dist/src/index.js +5 -7
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/json.d.ts +3 -0
  58. package/dist/src/json.d.ts.map +1 -0
  59. package/dist/src/json.js +14 -0
  60. package/dist/src/json.js.map +1 -0
  61. package/dist/src/lifecycle.d.ts +1 -0
  62. package/dist/src/lifecycle.d.ts.map +1 -0
  63. package/dist/src/lifecycle.js +3 -2
  64. package/dist/src/lifecycle.js.map +1 -1
  65. package/dist/src/page.d.ts +1 -0
  66. package/dist/src/page.d.ts.map +1 -0
  67. package/dist/src/page.js.map +1 -1
  68. package/dist/src/persisted.d.ts +6 -1
  69. package/dist/src/persisted.d.ts.map +1 -0
  70. package/dist/src/persisted.js +17 -11
  71. package/dist/src/persisted.js.map +1 -1
  72. package/dist/src/resource.d.ts +2 -1
  73. package/dist/src/resource.d.ts.map +1 -0
  74. package/dist/src/resource.js +126 -49
  75. package/dist/src/resource.js.map +1 -1
  76. package/dist/src/router/base.d.ts +1 -0
  77. package/dist/src/router/base.d.ts.map +1 -0
  78. package/dist/src/router/base.js.map +1 -1
  79. package/dist/src/router/manifest.d.ts +1 -0
  80. package/dist/src/router/manifest.d.ts.map +1 -0
  81. package/dist/src/router/manifest.js +89 -148
  82. package/dist/src/router/manifest.js.map +1 -1
  83. package/dist/src/router/match.d.ts +1 -0
  84. package/dist/src/router/match.d.ts.map +1 -0
  85. package/dist/src/router/match.js +19 -5
  86. package/dist/src/router/match.js.map +1 -1
  87. package/dist/src/router/navigation.d.ts +1 -0
  88. package/dist/src/router/navigation.d.ts.map +1 -0
  89. package/dist/src/router/navigation.js.map +1 -1
  90. package/dist/src/signal.d.ts +1 -0
  91. package/dist/src/signal.d.ts.map +1 -0
  92. package/dist/src/signal.js +46 -17
  93. package/dist/src/signal.js.map +1 -1
  94. package/dist/src/static-runtime.d.ts +1 -0
  95. package/dist/src/static-runtime.d.ts.map +1 -0
  96. package/dist/src/static-runtime.js.map +1 -1
  97. package/dist/src/vite/index.d.ts +1 -0
  98. package/dist/src/vite/index.d.ts.map +1 -0
  99. package/dist/src/vite/index.js +4 -3
  100. package/dist/src/vite/index.js.map +1 -1
  101. package/docs/architecture/v1-roadmap.md +19 -0
  102. package/docs/en/10-pages-and-components.md +9 -1
  103. package/docs/en/13-data.md +8 -6
  104. package/docs/en/14-forms.md +66 -219
  105. package/docs/en/15-static-snapshots.md +4 -4
  106. package/docs/en/16-app-architecture.md +3 -2
  107. package/docs/en/20-deployment.md +21 -8
  108. package/docs/en/21-error-handling.md +9 -6
  109. package/docs/en/24-devtools-and-diagnostics.md +45 -0
  110. package/docs/en/30-api-freeze-map.md +8 -9
  111. package/docs/en/32-v1-stability.md +2 -2
  112. package/docs/en/33-migration-0.12-0.13.md +56 -0
  113. package/docs/en/40-llm-guide.md +7 -9
  114. package/docs/en/41-for-backenders.md +13 -9
  115. package/docs/en/42-why-mado.md +2 -2
  116. package/docs/en/README.md +2 -0
  117. package/docs/recipes/nginx/nginx.conf +2 -2
  118. package/llms.txt +25 -7
  119. package/package.json +37 -16
  120. package/scripts/clean.mjs +8 -0
  121. package/scripts/cli/generate.mjs +11 -14
  122. package/scripts/cli/help.mjs +2 -0
  123. package/scripts/cli/index.mjs +14 -6
  124. package/scripts/cli/init.mjs +13 -18
  125. package/scripts/cli/release.mjs +22 -19
  126. package/scripts/cli/run.mjs +5 -3
  127. package/scripts/logger.mjs +117 -0
  128. package/scripts/output-guard.mjs +128 -0
  129. package/scripts/preview.mjs +11 -19
  130. package/scripts/static/browser.mjs +58 -8
  131. package/scripts/static/discover.mjs +4 -1
  132. package/scripts/static.mjs +21 -7
  133. package/starters/default/package.json +4 -4
  134. package/starters/default/tsconfig.node.json +13 -0
  135. package/starters/default/vite.config.ts +0 -3
  136. package/starters/modular/README.md +4 -4
  137. package/starters/modular/package.json +4 -4
  138. package/starters/modular/src/layouts/app-shell.layout.ts +1 -2
  139. package/starters/modular/src/modules/auth/login.page.ts +5 -12
  140. package/starters/modular/src/modules/billing/pages/invoice-detail.page.ts +3 -4
  141. package/starters/modular/src/modules/billing/pages/invoices-list.page.ts +1 -1
  142. package/starters/modular/src/shared/styles/reset.css +21 -1
  143. package/starters/modular/tsconfig.json +10 -1
  144. package/starters/modular/tsconfig.node.json +13 -0
  145. package/starters/modular/vite.config.ts +6 -5
  146. package/dist/src/lazy.d.ts +0 -38
  147. package/dist/src/lazy.js +0 -73
  148. package/dist/src/lazy.js.map +0 -1
  149. package/scripts/bake.mjs +0 -5
  150. package/scripts/docs-lint.mjs +0 -170
  151. package/scripts/package-smoke.mjs +0 -135
  152. package/scripts/release-notes.mjs +0 -66
  153. package/scripts/size-budget.mjs +0 -95
  154. package/starters/modular/src/shared/ui/x-button.component.ts +0 -49
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/router/navigation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAe,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,UAAU,GAIX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAyCzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,MAAM,CACpB,MAAc,EACd,UAAyB,EAAE;IAE3B,MAAM,kBAAkB,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;IAC7D,MAAM,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC;IACjE,MAAM,kBAAkB,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GACZ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,eAAe,EAAE,CAAC;IAE/D,wEAAwE;IACxE,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyC,CAAC;IACzE,IAAI,gBAAgB,GAAG,WAAW,EAAE,CAAC;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,IAAI,GAAG,OAA8D,CAAC;IAC5E,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACzD,IAAI,oBAAoB,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjB,IAAI,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,oBAAoB;YAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACxE,gBAAgB,GAAG,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,IAAI,oBAAoB;YAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC3E,IAAI,kBAAkB;YAAE,kBAAkB,EAAE,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnE,gDAAgD;IAChD,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;QAC3B,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,IAAK,CAAgB,CAAC,gBAAgB;YAAE,OAAO;QAC/C,IAAK,CAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,EAAE,GAAG,CAAe,CAAC;QAC3B,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO;QACjE,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO;QACzC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,OAAO;QACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAO;QAC3C,mEAAmE;QACnE,sEAAsE;QACtE,0CAA0C;QAC1C,MAAM,CAAC,GAAG,OAAO,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO;QACT,CAAC;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpE,sEAAsE;IACtE,IAAI,aAAa,GAAyC,IAAI,CAAC;IAC/D,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;QAC/B,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO;QAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,IAAI,aAAa;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAC3C,iEAAiE;gBACjE,yDAAyD;gBACzD,4DAA4D;gBAC5D,MAAM,CAAC,GAAG,OAAO,CAAC;gBAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,OAAO;gBACT,CAAC;gBACD,4DAA4D;gBAC5D,iDAAiD;gBACjD,OAAO,CAAC,QAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,aAAa;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAc;QACrB,IAAI,EAAE,GAAG,EAAE;YACT,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI;QACJ,QAAQ,CAAC,EAAE,EAAE,IAAI;YACf,mEAAmE;YACnE,2DAA2D;YAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,oBAAoB;oBAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;gBACxE,IAAI,IAAI,EAAE,OAAO;oBAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;oBAClD,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACtC,gBAAgB,GAAG,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,uEAAuE;gBACvE,qEAAqE;gBACrE,yDAAyD;gBACzD,IAAI,QAAQ,CAAC,IAAI;oBAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC1C,IAAI,oBAAoB;oBAAE,WAAW,EAAE,CAAC;gBAC7C,IAAI,kBAAkB;oBAAE,kBAAkB,EAAE,CAAC;YAC/C,CAAC,CAAC;YAEF,wDAAwD;YACxD,+DAA+D;YAC/D,4CAA4C;YAC5C,MAAM,GAAG,GAAG,QAEX,CAAC;YACF,IAAI,kBAAkB,IAAI,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;gBACxE,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,CAAC,EAAE,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAQ,EAAE,QAAgB;IAC5C,MAAM,WAAW,GAAG,CAAC,IAAa,EAA4B,EAAE;QAC9D,IAAI,CAAC,CAAC,IAAI,YAAY,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,KAA0B,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iDAAiD;AACjD,SAAS,eAAe;IACtB,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,aAAa,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,mCAAmC;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,IAA4B;IAC/D,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC5E,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,IAAI,EAAE,OAAO;QAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;QAClD,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACtC,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,IAAI;QAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QAC1C,WAAW,EAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,EAAU;IAC9B,IAAI,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,GAAG,CAAC;IACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CACjB,SAAqD,EACrD,GAAW;IAEX,MAAM,WAAW,GAAG,MAKnB,CAAC;IACF,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;QACjB,IAAI,EAAE,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC;QACzD,GAAG,EAAE,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,IAAI,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,SAAqD,EACrD,GAAW;IAEX,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,MAAM,EAAE;QAAE,OAAO;IACrB,yEAAyE;IACzE,8DAA8D;IAC9D,cAAc,CAAC,GAAG,EAAE;QAClB,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,IAAI,CAAC;QACH,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,QAAQ,CAAC,OAAwB;IACxC,MAAM,WAAW,GAAG,MAEnB,CAAC;IACF,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAO;IACvD,IAAI,CAAC;QACH,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,UAAU;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,cAAc,CAAC,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,4CAA4C,CAC7C,CAAC;QACF,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;YAAE,OAAO;QAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,oEAAoE;AACpE,mEAAmE;AAEnE,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C,SAAS,cAAc;IACrB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,QAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAqB,EAAE,IAAa;IACrD,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAC3E,KAAK,EACL,EAAE,CACH,CAAC;IACF,IAAI,IAAI;QAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;QACtC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,YAAY,GAAG,EAAE;IACxD,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;IAC1C,CAAC,CAAe,CAAC;IAEjB,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YACnD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/router/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Browser integration: History API, click interception, hover-prefetch,\n * View Transitions, queryParam.\n *\n * Everything that touches `window` / `document` / `history` lives here,\n * so match.ts remains clean and testable without jsdom.\n */\n\nimport { signal, type Signal } from \"./../signal.js\";\nimport { html } from \"../html/template.js\";\nimport {\n compile,\n matchRoute,\n type CompiledRoute,\n type RouteParams,\n type Routes,\n} from \"./match.js\";\nimport { appBase, stripBase, withBase } from \"./base.js\";\nimport type { TemplateResult } from \"../html/template-types.js\";\n\n// ---------- router() ----------\n\nexport interface RouterApi {\n /** Signal function that returns the current TemplateResult. */\n view: () => TemplateResult;\n /** Current path as a signal. */\n path: () => string;\n /** Programmatic navigation. */\n navigate(to: string, opts?: { replace?: boolean }): void;\n /** Remove all listeners and release resources. */\n dispose(): void;\n}\n\nexport interface RouterOptions {\n /**\n * Use the View Transitions API on navigation (smooth crossfade).\n * Default `true` — if the browser doesn't support it, safely\n * falls back to a plain set().\n */\n viewTransitions?: boolean;\n /**\n * Hook for hover prefetch. Receives the pathname of the candidate\n * (without origin, query/hash stripped). Used by routes()\n * to register loaders; raw router() doesn't normally need this.\n */\n prefetch?: (pathname: string) => void;\n /**\n * Restore saved scroll on back/forward and scroll new navigations to top.\n * Default true.\n */\n scrollRestoration?: boolean;\n /**\n * Move focus to the main content landmark after navigation.\n * Default true.\n */\n focusManagement?: boolean;\n}\n\n/**\n * Minimal History API router.\n *\n * const route = router({\n * '/': () => html`<x-home/>`,\n * '/users/:id': ({ id }) => html`<x-user .id=${id}/>`,\n * '*': () => html`<x-404/>`,\n * });\n *\n * html`<main>${route.view}</main>`\n *\n * Lifecycle: subscribes to popstate + intercepts clicks\n * on `<a data-link>` + hover-prefetch (if hook given). All this\n * is removed in `dispose()` — mandatory to call in tests and\n * dev-overlay, otherwise listener leak.\n */\nexport function router(\n routes: Routes,\n options: RouterOptions = {},\n): RouterApi {\n const useViewTransitions = options.viewTransitions !== false;\n const useScrollRestoration = options.scrollRestoration !== false;\n const useFocusManagement = options.focusManagement !== false;\n const compiled = Object.entries(routes).map(([p, h]) => compile(p, h));\n const fallback =\n compiled.find((r) => r.pattern === \"*\") ?? defaultFallback();\n\n // Route pathname = browser pathname with the active Vite base stripped.\n // The route matcher, route signal and any `path()` consumer always see\n // base-free paths; `withBase()` re-adds it when we touch history.\n const path = signal(stripBase(location.pathname));\n const cleanups: Array<() => void> = [];\n const scrollPositions = new Map<string, { top: number; left: number }>();\n let currentScrollKey = locationKey();\n let disposed = false;\n\n const hist = history as History & { scrollRestoration?: \"auto\" | \"manual\" };\n const previousScrollRestoration = hist.scrollRestoration;\n if (useScrollRestoration && \"scrollRestoration\" in hist) {\n try {\n hist.scrollRestoration = \"manual\";\n cleanups.push(() => {\n hist.scrollRestoration = previousScrollRestoration;\n });\n } catch {\n /* noop */\n }\n }\n\n // -- popstate\n const onPop = () => {\n if (disposed) return;\n if (useScrollRestoration) saveScroll(scrollPositions, currentScrollKey);\n currentScrollKey = locationKey();\n path.set(stripBase(location.pathname));\n if (useScrollRestoration) restoreScroll(scrollPositions, currentScrollKey);\n if (useFocusManagement) scheduleFocusReset();\n };\n window.addEventListener(\"popstate\", onPop);\n cleanups.push(() => window.removeEventListener(\"popstate\", onPop));\n\n // -- global click interception on <a data-link>\n const onClick = (e: Event) => {\n if (disposed) return;\n const a = findAnchor(e, \"a[data-link]\");\n if (!a) return;\n if ((e as MouseEvent).defaultPrevented) return;\n if ((e as MouseEvent).button !== 0) return;\n const me = e as MouseEvent;\n if (me.metaKey || me.ctrlKey || me.shiftKey || me.altKey) return;\n // Respect intentional non-SPA links: opening in a new tab/window or a\n // download must keep native behaviour. (FABLE_REPORT.md finding #9)\n const target = a.getAttribute(\"target\");\n if (target && target !== \"_self\") return;\n if (a.hasAttribute(\"download\")) return;\n const url = new URL(a.href, location.href);\n if (url.origin !== location.origin) return;\n // Foreign-base links escape SPA navigation entirely so the browser\n // performs a real document load (avoids matching \"/other/...\" against\n // routes registered under base \"/mado/\").\n const b = appBase;\n if (b !== \"/\" && !(url.pathname === b.slice(0, -1) || url.pathname.startsWith(b))) {\n return;\n }\n e.preventDefault();\n const routePath = stripBase(url.pathname);\n api.navigate(routePath + url.search + url.hash);\n };\n document.addEventListener(\"click\", onClick);\n cleanups.push(() => document.removeEventListener(\"click\", onClick));\n\n // -- hover-prefetch (>=50ms on <a data-link:not([data-no-prefetch])>)\n let prefetchTimer: ReturnType<typeof setTimeout> | null = null;\n const onMouseOver = (e: Event) => {\n if (disposed) return;\n if (!options.prefetch) return;\n const a = findAnchor(e, \"a[data-link]:not([data-no-prefetch])\");\n if (!a) return;\n if (prefetchTimer) clearTimeout(prefetchTimer);\n prefetchTimer = setTimeout(() => {\n try {\n const url = new URL(a.href, location.href);\n if (url.origin !== location.origin) return;\n // Foreign-base links escape SPA prefetch entirely — the manifest\n // only knows base-free route paths and would never match\n // \"/mado/docs\". Mirrors the click-interception check above.\n const b = appBase;\n if (b !== \"/\" && !(url.pathname === b.slice(0, -1) || url.pathname.startsWith(b))) {\n return;\n }\n // The prefetch hook is fed manifest-shaped paths (no base),\n // matching the route signal and loader registry.\n options.prefetch!(stripBase(url.pathname));\n } catch {\n /* noop */\n }\n }, 50);\n };\n const onMouseOut = () => {\n if (prefetchTimer) {\n clearTimeout(prefetchTimer);\n prefetchTimer = null;\n }\n };\n document.addEventListener(\"mouseover\", onMouseOver);\n document.addEventListener(\"mouseout\", onMouseOut);\n cleanups.push(() => {\n document.removeEventListener(\"mouseover\", onMouseOver);\n document.removeEventListener(\"mouseout\", onMouseOut);\n if (prefetchTimer) clearTimeout(prefetchTimer);\n });\n\n const api: RouterApi = {\n view: () => {\n const p = path();\n const m = matchRoute(p, compiled);\n if (m) return m.route.handler(m.params);\n return fallback.handler({});\n },\n path,\n navigate(to, opts) {\n // `to` is a ROUTE path (no base). Re-add the active base before we\n // touch history so the browser URL has the correct prefix.\n const url = toBrowserUrl(to);\n const apply = () => {\n if (useScrollRestoration) saveScroll(scrollPositions, currentScrollKey);\n if (opts?.replace) history.replaceState(null, \"\", url);\n else history.pushState(null, \"\", url);\n currentScrollKey = locationKey();\n path.set(stripBase(location.pathname));\n // An in-page #hash must scroll to its target even when the pathname is\n // unchanged (signal dedup would otherwise swallow the navigation and\n // leave anchor links dead). (FABLE_REPORT.md finding #9)\n if (location.hash) scrollToHash(location.hash);\n else if (useScrollRestoration) scrollToTop();\n if (useFocusManagement) scheduleFocusReset();\n };\n\n // View Transitions API: smooth crossfade between pages,\n // if the browser supports it. Psychologically removes flashing\n // even if the new page renders in 50-100ms.\n const doc = document as Document & {\n startViewTransition?: (cb: () => void) => unknown;\n };\n if (useViewTransitions && typeof doc.startViewTransition === \"function\") {\n doc.startViewTransition(apply);\n } else {\n apply();\n }\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const c of cleanups.splice(0)) {\n try {\n c();\n } catch {\n /* noop */\n }\n }\n },\n };\n\n return api;\n}\n\nfunction findAnchor(e: Event, selector: string): HTMLAnchorElement | null {\n const fromElement = (node: unknown): HTMLAnchorElement | null => {\n if (!(node instanceof Element)) return null;\n const match = node.matches(selector) ? node : node.closest(selector);\n if (!match || !(\"href\" in match)) return null;\n return match as HTMLAnchorElement;\n };\n\n const direct = fromElement(e.target);\n if (direct) return direct;\n\n if (typeof e.composedPath !== \"function\") return null;\n for (const node of e.composedPath()) {\n const found = fromElement(node);\n if (found) return found;\n }\n return null;\n}\n\n/** Default 404, if the manifest had no `'*'`. */\nfunction defaultFallback(): CompiledRoute {\n return compile(\"*\", () => html`<pre>404: ${location.pathname}</pre>`);\n}\n\n// ---------- navigate() ----------\n\n/**\n * Global helper for programmatic navigation. Equivalent to\n * `api.navigate(to)` for any active router — updates the URL\n * via History API and dispatches `popstate`, which all\n * active routers on the page will pick up.\n *\n * import { navigate } from \"@madojs/mado\";\n * navigate(\"/users/42\");\n *\n * Used inside form handlers / events when you don't have\n * direct access to RouterApi (e.g. inside a component's setup function\n * that didn't receive the router as a parameter).\n */\nexport function navigate(to: string, opts?: { replace?: boolean }): void {\n if (typeof history === \"undefined\" || typeof window === \"undefined\") return;\n const url = toBrowserUrl(to);\n if (opts?.replace) history.replaceState(null, \"\", url);\n else history.pushState(null, \"\", url);\n // popstate is NOT dispatched automatically on pushState/replaceState,\n // so we dispatch it manually — all active routers will hear and update.\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n if (location.hash) scrollToHash(location.hash);\n else scrollToTop();\n scheduleFocusReset();\n}\n\nfunction locationKey(): string {\n return `${location.pathname}${location.search}${location.hash}`;\n}\n\n/**\n * Convert a route path + optional query/hash into a full browser URL with\n * the active Vite base re-applied. Pure: no DOM access beyond the\n * resolved `appBase` constant.\n */\nfunction toBrowserUrl(to: string): string {\n if (!to) return withBase(\"/\");\n let path = to;\n let suffix = \"\";\n const hashAt = path.indexOf(\"#\");\n if (hashAt >= 0) {\n suffix = path.slice(hashAt) + suffix;\n path = path.slice(0, hashAt);\n }\n const queryAt = path.indexOf(\"?\");\n if (queryAt >= 0) {\n suffix = path.slice(queryAt) + suffix;\n path = path.slice(0, queryAt);\n }\n if (!path) path = \"/\";\n return withBase(path) + suffix;\n}\n\nfunction saveScroll(\n positions: Map<string, { top: number; left: number }>,\n key: string,\n): void {\n const maybeWindow = window as Window & {\n scrollX?: number;\n scrollY?: number;\n pageXOffset?: number;\n pageYOffset?: number;\n };\n positions.set(key, {\n left: maybeWindow.scrollX ?? maybeWindow.pageXOffset ?? 0,\n top: maybeWindow.scrollY ?? maybeWindow.pageYOffset ?? 0,\n });\n}\n\nfunction restoreScroll(\n positions: Map<string, { top: number; left: number }>,\n key: string,\n): void {\n const pos = positions.get(key) ?? { top: 0, left: 0 };\n scrollTo(pos);\n}\n\nfunction scrollToTop(): void {\n scrollTo({ top: 0, left: 0 });\n}\n\nfunction scrollToHash(hash: string): void {\n const scroll = () => {\n const target = hashTarget(hash);\n if (!target) return false;\n try {\n target.scrollIntoView({ block: \"start\", inline: \"nearest\" });\n } catch {\n try {\n target.scrollIntoView();\n } catch {\n /* noop */\n }\n }\n return true;\n };\n\n if (scroll()) return;\n // New-route hash targets are often rendered by the reactive route effect\n // after `path.set()`, so try once more on the next microtask.\n queueMicrotask(() => {\n scroll();\n });\n}\n\nfunction hashTarget(hash: string): HTMLElement | null {\n const raw = hash.startsWith(\"#\") ? hash.slice(1) : hash;\n if (!raw) return null;\n let id = raw;\n try {\n id = decodeURIComponent(raw);\n } catch {\n /* keep raw hash text */\n }\n return document.getElementById(id);\n}\n\nfunction scrollTo(options: ScrollToOptions): void {\n const maybeWindow = window as Window & {\n scrollTo?: (options: ScrollToOptions) => void;\n };\n if (typeof maybeWindow.scrollTo !== \"function\") return;\n try {\n maybeWindow.scrollTo(options);\n } catch {\n /* noop */\n }\n}\n\nfunction scheduleFocusReset(): void {\n queueMicrotask(() => {\n const target = document.querySelector(\n \"[data-mado-focus], main, [role='main'], h1\",\n );\n if (!(target instanceof HTMLElement)) return;\n if (!target.hasAttribute(\"tabindex\")) target.setAttribute(\"tabindex\", \"-1\");\n try {\n target.focus({ preventScroll: true });\n } catch {\n try {\n target.focus();\n } catch {\n /* noop */\n }\n }\n });\n}\n\n// ---------- queryParam ----------\n//\n// Reactive wrapper over ?foo=bar. Reading → signal, .set() → replaceState.\n// All queryParams in the app are synchronised via a shared signal bus.\n// The bus is lazily initialised on first queryParam() call, because\n// in SSR/test environments window/location may be connected later.\n\nlet queryBus: Signal<string> | null = null;\n\nfunction ensureQueryBus(): Signal<string> {\n if (queryBus) return queryBus;\n queryBus = signal(location.search);\n window.addEventListener(\"popstate\", () => queryBus!.set(location.search));\n return queryBus;\n}\n\nfunction syncQuery(next: URLSearchParams, push: boolean): void {\n const url = `${location.pathname}?${next.toString()}${location.hash}`.replace(\n /\\?$/,\n \"\",\n );\n if (push) history.pushState(null, \"\", url);\n else history.replaceState(null, \"\", url);\n ensureQueryBus().set(location.search);\n}\n\nexport interface QueryParam {\n (): string;\n set(value: string | null, opts?: { push?: boolean }): void;\n}\n\n/**\n * Reactive query parameter.\n *\n * const page = queryParam('page', '1');\n * page(); // '1' (or current URL value)\n * page.set('2'); // history.replaceState and re-render\n * page.set(null); // delete the parameter\n */\nexport function queryParam(name: string, defaultValue = \"\"): QueryParam {\n const bus = ensureQueryBus();\n const read = (() => {\n const search = bus();\n const params = new URLSearchParams(search);\n return params.get(name) ?? defaultValue;\n }) as QueryParam;\n\n read.set = (value, opts) => {\n const params = new URLSearchParams(location.search);\n if (value === null || value === \"\") params.delete(name);\n else params.set(name, value);\n syncQuery(params, opts?.push ?? false);\n };\n\n return read;\n}\n\n/**\n * For typing purposes — same characteristics as Signal<string>.\n * Convenient in places that expect a plain signal.\n */\nexport type QuerySignal = Signal<string>;\n"]}
@@ -75,3 +75,4 @@ export declare function effect(fn: () => void | Disposer): Disposer;
75
75
  * Execute a function outside of tracking — reading signals will not create a subscription.
76
76
  */
77
77
  export declare function untracked<T>(fn: () => T): T;
78
+ //# sourceMappingURL=signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyIH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAiBvC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAKD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC;IACN,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,CAAC,CAAC;CACX;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAyC/C;AAKD,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC;IACN,IAAI,IAAI,CAAC,CAAC;CACX;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,EAAE,EAAE,MAAM,CAAC,EACX,OAAO,GAAE,eAAe,CAAC,CAAC,CAAM,GAC/B,QAAQ,CAAC,CAAC,CAAC,CA2Hb;AAID,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CA6C1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQ3C"}
@@ -23,6 +23,9 @@
23
23
  *
24
24
  * batch(() => { a.set(1); b.set(2); });
25
25
  */
26
+ import { reportError } from "./diagnostics.js";
27
+ import { getCurrentLifecycle } from "./lifecycle.js";
28
+ import { emitDevtools } from "./devtools-hook.js";
26
29
  const MAX_FLUSH_RUNS_PER_SUBSCRIBER = 100;
27
30
  let activeTracker = null;
28
31
  class SubscriberSet extends Set {
@@ -84,8 +87,7 @@ function drainDeferredEquals() {
84
87
  fn();
85
88
  }
86
89
  catch (err) {
87
- // eslint-disable-next-line no-console
88
- console.error("[mado] deferred computed reconcile threw:", err);
90
+ reportError("reactivity", "computed-reconcile", "deferred computed reconcile threw", err);
89
91
  }
90
92
  }
91
93
  }
@@ -113,9 +115,7 @@ function flush() {
113
115
  const runs = (runCounts.get(sub) ?? 0) + 1;
114
116
  runCounts.set(sub, runs);
115
117
  if (runs > MAX_FLUSH_RUNS_PER_SUBSCRIBER) {
116
- // eslint-disable-next-line no-console
117
- console.error("[mado] effect cycle detected: subscriber re-ran more than " +
118
- `${MAX_FLUSH_RUNS_PER_SUBSCRIBER} times in one flush.`);
118
+ reportError("reactivity", "effect-cycle", `effect cycle detected: subscriber re-ran more than ${MAX_FLUSH_RUNS_PER_SUBSCRIBER} times in one flush`, undefined);
119
119
  continue;
120
120
  }
121
121
  try {
@@ -123,8 +123,7 @@ function flush() {
123
123
  }
124
124
  catch (err) {
125
125
  // a subscriber must not crash the others
126
- // eslint-disable-next-line no-console
127
- console.error("[mado] effect threw:", err);
126
+ reportError("reactivity", "effect-run", "effect threw", err);
128
127
  }
129
128
  }
130
129
  }
@@ -171,7 +170,10 @@ export function signal(initial) {
171
170
  read.set = (next) => {
172
171
  if (Object.is(value, next))
173
172
  return;
173
+ const previous = value;
174
174
  value = next;
175
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
176
+ emitDevtools("signal:set", read, { previous, value: next });
175
177
  // snapshot: a subscriber may re-subscribe in run(), mutating the Set
176
178
  const snapshot = [...subscribers];
177
179
  // sync subscribers (computed) first — mark dirty before effects read;
@@ -182,8 +184,7 @@ export function signal(initial) {
182
184
  e.run();
183
185
  }
184
186
  catch (err) {
185
- // eslint-disable-next-line no-console
186
- console.error("[mado] sync subscriber threw:", err);
187
+ reportError("reactivity", "sync-subscriber", "sync subscriber threw", err);
187
188
  }
188
189
  }
189
190
  }
@@ -195,6 +196,8 @@ export function signal(initial) {
195
196
  read.update = (fn) => read.set(fn(value));
196
197
  read.peek = () => value;
197
198
  debugInfo.set(read, { subscribers });
199
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
200
+ emitDevtools("signal:create", read, { value });
198
201
  return read;
199
202
  }
200
203
  /**
@@ -286,8 +289,7 @@ export function computed(fn, options = {}) {
286
289
  e.run();
287
290
  }
288
291
  catch (err) {
289
- // eslint-disable-next-line no-console
290
- console.error("[mado] sync subscriber threw:", err);
292
+ reportError("reactivity", "sync-subscriber", "sync subscriber threw", err);
291
293
  }
292
294
  }
293
295
  else {
@@ -312,6 +314,8 @@ export function computed(fn, options = {}) {
312
314
  }
313
315
  dirty = false;
314
316
  hasValue = true;
317
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
318
+ emitDevtools("computed:value", read, { value });
315
319
  queueSuspendIfUnobserved();
316
320
  };
317
321
  const read = (() => {
@@ -329,19 +333,32 @@ export function computed(fn, options = {}) {
329
333
  return value;
330
334
  };
331
335
  debugInfo.set(read, { subscribers, tracker });
336
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
337
+ emitDevtools("computed:create", read);
332
338
  return read;
333
339
  }
334
340
  export function effect(fn) {
335
341
  let cleanup;
342
+ let disposed = false;
336
343
  const run = () => {
344
+ if (disposed)
345
+ return;
346
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
347
+ emitDevtools("effect:run", run);
337
348
  cleanupTracker(tracker);
338
- if (typeof cleanup === "function")
339
- cleanup();
349
+ const previousCleanup = cleanup;
350
+ cleanup = undefined;
351
+ if (typeof previousCleanup === "function")
352
+ previousCleanup();
340
353
  const prev = activeTracker;
341
354
  activeTracker = tracker;
342
355
  try {
343
356
  cleanup = fn();
344
357
  }
358
+ catch (err) {
359
+ cleanupTracker(tracker);
360
+ throw err;
361
+ }
345
362
  finally {
346
363
  activeTracker = prev;
347
364
  }
@@ -350,12 +367,24 @@ export function effect(fn) {
350
367
  deps: new Set(),
351
368
  entry: { run, sync: false },
352
369
  };
353
- run();
354
- return () => {
370
+ const dispose = () => {
371
+ if (disposed)
372
+ return;
373
+ disposed = true;
374
+ pending.delete(run);
355
375
  cleanupTracker(tracker);
356
- if (typeof cleanup === "function")
357
- cleanup();
376
+ const finalCleanup = cleanup;
377
+ cleanup = undefined;
378
+ if (typeof finalCleanup === "function")
379
+ finalCleanup();
380
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
381
+ emitDevtools("effect:dispose", run);
358
382
  };
383
+ if (typeof __MADO_DEVTOOLS__ === "undefined" || __MADO_DEVTOOLS__)
384
+ emitDevtools("effect:create", run);
385
+ run();
386
+ getCurrentLifecycle()?.onDispose(dispose);
387
+ return dispose;
359
388
  }
360
389
  /**
361
390
  * Execute a function outside of tracking — reading signals will not create a subscription.
@@ -1 +1 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/signal.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Reactivity via signals.\n *\n * Idea: a signal is a getter-function that also has .set / .update.\n * When a signal is read inside an effect/computed, we record \"who read it\"\n * and notify subscribers when the value changes. No proxies, no Virtual DOM.\n *\n * Performance:\n * - effect runs are deduplicated and scheduled via queueMicrotask,\n * so multiple .set() calls in a row produce a single subscriber pass;\n * - batch(fn) explicitly groups changes (supports arbitrary nesting);\n * - flushSync() — flush pending effects right now (useful in tests).\n *\n * API:\n * const count = signal(0);\n * count(); // get\n * count.set(5); // set\n * count.update(n=>n+1);\n *\n * const doubled = computed(() => count() * 2);\n *\n * effect(() => console.log(count()));\n *\n * batch(() => { a.set(1); b.set(2); });\n */\n\nimport { reportError } from \"./diagnostics.js\";\nimport { getCurrentLifecycle } from \"./lifecycle.js\";\nimport { emitDevtools } from \"./devtools-hook.js\";\n\ntype Subscriber = () => void;\n\nconst MAX_FLUSH_RUNS_PER_SUBSCRIBER = 100;\n\n/**\n * Subscriber with metadata.\n * - sync=true → when a dep changes, run() is called SYNCHRONOUSLY\n * (used by computed: dirty is marked without delay);\n * - sync=false → run() is scheduled via the microtask scheduler\n * (used by effect: renders are batched).\n */\ninterface SubscriberEntry {\n run: Subscriber;\n sync: boolean;\n}\n\ninterface Tracker {\n deps: Set<SubscriberSet>;\n entry: SubscriberEntry;\n}\n\nlet activeTracker: Tracker | null = null;\n\nclass SubscriberSet extends Set<SubscriberEntry> {\n private emptyScheduled = false;\n\n constructor(private readonly onEmpty?: () => void) {\n super();\n }\n\n override add(entry: SubscriberEntry): this {\n super.add(entry);\n this.emptyScheduled = false;\n return this;\n }\n\n override delete(entry: SubscriberEntry): boolean {\n const deleted = super.delete(entry);\n if (deleted) this.queueEmpty();\n return deleted;\n }\n\n override clear(): void {\n const hadEntries = this.size > 0;\n super.clear();\n if (hadEntries) this.queueEmpty();\n }\n\n private queueEmpty(): void {\n if (!this.onEmpty || this.size > 0 || this.emptyScheduled) return;\n this.emptyScheduled = true;\n queueMicrotask(() => {\n this.emptyScheduled = false;\n if (this.size === 0) this.onEmpty?.();\n });\n }\n}\n\nfunction cleanupTracker(tracker: Tracker): void {\n for (const dep of tracker.deps) dep.delete(tracker.entry);\n tracker.deps.clear();\n}\n\n// ---------- Scheduler ----------\n\nconst pending = new Set<Subscriber>();\n// Reconciles for observed `equals`-computeds whose deps changed inside a batch.\n// Deferred to batch end so they recompute once, on fully-applied (consistent)\n// state, instead of eagerly inside each set() on half-applied state.\n// (FABLE_REPORT.md finding #4)\nconst deferredEquals = new Set<Subscriber>();\nlet batchDepth = 0;\nlet flushScheduled = false;\n\n/** Run all deferred equals-computed reconciles; cascades may enqueue more. */\nfunction drainDeferredEquals(): void {\n while (deferredEquals.size > 0) {\n const items = [...deferredEquals];\n deferredEquals.clear();\n for (const fn of items) {\n try {\n fn();\n } catch (err) {\n reportError(\"reactivity\", \"computed-reconcile\", \"deferred computed reconcile threw\", err);\n }\n }\n }\n}\n\n\nfunction schedule(sub: Subscriber): void {\n pending.add(sub);\n if (batchDepth > 0) return;\n if (flushScheduled) return;\n flushScheduled = true;\n queueMicrotask(flush);\n}\n\nfunction flush(): void {\n flushScheduled = false;\n // Defensive: reconcile any deferred equals-computeds before running effects,\n // so effects always observe settled computed values.\n drainDeferredEquals();\n const runCounts = new Map<Subscriber, number>();\n\n // guard against Set modification during iteration\n while (pending.size > 0) {\n const subs = [...pending];\n pending.clear();\n for (const sub of subs) {\n const runs = (runCounts.get(sub) ?? 0) + 1;\n runCounts.set(sub, runs);\n if (runs > MAX_FLUSH_RUNS_PER_SUBSCRIBER) {\n reportError(\n \"reactivity\",\n \"effect-cycle\",\n `effect cycle detected: subscriber re-ran more than ${MAX_FLUSH_RUNS_PER_SUBSCRIBER} times in one flush`,\n undefined,\n );\n continue;\n }\n try {\n sub();\n } catch (err) {\n // a subscriber must not crash the others\n reportError(\"reactivity\", \"effect-run\", \"effect threw\", err);\n }\n }\n }\n}\n\n/**\n * Group multiple signal changes into a single subscriber pass.\n * Supports arbitrary nesting.\n */\nexport function batch<T>(fn: () => T): T {\n batchDepth++;\n try {\n return fn();\n } finally {\n batchDepth--;\n if (batchDepth === 0) {\n // Reconcile deferred equals-computeds now that all sets are applied and\n // state is consistent. This may enqueue effects into `pending`.\n drainDeferredEquals();\n if (pending.size > 0 && !flushScheduled) {\n flushScheduled = true;\n queueMicrotask(flush);\n }\n }\n }\n\n}\n\n/**\n * Forcefully flush pending effects right now (synchronously).\n * Useful in tests: removes the need to wait for a microtask.\n */\nexport function flushSync(): void {\n flush();\n}\n\n// ---------- signal ----------\n\n\nexport interface Signal<T> {\n (): T;\n set(value: T): void;\n update(updater: (prev: T) => T): void;\n peek(): T;\n}\n\nexport function signal<T>(initial: T): Signal<T> {\n let value = initial;\n const subscribers = new SubscriberSet();\n\n const read = (() => {\n if (activeTracker) {\n subscribers.add(activeTracker.entry);\n activeTracker.deps.add(subscribers);\n }\n return value;\n }) as Signal<T>;\n\n read.set = (next: T) => {\n if (Object.is(value, next)) return;\n const previous = value;\n value = next;\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"signal:set\", read, { previous, value: next });\n // snapshot: a subscriber may re-subscribe in run(), mutating the Set\n const snapshot = [...subscribers];\n // sync subscribers (computed) first — mark dirty before effects read;\n // then async via the scheduler.\n for (const e of snapshot) {\n if (e.sync) {\n try {\n e.run();\n } catch (err) {\n reportError(\"reactivity\", \"sync-subscriber\", \"sync subscriber threw\", err);\n }\n }\n }\n for (const e of snapshot) {\n if (!e.sync) schedule(e.run);\n }\n };\n\n read.update = (fn: (prev: T) => T) => read.set(fn(value));\n read.peek = () => value;\n debugInfo.set(read, { subscribers });\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"signal:create\", read, { value });\n\n return read;\n}\n\n// ---------- computed (lazy, dirty-flag) ----------\n\n\nexport interface Computed<T> {\n (): T;\n peek(): T;\n}\n\nexport interface ComputedOptions<T> {\n /**\n * Equality check used when an observed computed is invalidated.\n *\n * If the new value is equal to the previous value, subscribers are not\n * notified. Defaults to always notifying on dependency invalidation, which\n * preserves the classic lazy dirty-flag behavior.\n */\n equals?: (prev: T, next: T) => boolean;\n}\n\n/**\n * Lazy computed based on a dirty-flag:\n * - fn is NOT called until the computed is read;\n * - if none of the deps changed since the last read — cached value is returned;\n * - when a dep changes the computed is marked dirty (NOT recomputed),\n * and triggers its own subscribers via schedule(). Subscribers\n * (an effect or another computed) will read our value on their next run\n * → fn is recomputed exactly once.\n *\n * Implementation: computed = \"signal source\" (has subscribers) +\n * \"tracker\" (has deps). When a dep calls the tracker's run(),\n * instead of actually recomputing we mark ourselves dirty and\n * propagate to subscribers.\n */\nexport function computed<T>(\n fn: () => T,\n options: ComputedOptions<T> = {},\n): Computed<T> {\n let value: T = undefined as unknown as T;\n let dirty = true;\n let hasValue = false;\n let computing = false;\n\n // Recompute an observed equals-computed and notify only if the value\n // actually changed. Extracted so it can run eagerly (outside a batch) or\n // deferred to batch end (inside a batch), where it sees consistent state.\n const reconcileEquals = (): void => {\n if (subscribers.size === 0) {\n dirty = true;\n suspend();\n return;\n }\n const prevValue = value;\n recompute();\n if (hasValue && options.equals!(prevValue, value)) return;\n notifySubscribers();\n };\n\n const onInvalidate: Subscriber = () => {\n // dep changed → mark dirty synchronously and cascade.\n // Sync subscribers (other computed) are triggered immediately — they also\n // set dirty without delay. Async (effects) go through the scheduler.\n if (dirty) return;\n if (subscribers.size === 0) {\n dirty = true;\n suspend();\n return;\n }\n if (options.equals && hasValue) {\n // Inside a batch, defer the recompute+compare to batch end so it runs\n // once on fully-applied state instead of eagerly on half-applied state\n // (which would observe a mixed snapshot and could notify spuriously or\n // run O(number of sets) times). (FABLE_REPORT.md finding #4)\n if (batchDepth > 0) {\n deferredEquals.add(reconcileEquals);\n return;\n }\n reconcileEquals();\n return;\n }\n dirty = true;\n notifySubscribers();\n };\n\n\n const tracker: Tracker = {\n deps: new Set(),\n entry: { run: onInvalidate, sync: true },\n };\n\n const subscribers = new SubscriberSet(() => {\n suspend();\n });\n\n const suspend = (): void => {\n if (subscribers.size > 0) return;\n cleanupTracker(tracker);\n dirty = true;\n };\n\n const queueSuspendIfUnobserved = (): void => {\n if (subscribers.size > 0) return;\n queueMicrotask(() => {\n if (subscribers.size === 0) suspend();\n });\n };\n\n const notifySubscribers = (): void => {\n const snapshot = [...subscribers];\n for (const e of snapshot) {\n if (e.sync) {\n try {\n e.run();\n } catch (err) {\n reportError(\"reactivity\", \"sync-subscriber\", \"sync subscriber threw\", err);\n }\n } else {\n schedule(e.run);\n }\n }\n };\n\n const recompute = (): void => {\n if (computing) {\n throw new Error(\"[mado] computed cycle detected\");\n }\n cleanupTracker(tracker);\n\n const prev = activeTracker;\n activeTracker = tracker;\n computing = true;\n try {\n value = fn();\n } finally {\n computing = false;\n activeTracker = prev;\n }\n dirty = false;\n hasValue = true;\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"computed:value\", read, { value });\n queueSuspendIfUnobserved();\n };\n\n const read = (() => {\n if (activeTracker) {\n subscribers.add(activeTracker.entry);\n activeTracker.deps.add(subscribers);\n }\n if (dirty) recompute();\n return value;\n }) as Computed<T>;\n\n read.peek = () => {\n if (dirty) recompute();\n return value;\n };\n\n debugInfo.set(read, { subscribers, tracker });\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"computed:create\", read);\n return read;\n}\n\n// ---------- effect ----------\n\nexport type Disposer = () => void;\n\nexport function effect(fn: () => void | Disposer): Disposer {\n let cleanup: Disposer | void;\n let disposed = false;\n\n const run: Subscriber = () => {\n if (disposed) return;\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"effect:run\", run);\n cleanupTracker(tracker);\n\n const previousCleanup = cleanup;\n cleanup = undefined;\n if (typeof previousCleanup === \"function\") previousCleanup();\n\n const prev = activeTracker;\n activeTracker = tracker;\n try {\n cleanup = fn();\n } catch (err) {\n cleanupTracker(tracker);\n throw err;\n } finally {\n activeTracker = prev;\n }\n };\n\n const tracker: Tracker = {\n deps: new Set(),\n entry: { run, sync: false },\n };\n\n const dispose = (): void => {\n if (disposed) return;\n disposed = true;\n pending.delete(run);\n cleanupTracker(tracker);\n const finalCleanup = cleanup;\n cleanup = undefined;\n if (typeof finalCleanup === \"function\") finalCleanup();\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"effect:dispose\", run);\n };\n\n if (typeof __MADO_DEVTOOLS__ === \"undefined\" || __MADO_DEVTOOLS__) emitDevtools(\"effect:create\", run);\n run();\n getCurrentLifecycle()?.onDispose(dispose);\n return dispose;\n}\n\n/**\n * Execute a function outside of tracking — reading signals will not create a subscription.\n */\nexport function untracked<T>(fn: () => T): T {\n const prev = activeTracker;\n activeTracker = null;\n try {\n return fn();\n } finally {\n activeTracker = prev;\n }\n}\n\ninterface DebugInfo {\n subscribers: SubscriberSet;\n tracker?: Tracker;\n}\n\nconst debugInfo = new WeakMap<object, DebugInfo>();\n\n/** @internal */\nexport const _testHooks = {\n subscriberCount(source: object): number {\n return debugInfo.get(source)?.subscribers.size ?? 0;\n },\n dependencyCount(source: object): number {\n return debugInfo.get(source)?.tracker?.deps.size ?? 0;\n },\n};\n"]}
@@ -79,3 +79,4 @@ export declare function beginStaticRoute(pathname: string): void;
79
79
  export declare function markStaticRouteReady(state?: string): void;
80
80
  export declare function setStaticRouterState(state: string): void;
81
81
  export declare function recordStaticError(error: unknown): void;
82
+ //# sourceMappingURL=static-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-runtime.d.ts","sourceRoot":"","sources":["../../src/static-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzD,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,WAAW,IAAI,iBAAiB,CAAC;IACjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd;;;;;WAKG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,eAAe,CAAC,EAAE,iBAAiB,CAAC;KACrC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,SAAS,GAAG,SAAS,CAsBvB;AAOD,wBAAgB,gBAAgB,IAAI,iBAAiB,GAAG,IAAI,CAS3D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAU,GAAG,IAAI,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"static-runtime.js","sourceRoot":"","sources":["../../src/static-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static-runtime.js","sourceRoot":"","sources":["../../src/static-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { flushSync } from \"./signal.js\";\nimport { stripBase } from \"./router/base.js\";\nimport type { JsonValue } from \"./page.js\";\n\nexport interface StaticDiagnostics {\n routeReady: boolean;\n pending: string[];\n lastRouterState: string | null;\n errors: string[];\n expectedPathname: string | null;\n}\n\nexport interface WhenStableOptions {\n /**\n * Cap on time to wait for the route to call `routeReady()`. Defaults\n * to 15s — long enough to load and render even a slow code-split\n * route, short enough that a deadlocked one fails loudly.\n */\n routeReadyMs?: number;\n /**\n * Cap on time to wait for tracked resources (initial fetches, lazy\n * imports created before `routeReady()`) to settle once the route is\n * ready. Defaults to 15s.\n */\n resourcesMs?: number;\n /**\n * Cap on time to wait for `document.fonts.ready`. Web fonts that\n * never resolve must not block the snapshot pipeline indefinitely.\n * Defaults to 5s. We log a diagnostic and proceed on timeout.\n */\n fontsMs?: number;\n /**\n * Cap on time to wait for two paint frames so async style or layout\n * effects can flush before serialization. Defaults to 1s.\n */\n paintMs?: number;\n}\n\nexport interface MadoStaticRuntime {\n beginRoute(pathname: string): void;\n routeReady(state?: string): void;\n track<T>(promise: Promise<T>, label: string): Promise<T>;\n whenStable(options?: WhenStableOptions): Promise<void>;\n diagnostics(): StaticDiagnostics;\n setRouterState(state: string): void;\n recordError(error: unknown): void;\n}\n\ndeclare global {\n interface Window {\n /**\n * Build-time signal that this document is being rendered by the static\n * snapshot capture harness. Set by Mado runtime when the document\n * carries the `data-mado-static-capture` attribute. CSP-safe: it does\n * NOT come from an inline script.\n */\n __MADO_STATIC_MODE__?: boolean;\n __MADO_STATIC__?: MadoStaticRuntime;\n }\n}\n\n/**\n * Consume the build-time seed for the active route exactly once.\n *\n * Lifecycle: discovery encodes the seed into the snapshot as a\n * `<script type=\"application/json\" data-mado-static-data>` element. On the\n * first client boot of a static route the router calls\n * `consumeStaticSeed(pathname)` from a single place.\n *\n * - In production (no capture marker): the script element is removed\n * after parsing so subsequent SPA navigations cannot resurrect a stale\n * seed.\n * - During build-time capture (data-mado-static-capture present): the\n * script element is preserved so the serializer can keep it in the\n * final snapshot HTML — that way the real client boot receives the\n * same seed once again.\n *\n * Returns `undefined` if no seed is present, the JSON is malformed, or the\n * pathname does not match. The router passes the result into both\n * `page.head(params, seed)` and `page.load(params, seed)`.\n */\nexport function consumeStaticSeed(\n pathname: string,\n): JsonValue | undefined {\n if (typeof document === \"undefined\") return undefined;\n const el = document.querySelector<HTMLScriptElement>(\n 'script[type=\"application/json\"][data-mado-static-data]',\n );\n if (!el || el.textContent == null) return undefined;\n // The attribute MAY carry the pathname it was emitted for; an empty or\n // missing value means \"the only seed in this document\", and we accept it\n // for the active route. A non-empty mismatch indicates a stale fragment\n // from a previous route — drop it.\n const elPath = el.getAttribute(\"data-mado-static-data\");\n if (elPath && elPath !== pathname) return undefined;\n const preserve =\n document.documentElement.hasAttribute(\"data-mado-static-capture\");\n try {\n const value = JSON.parse(el.textContent) as JsonValue;\n if (!preserve) el.remove();\n return value;\n } catch {\n if (!preserve) el.remove();\n return undefined;\n }\n}\n\nfunction detectCaptureMode(): boolean {\n if (typeof document === \"undefined\") return false;\n return document.documentElement.hasAttribute(\"data-mado-static-capture\");\n}\n\nexport function getStaticRuntime(): MadoStaticRuntime | null {\n if (typeof window === \"undefined\") return null;\n if (window.__MADO_STATIC__) return window.__MADO_STATIC__;\n const enabled =\n window.__MADO_STATIC_MODE__ === true || detectCaptureMode();\n if (!enabled) return null;\n window.__MADO_STATIC_MODE__ = true;\n window.__MADO_STATIC__ = createStaticRuntime();\n return window.__MADO_STATIC__;\n}\n\nexport function trackStatic<T>(promise: Promise<T>, label: string): Promise<T> {\n return getStaticRuntime()?.track(promise, label) ?? promise;\n}\n\nexport function beginStaticRoute(pathname: string): void {\n getStaticRuntime()?.beginRoute(pathname);\n}\n\nexport function markStaticRouteReady(state = \"ready\"): void {\n getStaticRuntime()?.routeReady(state);\n}\n\nexport function setStaticRouterState(state: string): void {\n getStaticRuntime()?.setRouterState(state);\n}\n\nexport function recordStaticError(error: unknown): void {\n getStaticRuntime()?.recordError(error);\n}\n\nfunction createStaticRuntime(): MadoStaticRuntime {\n let nextId = 1;\n let routeReady = false;\n let lastRouterState: string | null = null;\n let expectedPathname: string | null = null;\n const pending = new Map<number, string>();\n const errors: string[] = [];\n\n const diagnostics = (): StaticDiagnostics => ({\n routeReady,\n pending: [...pending.values()].sort(),\n lastRouterState,\n errors: [...errors],\n expectedPathname,\n });\n\n // Both `beginRoute()` callers and the `routeReady()` comparison live on\n // the BASE-FREE pathname (the route key the matcher uses). Strip the\n // active Vite base so capture under any deployment shape compares\n // apples to apples.\n const currentPathname = (): string | null =>\n typeof location !== \"undefined\" ? stripBase(location.pathname) : null;\n\n const runtime: MadoStaticRuntime = {\n beginRoute(pathname: string) {\n expectedPathname = pathname;\n routeReady = false;\n lastRouterState = \"begin\";\n },\n routeReady(state = \"ready\") {\n // If the runtime moved to a different pathname (effect-driven redirect,\n // guard verdict), only acknowledge readiness for the active path; the\n // capture harness compares pathname before serialization.\n const here = currentPathname();\n if (expectedPathname != null && here != null && here !== expectedPathname) {\n // Stale completion of an old route; do not mark as ready.\n return;\n }\n routeReady = true;\n lastRouterState = state;\n },\n track<T>(promise: Promise<T>, label: string): Promise<T> {\n const id = nextId++;\n pending.set(id, label);\n return Promise.resolve(promise).finally(() => {\n pending.delete(id);\n });\n },\n async whenStable(options: WhenStableOptions = {}) {\n const routeReadyMs = options.routeReadyMs ?? 15_000;\n const resourcesMs = options.resourcesMs ?? 15_000;\n\n // 1) Route ready: wait until the router calls `markStaticRouteReady`\n // for the active pathname. Resources, fonts and paint frames are\n // irrelevant until the route itself has committed.\n await waitFor(\n () => routeReady && errors.length === 0,\n routeReadyMs,\n () => {\n const d = diagnostics();\n return (\n `[mado:static] route did not become ready in ${routeReadyMs}ms. ` +\n `state=${d.lastRouterState ?? \"unknown\"} ` +\n `pending=${d.pending.join(\", \") || \"none\"} ` +\n `errors=${d.errors.join(\" | \") || \"none\"}`\n );\n },\n );\n\n // 2) Tracked resources: any `resource()` created before route ready\n // is part of the initial render contract; the snapshot waits for\n // it. Resources created after `routeReady` count as background\n // work and are NOT awaited — they would otherwise let a stray\n // `setInterval` keep capture pinned forever.\n await waitFor(\n () => pending.size === 0 && errors.length === 0,\n resourcesMs,\n () => {\n const d = diagnostics();\n return (\n `[mado:static] route ready but resources did not settle in ${resourcesMs}ms. ` +\n `pending=${d.pending.join(\", \") || \"none\"} ` +\n `errors=${d.errors.join(\" | \") || \"none\"}`\n );\n },\n );\n\n // 3) One last quiet pass: flushSync + microtask drain to ensure\n // any final reactive effect committed during step 2 has\n // rendered before the caller serializes the document.\n try {\n flushSync();\n } catch {\n /* best effort; diagnostics already capture page errors */\n }\n await microtask();\n },\n diagnostics,\n setRouterState(state: string) {\n lastRouterState = state;\n },\n recordError(error: unknown) {\n errors.push(error instanceof Error ? error.message : String(error));\n },\n };\n\n return runtime;\n}\n\nfunction microtask(): Promise<void> {\n return Promise.resolve();\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Poll `predicate` until it returns true or `timeoutMs` elapses. Calls\n * `flushSync()` once per pass so reactive effects scheduled during the\n * tick get a chance to commit before the next check. On timeout throws\n * the message returned by `describe()` so each phase of `whenStable`\n * produces a phase-specific diagnostic.\n */\nasync function waitFor(\n predicate: () => boolean,\n timeoutMs: number,\n describe: () => string,\n): Promise<void> {\n const started = Date.now();\n // Two consecutive quiet ticks before we declare success: the predicate\n // can transition transiently while a microtask flush rebuilds the\n // route view.\n let quietPasses = 0;\n while (Date.now() - started < timeoutMs) {\n try {\n flushSync();\n } catch {\n /* page errors surface separately via recordError */\n }\n await microtask();\n if (predicate()) {\n quietPasses++;\n if (quietPasses >= 2) return;\n } else {\n quietPasses = 0;\n }\n await delay(10);\n }\n throw new Error(describe());\n}\n"]}
@@ -36,3 +36,4 @@ export interface MadoVitePluginOptions {
36
36
  * - SSR or hydration.
37
37
  */
38
38
  export declare function mado(options?: MadoVitePluginOptions): Plugin;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAiDhE"}
@@ -24,9 +24,12 @@ export function mado(options = {}) {
24
24
  let resolved = null;
25
25
  return {
26
26
  name: "mado",
27
- config() {
27
+ config(_config, environment) {
28
28
  return {
29
29
  build: { target: "es2022" },
30
+ define: {
31
+ __MADO_DEVTOOLS__: environment.command === "serve" ? "true" : "false",
32
+ },
30
33
  };
31
34
  },
32
35
  configResolved(config) {
@@ -54,8 +57,6 @@ export function mado(options = {}) {
54
57
  source: JSON.stringify({
55
58
  site: options.site ?? null,
56
59
  base: resolved.base,
57
- assetsDir: resolved.build.assetsDir,
58
- outDir: resolved.build.outDir,
59
60
  }),
60
61
  });
61
62
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,IAAI,CAAC,UAAiC,EAAE;IACtD,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,MAAM;QAEZ,MAAM;YACJ,OAAO;gBACL,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC5B,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,eAAe,CAAC,GAAG;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC5C,gEAAgE;YAChE,kEAAkE;YAClE,mCAAmC;YACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CACrC,GAAG,EACH,WAAyB,EACzB,GAAG,CAAC,SAAS,EACb,IAAI,CACL,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,cAAc;YACZ,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;oBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;oBACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;iBAC9B,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,IAAI,CAAC,OAAO,GAA0B,EAAE;IACtD,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,MAAM;QAEZ,MAAM,CAAC,OAAO,EAAE,WAAW;YACzB,OAAO;gBACL,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC3B,MAAM,EAAE;oBACN,iBAAiB,EAAE,WAAW,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;iBACtE;aACF,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,eAAe,CAAC,GAAG;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC5C,gEAAgE;YAChE,kEAAkE;YAClE,mCAAmC;YACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CACrC,GAAG,EACH,WAAyB,EACzB,GAAG,CAAC,SAAS,EACb,IAAI,CACL,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,cAAc;YACZ,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;oBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { Plugin, ResolvedConfig } from \"vite\";\n\nexport interface MadoVitePluginOptions {\n /**\n * Public origin used to build absolute URLs for static snapshots\n * (sitemap entries, canonical links, OpenGraph URLs).\n *\n * mado({ site: \"https://madojs.dev\" })\n *\n * Combined with Vite's `base`, the canonical URL for a route is\n * `site + base + pathname`. Required when at least one page declares\n * `static`; otherwise the build emits absolute URLs that point\n * nowhere.\n */\n site?: string;\n}\n\n/**\n * Vite integration for Mado apps.\n *\n * Intentionally minimal: Vite owns dev serving, HTML processing, assets\n * and bundling. This plugin is the bridge that hands the snapshot CLI the\n * three pieces of resolved Vite config it needs and asks Vite for a\n * Mado-flavoured full reload on TypeScript/JavaScript changes.\n *\n * What it owns:\n * 1. a small `build.target` default (matches what the runtime relies on);\n * 2. forcing a full page reload when a `.ts` / `.js` module updates,\n * so signals / components do not have to track HMR state;\n * 3. emitting `_mado/build.json` into the output so\n * `scripts/static.mjs` can read the resolved Vite `base`, `assetsDir`\n * and the user-declared `site` without parsing `vite.config.ts`.\n *\n * What it does NOT own:\n * - HTML ownership (Vite keeps that),\n * - publicDir / outDir / assetsDir defaults (Vite already supplies them),\n * - snapshot orchestration (CLI keeps that),\n * - SSR or hydration.\n */\nexport function mado(options: MadoVitePluginOptions = {}): Plugin {\n let resolved: ResolvedConfig | null = null;\n\n return {\n name: \"mado\",\n\n config(_config, environment) {\n return {\n build: { target: \"es2022\" },\n define: {\n __MADO_DEVTOOLS__: environment.command === \"serve\" ? \"true\" : \"false\",\n },\n };\n },\n\n configResolved(config) {\n resolved = config;\n },\n\n handleHotUpdate(ctx) {\n if (!/\\.[cm]?[jt]s$/.test(ctx.file)) return;\n // Invalidate the module graph first; otherwise the reload would\n // serve cached modules and miss the change. Mirrors the canonical\n // Vite \"force full reload\" recipe.\n const invalidated = new Set<unknown>();\n for (const mod of ctx.modules) {\n ctx.server.moduleGraph.invalidateModule(\n mod,\n invalidated as Set<never>,\n ctx.timestamp,\n true,\n );\n }\n ctx.server.ws.send({ type: \"full-reload\" });\n return [];\n },\n\n generateBundle() {\n if (!resolved) return;\n this.emitFile({\n type: \"asset\",\n fileName: \"_mado/build.json\",\n source: JSON.stringify({\n site: options.site ?? null,\n base: resolved.base,\n }),\n });\n },\n };\n}\n"]}
@@ -0,0 +1,19 @@
1
+ # Mado v1 release roadmap
2
+
3
+ The implementation hardening lands in 0.13.0: safe output ownership,
4
+ serialization, lifecycle teardown, transactional navigation, native forms,
5
+ stable data semantics, the frozen API, devtools, deterministic capture and a
6
+ reproducible package.
7
+
8
+ Release progression:
9
+
10
+ 1. Publish 0.13.0 as the final pre-v1 breaking release.
11
+ 2. Dogfood it on one static/content site and one authenticated modular app.
12
+ 3. Fix discovered contract defects and publish 1.0.0-rc.1.
13
+ 4. Publish another RC whenever a public contract changes.
14
+ 5. Publish 1.0.0 after an RC has no P0/P1 issues, no API changes and the full
15
+ Node/browser/package matrix is green.
16
+
17
+ The gate is `npm run verify:release`, plus Node 22/24, Chromium/Firefox/WebKit,
18
+ Windows package smoke, a 17 KiB gzip runtime budget and a separately measured
19
+ 24 KiB devtools budget. Runtime dependencies remain zero.
@@ -164,6 +164,14 @@ Why: the page becomes invisible to the router, the static snapshot
164
164
  pipeline cannot find it, and shared CSS (`content.css`) does not
165
165
  cross the Shadow boundary.
166
166
 
167
+ ## Synchronous `page.load`
168
+
169
+ `page.load(params, seed)` must return a value or a `Resource` synchronously.
170
+ Returning a Promise is rejected because navigation commit and rollback need a
171
+ clear lifecycle owner. Put asynchronous work in `resource()` and render its
172
+ `loading()`, `error()` and `data()` signals. Guards may remain async; head/title
173
+ are committed only after guards succeed.
174
+
167
175
  ### 2. Component used as a route
168
176
 
169
177
  ```ts
@@ -268,4 +276,4 @@ Full router contract: [12-routing.md](./12-routing.md).
268
276
  - [15-static-snapshots.md](./15-static-snapshots.md) — when to mark
269
277
  a page `static: true`.
270
278
  - [14-forms.md](./14-forms.md) — `useForm()` + the only Shadow DOM
271
- case where `shadow: false` is right.
279
+ case where `shadow: false` is right.
@@ -38,13 +38,15 @@ user.mutate((u) => (u ? { ...u, name: "patched" } : u));
38
38
 
39
39
  Rules:
40
40
 
41
- - The key is the cache identity. Same key shared cache and shared
42
- in-flight request, even across components.
41
+ - Cache identity is the key plus the fetcher function. Matching pairs share
42
+ completed data and an in-flight request across components.
43
43
  - Distinct data needs distinct keys. Encode query params, auth scope
44
44
  and tenant in the key string itself.
45
- - `staleTime` is "how long after a successful fetch the cached value
46
- is reused without a re-fetch". `0` means "always re-fetch on
47
- remount".
45
+ - A positive `staleTime` is how long completed data is reused; expiry removes
46
+ it automatically. `0` means in-flight deduplication only, never completed
47
+ value reuse.
48
+ - `refresh()` resolves to the fetched `T`; `invalidate()` notifies every live
49
+ matching resource, including resources without a completed cache entry.
48
50
  - `resource()` inside a `component()` / `page()` cleans itself up
49
51
  when the host leaves the DOM.
50
52
 
@@ -222,4 +224,4 @@ your real backend is wired.
222
224
  - [21-error-handling.md](./21-error-handling.md) — route / data /
223
225
  action error boundaries.
224
226
  - [16-app-architecture.md](./16-app-architecture.md) — the modular
225
- starter shape end-to-end.
227
+ starter shape end-to-end.