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,8 @@
1
+ Meadow (Data Access Layer)
2
+ └── Provider Interface
3
+ ├── MySQL -> mysql2 connection pool, named placeholders
4
+ ├── MSSQL -> mssql prepared statements, SCOPE_IDENTITY()
5
+ ├── SQLite -> Lightweight embedded SQL
6
+ ├── ALASQL -> In-memory JavaScript SQL engine (browser/Node)
7
+ ├── MeadowEndpoints -> HTTP proxy to remote Meadow REST API
8
+ └── None -> No-op stub for testing
@@ -0,0 +1,2 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1230 293" width="1230" height="293"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dXW/bOFx1MDAxNn3vr1x1MDAxMDwvXSBuSUpcdTAwMTTJPlxmkKTJNrNJJq2zOztYXGZcdTAwMTaKxcRCZUkj0Um9xfz3oZTElC1lLcpKyu2yKYKY1MdcdTAwMTV5j+49h1fy11eOM1x1MDAxMsuMj945I/5lXHUwMDFhxFGYXHUwMDA3d6O9sv2W50WUJrJcdTAwMGJVn4t0kU+rLWdCZO/evoWIvFx1MDAwMfJcdTAwMDe+w8SD8H4vXHUwMDFl8zlPRCG3+5f87Dhfq9+yJ1xuy32vxThJQz7GnlftUHWtTIjjKCu46vhSnt1bfVxcyo8uWH28i0Ixk0101TLj0c1MrDVcdTAwMDXJTVxcXHUwMDFlXFztVog8/cxcdTAwMGbTOM3Lk/5wyHyAjtVJr4Lp55s8XSTh09tcXEdxPFx1MDAxMcvqyHJk5LiNNo7/y4Nx8I230fPUfvKUN7OEXHUwMDE3xZq1aVx1MDAxNkwjUV45XHUwMDA0qrW0LztcdKth/k1ZlVx1MDAwN3N+Uo5zsojj+oGT8OHAa1x1MDAxZFx1MDAwNeflxnIuVk1cdTAwMWKzXm87T5Nq/qFLoetSXG7UXHUwMDE2UfFeTryojnZcdTAwMWTEXHUwMDA1V4NZnvuo5lx1MDAxNMraRVx1MDAxNlx1MDAwNve7QEKBh1x1MDAxOYA+ZHDVXHUwMDFmR8nnTYvjdPq55SxRXHUwMDEy8tJXRlx1MDAwMVx1MDAxOFVtf+w95XxyhMag6XqCf1x1MDAxMet+55E1v0Ow4XcuXHUwMDA0Tc9DXHUwMDAzu57Ig6TIglxcjl8v9+vhfPAlnc/zsKbzYYxKZzHG+SrXkSN6xoMwvXNev1x1MDAwZkTg7E+n8pqd02DJ87/UJi5NxCT6T3klXGKstVx1MDAxZVx1MDAwN/MoLkdcdTAwMWGvXHUwMDFkeD+ObspcdTAwMDFcdTAwMTnF/LrmXHUwMDAwclREJO/Xq26RZqp3Ko9cdTAwMTdEXHTPm9OR5tFNlFx1MDAwNPGlhtHBQqSfeHFvtshcdTAwMTe8Pkr8w6PnwzdI2a5cdTAwMTBcdLcgksdX49sxbEKyPPhGKFDYqkaqXHTJXHUwMDE2QEJcdTAwMWRA0n1yTNCOgJxcdTAwMDXT2Vwi509HXHUwMDA0t09EeKNcdTAwMDb3XHUwMDA1YMmAr1x1MDAwNUuZXHUwMDAyINdDSO31rWGpPLA2n1lcdTAwMWHVk5Pyn/rLUY5RfVj9/dve9q0hVZu/2thtXHUwMDE0XHUwMDA3hThM5/NIyIu7KG1oXGa7XGJycSBtjpKbzT6ehE/0VHvt53l6N5M4btnvyb4sjZc31ZxWo7ZcdTAwMWSis15cdTAwMTD1WVx1MDAwM6JQuchcbqPKiS1ENSCqMpQuXHUwMDEwhVx1MDAxOHouJb6JXHUwMDEwdZ9cdKLK2TY2/94gWpEqxvyOpFxur5MqXzmuJVVcdTAwMDOhk2lcdTAwMDVQXHUwMDA0iO9cdTAwMTLmMzXI5qDT60KqWsJDk1SRdVKF/YbfIUianqdFquBcdTAwMDE8Ru7/NamiTC80YJ9giohBjP6RVF3k6W1cdTAwMTTy3DlJXHUwMDA0z6+DKTeYTP03Y3cjUbhcdTAwMTOJQl0yNLyeodEmXHUwMDA0W0iUq4yyXHUwMDE5WmdcdTAwMThcIurWnWxcdTAwMWJcZjEglLhQhbZvXHJC5X/+S1AoXHUwMDE3f7/52T2F6lx1MDAwM1BcYpRDWFx1MDAwZTU4QvWkb0QwZpBcdTAwMTgpc1x1MDAxMMuhXHUwMDA24FAucTtyKLrOoeo+Olx1MDAxMInqXHUwMDAw08Y231x1MDAxNYmSk6FcdTAwMDVPzyVcdTAwMDBcdTAwMDNk0OKAgiftQqJaXHUwMDAyRJNEQbDOolhTXHUwMDA391tcdTAwMDKEJVGasYHoxVx1MDAwNkYxcj3smUeizpaTj6dcdTAwMDbzplxy+3ajSmxcdTAwMGLOpnPRXHJmhKhBr2DWzMM81IYz5Vx1MDAwMC+Uif2v40xrXHUwMDA1XHUwMDE4XHUwMDAx5lx1MDAxMowkOIzD2fhHZ74sfo+RI50/4VMhzXayNI33nPLuXHUwMDFlOllcdTAwMWNM+SyNQ3lJrXisJfbfXHUwMDEwjz2vYzfc7neSOFqSs+1cZqqldsNqXHUwMDFjQ6FcdTAwMTdp6dxcdTAwMWWlXHUwMDFlpp6RXCLHgVx1MDAxNTmGXHUwMDEwOXpB1LVcdTAwMGLFz1xiUd2FYlx1MDAxN7rAzPq+QytyXGYhcsCuXHUwMDBixZtcIoc7+EqxXHUwMDE1OaBWXHUwMDA0JZRAalwiNN93XHUwMDExOFqCw3aBXHUwMDAzouZcIpVVOFx1MDAwNlxiXGZQLzB4XGZQXHUwMDBmuMBcdTAwMWP1e6VwTFxmVzgmXHUwMDAzKlx1MDAxY0dcdTAwMWRcdTAwMTSOTjjbVDggamZhXu2ObyWO3kCjdZ/aKnFcdTAwMTBKXHUwMDExMahcdTAwMTSoLnBcdTAwMTTF77GT5bycrtCRWYu4P/meMzn8+eLo3yfvj84vTy5/fd1e9m6OwtHnQnZcdTAwMDPucSeJo+XBqO38qaWSykpcdTAwMWNDlfJRvTDpXHUwMDAzTFxi9aGJq1B/tVx1MDAxYcdcdTAwMTBcdTAwMWFHL4xcdTAwMTJbyPGMXHUwMDE41YqwklF4XHUwMDFlQ65BMVZh9IPVOFx1MDAwNtA4JIkkTZR2XHUwMDEyOYit5Fx1MDAxOFx1MDAxYZ/lbOhcdTAwMDDUpVx1MDAxZYU+wSauXHUwMDEznHRcdTAwMTE6WlwiRFx1MDAwN6HDb65UkVx1MDAxNtezQodmdCB60YFcdTAwMDHX81x1MDAwMTFIZntkYJOPp5EwuVx1MDAwNn7TwN1cdTAwMTjTT1x1MDAxZKSOTkhrSFx1MDAxZH4zXHUwMDE5Q1jJXHUwMDFmVuroXHI1VneqrVCj8iaPKDKwamr8o3NaOsFd5VxuXHUwMDBln1/xMOSh85TSaIyysd3q3UD5t04yXHUwMDA27kORWkpcdTAwMTmtjDFcdTAwMTAyfV9rncmlXHUwMDA0Mpe6JjKkmitbXHUwMDE1YzVcdTAwMTDaKkZcdTAwMWaIXCJgKzWeXHUwMDExolokyacu9jE2kiSdWVx1MDAxMWNcdTAwMDBcdTAwMTGD4J6FXHUwMDFhXGLYQo2h0UmwXlx1MDAwMFx1MDAwNb5cdTAwMGawb2Sp43lcdTAwMTdcdKMlPHSQMFhzJcpKXHUwMDE4XHUwMDAzhFx1MDAwNqy3XGJFPUZcYlx1MDAwNlx1MDAwNj2p+Mir9k/3zS7W2DRwN7b0c1x1MDAwN1x0o1x1MDAxM9JcdTAwMWFcdTAwMTJcdTAwMDZrqdbwVZZjJYzeUNOr1vCJT1x1MDAxODUoXHUwMDBiqylcdTAwMTgnyXjO52m+dH5cbm6DyTSPMlFqXHUwMDAxXHUwMDBlT6TPc+f1lcxVXG6evz2X6YbhXHUwMDE1XHUwMDFifa9lN/xedFI7WtK07VSqpazRqlx1MDAxZEOVXFxcdTAwMDG9R4dcdTAwMTlEPpA/5sRL5YJcdTAwMWat3DGE3NFcdTAwMGKjni3aeEaMaj1hzVxcwlx1MDAwMCDQREXyk5U7XHUwMDA2kDtcdTAwMTDr+fJccuTZko3B0cn0XCIoxohBz6CFPIXOSVx1MDAxN7mjJTxslzuQ2/LyXHLPPpuye8FcdTAwMTDT/FJcdTAwMDLpfr78b477rb9cdTAwMTf+KFx071x1MDAwM4MjmcyHy8tcdTAwMGIny9MvS0ekTi5JjeDOw6vYP1x1MDAxZE0unf2LXHUwMDEzg1x1MDAwNZKdr2g3RnbZiZG1XHUwMDE0/23P9lrqr+wr5Yf6mlx1MDAxMaoln0NcdTAwMDQxYIhcdTAwMTn0nlx1MDAwZuWCf39cdEb2/b9Svlx1MDAxN0aJXYB+RoxqPupCXHUwMDE48XxqUNRVXHUwMDE4/YelZFx1MDAwM1Ayn/RdgSZ2XHUwMDA1emh4ysnQgSdGwJd4MlLT/KVcdTAwMGIla4lcdTAwMGZcdTAwMWQomd+U1XHbQ8yWkenFXHUwMDA2vSc4oO8xwqBrkCDwyMikiSaX0K+bt1x1MDAxYlf6Z4fV504o21xcfUYtX+1TV+Hs6nNvmGk+q+JBglx1MDAwMTXoScba8vN5Ok4zp1x1MDAxMIsr5zrNXHUwMDFkwVx1MDAwYlHmM23YM2aZeZvNu1x1MDAwMfLXXHUwMDA3QL56SFx1MDAxNEdBlk3Kd1x1MDAwZsjee3hKd4rCjVx1MDAxYtJ9m+CZXHUwMDFhkKrpTKZoR0lwXHUwMDE1b07D6Dbid1x1MDAwNy350fHBMTk6eriah1x1MDAxOTxbxFwimkifqd70WDrG19K+6qZRQos/NP3xJ8xcdTAwMGWFMyJ9<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"filetree","mermaid":"Meadow (Data Access Layer)\n └── Provider Interface\n ├── MySQL -> mysql2 connection pool, named placeholders\n ├── MSSQL -> mssql prepared statements, SCOPE_IDENTITY()\n ├── SQLite -> Lightweight embedded SQL\n ├── ALASQL -> In-memory JavaScript SQL engine (browser/Node)\n ├── MeadowEndpoints -> HTTP proxy to remote Meadow REST API\n └── None -> No-op stub for testing\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 155 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">Meadow (Data Access Layer)</text></g><g stroke-linecap="round"><g transform="translate(14 40) rotate(0 -0.04302587608796138 9)"><path d="M0 0 C-0.34 3.51, 0.03 7.31, 0 18 M0 0 C0.13 4.18, 0 8.18, 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.0818836184524514)"><path d="M0 0 C3.57 -0.34, 6.93 -0.19, 16 0 M0 0 C4.76 0.13, 9.74 -0.09, 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-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(63 45) rotate(0 108.5 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">Provider Interface</text></g><g stroke-linecap="round"><g transform="translate(44 75) rotate(0 -0.04027240753703509 17.5)"><path d="M0 0 C-0.42 7.24, 0.3 14.38, 0 35 M0 0 C-0.19 12.96, -0.22 26.24, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 93) rotate(0 8 -0.027478398072410926)"><path d="M0 0 C3.51 -0.07, 6.28 0.05, 16 0 M0 0 C4.08 -0.08, 7.91 -0.09, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 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-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(93 80) rotate(0 33 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">MySQL</text></g><g transform="translate(757 83) rotate(0 213 11)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">-&gt; mysql2 connection pool, named placeholders</text></g><g stroke-linecap="round"><g transform="translate(44 110) rotate(0 -0.0016392851737023761 17.5)"><path d="M0 0 C-0.11 7, 0.38 14.29, 0 35 M0 0 C-0.21 9.28, -0.19 19.08, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 128) rotate(0 8 -0.05232444269368841)"><path d="M0 0 C2.94 -0.24, 6.32 0.01, 16 0 M0 0 C5.59 -0.1, 11 0, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 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(93 115) rotate(0 33 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">MSSQL</text></g><g transform="translate(757 118) rotate(0 217.5 11)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">-&gt; mssql prepared statements, SCOPE_IDENTITY()</text></g><g stroke-linecap="round"><g transform="translate(44 145) rotate(0 -0.037945226529028986 17.5)"><path d="M0 0 C-0.4 6.99, 0.18 14.32, 0 35 M0 0 C-0.08 8.96, 0.18 18.08, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 163) rotate(0 8 -0.08417045159735892)"><path d="M0 0 C3.47 -0.31, 6.16 -0.13, 16 0 M0 0 C5.44 -0.05, 10.45 -0.13, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 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-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(93 150) rotate(0 39 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">SQLite</text></g><g transform="translate(757 153) rotate(0 129.5 11)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">-&gt; Lightweight embedded SQL</text></g><g stroke-linecap="round"><g transform="translate(44 180) rotate(0 0.10138041437864942 17.5)"><path d="M0 0 C0.26 7.09, 0.28 14.38, 0 35 M0 0 C-0.01 11.98, 0.32 24.48, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 198) rotate(0 8 -0.04003743154872552)"><path d="M0 0 C3.21 -0.18, 6.24 0, 16 0 M0 0 C3.69 -0.09, 6.98 0.02, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 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(93 185) rotate(0 39 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">ALASQL</text></g><g transform="translate(757 188) rotate(0 231.5 11)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">-&gt; In-memory JavaScript SQL engine (browser/Node)</text></g><g stroke-linecap="round"><g transform="translate(44 215) rotate(0 -0.15483608302229968 17.5)"><path d="M0 0 C-0.54 6.95, -0.27 14.09, 0 35 M0 0 C-0.01 7.6, -0.05 14.94, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 233) rotate(0 8 -0.07241883756432799)"><path d="M0 0 C3.39 -0.29, 6.58 -0.16, 16 0 M0 0 C4.39 0.11, 9.26 -0.19, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 229) 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(93 220) rotate(0 323 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">MeadowEndpoints -&gt; HTTP proxy to remote Meadow REST API</text></g><g stroke-linecap="round"><g transform="translate(44 250) rotate(0 -0.041632724592584935 9)"><path d="M0 0 C0.11 3.39, -0.28 7.21, 0 18 M0 0 C-0.01 7.02, -0.17 13.98, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 268) rotate(0 8 0.009902312953272485)"><path d="M0 0 C3.08 0.32, 6.55 -0.28, 16 0 M0 0 C4 0.1, 8.33 -0.08, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 264) 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(93 255) rotate(0 27.5 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">None</text></g><g transform="translate(757 258) rotate(0 120 11)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">-&gt; No-op stub for testing</text></g></svg>