meadow 2.0.42 → 2.0.44

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 (67) hide show
  1. package/README.md +2 -3
  2. package/docs/architecture.md +10 -99
  3. package/docs/diagrams/create-waterfall.excalidraw +2016 -0
  4. package/docs/diagrams/create-waterfall.mmd +19 -0
  5. package/docs/diagrams/create-waterfall.svg +2 -0
  6. package/docs/diagrams/crud-behavior-flow.excalidraw +1305 -0
  7. package/docs/diagrams/crud-behavior-flow.mmd +13 -0
  8. package/docs/diagrams/crud-behavior-flow.svg +2 -0
  9. package/docs/diagrams/module-hierarchy.excalidraw +1582 -0
  10. package/docs/diagrams/module-hierarchy.mmd +15 -0
  11. package/docs/diagrams/module-hierarchy.svg +2 -0
  12. package/docs/diagrams/query-lifecycle.excalidraw +1808 -0
  13. package/docs/diagrams/query-lifecycle.mmd +21 -0
  14. package/docs/diagrams/query-lifecycle.svg +2 -0
  15. package/docs/diagrams/schema-system.excalidraw +2034 -0
  16. package/docs/diagrams/schema-system.mmd +21 -0
  17. package/docs/diagrams/schema-system.svg +2 -0
  18. package/docs/providers/README.md +6 -14
  19. package/docs/providers/diagrams/overview.excalidraw +1324 -0
  20. package/docs/providers/diagrams/overview.mmd +8 -0
  21. package/docs/providers/diagrams/overview.svg +2 -0
  22. package/docs/providers/diagrams/use-case-unified-client-server-interface.excalidraw +919 -0
  23. package/docs/providers/diagrams/use-case-unified-client-server-interface.mmd +12 -0
  24. package/docs/providers/diagrams/use-case-unified-client-server-interface.svg +2 -0
  25. package/docs/providers/meadow-endpoints.md +5 -17
  26. package/docs/providers/mongodb.md +2 -2
  27. package/docs/providers/mssql.md +1 -1
  28. package/docs/providers/mysql.md +1 -1
  29. package/docs/providers/postgresql.md +2 -2
  30. package/docs/providers/rocksdb.md +1 -1
  31. package/docs/providers/sqlite.md +1 -1
  32. package/docs/query/README.md +1 -1
  33. package/docs/query/count.md +2 -8
  34. package/docs/query/create.md +2 -12
  35. package/docs/query/diagrams/how-it-works-2.excalidraw +1097 -0
  36. package/docs/query/diagrams/how-it-works-2.mmd +10 -0
  37. package/docs/query/diagrams/how-it-works-2.svg +2 -0
  38. package/docs/query/diagrams/how-it-works-3.excalidraw +665 -0
  39. package/docs/query/diagrams/how-it-works-3.mmd +6 -0
  40. package/docs/query/diagrams/how-it-works-3.svg +2 -0
  41. package/docs/query/diagrams/how-it-works-4.excalidraw +881 -0
  42. package/docs/query/diagrams/how-it-works-4.mmd +8 -0
  43. package/docs/query/diagrams/how-it-works-4.svg +2 -0
  44. package/docs/query/diagrams/how-it-works-5.excalidraw +881 -0
  45. package/docs/query/diagrams/how-it-works-5.mmd +8 -0
  46. package/docs/query/diagrams/how-it-works-5.svg +2 -0
  47. package/docs/query/diagrams/how-it-works.excalidraw +665 -0
  48. package/docs/query/diagrams/how-it-works.mmd +6 -0
  49. package/docs/query/diagrams/how-it-works.svg +2 -0
  50. package/docs/query/read.md +4 -18
  51. package/docs/query/update.md +2 -10
  52. package/docs/query-dsl.md +1 -1
  53. package/docs/quick-start.md +1 -1
  54. package/docs/retold-catalog.json +1 -1
  55. package/docs/retold-keyword-index.json +1 -1
  56. package/docs/schema/README.md +2 -7
  57. package/docs/schema/diagrams/overview.excalidraw +834 -0
  58. package/docs/schema/diagrams/overview.mmd +5 -0
  59. package/docs/schema/diagrams/overview.svg +2 -0
  60. package/package.json +13 -6
  61. package/scripts/bookstore-seed.js +136 -1
  62. package/scripts/meadow-test-cleanup.sh +1 -0
  63. package/scripts/oracle-test-db.sh +128 -0
  64. package/source/providers/Meadow-Provider-MeadowEndpoints.js +36 -7
  65. package/source/providers/Meadow-Provider-Oracle.js +5 -1
  66. package/test/Meadow-Provider-MeadowEndpoints-Session_tests.js +123 -0
  67. package/test/Meadow-Provider-Oracle_tests.js +877 -0
