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.
- package/README.md +2 -3
- package/docs/architecture.md +10 -99
- package/docs/diagrams/create-waterfall.excalidraw +2016 -0
- package/docs/diagrams/create-waterfall.mmd +19 -0
- package/docs/diagrams/create-waterfall.svg +2 -0
- package/docs/diagrams/crud-behavior-flow.excalidraw +1305 -0
- package/docs/diagrams/crud-behavior-flow.mmd +13 -0
- package/docs/diagrams/crud-behavior-flow.svg +2 -0
- package/docs/diagrams/module-hierarchy.excalidraw +1582 -0
- package/docs/diagrams/module-hierarchy.mmd +15 -0
- package/docs/diagrams/module-hierarchy.svg +2 -0
- package/docs/diagrams/query-lifecycle.excalidraw +1808 -0
- package/docs/diagrams/query-lifecycle.mmd +21 -0
- package/docs/diagrams/query-lifecycle.svg +2 -0
- package/docs/diagrams/schema-system.excalidraw +2034 -0
- package/docs/diagrams/schema-system.mmd +21 -0
- package/docs/diagrams/schema-system.svg +2 -0
- package/docs/providers/README.md +6 -14
- package/docs/providers/diagrams/overview.excalidraw +1324 -0
- package/docs/providers/diagrams/overview.mmd +8 -0
- package/docs/providers/diagrams/overview.svg +2 -0
- package/docs/providers/diagrams/use-case-unified-client-server-interface.excalidraw +919 -0
- package/docs/providers/diagrams/use-case-unified-client-server-interface.mmd +12 -0
- package/docs/providers/diagrams/use-case-unified-client-server-interface.svg +2 -0
- package/docs/providers/meadow-endpoints.md +5 -17
- package/docs/providers/mongodb.md +2 -2
- package/docs/providers/mssql.md +1 -1
- package/docs/providers/mysql.md +1 -1
- package/docs/providers/postgresql.md +2 -2
- package/docs/providers/rocksdb.md +1 -1
- package/docs/providers/sqlite.md +1 -1
- package/docs/query/README.md +1 -1
- package/docs/query/count.md +2 -8
- package/docs/query/create.md +2 -12
- package/docs/query/diagrams/how-it-works-2.excalidraw +1097 -0
- package/docs/query/diagrams/how-it-works-2.mmd +10 -0
- package/docs/query/diagrams/how-it-works-2.svg +2 -0
- package/docs/query/diagrams/how-it-works-3.excalidraw +665 -0
- package/docs/query/diagrams/how-it-works-3.mmd +6 -0
- package/docs/query/diagrams/how-it-works-3.svg +2 -0
- package/docs/query/diagrams/how-it-works-4.excalidraw +881 -0
- package/docs/query/diagrams/how-it-works-4.mmd +8 -0
- package/docs/query/diagrams/how-it-works-4.svg +2 -0
- package/docs/query/diagrams/how-it-works-5.excalidraw +881 -0
- package/docs/query/diagrams/how-it-works-5.mmd +8 -0
- package/docs/query/diagrams/how-it-works-5.svg +2 -0
- package/docs/query/diagrams/how-it-works.excalidraw +665 -0
- package/docs/query/diagrams/how-it-works.mmd +6 -0
- package/docs/query/diagrams/how-it-works.svg +2 -0
- package/docs/query/read.md +4 -18
- package/docs/query/update.md +2 -10
- package/docs/query-dsl.md +1 -1
- package/docs/quick-start.md +1 -1
- package/docs/retold-catalog.json +1 -1
- package/docs/retold-keyword-index.json +1 -1
- package/docs/schema/README.md +2 -7
- package/docs/schema/diagrams/overview.excalidraw +834 -0
- package/docs/schema/diagrams/overview.mmd +5 -0
- package/docs/schema/diagrams/overview.svg +2 -0
- package/package.json +13 -6
- package/scripts/bookstore-seed.js +136 -1
- package/scripts/meadow-test-cleanup.sh +1 -0
- package/scripts/oracle-test-db.sh +128 -0
- package/source/providers/Meadow-Provider-MeadowEndpoints.js +36 -7
- package/source/providers/Meadow-Provider-Oracle.js +5 -1
- package/test/Meadow-Provider-MeadowEndpoints-Session_tests.js +123 -0
- package/test/Meadow-Provider-Oracle_tests.js +877 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
graph LR
|
|
2
|
+
subgraph Browser["Browser / Client"]
|
|
3
|
+
AC1["Application Code"]
|
|
4
|
+
ME["Meadow DAL<br/>Provider: MeadowEndpoints"]
|
|
5
|
+
AC1 --- ME
|
|
6
|
+
end
|
|
7
|
+
subgraph Server["Server"]
|
|
8
|
+
AC2["Application Code"]
|
|
9
|
+
MY["Meadow DAL<br/>Provider: MySQL"]
|
|
10
|
+
AC2 --- MY
|
|
11
|
+
end
|
|
12
|
+
ME -- "HTTP / REST" --> MY
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1120 380" width="1120" height="380"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bXW/bOFx1MDAxNn3PrzAyr43K70vmLUmT3Vx1MDAwMbaL2clcdTAwMDCLxWKwUGw10VaxXGZbaZpcdTAwMTn0v++VbItcdTAwMTStiFJcdTAwMWOnLtaKW9iUeMWPc3nOvaL+PFx1MDAxYY2Oi6dZcnw6Ok6+juMsnczjx+N3ZfmXZL5I8ymeYtXvRf4wXHUwMDFmV1feXHUwMDE1xez0/XvKIFwi+EdPhVx1MDAwMWqWtZIsuU+mxVx1MDAwMq/7N/5cdTAwMWWN/qz+xzPppKw7zlx1MDAxZVx1MDAxNkUyP7lO5niDqk51dt2KeTIu4ultlthTX7GcXHUwMDBiWf9+wt9UiPr3Yzop7rBcZiTUZXdJentXlFx1MDAxN1x1MDAxYVu4tHs6XCJ1yaKY55+TizzL5+XNf9JncFx1MDAwNcze+iZcdTAwMWV/vp3nXHUwMDBm00l9TTGPp4tZPMdO2us+pVl2XTxV1nGgcFx1MDAxOI+9e/xz1Ujqlde1JvHiLnGq4V1v76bJYtGolM/icVpUI0BsN8omzn6eVIP+u23UPL5Pfi5HffqQZa7h6WRleD05dlx1MDAwMviq5JttZ5KUNoQydZFcdTAwMDdccrfs7/m0XHUwMDAyiVwiSmlCJa8vSFx1MDAxN1x1MDAxZlx1MDAxMFx1MDAxY0Vl7FOcLVx1MDAxMjvKZYsuXHUwMDFk4Ng+PMwm8bJcblx1MDAwNU2EYEoh2OyUZun0s9/BLFx1MDAxZn9uuUs6nSQllI5jcnzkdPFcdTAwMTmAZvFNkj1cdTAwMGLTXCL5WoRcdTAwMTBq+iGU0Vx1MDAxZlx1MDAwM6BerTfBZ+PEy4CIXHUwMDBiXHUwMDAwUYJyLvdcdTAwMDaJXHUwMDE1eHBEfXB9yqfFdfpH1WrZKL2K79OsXHUwMDFjVdkwcpalt9NcbrTYXtdcdTAwMTKaLVJcXM7rXHUwMDBiinxmz47RYpxOk/nm4Ofz9DadxtlvzzQxfijyX5PFspHF/CFx+5/8tV51I+ZcZnfteLSP453P88fFXHUwMDAwarAzX1x1MDAwZdBcdG1xO6XbiMFW3Gu/23dikI5cdTAwMTP08EdGuFGGK7Y//mhcdTAwMDHK+jPDszDdpFx1MDAwNlx1MDAxZqEt0qVccqFcdTAwMDdiXHUwMDE4RlxmQ4HIiFx1MDAwMq2B7lxyXHUwMDBl17ywgtbo/ehcIkubs7V/XGbxfGO341xu3uWKi7t4lpycXdBcdTAwMTNSXHUwMDFkd3lvulB2vp8qnbrhjIy0OKNUXHUwMDAznJGe0yvGd+mMzCv/rs44gCxcdTAwMTRXLlx1MDAwNEM+qoGgh1x1MDAxYfVcIlx1MDAxZq1bZdtXXHUwMDAzaLmGW1x1MDAwMP3XXHUwMDAyqFx1MDAwMaLKJetcdTAwMTPf3nXZjOfoXG6VzY+Xa1xcknaz1aWO3dW3XHUwMDFks5vocqmOXHUwMDEx6aA2R4s/VVx1MDAwMU4kN/zJVVqW3ORe+dPek1x1MDAxYjiLUp+oR1x0wqXUfP/Y7Ww2y5B5XG5s7ehcIp8krezGSKN0a3a7TydcdTAwMTOXXHRu4kVSslCTSJu018kyPlxyPt+r7WhQhmmwXm0m494sKIhcdTAwMTWh5bi2JCs4aUlWgEXhPrjtj0qDQlx1MDAxM1x1MDAxN6tBb1x1MDAwNqGAMzAvyqbtiLN6cCHa/Pivldn7x32iQlx1MDAxNabCekBmSVx1MDAxZib0PcqQXHUwMDE2Kmz1KWet21x1MDAwN5/aeyo0Tlx1MDAwMN0v4SCV4pTBS5xnp1T4yzz/kk6S+enoY1x1MDAxMk/yx8vpZJan5Z3bOJGqRunrRnx9XGKxM1x1MDAwZezRl+2YXHUwMDEw+lx1MDAwNIRsrV5FfyqUTcdl3K6yh5DwXHJCQj1M2Vx1MDAxMi0lo1rvLCZcXGNcYl4xJmSWXGKni31cIkLdJyZsXHUwMDE5kS4mVM2EJ1x1MDAxM/pcdTAwMTBcdTAwMTXuhlxuXHUwMDE5XGZKpygmgSgpXHUwMDBmQeH2QWFcdTAwMWLTvFVQaHpcdTAwMDSF6+VmrHszoVx1MDAxNlx1MDAxNk2V41KLJOu2h6hwZ1GhXHUwMDE4XHUwMDE2XHUwMDE1MiDagHZi91eOXG5fwFo92HB/o8KzXHUwMDFlUeG65aol2bLJhVx1MDAxYi4leStcdTAwMTdcdTAwMWXCwu25kFxy0pFcXFxiZVx1MDAxNFx1MDAwNoZ7x4VOJPV0/Y+//dixYLNcdTAwMDfb0d55l3t2Z7K8haXho8x7iOHEI7WDOruHrINGWjBcbsRcYk5cdTAwMDT+0cR9tFx1MDAxZvZZdlx0XHUwMDFmQPzfXHUwMDEwYZvPKrrhn52MJ1xmx3/qRYS3XHUwMDEzn12lOFxcPrXfRnbyq1x1MDAxZvX339+1Xm2dutfljEZGMUHL9lPsiXFrn9BcYsGJsbJcdTAwMDAqXHUwMDE5YYSIXHUwMDEynkGbgKAmRFxujYujXHUwMDE2Qr+CTc4jJbikevVptPOFJk3ENUeXM4xcYq6NloNGTsiIXHUwMDAw4Vx1MDAwNFx1MDAwN40zJezUv7xFkkRAha4/MKhBUkWcgeRcdTAwMDCMXHUwMDE5oq1X9KqtXHUwMDEwXGLUXHUwMDEwXHUwMDA1jEquuJTDRkNBNKxcdTAwMDLwiGhisMUob7hcdTAwMWFYWUfYUKFcdTAwMThcdTAwMDNcXDqp1oNqa1x1MDAxMTFtoURcdTAwMDfWNpFhuHxoRlx1MDAxNXDJ+PbzbmSkqJJGXHUwMDEzMFJRMmzeKaFcdTAwMTGXqsaNXHUwMDFjNvF4u4hKY4SknHAqm9Vf1iFKcXY5SC2Bc61cdTAwMDc2iJph1/PnwHPk1UP5vSgu8vv7tMCl+5dy2d3glFwinlx1MDAxN+coXHUwMDE30ultM/C6L2Pv01Kn3KSFXHUwMDEzcKzfVlxiPu6tWPervW9jjY8kIfTdRslGX2y8l0wnW7ez7anvKzezXHUwMDFh0LNSMN0l8Vx1MDAwNrdjJ9xzvrJKspv8sTPauugj59pD0C45p/z0o7N7qNZz2lxuNbsjOFKaOIdcdTAwMWGS1TiIuZGWXHUwMDAzk5FcdTAwMDBCXHUwMDFhuj/JyO8q5kRcdTAwMDRGXHUwMDFiwlx1MDAxNFGcXHUwMDE4rVx1MDAxYdVPSERQ+IJcdTAwMTGMa6U5N5qroEjikVx1MDAwMFx1MDAwNoRxTo2i0jcoQVFOlUY2Zlx1MDAxYcBcdTAwMDRVXHUwMDEzK4mh/jS5XHUwMDE3XHJSJuqDS8JoyKAsVyCQQkhNXHUwMDE11cA9g4wyQpVQxFx1MDAxMJRGQrKgQVx1MDAxZGmDY8c0k6C1p4hJtO4tjjSyf3BcdTAwMDBRXHUwMDE4oVx1MDAxY1Prj6aeOVFKrfXBdZBay91xOEhcdTAwMWFcdTAwMTVcZmeMK/DsyXVfy5lcdTAwMDZcdTAwMTGcXHUwMDEwzSNQgqjqXHUwMDAxt8RcdTAwMDZ69oA4c8x0cD5cZvNcZmhu7Fx1MDAwMTIsR3DOuDTcoN7nKDuEZ89cdTAwMDKYovNrXGJcdTAwMWLUXHUwMDExSmlJ0ZRcdTAwMDJQvIlcdTAwMTBcdTAwMWFRXHUwMDE0vFx1MDAwNlx1MDAwM3CFcCM44WF9olwiXHUwMDAwXHUwMDA3xZ49XHUwMDA3wULgxUF7TEbYa4reXHUwMDAwKLYoXHUwMDE3nkFebTyQUFx1MDAwMZmFxVfps4ZcdClcdTAwMDXVXFw7e1x1MDAxNlb2cFx1MDAxOErsLjvNXHUwMDE5XHUwMDBmXHUwMDFhXHUwMDE0VZC4/nBcIj2D0j1E2F7ps1xmmIHy9T6u/f6irF/Pr1x1MDAwNFx1MDAxYUQwitdcYoeGXHUwMDE44IYr9F3fXFw1sUtcdTAwMTBcdTAwMDNaXHUwMDBlL7p+wOpTetDCZpeetXDkWXpDjdry9GlcdTAwMWY1astDqO5mXCJcZpxDSN5sc/lWqXt0tH/H4vVDWLw+85yjS7tcdTAwMDJtvp3QN1x1MDAxNUmliFx1MDAwZXJ1oFxcZYO2kVx1MDAxOWRto1x1MDAxNDnI1fLwco9cdTAwMDCN6sh7YCgoI1x1MDAwNXCGXHUwMDBiTZBX/LxjMzUjI05Q/ilcdTAwMTDaoIvooFx1MDAxMulOOVwijUqwh1x06ko/3djMXHUwMDFiXHUwMDE5ZESipFx1MDAxNlxcMYqKKWiuM/3ITERX/TRcXFBcdTAwMTlkLC/ziPLXNSdQl1x1MDAxM+ZcdTAwMWPhTGZXLlLivNdcdTAwMWTFeVx1MDAwZvbVy02qXHUwMDA2XHQpgSzkTm3QmpeqXHUwMDA0iHhYdnekK1xyXHUwMDBlT41TXHUwMDFhxmln9lx1MDAxMlx1MDAwNzpCW4qDVoRoxoP98dOZTWBRXHUwMDFjXHUwMDFlXHUwMDA3p1x1MDAxMISCl99sJtdKrSpcdHaSaV3BNahuO3ObyENl7rGE6LLDYe3YmeykgkcuTntoWy/7KZprkECnhfXEYp+3ynxcInhxXHIq53SJ1nAs1MyELlx0OljJmzGv0pFX+c305lx1MDAxYuRcdTAwMWH3QW5y3sze+6eJ6OjAjvXm5aBcdTAwMTdcdTAwMTb+U6RF9qLXXHUwMDE2VNtcdTAwMWJ87a8tXHUwMDFj9mpcdTAwMGXbn1wiXHUwMDA3PetmhIBmUjs7ML634Fxcb1BZbvBcdTAwMWZ9OGvfm/La2zRfd29KW+O325ZyNWjXWH/X3Ng7xtr3UVx1MDAxZnxz+30ow/aOobqSvMzR7t8rRVx1MDAwN99s+OZfVr55tJJNx/Fsdl3goNcqXHUwMDAzgZROvNFZllx1MDAxNcnMjkxV9Fx1MDAxMcXI5TS+yfxcdDj+kiaP55t+89PV+Vx1MDAxNVxcXq56s5q7j1x1MDAwZlmRXiNaxuXG8GqPcNm+av0onSpZXHUwMDE1fftcdTAwMWZcdTAwMWObOMgifQ==<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"flowgraph","mermaid":"graph LR\n subgraph Browser[\"Browser / Client\"]\n AC1[\"Application Code\"]\n ME[\"Meadow DAL<br/>Provider: MeadowEndpoints\"]\n AC1 --- ME\n end\n subgraph Server[\"Server\"]\n AC2[\"Application Code\"]\n MY[\"Meadow DAL<br/>Provider: MySQL\"]\n AC2 --- MY\n end\n ME -- \"HTTP / REST\" --> MY\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,d09GMgABAAAAABLMAA4AAAAAIDwAABJ4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbh0ocNAZgAIEkEQgKrkiiUAs8AAE2AiQDdAQgBYMYByAbFRkjA7WJ1dIn+4sE3hD9UyIhrItWmxARnGsNa9XDipcfjpekzktepgviTTwPfwz/vLtMrdLpqMszhCc6kREOZAOvn2+Itnkf/NOl0kYhRk6htQHFSrRnrlh3u6o0/uf285Yd0WrJtU3ujkclhE5K08h8Oq2XWuldN2BZufVBYidZQO8BkeGgyvVX9HI7agcEjh0QmJLs3wAtAMxoPhT1738A//5+/X6/vF9JYt2kESpeOiXd5+ctZhe8uTSxzpB+aTSG5JLUMg1Pidjp1EYKPMtZZ5VroGobYWY3eTaBAugknQOCksLDQYB2Wnroylp6DhBfetqbgPi2vboRiJ8qujUDMRTgv9Ht8bq9GRDlANAIN/BhLRGbiOC0MgflLQEmjmBmb0LBSPujtJ//GQ/DLnWkf3tE/oHfan2TOV298Wh8DuO+ajWfOszIA2ZaqKaqe0FsBMKPTkJBQ8fEwsbBwycgJtFxwCUz2dUUuE3NaOFJGEpAhBuxEKEISOioGCbIUSVGIA5CoNwUCaWeDmSQQCcF0QDqZsa30AgrRs65VBC1xxvUoM71hFRdboWgeF+RjnrLDZfDWJ+Jq2liVVOhtw2IbBhKasxXHKajS8mbgP4la+22ySkTERAzOm/AdjmbckLnF8xcrLtybMsEB4GMp6HHf4IQdSs9RgF42YmfD5M3+odAQ4TBnCEIQk3EKDFqXi5UHIsMDtkqVKvXpFU3PXnq/61RBunszqrIZu16fJ//H7rslCP2OXRgzcRQLpNKrAbBRKX+B8FDJs3PPQu0vAJt/Q+feQzrgfrQdVsFvZ4Kj026clzN5bp4Rj4n1eTdEe+OlUeHO8K5kQl0f65YqjaJvAMYkfoiW1aKzmvSee5u/O8zN15bxDF2/xjGtfx4KAGfyFmZyUZwYTLd5CN0sRIfztjp62wAaNfwBn/yEV55T9j+q7QLaEApoOQfgvgJxFdRp8wtlMjpxCLIopcuAfoIELN3sn2zPCn0xuam2+mjcQ37w1KDLgVgeUkazPZTxhhkFNC3KaDKYIthAOjf/m6+m+cYv2m2CpVgIgFlC6RFCpRlI7RSy23/i2/sXqtTFLoicNUihHDOUWaaHYHVMlW3lZpT6bJsUApVpKYXZEMqz+/mhxtuwexOUSXnqIIeUB9R99MU3y3fO2ytF+fvUGGBFB8eFEcKaR3W67afYlvEOHeYw+B1MzXT2kGII9R7I0J8lAGylQzoBEgoMOjrC+t0GzIPDIYLJieioyLftWsprE1eESKIr0eFafb0ET7GCBXFejm2fQhTqP5NNVJdGgzIj+5dNbiVyXOff97WElexMMu94sqHBS0GQ1VSUE5Y8gBoZoiCZJ6X24yTaNfkPbNXEXmOt7G/mz/E4u6uLep1+IAPatAE8SugSKncA0AGuW3nWtfURttwvxRO0x3rjmwkElQvlhq72s99nGtbN1kIKNiS0/TWLUC30AIpgLwVs+xGZeWkVl+7nQ5Hfbxr+45sLklAg0XA6qnt1/SdiZSlkKWMGUYw/Q/NULa+gqKizItyB0VWcEGCwbmDFl+/iM7I9FUJ3JBQDrIzkTv+TOgN7cZwu7YP06HDGIRNDwqNN9s8HmM/hZANIVMw9BwFdh2yQfPAPKNBq60Mjdzoqqgrm2F2aqtXc/KQBWDy9p6c3jp/a0gBDcLS0nFGaQAu/ZXrmsjvXKHovNKhGdopqiSjQNPzpRNb/4/q7zB6sQm3skdAXkGVHzxAo6LS00dfSlQ2v9u1/RkFlQay5IVrUEV5IwV/+3ifwhEo1KER77nx0XyOXYdCxHizVbx2LDJL3/qbl6BBp+RWfSUzdGBGY7w7x+b2v/CVrl0tRwUquDOaj96M3/N3bTHOD5+v9TC9sq/eYWFgTKoks3iSgEQCOTTCfQUV/jXVlefuISnmOY/o+B3c11ffE/iq7TdZygBMIWsyBdcgpBQk5zljK4Silsxafu3h/man0/+in/ujybHB8eErZIvsoOK03u7f/Oiqruf7w7kwLAWAJBz1EN8BW8+Oed0Qht+kqtZmQ8N7e6tJ5jmKCtfUurmtHFxpV8Rq3MexNuMa24fh6w3vYZUbThi8GwVDQC1SvdK6NpSPW+xetn2sRTOr+FxqRX+mhXN4O399WX6eWOTbamAsq6+2v6vlX+WOcenctJxJFkptxlLft/OrbvxtlewNZkt/0ewBynpufDjDBMMTQvYB64Lfk/kR4kWBIjeuM8dbDJeh1w2M99BufqwL9KIVc1VXVvQb8aHmPAabzFiS0gjV4qLDAF3YoQEVfd4rX/PIIkCmVJaC6odmrHGnzM3OGPpOaHhdQ2xsYDEe4/FbIl1jjjJNb9EIAU2ad34H60favIMP24e2rz5RU5nSreRO29e6wqOIj1BhEZAAOgB7JRosGmwNpn9QyjlHBTtFR7/xlS+/y/XvqZ6nXfnlVvGh5UlDIiwN/vJPao7ufL7XCN/Zr6d/bb539au7y6HhgYFFMmRtzc5OAE26LjkspAF9AnVXyq0encyNayKFjBlesy1ifHvLtrfTu7ZfEzHKtHFFPopQ772ftPzUv6fXtzhLbtGtJAE0gPtqThmvcat4d2dhZ55f7LnFID4SoQSQLaROjngfv7f7FTbH9aHDFJzJ7+b1+vbUACRbEpBzQJf6ecdZWhMIzD9NPCOY4yyByeDR13SrSTga3ThRtKNPe+7yCcc1cdlRcMJwCBkWV8WGGMc4rmweFTPMfi/tqadkDygYUNpESJMkexl4JlpZKZc7kRlW8o54UesNoWGErzJbjDcwjjfNuq98FuJ6cM1hTm18U7virPhIcCrxcOoX9k8Ve9aTlqwJWjfNjXasK9cyi8wftKLOqnb7tg+HJTq71Awvz4h8HG/gWLsiFgLntj83/LhBA4NK0JWnKKVBKZg+nm1eKTUEStaOQBeUToLFZjB2f4FXJCu5/dOU9RTHj2uj1HkBcd2to5sOxxRe1OqIoA9x8ExRyZuB8Uzaqyo8ELJ4YPowb93GgHSJ9wqGZitpLQkaZLsxUM8HonDattfdUqidUvJ0FzTVPJI/i0uhPsZ0u93uFcyVSo79cmnet+6LvswPtph+couhwVBL60buHoDXM5TeGATBleJZdJg96cgINUSBVj3ThmewUgjEHM7sU8uwr1irzNhxfatbGwLyQn7KTXe0Ba3zgAkY9elmDLcQ9PLuremnDyTwSWM9yGH6QQoyDljRZrcP7woZYRMfTDpqCiaEw/cMaZBd107zFHJsPl+bcjDzkJRigzdTwzKyd8fkzNnZajYS7DRm6aDJfu9UOh7TVMP19LQhCtIcEXN2jJTrRvqkfh8ET3FqjzpFSSN41u5Fcb+SupEoyfBNMA1KGObXudPoms+rL5psLDRIaztkGNyDicKP5ZYfzQN8+53Mgg+I60wsJoAub7XU5Ywp6WSRi9+8/2YpnJlpjzA0S6cAxIlNRTh0q8sj6uUYmCYEKfKPxF3D3Vc2wxvtbc4tWzACq/uvwlqyFSYLiIdtpKMQUKYL7L6bY+9KKEt+mGQjNfSRDpfVaVXqd5XdtD24dLP82CODj5s1lqHqaX3bZwG5JlHHtrpwgiMsNa9qeFGzFDdH7YUMiVAhauSkNKdqSNl7wUIq9z+Kpdi4LngB0UTEC1xl4Y8IerOGtJ1p6+S9XLl1yuH1w8UL1VHTZ8w8T0iKPrE4TL2pBbUKlpr4W/9W47WtNf5BSKnUzNhI3njQdORcbdQtZ3/0endBlkTtVO4clIxeqWjTwz52jOnujhEykRzGlReJvVdMHM/oLD9VsGRgVwf4wSQNp2+qJk5KRkPepmhVhZG9eKlhgaVBRKwMejkjmMJZQktd/ib/i3+JlEMqaH6lkkOFWN5C5xhnP8CS1PQnIY0h4HRy5+MzqfbvMas5FbOC8dxuAPdHBpoFlrLmjnyFISo0DiIxciX2hEUKK9gtP4Vc05XzBk33LMpMU2YTeeZiE2fK/scU/Kpt5HG4r0qd+ARpX+2TVzQDy+e38gHaPmkRc6llB0kPgU2D8cboBXyUYIsHNZySYMhILkyVjE9/Bmf77fLExESKadtcc13YXKwrp1I1IdBaytuSBvKsPx6fErpbjKpx4cL0eAGQ0bCktEkw2DSS3cF6rP96pIdgGKAAqyNhA0s1OXQJangYqXwAqOJKmCwBb8ZKl4foTIcOPAEIKvvS6aL7q1dsPMEwvA2pC8bkNXXElOj6zW51AV8Uuz1HN9TPxU/uE15fTlleqTZk/0A4QY6jr9mf7Z2fkmtYbRUqhD/dd0Mo2/ptcmVk3RnT/G3KE36l8aUvTtG9ARagG75SL1rlqs+rBuai7GgggjvgTMWK1UVKZshDzYwwaPUXjR5KJb2aOCPbEubq6tsngXF93sY2uxbqg+x8MGagDbRP/mU8NK1yuJ5CmDgcLobsnDrt+r4R2zKkZOzQnDSfjomRSZnDSr8aErpWg8PYY4NQM67hRpaLFwAFWHYFuRWTkhlZOKt+dszZ4qLxgkyBokg4jp6F/gaEwMqV1iOqiFV8g6+pLcdYwroO9a1ORnrhEalo+JT8La1ovRgU0w6KHZ+qmLd/YdbmCYP5Zb4v9CfkNZ1J6hMHkUtfYy9Neznpo1/EHtgYv/Sz7ncGtLmR0B6BC3uVgOXssFO31v/EHF1wUtaQ3pnUh6l+iQiOeHBMy3dnspmlcMLOD07JjAhgV1MbVT4ZKn1FaJ5Uok/1fh2Jc7u+EzU3M2wpR05ELG3dJhd8zwvqMo23CLaRcqrDgW/uUVVNQ6IjXfip6mCbI0mDOgoQPi+86d4p+orK9CGcQSdum9rVCu6j4Xa+Iws1+puVha96Ejq+GshecPaT8PFtPO4ZXe0iMOHQo59eMvLywRUclt05TT9S11vpgWJZeawRwrNLAc1LgtvxfFzs9VJz7AKva8vlYKIiFIJD/RvAII7gxD2on5CGkyknxTDlfJCHL/WBBxAQG5kWTNuFT0uBEItswxJa7xNgC0wWsWtq2YZizfpkgQIjyg3RkU5OSGbbIvNenxTKNC9CBkJimj7IjjQE0qMh0+arytwW5S29fEnDxMbN3jYX24EcgsSvZHXgDhpQvz/lN1rfEFC/3uA3Myl1ZNKJcOu6pK79pF+rW7WyNL9cfkqMlWJYWAspckKCfI7tZuVMMhN9AykQueuHzY1gbntr663cfSxfG3kFEdSIIWcxyTzgwymOhYZP6e6tTf5L7f+uOVFxyxkxDyXBw+V4Q5x78qyo6fsTJLyUZGvOevU3ShpjQT96bzBBOYVu5hI2KaiCcAUNWrJQsGxs0eAyLoEkHpfMpa609RtF5qhHg3Y+bWxs/LKHnV3oSArCh83AYOFcVcfoXnst3aSnSE9PiewRPD/D6BIbIq2VlyRY1+fFqmwCLEc+hm0x90jmOYcRHB+2dv99/cqw7++3uD7mRxtLH+GsNnn//oAb01mkvrRdTemj4Sbnmg7fIHltqrz9wBTLyacejKndWcdfGuKLtNaow25tMnQuWwMGVXy3MjcJSqyMGHLWBvG/6gjtZ/sWw1BLz/q+NrQ7d/3BzrsOfXmf6Ax7m6w/uIezjuw6FVMism/oKfAaBBSQHKjsX4EOMYkaR4zYOf/z4z8KYd7CeeJrRVeeZWMzN8nQg+kM/EGMoZc5x1IyNvquYTnLLTdpDRgOjtMRGeWy8WHdjGEt4fHQXBjT0FiBClbeQLwHK6fEq5+VMC3AlJdmaK95pEFSTPI0LJDtdSykem5Y9ubYJ9AC18cK/cT1traIVIUx0Xr+Ia+nxBlXB+51yKap5dTS2PFru0y+dMMaKxdVXZUUNRkqyMmCgX6s7wNtWOAHpJweZLvYe9aD63l/YrNqUXPCuOy+Qqkio3diW8Q7OE7dKlx6Y+I6XXQcKXFCTAYACqAA59fKsWWMhE+ijbwAePcEmAHgY/HrPv+Hvg/6qvEdQCtYoK0m5Text/jtz8irN19/qKGSpUwEMgctRGDIUiC/UNKdoIEKaDlCFx+0/MPNboYGACbSjBQ9TflBlhL+EZH4gukhiAgdxCafNiLRZa6w+PCLPyg0QMs2wWHTgQBDrgMMWPcGZPsvSNqiEAJqJFU/udTGQLj2x8DoNsYgAgyPQalUxhAkUgHzrgpY1UuVCk3q1WjRrJtgTtVqddekQrtcJXKrY6vqdZcJE0JLMp5te6NHqzqrs0y4EDqAX00639H8D56MbPjB5m+WzSZTvGi4N/pWmErZyrMF9SyuOxH8GPAvpY42RYSSlTxqmBRudmOFnkI8adBEU2Vy7uihuqRq9PC6uYVAYFb1HwIA); }</style></defs><g stroke-linecap="round" transform="translate(353 173) rotate(0 378.5 98.5)"><path d="M32 0 C171.28 2.67, 311.34 3.26, 725 0 M725 0 C747.64 0.55, 756.8 10.67, 757 32 M757 32 C757.79 60.66, 758.45 88.18, 757 165 M757 165 C758.04 187.23, 745.94 195.14, 725 197 M725 197 C580.74 199.52, 435.66 200.11, 32 197 M32 197 C10.38 195.47, 0.17 186.61, 0 165 M0 165 C-0.3 126.36, -0.49 92.37, 0 32 M0 32 C-0.9 12.29, 12.32 -1.6, 32 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.5" fill="none" stroke-dasharray="8 9"/></g><g transform="translate(353 178) rotate(0 378.5 10.5)"><text x="378.5" y="13.215" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="15px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Server</text></g><g stroke-linecap="round" transform="translate(10 10) rotate(0 384 96)"><path d="M32 0 C174.08 -2.56, 317.05 -2.97, 736 0 M736 0 C758.14 1.69, 766.1 9.04, 768 32 M768 32 C767.8 74.31, 767.49 112.94, 768 160 M768 160 C767.7 182.94, 755.58 192.75, 736 192 M736 192 C525.09 190.35, 314.47 191.66, 32 192 M32 192 C11.75 193.26, -1.65 179.72, 0 160 M0 160 C-0.01 127.8, -0.23 91.75, 0 32 M0 32 C0.46 10.19, 12.2 -1.51, 32 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.5" fill="none" stroke-dasharray="8 9"/></g><g transform="translate(10 15) rotate(0 384 10.5)"><text x="384" y="13.215" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="15px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Browser / Client</text></g><g stroke-linecap="round" transform="translate(69 89) rotate(0 104 28)"><path d="M14 0 C49.73 -0.77, 85.67 1.98, 194 0 M14 0 C83.61 -0.35, 153.51 -1.58, 194 0 M194 0 C204.23 -1.43, 208.98 5.69, 208 14 M194 0 C203.21 0.46, 207.73 4.19, 208 14 M208 14 C207.16 24.64, 208.72 33.01, 208 42 M208 14 C208.33 23.41, 206.99 32, 208 42 M208 42 C208.65 52.66, 205.2 55.93, 194 56 M208 42 C207.77 52.19, 202.81 53.76, 194 56 M194 56 C127.4 54.56, 62.98 55.54, 14 56 M194 56 C147.57 57.59, 100 57.58, 14 56 M14 56 C6.63 55.17, -1.77 52.91, 0 42 M14 56 C2.84 56.32, 0.4 50.44, 0 42 M0 42 C-0.46 35.09, -0.31 32.15, 0 14 M0 42 C-0.6 36.93, 0.21 30.04, 0 14 M0 14 C-0.76 4.41, 3.9 -1.81, 14 0 M0 14 C-1.22 5.33, 3.08 -1.41, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(77 104.5) rotate(0 96 12.5)"><text x="96" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Application Code</text></g><g stroke-linecap="round" transform="translate(412 78) rotate(0 153.5 39)"><path d="M19.5 0 C74.85 -0.06, 128.26 -0.33, 287.5 0 M19.5 0 C114.52 -1.53, 210.42 -0.96, 287.5 0 M287.5 0 C299.78 0.01, 306.87 5.65, 307 19.5 M287.5 0 C301.58 0.31, 307.97 7.31, 307 19.5 M307 19.5 C306.37 25.62, 308.23 35.71, 307 58.5 M307 19.5 C307.05 33.25, 306.79 47.77, 307 58.5 M307 58.5 C306.77 70.2, 298.85 78.29, 287.5 78 M307 58.5 C308.08 71.75, 301.19 78.18, 287.5 78 M287.5 78 C200.48 77.32, 114.96 78.73, 19.5 78 M287.5 78 C182.09 76.98, 75.82 77.43, 19.5 78 M19.5 78 C6.81 78.02, 1.64 70.77, 0 58.5 M19.5 78 C4.3 76.46, -0.7 69.4, 0 58.5 M0 58.5 C0.36 46.92, -0.58 37.94, 0 19.5 M0 58.5 C-0.54 46.66, 0.23 36.86, 0 19.5 M0 19.5 C-0.76 6.79, 7.77 -1.78, 19.5 0 M0 19.5 C-1.05 8.26, 7.78 -1.71, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(412 119.5) rotate(0 153.5 10)"><text x="153.5" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Provider: MeadowEndpoints</text></g><g stroke-linecap="round" transform="translate(462 262) rotate(0 104 28)"><path d="M14 0 C50.35 0.38, 85.12 -2.51, 194 0 M14 0 C73.68 -0.11, 133.37 0.01, 194 0 M194 0 C204.77 -1.91, 206.69 6.32, 208 14 M194 0 C204.34 2.05, 207.32 6.82, 208 14 M208 14 C207.07 19.15, 205.86 27.95, 208 42 M208 14 C208.1 24.52, 207.74 36.36, 208 42 M208 42 C207.6 49.53, 202.37 54.48, 194 56 M208 42 C207.33 50.85, 205.48 54.49, 194 56 M194 56 C123.45 54.45, 55.18 56.49, 14 56 M194 56 C143 56.61, 91.51 57.08, 14 56 M14 56 C4.51 56.22, 1.09 52.35, 0 42 M14 56 C6.03 55.4, 2.29 50.85, 0 42 M0 42 C-1.86 33.26, 1.32 22.28, 0 14 M0 42 C-0.15 31.22, 0.01 21.35, 0 14 M0 14 C1.91 4.22, 3.22 -1.82, 14 0 M0 14 C-1.28 3.43, 5.19 1.76, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(470 277.5) rotate(0 96 12.5)"><text x="96" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Application Code</text></g><g stroke-linecap="round" transform="translate(854 241) rotate(0 98.5 39)"><path d="M19.5 0 C50.61 -2.16, 84.63 1.53, 177.5 0 M19.5 0 C62.62 0.3, 107.67 0.31, 177.5 0 M177.5 0 C189.67 -1.15, 197.72 4.56, 197 19.5 M177.5 0 C188.23 0.86, 196.16 7.05, 197 19.5 M197 19.5 C195.09 31.49, 198.46 42.29, 197 58.5 M197 19.5 C196.75 34.64, 196.52 48.9, 197 58.5 M197 58.5 C196.96 70.14, 189.49 79.1, 177.5 78 M197 58.5 C196.65 69.24, 190.56 77.97, 177.5 78 M177.5 78 C131.98 78.52, 83.39 79.5, 19.5 78 M177.5 78 C120.7 75.47, 64.13 75.81, 19.5 78 M19.5 78 C6.28 77.52, 0.67 69.66, 0 58.5 M19.5 78 C4.67 77.16, 0.32 70.15, 0 58.5 M0 58.5 C0.81 41.21, 0.61 29.12, 0 19.5 M0 58.5 C-0.57 49.36, -0.54 40.18, 0 19.5 M0 19.5 C1.8 6.94, 5.83 -1.47, 19.5 0 M0 19.5 C0.76 8.3, 8.63 -0.61, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(854 282.5) rotate(0 98.5 10)"><text x="98.5" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Provider: MySQL</text></g><g stroke-linecap="round"><g transform="translate(277 117) rotate(0 67.5 0.1903629487735543)"><path d="M0 0 C2.16 0.07, 5.14 1.64, 16 0 M0 0 C3.41 -0.29, 7.76 -0.66, 16 0 M16 0 C18.39 -0.07, 19.8 -0.11, 21.96 0 M16 0 C17.8 -0.25, 19.15 -0.24, 21.96 0 M21.96 0 C23.71 0.52, 24.61 -0.26, 27.84 0 M21.96 0 C23.09 0.19, 24.6 -0.07, 27.84 0 M27.84 0 C30.06 0.19, 30.84 -0.23, 33.64 0 M27.84 0 C29.65 0.29, 31.54 -0.11, 33.64 0 M33.64 0 C34.76 -0.43, 37.25 0.08, 39.38 0 M33.64 0 C35.63 -0.28, 37.65 0.11, 39.38 0 M39.38 0 C41.97 0.08, 43.84 0, 45.07 0 M39.38 0 C40.77 0.01, 42.01 0.26, 45.07 0 M45.07 0 C46.55 -0.43, 48.4 0.49, 50.71 0 M45.07 0 C46.36 -0.05, 47.39 -0.13, 50.71 0 M50.71 0 C52.39 0.32, 53.2 -0.37, 56.33 0 M50.71 0 C52.93 0.02, 54.61 -0.19, 56.33 0 M56.33 0 C58.73 -0.36, 60.33 0.18, 61.92 0 M56.33 0 C58.15 -0.21, 59.95 0.27, 61.92 0 M61.92 0 C63.59 -0.24, 64.98 0.33, 67.5 0 M61.92 0 C63.53 0.18, 64.79 0.23, 67.5 0 M67.5 0 C69.36 0.39, 71.01 -0.23, 73.08 0 M67.5 0 C68.89 0.13, 70.06 -0.22, 73.08 0 M73.08 0 C74.98 -0.45, 76.4 0.47, 78.67 0 M73.08 0 C74.62 -0.22, 76.37 -0.16, 78.67 0 M78.67 0 C80.38 0.22, 83.15 -0.08, 84.29 0 M78.67 0 C80.02 -0.06, 81.33 0.04, 84.29 0 M84.29 0 C86.54 0.1, 88.34 -0.09, 89.93 0 M84.29 0 C85.61 -0.05, 87.47 -0.11, 89.93 0 M89.93 0 C90.93 0.5, 92.95 -0.24, 95.62 0 M89.93 0 C92.02 -0.22, 93.96 -0.23, 95.62 0 M95.62 0 C97.71 -0.25, 98.52 -0.18, 101.36 0 M95.62 0 C97.2 -0.2, 98.34 0.17, 101.36 0 M101.36 0 C102.99 -0.17, 103.59 0.2, 107.16 0 M101.36 0 C103.26 -0.21, 104.63 0.09, 107.16 0 M107.16 0 C109.61 0.52, 111.75 0.55, 113.04 0 M107.16 0 C109.12 0.14, 111.48 -0.07, 113.04 0 M113.04 0 C114.54 0.29, 116.36 -0.13, 119 0 M113.04 0 C115.1 0.23, 117.35 -0.04, 119 0 M119 0 C122.83 0.57, 128.85 1.31, 135 0 M119 0 C123.35 -0.38, 126.21 -0.19, 135 0" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(277 117) rotate(0 67.5 0.1903629487735543)"><path d="M127.42 2.56 C128.44 2.07, 129.84 2.34, 135 0 M127.42 2.56 C129.02 1.75, 131.09 0.9, 135 0" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(277 117) rotate(0 67.5 0.1903629487735543)"><path d="M127.55 -2.92 C128.49 -2.29, 129.87 -0.92, 135 0 M127.55 -2.92 C129.1 -2.3, 131.13 -1.73, 135 0" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(670 290) rotate(0 92 -0.9106789665150075)"><path d="M0 0 C3.12 -0.81, 6.76 1.26, 16 0 M0 0 C4.36 -0.08, 6.92 0.54, 16 0 M16 0 C18 0.91, 20.73 0.24, 24.8 -0.01 M16 0 C18.23 0.33, 20.35 -0.28, 24.8 -0.01 M24.8 -0.01 C27.15 0.7, 29.63 0.3, 33.47 -0.06 M24.8 -0.01 C26.77 0.23, 28.73 0.06, 33.47 -0.06 M33.47 -0.06 C35.88 -0.17, 37.05 -0.32, 42.04 -0.12 M33.47 -0.06 C35.96 -0.54, 38.78 0.21, 42.04 -0.12 M42.04 -0.12 C44.6 -0.29, 47.93 0.13, 50.51 -0.21 M42.04 -0.12 C45 -0.13, 47.64 -0.01, 50.51 -0.21 M50.51 -0.21 C52.74 -0.29, 56.68 0.31, 58.9 -0.32 M50.51 -0.21 C53.55 -0.42, 57.35 -0.56, 58.9 -0.32 M58.9 -0.32 C62.14 -0.32, 63.66 0, 67.23 -0.44 M58.9 -0.32 C61.14 0.09, 63.9 -0.06, 67.23 -0.44 M67.23 -0.44 C70.35 0.32, 72.67 -1.23, 75.51 -0.56 M67.23 -0.44 C69.99 -0.29, 73.25 -0.64, 75.51 -0.56 M75.51 -0.56 C77.37 -0.3, 80.32 -0.81, 83.76 -0.7 M75.51 -0.56 C78.66 -0.21, 81.42 -0.85, 83.76 -0.7 M83.76 -0.7 C87.16 -0.57, 88.78 -0.35, 92 -0.84 M83.76 -0.7 C85.7 -0.8, 87.93 -0.36, 92 -0.84 M92 -0.84 C94.54 -1.13, 96.83 -1.4, 100.24 -0.98 M92 -0.84 C94.09 -1.1, 96.65 -1.25, 100.24 -0.98 M100.24 -0.98 C103.27 -0.54, 105.86 -1.14, 108.49 -1.12 M100.24 -0.98 C103.27 -0.88, 106.07 -0.83, 108.49 -1.12 M108.49 -1.12 C111.27 -1.08, 114.32 -1.54, 116.77 -1.24 M108.49 -1.12 C111.14 -1.43, 114.33 -1.5, 116.77 -1.24 M116.77 -1.24 C118.78 -2.03, 120.33 -0.89, 125.1 -1.36 M116.77 -1.24 C118.44 -0.86, 120.91 -1.17, 125.1 -1.36 M125.1 -1.36 C128.49 -1.45, 131.14 -0.7, 133.49 -1.47 M125.1 -1.36 C127.49 -1, 129.33 -1, 133.49 -1.47 M133.49 -1.47 C137.13 -2.08, 139.1 -1.47, 141.96 -1.56 M133.49 -1.47 C135.79 -1.09, 137.24 -1.44, 141.96 -1.56 M141.96 -1.56 C143.76 -1.38, 147.78 -1.2, 150.53 -1.62 M141.96 -1.56 C145.55 -1.77, 148.25 -1.39, 150.53 -1.62 M150.53 -1.62 C153.38 -1.8, 156.27 -2.2, 159.2 -1.67 M150.53 -1.62 C153.87 -1.73, 156.78 -1.42, 159.2 -1.67 M159.2 -1.67 C161.41 -1.08, 163.53 -1.45, 168 -1.68 M159.2 -1.67 C161.51 -1.6, 164.26 -1.89, 168 -1.68 M168 -1.68 C173.37 -2.47, 180.28 -2.5, 184 -1.68 M168 -1.68 C173.1 -1.24, 179.42 -2.26, 184 -1.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(670 290) rotate(0 92 -0.9106789665150075)"><path d="M176.38 0.77 C177.85 -0.13, 179.59 0.4, 184 -1.68 M176.38 0.77 C178.47 0.17, 179.66 -0.07, 184 -1.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(670 290) rotate(0 92 -0.9106789665150075)"><path d="M176.59 -4.7 C178.05 -4.48, 179.75 -2.83, 184 -1.68 M176.59 -4.7 C178.65 -4.06, 179.8 -3.06, 184 -1.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(719 117) rotate(0 67.5 77.60996901114459)"><path d="M0 0 C3.57 0.19, 5.34 0.36, 16 0 M0 0 C5.68 0.75, 11.05 0.58, 16 0 M16 0 C17.76 0.65, 20.21 1.49, 21.96 1.38 M16 0 C17.67 0.33, 18.83 0.53, 21.96 1.38 M21.96 1.38 C23.61 3.03, 25.77 3.85, 27.84 5.3 M21.96 1.38 C23.94 2.66, 25.55 3.61, 27.84 5.3 M27.84 5.3 C29.83 7.43, 32.22 8.52, 33.64 11.46 M27.84 5.3 C29.09 6.74, 31.07 8.68, 33.64 11.46 M33.64 11.46 C35.67 14.2, 37.01 16.58, 39.38 19.52 M33.64 11.46 C35.98 13.98, 37.65 17.51, 39.38 19.52 M39.38 19.52 C41.34 20.58, 42.66 23.6, 45.07 29.17 M39.38 19.52 C41.66 22.53, 43.16 26.19, 45.07 29.17 M45.07 29.17 C46.24 32.87, 50.3 37.1, 50.71 40.1 M45.07 29.17 C46.43 31.79, 47.22 34.4, 50.71 40.1 M50.71 40.1 C52.02 43.25, 54.58 48.48, 56.33 51.98 M50.71 40.1 C52.58 44.62, 55.31 48.73, 56.33 51.98 M56.33 51.98 C57.73 55.86, 61.15 61.93, 61.92 64.5 M56.33 51.98 C57.45 55.35, 58.77 58.57, 61.92 64.5 M61.92 64.5 C63.33 69.89, 65.6 74.07, 67.5 77.34 M61.92 64.5 C62.94 67.53, 64.89 70.2, 67.5 77.34 M67.5 77.34 C69.53 81.91, 70.05 84.55, 73.08 90.18 M67.5 77.34 C69.89 81.7, 71.04 85.79, 73.08 90.18 M73.08 90.18 C74.26 94.72, 77.37 99.69, 78.67 102.7 M73.08 90.18 C75.49 95.53, 76.77 99.76, 78.67 102.7 M78.67 102.7 C79.66 107.41, 83.15 111.83, 84.29 114.58 M78.67 102.7 C80.7 105.51, 81.06 108.5, 84.29 114.58 M84.29 114.58 C86.07 118.66, 86.87 120.14, 89.93 125.51 M84.29 114.58 C86.96 118.16, 87.85 122.78, 89.93 125.51 M89.93 125.51 C91.96 127.38, 93.18 129.59, 95.62 135.16 M89.93 125.51 C91.89 127.73, 93.45 130.29, 95.62 135.16 M95.62 135.16 C96.16 137.66, 98.13 137.7, 101.36 143.22 M95.62 135.16 C97.16 138.31, 99.75 140.52, 101.36 143.22 M101.36 143.22 C103.09 145.52, 105.43 148.01, 107.16 149.38 M101.36 143.22 C103.11 145.63, 104.99 147.08, 107.16 149.38 M107.16 149.38 C108.82 150.2, 110.63 152.21, 113.04 153.3 M107.16 149.38 C108.63 150.01, 109.22 150.74, 113.04 153.3 M113.04 153.3 C114.44 153.53, 116.51 154.04, 119 154.68 M113.04 153.3 C114.96 153.77, 116.54 153.85, 119 154.68 M119 154.68 C121.39 154.09, 125.35 156.15, 135 154.68 M119 154.68 C124.34 154.45, 130.58 154.77, 135 154.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(719 117) rotate(0 67.5 77.60996901114459)"><path d="M127.48 157.41 C129.19 156.95, 129.98 156.48, 135 154.68 M127.48 157.41 C130.16 156.9, 132.69 155.94, 135 154.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(719 117) rotate(0 67.5 77.60996901114459)"><path d="M127.49 151.93 C129.15 152.59, 129.93 153.24, 135 154.68 M127.49 151.93 C130.17 153.19, 132.7 154, 135 154.68" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(412 94.5) rotate(0 153.5 12.5)"><text x="153.5" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow DAL</text></g><g transform="translate(854 257.5) rotate(0 98.5 12.5)"><text x="98.5" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow DAL</text></g></svg>
|
|
@@ -91,7 +91,7 @@ Each Meadow CRUD operation maps to a standard HTTP method:
|
|
|
91
91
|
| `PUT` | Update | `/{prefix}{Scope}` |
|
|
92
92
|
| `DELETE` | Delete | `/{prefix}{Scope}/{ID}` |
|
|
93
93
|
|
|
94
|
-
This mapping follows the standard Meadow REST conventions generated by [meadow-endpoints](https://
|
|
94
|
+
This mapping follows the standard Meadow REST conventions generated by [meadow-endpoints](https://fable-retold.github.io/meadow-endpoints/) on the server side.
|
|
95
95
|
|
|
96
96
|
## Cookie and Header Forwarding
|
|
97
97
|
|
|
@@ -219,26 +219,14 @@ GET http://127.0.0.1:8086/1.0/Books/Count
|
|
|
219
219
|
|
|
220
220
|
The primary use case for MeadowEndpoints is enabling client-side JavaScript to use the same Meadow data access interface that the server uses. This means your application logic can be written once and run in either context:
|
|
221
221
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
subgraph Browser["Browser / Client"]
|
|
225
|
-
AC1["Application Code"]
|
|
226
|
-
ME["Meadow DAL<br/>Provider: MeadowEndpoints"]
|
|
227
|
-
AC1 --- ME
|
|
228
|
-
end
|
|
229
|
-
subgraph Server["Server"]
|
|
230
|
-
AC2["Application Code"]
|
|
231
|
-
MY["Meadow DAL<br/>Provider: MySQL"]
|
|
232
|
-
AC2 --- MY
|
|
233
|
-
end
|
|
234
|
-
ME -- "HTTP / REST" --> MY
|
|
235
|
-
```
|
|
222
|
+
<!-- bespoke diagram: edit diagrams/use-case-unified-client-server-interface.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/providers -->
|
|
223
|
+

|
|
236
224
|
|
|
237
225
|
- **Server side:** Meadow uses a database provider (MySQL, MSSQL, PostgreSQL, etc.) to interact with the database directly
|
|
238
226
|
- **Client side:** Meadow uses MeadowEndpoints to proxy the same operations over HTTP to the server's REST API
|
|
239
227
|
- **Application code:** Identical CRUD calls in both environments
|
|
240
228
|
|
|
241
|
-
This pattern is especially powerful when combined with [meadow-endpoints](https://
|
|
229
|
+
This pattern is especially powerful when combined with [meadow-endpoints](https://fable-retold.github.io/meadow-endpoints/) on the server, which auto-generates REST routes from Meadow entity definitions.
|
|
242
230
|
|
|
243
231
|
## Full Setup Example
|
|
244
232
|
|
|
@@ -306,4 +294,4 @@ HTTP-related errors follow the standard pattern:
|
|
|
306
294
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
307
295
|
- [MySQL Provider](mysql.md) -- Server-side database provider
|
|
308
296
|
- [ALASQL Provider](alasql.md) -- Client-side in-memory alternative
|
|
309
|
-
- [meadow-endpoints](https://
|
|
297
|
+
- [meadow-endpoints](https://fable-retold.github.io/meadow-endpoints/) -- Server-side REST API generation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Document-based storage with automatic counter management and sentinel value support
|
|
4
4
|
|
|
5
|
-
The MongoDB provider connects Meadow to MongoDB databases via the [meadow-connection-mongodb](https://
|
|
5
|
+
The MongoDB provider connects Meadow to MongoDB databases via the [meadow-connection-mongodb](https://fable-retold.github.io/meadow-connection-mongodb/) module. It uses the FoxHound MongoDB dialect for query generation, providing document-based storage without schema migration. Auto-increment counters, GUID generation, and timestamp sentinels are handled automatically.
|
|
6
6
|
|
|
7
7
|
## Setup
|
|
8
8
|
|
|
@@ -316,4 +316,4 @@ docker run -d \
|
|
|
316
316
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
317
317
|
- [MySQL Provider](mysql.md) -- Relational database alternative
|
|
318
318
|
- [ALASQL Provider](alasql.md) -- In-memory alternative
|
|
319
|
-
- [meadow-connection-mongodb](https://
|
|
319
|
+
- [meadow-connection-mongodb](https://fable-retold.github.io/meadow-connection-mongodb/) -- Connection module source
|
package/docs/providers/mssql.md
CHANGED
|
@@ -293,4 +293,4 @@ docker run -d \
|
|
|
293
293
|
|
|
294
294
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
295
295
|
- [MySQL Provider](mysql.md) -- MySQL/MariaDB alternative
|
|
296
|
-
- [meadow-connection-mssql](https://
|
|
296
|
+
- [meadow-connection-mssql](https://fable-retold.github.io/meadow-connection-mssql/) -- Connection module source
|
package/docs/providers/mysql.md
CHANGED
|
@@ -257,4 +257,4 @@ docker run -d \
|
|
|
257
257
|
|
|
258
258
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
259
259
|
- [MSSQL Provider](mssql.md) -- Microsoft SQL Server alternative
|
|
260
|
-
- [meadow-connection-mysql](https://
|
|
260
|
+
- [meadow-connection-mysql](https://fable-retold.github.io/meadow-connection-mysql/) -- Connection module source
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Production-ready PostgreSQL integration with connection pooling and named parameter binding
|
|
4
4
|
|
|
5
|
-
The PostgreSQL provider connects Meadow to PostgreSQL databases via the [meadow-connection-postgresql](https://
|
|
5
|
+
The PostgreSQL provider connects Meadow to PostgreSQL databases via the [meadow-connection-postgresql](https://fable-retold.github.io/meadow-connection-postgresql/) module. It uses the FoxHound PostgreSQL dialect for query generation and supports named parameter binding with positional placeholders ($1, $2, etc.).
|
|
6
6
|
|
|
7
7
|
## Setup
|
|
8
8
|
|
|
@@ -309,4 +309,4 @@ docker run -d \
|
|
|
309
309
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
310
310
|
- [MySQL Provider](mysql.md) -- MySQL/MariaDB alternative
|
|
311
311
|
- [MSSQL Provider](mssql.md) -- Microsoft SQL Server alternative
|
|
312
|
-
- [meadow-connection-postgresql](https://
|
|
312
|
+
- [meadow-connection-postgresql](https://fable-retold.github.io/meadow-connection-postgresql/) -- Connection module source
|
|
@@ -294,4 +294,4 @@ All operations follow the same error handling pattern:
|
|
|
294
294
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
295
295
|
- [SQLite Provider](sqlite.md) -- Embedded SQL alternative
|
|
296
296
|
- [ALASQL Provider](alasql.md) -- In-memory SQL alternative
|
|
297
|
-
- [meadow-connection-rocksdb](https://
|
|
297
|
+
- [meadow-connection-rocksdb](https://fable-retold.github.io/meadow-connection-rocksdb/) -- Connection module source
|
package/docs/providers/sqlite.md
CHANGED
|
@@ -170,4 +170,4 @@ The SQLite provider follows the same error handling pattern as MySQL:
|
|
|
170
170
|
- [Providers Overview](README.md) -- Comparison of all providers
|
|
171
171
|
- [MySQL Provider](mysql.md) -- MySQL/MariaDB for production
|
|
172
172
|
- [ALASQL Provider](alasql.md) -- In-memory alternative
|
|
173
|
-
- [meadow-connection-sqlite](https://
|
|
173
|
+
- [meadow-connection-sqlite](https://fable-retold.github.io/meadow-connection-sqlite/) -- Connection module source
|
package/docs/query/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Building and configuring queries with the FoxHound DSL
|
|
4
4
|
|
|
5
|
-
Every data operation in Meadow begins with a query object. Meadow uses [FoxHound](https://
|
|
5
|
+
Every data operation in Meadow begins with a query object. Meadow uses [FoxHound](https://fable-retold.github.io/foxhound/) as its query DSL, generating dialect-specific SQL from a fluent, chainable API. You never need to construct FoxHound directly -- Meadow gives you a fresh, pre-configured query every time you access the `.query` property.
|
|
6
6
|
|
|
7
7
|
## Getting a Query Object
|
|
8
8
|
|
package/docs/query/count.md
CHANGED
|
@@ -68,14 +68,8 @@ meadow.doCount(tmpQuery,
|
|
|
68
68
|
|
|
69
69
|
## How It Works
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
└── Apply filters, set dialect, generate SELECT COUNT(*) SQL
|
|
74
|
-
2. Execute via Provider
|
|
75
|
-
└── Run query against database, start performance timer
|
|
76
|
-
3. Validate and Profile
|
|
77
|
-
└── Verify result is a number, log warning if query exceeded threshold
|
|
78
|
-
```
|
|
71
|
+
<!-- bespoke diagram: edit diagrams/how-it-works.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/query -->
|
|
72
|
+

|
|
79
73
|
|
|
80
74
|
## Soft Delete Filtering
|
|
81
75
|
|
package/docs/query/create.md
CHANGED
|
@@ -50,18 +50,8 @@ meadow.doCreate(tmpQuery,
|
|
|
50
50
|
|
|
51
51
|
The create operation follows a multi-step waterfall:
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
└── Queries DB to verify no existing record has this GUID
|
|
56
|
-
2. Insert Record
|
|
57
|
-
└── Merges record with schema defaults, executes INSERT
|
|
58
|
-
3. Validate Creation
|
|
59
|
-
└── Confirms the insert succeeded, extracts new ID
|
|
60
|
-
4. Read Back Record
|
|
61
|
-
└── Fetches the complete record using the new ID
|
|
62
|
-
5. Marshal to Object
|
|
63
|
-
└── Converts DB result to a plain JavaScript object
|
|
64
|
-
```
|
|
53
|
+
<!-- bespoke diagram: edit diagrams/how-it-works-2.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/query -->
|
|
54
|
+

|
|
65
55
|
|
|
66
56
|
## GUID Uniqueness
|
|
67
57
|
|