@@ -0,0 +1,2 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 847 223" width="847" height="223"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bXW/bNlx1MDAxNH3PryC8l21IXFxR4ofUt8S111x1MDAwMm3XNl33MPSBsWibXGItaVx1MDAxMp3EXHUwMDBi+t9HKrYpW1x1MDAwZSzZTis0aoFcIuKXqHvP0eE9Ue9PXHUwMDAw6Kh5wjsvQYffXHKZXHUwMDE0YcpuO6em/YanmYgj3eXm11k8S4f5yIlSyctcdTAwMTcvoEu7jv5cdTAwMGJfYoogfJjFJZ/ySGV63D/6XHUwMDFhgPv8X90jQjN3pM6iOORnXHUwMDE0XHUwMDA1+YS8a7VcdTAwMDUpRZJx23Fn7o5Wl3N96Tmry1tcdTAwMTGqiW7yVy1cdTAwMTMuxlx1MDAxM7XWxKKxNIvbaZlK42vei2Wcmpv+0lx1MDAwYojjXHUwMDBl7E2v2PB6nMazKHx8zEhIeanm+co6MjpunY31/15sXHUwMDBldtFGz2Pz9C3Hk4hn2dpu44RccoUyT1x1MDAwZVx1MDAxZNtq9pe8XHTzMH+1u0rZlL8xcY5mUlx1MDAxNlx1MDAxN47CxcJrXHUwMDFkXHUwMDE552awzsWqaSPrxbb3cZTnXHUwMDFmQp+4XHUwMDAxodhuR2SvdOJVvtqIyYzbYJp791x1MDAwYqCwu50lIXuYXHUwMDAyqe8gXHUwMDFjOJB4XHUwMDEwr/qliK43dyzj4fWWu4go5Fx1MDAwNitcdTAwMWTmdPK2b6ePgU9H6MwpQ0/xO7WOO0TXcOfCXHUwMDEy7lxc5JSR51x1MDAxZVx1MDAxOXoqZVGWsFTHby/47Vx1MDAwMT74PcFHXG4wqlx1MDAwMj6H+lx1MDAwMcKe11x1MDAxY/Dl0NFcdTAwMTGFXXAxXHUwMDEzMlx1MDAwND19W1x1MDAwNT7OeDovpCyO1KX4zzyD66y1XHUwMDBl2FRIXHUwMDEzY7y25LlcdTAwMTRjXHUwMDEzio7ko0LqdTyU0G/qVbeKXHUwMDEz2zvU6zFcdTAwMTHxtJyIOFx1MDAxNWNcdTAwMTEx+bnSdtlMxZ949rBhlc54MTL89Vx1MDAxMu2w69pdW1x1MDAxNsJcdTAwMWQs5PLq7OZcZpZpaFx1MDAxNt94/Vs+5TEq03BcdTAwMGJcdGFcdTAwMWRcdTAwMTL653RA3Vx1MDAwM0k4YcPJLOWPq4C3j1xudG1wv4dcdTAwMGVQv1xis11UXGZcdTAwMDKCXHUwMDAzXHUwMDBmelbffjRcdTAwMTMtXHUwMDAwXHUwMDBi6UxiUTyPmD/2J2BxkV+sfv56uns09O3wk41pXHUwMDFkyTLVi6dTofTDfTB7KEVdsVRd6D2LaLzZx6PwkZ581nmaxrdcdTAwMTPOSinW81x1MDAxZe1LYjlcdTAwMWbnKc2jtpuhk71cdTAwMThK7GFiyVBIylx1MDAxNLVcdTAwMThuXHUwMDE5WoOhtU5qVFx1MDAxM5S6iNjwN4eh3lx1MDAxMzHUYm1j+M/G0LyM8olfsYzC62VcdTAwMTSx6TtSXHUwMDE5VYGkpTE/VVx1MDAxOaVzUe8k6zmB51x1MDAxM9qck6xlJ6pSRm1Rh3JcdTAwMTlF18soTEq4I3hcdTAwMGLyapVR8Fx1MDAwMlx1MDAwZVxc71mXUZTUUlx1MDAwNt+BXHUwMDAxQU1ShmVcdTAwMTV1niRyXHUwMDBldGaU3vEpyLhcdTAwMDKhYJJcdTAwMGbVKVx1MDAxOHNd2ehcdTAwMWKCy/7bfu8z6P351/vPv/7+XHUwMDFiuPz4tsGV1uGPdFg1hneR2SiJh92KSrJhyFx1MDAxNSHdOnLHYbNORj0p8Vx0XG5cdTAwMDLk2SD/aDpb9JEqUrJcdTAwMDV7O1x1MDAxZLlgiyNHcVx1MDAxOXmtI1dcdTAwMGZ8LvbqgFx1MDAwZlx1MDAxM5+6jovcxmBvKSVuXHUwMDE39O/4cKbfrjeCgVx1MDAwZml8I0KeNlgpdu74MCGglWw5r8zFnUU/3GKPt77csdSgcEyrolx1MDAwNlxiQs9ccmDQRDUolKutMbdcbkRtY24vjnqtM/eEXHUwMDFjtYeTKlx1MDAxYyWIXHUwMDA2XHUwMDE4QtxE8zx4XCKOPi9rXHUwMDBlYbKfNVx1MDAwN73Wmzs2PVx1MDAxMa4noZDoklxuY9hEXHQ9r1JQbVx1MDAxMYid3lx1MDAxY3S3mHPOlmNcXGvO1S3n64mDj3xcdTAwMWO4XHUwMDEwNkdcdTAwMWOWJdWnWVx1MDAwNP41X1xuXHUwMDAwNtY1TaaAvlx1MDAwNbtieijIX64g4ekoTqdMP1xuUGLa6HLroKc5rFx1MDAxNLuo4slcdTAwMTFaVUI2PTnaenLHJrFORj1cdEGBXHUwMDE3eM2swnpVJFx1MDAwNO3hyUHSmnJPgj5Ma0mIXHUwMDE2XHUwMDBmXHJcdTAwMTSEaXPQt5RcdTAwMTCvXHUwMDBivphcdTAwMGaNzS89WFx1MDAxNFx1MDAxYZNL54k3WCZ27vgwKXhVyZXD+1T8Wyzy1pU71q/7UT090NzBXHL9aLrfmnLHMOX2oajrtKbcXHUwMDEzUrSWaGKKPI+SRlJ08ERcdTAwMTR9Xp5cXODt6cm5TuvJXHUwMDFkm506XHUwMDE5tVx1MDAwNDQw/+1cYsJGenJ/VCmotujDbk8uKHtylKIy9FpPrqY2ePU8OYxcdHRcdTAwMTF1m/eZw1x1MDAxN56K0Vx1MDAxY6Q8m0lcdTAwMDVEXHUwMDA2mJ4+veLpKZDxXHUwMDE43LI00q9dIEZcdTAwMGKvi99ccnVcYnhcYtREz5nEMmxw7XXMhzusTHu9oPjJQlx1MDAxNDssSS6VTqbufSC8XHUwMDA2qFxiN6L30KZ4YiOXN73TctSP2JXcTGznRvDbiy1aMLhcdTAwMTjQ/vKkvsDEO1x1MDAxZFx1MDAxNHHJzaeEXHUwMDFhq1x1MDAwNmr3Zn/5a8iQlS+avv1cdTAwMGbwSVxm/yJ9<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"filetree","mermaid":"1. Build Count Query\n └── Apply filters, set dialect, generate SELECT COUNT(*) SQL\n2. Execute via Provider\n └── Run query against database, start performance timer\n3. Validate and Profile\n └── Verify result is a number, log warning if query exceeded threshold\n","style":"notebook"}]]></pict-renderer-graph:source></metadata><defs><style class="style-fonts">
2
+ @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,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); }</style></defs><g stroke-linecap="round" transform="translate(10 19) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(33 10) rotate(0 120 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-accent, #C9602F)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">1. Build Count Query</text></g><g stroke-linecap="round"><g transform="translate(14 40) rotate(0 0.03810954708444747 9)"><path d="M0 0 C0.18 3.64, 0.25 7.09, 0 18 M0 0 C-0.09 3.6, -0.14 7.8, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 58) rotate(0 8 -0.11199353422973246)"><path d="M0 0 C3.22 -0.22, 6.29 -0.37, 16 0 M0 0 C4.69 -0.17, 9.09 0.03, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 54) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 45) rotate(0 329 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Apply filters, set dialect, generate SELECT COUNT(*) SQL</text></g><g stroke-linecap="round" transform="translate(10 89) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(33 80) rotate(0 137.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-accent, #C9602F)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">2. Execute via Provider</text></g><g stroke-linecap="round"><g transform="translate(14 110) rotate(0 0.022107669285126974 9)"><path d="M0 0 C-0.09 3.36, 0.18 7.2, 0 18 M0 0 C0.2 6.1, -0.11 12.37, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 128) rotate(0 8 0.02390454490115701)"><path d="M0 0 C2.95 0.33, 6.18 -0.24, 16 0 M0 0 C3.55 -0.14, 7.14 0.07, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 124) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 115) rotate(0 300 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Run query against database, start performance timer</text></g><g stroke-linecap="round" transform="translate(10 159) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(33 150) rotate(0 137.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-accent, #C9602F)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">3. Validate and Profile</text></g><g stroke-linecap="round"><g transform="translate(14 180) rotate(0 -0.006576069867708867 9)"><path d="M0 0 C-0.13 3.99, -0.08 6.9, 0 18 M0 0 C0.18 5.44, -0.07 11.1, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 198) rotate(0 8 0.0513613614651689)"><path d="M0 0 C2.88 0.1, 6.76 0.26, 16 0 M0 0 C6.09 -0.03, 12.25 -0.06, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 194) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 185) rotate(0 387 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Verify result is a number, log warning if query exceeded threshold</text></g></svg>
@@ -76,14 +76,8 @@ meadow.doRead(tmpQuery,
76
76
 
77
77
  ### How It Works
78
78
 
79
- ```
80
- 1. Build Read Query
81
- └── Apply filters, set dialect, generate SELECT SQL
82
- 2. Execute via Provider
83
- └── Run query against database
84
- 3. Marshal Record
85
- └── Convert DB row to plain JavaScript object using schema defaults
86
- ```
79
+ <!-- bespoke diagram: edit diagrams/how-it-works-3.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/query -->
80
+ ![How It Works](diagrams/how-it-works-3.svg)
87
81
 
88
82
  The read operation returns only the first matching record. If no record matches, the callback receives `undefined` as the record parameter (not an error).
89
83
 
@@ -223,16 +217,8 @@ meadow.doReads(tmpQuery,
223
217
 
224
218
  ### How It Works
225
219
 
226
- ```
227
- 1. Build Read Query
228
- └── Apply filters, pagination, sorting, set dialect, generate SELECT SQL
229
- 2. Execute via Provider
230
- └── Run query against database, start performance timer
231
- 3. Marshal Each Record
232
- └── Convert each DB row to plain JavaScript object
233
- 4. Performance Check
234
- └── Log warning if query exceeded threshold (default 200ms)
235
- ```
220
+ <!-- bespoke diagram: edit diagrams/how-it-works-4.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/query -->
221
+ ![How It Works](diagrams/how-it-works-4.svg)
236
222
 
237
223
  ---
238
224
 
@@ -50,16 +50,8 @@ meadow.doUpdate(tmpQuery,
50
50
 
51
51
  The update operation follows a multi-step waterfall:
52
52
 
53
- ```
54
- 1. Validate and Prepare
55
- └── Verify record has default identifier, set user ID, add filters
56
- 2. Execute UPDATE
57
- └── Run the UPDATE query via provider
58
- 3. Read Back Record
59
- └── Fetch the updated record using the same filter
60
- 4. Marshal to Object
61
- └── Convert DB result to a plain JavaScript object
62
- ```
53
+ <!-- bespoke diagram: edit diagrams/how-it-works-5.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/query -->
54
+ ![How It Works](diagrams/how-it-works-5.svg)
63
55
 
64
56
  ## Record Identification
65
57
 
package/docs/query-dsl.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Query DSL
2
2
 
3
- Meadow uses [FoxHound](https://github.com/fable-retold/foxhound) as its query DSL. FoxHound provides a fluent, chainable API for building database queries without writing raw SQL. Meadow wraps FoxHound and manages query lifecycle, cloning, and schema injection.
3
+ Meadow uses [FoxHound](https://fable-retold.github.io/foxhound/) as its query DSL. FoxHound provides a fluent, chainable API for building database queries without writing raw SQL. Meadow wraps FoxHound and manages query lifecycle, cloning, and schema injection.
4
4
 
5
5
  ## Getting a Query
6
6
 
@@ -4,7 +4,7 @@ This guide walks you through installing Meadow, connecting to a database, and pe
4
4
 
5
5
  ## Installation
6
6
 
7
- Meadow requires [Fable](https://github.com/fable-retold/fable) as its runtime container and a connection module for your chosen database. Install all three:
7
+ Meadow requires [Fable](https://fable-retold.github.io/fable/) as its runtime container and a connection module for your chosen database. Install all three:
8
8
 
9
9
  ```bash
10
10
  npm install meadow fable meadow-connection-mysql
@@ -1,5 +1,5 @@
1
1
  {
2
- "Generated": "2026-05-26T21:12:26.129Z",
2
+ "Generated": "2026-06-01T03:43:16.823Z",
3
3
  "Mode": "module",
4
4
  "GitHubOrg": "fable-retold",
5
5
  "DefaultBranch": "master",
@@ -1,5 +1,5 @@
1
1
  {
2
- "Generated": "2026-05-26T21:12:26.307Z",
2
+ "Generated": "2026-06-01T03:43:17.088Z",
3
3
  "Mode": "module",
4
4
  "DocumentCount": 50,
5
5
  "LunrIndex": {
@@ -8,13 +8,8 @@ Meadow's schema system is the foundation of every data entity. It defines column
8
8
 
9
9
  A Meadow schema consists of four complementary parts:
10
10
 
11
- ```
12
- Schema Definition
13
- ├── Column Schema (array) -> Defines columns, types, and sizes
14
- ├── JSON Schema (object) -> Validates objects against JSON Schema v4
15
- ├── Default Object (object) -> Template merged with new records on create
16
- └── Authorizer (object) -> Role-based access control per operation
17
- ```
11
+ <!-- bespoke diagram: edit diagrams/overview.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/schema -->
12
+ ![Overview](diagrams/overview.svg)
18
13
 
19
14
  Each part is optional and can be set independently, but together they provide a complete data model definition.
20
15