meadow 2.0.43 → 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 +3 -3
- package/source/providers/Meadow-Provider-MeadowEndpoints.js +36 -7
- package/test/Meadow-Provider-MeadowEndpoints-Session_tests.js +123 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
graph LR
|
|
2
|
+
Schema["Meadow Schema"]
|
|
3
|
+
ColumnSchema["Column Schema<br/>(Column, Type, Size)"]
|
|
4
|
+
JsonSchema["JSON Schema<br/>(Validation Rules)"]
|
|
5
|
+
DefaultObject["Default Object<br/>(Initial Values)"]
|
|
6
|
+
Authorizer["Authorizer<br/>(Role Permissions)"]
|
|
7
|
+
|
|
8
|
+
QueryGen["Query Generation<br/>(FoxHound builds SQL<br/>from column definitions)"]
|
|
9
|
+
Validation["Validation<br/>(is-my-json-valid<br/>checks objects)"]
|
|
10
|
+
RecordInit["Record Initialization<br/>(merge defaults into<br/>new records)"]
|
|
11
|
+
AccessControl["Access Control<br/>(role-based CRUD<br/>permissions)"]
|
|
12
|
+
|
|
13
|
+
Schema --> ColumnSchema
|
|
14
|
+
Schema --> JsonSchema
|
|
15
|
+
Schema --> DefaultObject
|
|
16
|
+
Schema --> Authorizer
|
|
17
|
+
|
|
18
|
+
ColumnSchema --> QueryGen
|
|
19
|
+
JsonSchema --> Validation
|
|
20
|
+
DefaultObject --> RecordInit
|
|
21
|
+
Authorizer --> AccessControl
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 924 567" width="924" height="567"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dbXPjtlx1MDAxMf5+v0LjfGlnzlxmXHUwMDE278i3e20uzetd2nSm6XRkiWerliWPJOfuksl/74J6IVx1MDAwMNJcXFKSXHUwMDFkqZWiyZwpcolcdTAwMDV28TzYXYK/Pen1zlx1MDAxNp9u87Mvemf5x0F/PFx1MDAxYc76XHUwMDFmzp7647/ks/loOsGfePH3fHo3XHUwMDFiXHUwMDE0Z14tXHUwMDE2t198/jlwkzH8XHUwMDBmvpDOgFtelY/zm3yymON5/8S/e73fiv/jL6Ohv3Z+1b/Nz99ccq7ym/45Kz63l8WlxUnrxszywaI/uVx1MDAxY+flT1x1MDAxZvE46M2fn3zDNN/8/WE0XFxcXPlTjNpcdTAwMWO7ykeXV1x1MDAwYjyoyuuWUr/osc2R+WI2vc5fTMfTmb/1Z/BcdTAwMWNec1He+KI/uL6cTe8mw805i1l/Mr/tz1DT8rz3o/H43eJTIVx1MDAxZHtcdTAwMGL78iy5x0+rNvLk+H1X4U0vryb53PcmbI5Ob/uD0cLrXHUwMDBmrNTCt/D2zbDo+H+VbZr1b/I3vucnd+NxKHgyXFxcdF5cdTAwMGZQ2ftideT3spl57mW4oP9cdTAwMTPzXGKPfTudXHUwMDE0hlx1MDAwMkJLXHUwMDAzXHUwMDA2QGzOXHUwMDE4zV+ihSxcbmnv++N5Xvayb9Kr1HpCXHUwMDBiXG6saNy/yMexXHUwMDE1abvpt8iSXHUwMDE2+cfF2eaH3582ie3PZtNcdTAwMGZrsTjYdzeT6Fx1MDAxZcPL+ntcdTAwMTTXbXWTr+bT+Fx1MDAxNnqw71u8zN/378aL7y7+gz61uovZu1wiz+5cdTAwMTZX09no13y2uoVcdTAwMWO3u8XqX6XJ3t1cdTAwMGX7S1x1MDAwM1x1MDAwMWOZlFxceyuym9/Ho8l1as/j6eC6xqZGk2H+sbgpW95xpVAyJzVbU2xJ0XTEZTxcdTAwMWRcdTAwMTmTlZPPZkJSrjoh8fK8Q5iQIDn+h05I0Vx1MDAwZquZh1x1MDAwN13dYuZRIIxSXHUwMDAxXHUwMDEydJh3XHUwMDFlxFx1MDAxMlx1MDAwYtvB/vwm71x1MDAwZqdcdTAwMWZ6S1tcdTAwMGJGajpZvEPn8Tqx6Ojr/s1o7LtWRbKejUeXvlx1MDAwN85cdTAwMDbY7Hx2XHUwMDE2dsRihEC+OeFmNFx1MDAxY4YwetGf59jwYn4uZVx1MDAwZfBWfTw6e9NcdTAwMDal0dEvR5P++Mdmrfp3i+nbfL7UazG7y8Oey79cXPtcdTAwMDJkgTeULlx1MDAwYk0uu2xgzVx1MDAxNK3ak1x0bktcdTAwMTMu3Lf007XvclVC18Z3TWlcdTAwMDGH4LvHSibAdSNcdTAwMTNGSa6Aib2TiUdE/Uj6XHUwMDBmd/ns01/yyVx1MDAxYXJa3uZxXHUwMDAwk9OAWdNVgrWCzcTxXGargc1a11x1MDAwYibHQ3C9g4dNYLaLj3HGhbVOq8NcdTAwMDPOPy2t7WnvRzSrpz1cdTAwMGaWf67Fz2CJslx1MDAxN/xcXExvu4FnpFWKlM1q7Fx1MDAwNpiCXHUwMDA2zMpyw9Xw3Pvg0pV2U1x1MDAxOK0xVadcdTAwMTWleZ/wcr94KUTFb1x1MDAxYvHSKpBcdTAwMWO0LVnNQ+DlQy5gXHUwMDAz2X/3oan+XHUwMDAy9VvfRlx1MDAxZVx1MDAxMlpKXHUwMDFhLStcdTAwMWRlrlthZeJ1XHUwMDFjbFx1MDAxZFjW+d1cdCw7rjFNJ1x1MDAwN+NOWyWVgm3862GxsvSW3tu7cT4/SqRsUGI3nFQ0TtbFzPqfWkOlYHFgSPBcdTAwMWGXXHKo2Vx0KvdcZpWuU7RcYrxcdTAwMTdcdTAwMGKweiva21x1MDAxYSpcdTAwMWY4XHUwMDEwXHUwMDFii3+bXHUwMDBmprPhm8lofaf8nvj4XHUwMDFmXHUwMDAzmJpcdTAwMDbMuu6aXGbaYGbF/bSuw8w6XHUwMDA3PGFmN8y0knXxNGNcdTAwMTRzWotcdTAwMDPETO8qo/64h7Bzd6SIea9cbrvhpaHxspL9uZ5uva6Uplxm/JzWlVx1MDAwZlx1MDAwZpZGdlx1MDAwM0vOnVBcdTAwMGWZ74OC5db5xFx1MDAxNkhcdTAwMTnIfjZcdTAwMThgh71AJ5tNx+tcdTAwMTRCy1x1MDAxNezjIKWlkbLSV5OaJFxivbRUIE9Ly4eCyU4+5px1XG5cdTAwMTRcdTAwMWMgTL6djvPe9/nsZjT3LT5OoGxQYjeodDRUJlmfi3lroNRJuUHQyVx1MDAxYmdccnJqXHUwMDFiZ1x1MDAwNVZcdTAwMDLqIXjrsVx1MDAwMqXsVoNgXHUwMDFjU0rxh4q/XHUwMDFlTyrxXHUwMDE5jWBJ+9ulXHUwMDExU3/QrJ0/yFx1MDAxM3g9ZFx1MDAxMlx1MDAxMZhzglx0tZXdPyx4vZ5+/NLfsXdxN1x1MDAxYVx1MDAwZue9dz98/fPk/Wx601x1MDAxYlx1MDAxNN7UXHUwMDFi5u9Hflx1MDAxMXWswLalgruB3nNcdTAwMWH0Kumb2/brQ61jmiqgWvTLXHUwMDAzQnrCvX1X/XbDPdBcXCtmt+KuNOxcdTAwMWRPTvBcdTAwMDVccntcdTAwMTVcclRcclx1MDAxYqxcdTAwMDG+1CNUXHJcdTAwMTOs84hcdTAwMTPydcxcYnZEPsFcdTAwMTg4IVx1MDAwZjG8OZqf33w6/1x1MDAwZnrP+S/e6n6eoFx1MDAxM1xyrue9aVx1MDAxMV8/TrjroNRuXHUwMDEw95KGuErC5fquPcTJuCBcdTAwMGV0OeNuXHUwMDFjWtfUw50gbk8xUNUpjVx1MDAwMZJcdTAwMWLpXHUwMDE0evvDgNxRpfJe0ThX1aBVgDJ1i3A6bnSLXHUwMDEzznXDOcU7mT+u7oTxIcrDg7mbfHaZ+1WO9595bzRZTH+eTPJcdTAwMGa9WWGCx1x0c1x1MDAxZJTaXHLmXrfI9NUkTFx1MDAwNtBhMVeOb5Hsq1x1MDAwYtrUJeZPSLenIGbw/ESbIKZyXHUwMDBllH2ohy6OKlx1MDAxM/eXXHUwMDE2mbhcdTAwMWElRKs6z9QxXHUwMDE0q6GAdY5xwrqO0UzeaU1nuHVW8EN8XCJcdTAwMDJNLD/36DLsvXj7t5c/T26PPC3XUqHdMO7LJi/u8ChYMlx1MDAxOUXOXGYuIa7GZVxcVsmrq4nRcIDoXFzaqfkr89LI/1x1MDAxYrCrc2ppO4UordBSueD5lT/ap2+no1x1MDAxNDPLf/XKsS/+2Pz7X09rzy69vN3pLrNGgVx1MDAwMamN0ZJcdFx1MDAxOV5+XHUwMDBlmbVCrT9aXHUwMDAwUFx1MDAwMrnIXHUwMDE04PKAcc20YK6s5ypcdTAwMDRcdTAwMWE07+CjrSRcdTAwMDXqzGlefl3cQJVhv7vNR1tKnmBcdTAwMTlcdTAwMTdcdTAwMDKcXHUwMDA25YBzXHUwMDE29dc53k0rp8qPJuWJTCgnnEZyJVxyK7GikCewf0OFXHUwMDA1qa/QmTCs/NpInpKZ0YG+hlx1MDAxNIeTj5OOS6UkWFx1MDAxMZQ5XHUwMDE38lxmy1xcqC7ZPMkz0L5aWmnHjWAsNlx1MDAxOGsz5oIh5qS8uD3AcEA53Vxuk6EuILBDmeHY67FcdTAwMTA0QlBdtFIsQyHMKCmVRf1cdTAwMTIjk2gzKtCKNDIlstBmy5D9Up7SWVx1MDAwYlx1MDAxOWiKkmkmlNaKu/JRk6VcZlx1MDAwM1x1MDAxObprqaMg5Tk0XHUwMDFkbdGiJLPGuESelZmyga2S8rTIWGipJpbncCBJXHUwMDExvlx1MDAxZlx1MDAxOPhZwlx07Vg8V3AmM1x1MDAxNqpIXHUwMDFhXHUwMDEzWjMgfHKrXHUwMDA05+iVMpHnMpz7g1x1MDAwZikvXHUwMDExsERn6irHmq96klxcjcuH+eLF9OZmtEBE+d6jQVx1MDAwNelcdTAwMTb92eI58pjR5DJe8t1Mh1x1MDAwNVx1MDAxOE9nXHUwMDE3o0WwYFrvxdRmS4eCXHUwMDBlfCxvXHUwMDFkoU+Gfs6CTzTMLEP/c8HHioqe5So0n1xmd9ahedeHZk3CmG15pKHBRbc/81x1MDAxNO8q71d4XHSqXHUwMDEz/pZywXx8Mf3QuKZ805qNNj1o2YmLWvS4mtIxYHUl1iw698RFW3BR3m2BKVx1MDAxOcKoUfxERovTXHUwMDFkklx1MDAxMcmRpFhcdTAwMDHcJFRcbmdcIm6sguXXgXSUPKRcdTAwMDFOgLaGS1xchFmkZ/HEjOYt7earXHUwMDE5SaY40lx1MDAwZXBcdTAwMDFcdTAwMGaIW6gyjqRy81EkWVx1MDAxNpDhSGnmmFx1MDAxMtKZXHUwMDA0ryySb73W1+KAkuJUJs1SVSVcdTAwMWOiaozIXCLjNlDY0FRcdTAwMTm5Y0ijXHUwMDEyVmT9r1x1MDAwMVx1MDAxNaW5XHUwMDFlMlx1MDAwNuRlS1VxmE3CvZE0lfoqZHGkQI2UXHUwMDA21kNs49n9nFx1MDAxN3Bfasza0MCEvuOQMpqpyaw0WsNZzPYkZCzQXG6HlJRnModMTCvGmUJcdTAwMDV5bFx1MDAxN15rX2OzVkySXHUwMDAyNWQm5D2xPOUpPSlCZYp75WBpsMmyxGRIxkstSVPQODZLI12qXHUwMDE5W1x1MDAwMrZcdTAwMTdcdTAwMTlvYKokUUPCb1lA+GNxKoOQpJBcdTAwMTOHMVx1MDAxOSuHXHUwMDEzdKysxjVcdTAwMGWDckTJvrNoXHUwMDAxxUCuLDWWhrTcXHUwMDA2fknqaisrOEk3XHUwMDAxXHUwMDEy30ivepJcXH3gnFThyqj8JKROXG5cdTAwMWRcdTAwMTJWJytq7peSNu2rclxchPSr1oSUeJy5XHUwMDEzJ3VcdTAwMDJXntWER7hz6ImT9nbgpLpcdTAwMTMnVVx1MDAxY5xwQUzl/5qTcqSdNvgky9+Qklpl6fCoylx1MDAwNFx1MDAwNJ845JEwUpqw8FwifFvOdZE0T0fDmZDmezJcdTAwMTOBqkixQ3ExXHUwMDFkVZxcdTAwMTaHV+hQ2UhcXEJHlSBZXGbSR1x1MDAxMU7s0dS5XHUwMDA1XHUwMDFiNZmBUt+I3KZUlKaAyKHCYbWRlaVMlIRrpWNcIrrkocE4k/yKZfb+oUwpKUmIkEHxcCwjYVx0XHUwMDFkJVx0XGYyXHUwMDFlXHUwMDFk0bGnSUeGRstJszAyXHUwMDBihtHGcc3OxNTYLLRZXHUwMDE2Na4zL7XIS3k0kp25qDVcclx1MDAxM1BCRUntXHUwMDFjj6efaL5ImSg5+8RcdTAwMGLMlkQ0vuf/XHUwMDE0XHUwMDBmjXMhXHUwMDE1ltpE7PbBQ4l9i46Liv61NVx1MDAxNW3aLKBcdTAwMGJcdTAwMGZFbMGJrOadXHUwMDAydbHRU6J+m+qbYI+lNnusXHUwMDE5ISRcdTAwMTg4nGdcdFx1MDAwZjY4XHUwMDFh5+lcdTAwMTVcdTAwMThcdTAwMTI1m2OjcZpcdTAwMWUlk+JcdTAwMWEjo0WWPqAvNKg3RkbTJL2lxTVFRtNcdTAwMWM9XHTJjXHRzlx1MDAxOfrmqGj3XHUwMDA0fVNMNE3P07w2iYgu8/Oig3qNwdFKpp5cdTAwMTbXXHUwMDE4XHUwMDFirWTqd1x1MDAwYo1cdTAwMTaJ+jC/uVuYtJKzp8U1hUkrKXtSXFxjmLTI2IdshjSOxjBpJXtPimtcbpNWcvck1Y1noJap+yRM+j+Wuo+Yd+VXXlFzv/S0aZuw4+KmX9PctOVcdTAwMDZcdTAwMWRN/FSJZIeLdiWk4Xb6J1baJjzabWttIayyUolTyr44PalcdTAwMWZNKt1cdTAwMTjO6KuSOl8y6LdMJkNXRFx1MDAwNSmKXGZux4SmSz7TXHUwMDEyUlGRXHUwMDE41rH5tyCQXGYwLlwihSSjilx1MDAxMrVAg1x1MDAwNWFcdTAwMDBpJ1x1MDAxM3QkNykjlTotfkBcbrCsdfQ3xpVcdTAwMTFdXHJcdTAwMTBcdTAwMTeSVppcYmGBXCIuhkl5SSUppPLC2kLhaHJDlJIyXHUwMDFm8lRsUyDINE2l006jXHUwMDE3XHUwMDFhcSWpdk6nXCJ8pcnKIFWLmo7mUlKWhbXHVmq6yCGtJTVpXHUwMDBio3JhTfdSWlgq0l4rqpK44c6gNGc5LTEuLbUqbaJcdTAwMTTaOmc1t0iOUSBNy1x1MDAxYotLUaCOrZeU11hpivLKolH0QUFcdTAwMGVKc6UpynNrL0HL4rimI1x1MDAwNaZcdTAwMTLILkrKTKMrniRXPlx1MDAxYU991PLMfbDS+3fkOy5O+lxyzUlb7p7TyEl5mZNfvpCippZU1LzyXHUwMDEwpDnx0q6lpFx1MDAxZLel0EJzyeWJmPpcdTAwMGZHclx1MDAxMTyVwyCJl1xuUKD8juRCclx1MDAxZmQk5VlkXHUwMDAyXHUwMDFiXHUwMDA0syZcdTAwMTKnMqYs/syEwz5T7TLtiFxuXHUwMDFi0HZJkC1zyDU2X1KcTGhKhJbgM5pSSeSUWjhcXO3QNEr7XHUwMDFj5YboiTgmgoSJ43zhjcI4TueOXHUwMDE1RzZcdTAwMWOgdUxcdTAwMGVcdTAwMDT2q2Rm86XpXHUwMDEw3lx1MDAxZiFcXK0oSpzulS5TXHUwMDA2hMDhcFY6OoWJPGPJqJecLFbVp3uZdaBcdTAwMDVcdTAwMTfG501pcS5cdTAwMGWXXHUwMDFhXHUwMDE0TyewVVZQrVx1MDAxNX+KomhWZahcIrNcdTAwMDJpXHUwMDFm15bubVx1MDAwYlx1MDAxOeDiY/1gVLRcdTAwMWNzXHUwMDA27cpq7SSgPzBLXHUwMDE3LuLCKVpDxFbqw+CBodL5Yp5ZXHUwMDE2MOM4XHUwMDE0jEtJZJvC75pcbpxcdTAwMTn6UUNncezKXHUwMDE1gow4XHUwMDFkcF+vgutN5LdCM0PTYmBcdTAwMTJcdTAwMWJQropicbiaUqWVSiDtXHUwMDE0wC9cdTAwMDTWS0BIylx1MDAwMFx1MDAwMFx1MDAxNz9SXHUwMDAynuA04+Do1D2Axt7bsHbp4tCy91krreRcXDqt6Fpx4LF+XHUwMDFln8lrhGu45kly7aNxzkesv9xcdTAwMDfjbNpcdTAwMGXzuDjntzTnbL+ZVSPthGTPw5ot0oDX0k57op1cdTAwMWS3g4JO4VCkXGKIs8KeqkX9h1x1MDAwM3KtgDMkT+Ag6Vx1MDAwYiGEJp0mgyVDXcJiJE35VO5cdTAwMDZ8taafVOe+cSWIxUFcdTAwMWFcdTAwMWFvkaohVHHNXHUwMDE544i2ydNUSDNNSORYq3pOg5xmzU7jpyy4L21cdTAwMGJcdTAwMTRcdTAwMTQ0XHUwMDBitj6lVfZIXHUwMDFj48HWy7Dujn5cdTAwMThIZMjmXHUwMDBi7mDBIOpG4pBpupC20jTY71x1MDAwMrJB/DhMjkQzJPwtSihl8qCSkS1inb7AT5VcdTAwMGKVuIzz3MZcZqdF+ld5eyjWXHUwMDE0YFG3uEXIzkJyqEnzssXDxGVcdTAwMDNsYp6k89miNFx1MDAwMfxk5GlfzFx1MDAwN8+RU6JcdTAwMDF0WWk45lxyXHUwMDAwndhXXHUwMDEzK61Seb43O9FfnSHB31xckIRdkSi2YGBcZjJbXHUwMDEwvOVcbizdp0BkoVx1MDAwYpItXHUwMDAyZnyTylx1MDAwNUaiXCJcdTAwMTI8iHQkXHUwMDA1QirBtlCKp2rYg+CVj1tPuVx1MDAwZmrZtFxy7XFRy+9oatl++7guXHUwMDExTVWzwTxcdTAwMDSvuzrl2beu/nSdiCUgXHUwMDE4gFanZ+OXXHUwMDFmzjOk2tw6KYyyqpJcdTAwMDRcZvPsXHUwMDFhIZCe/JFg+W1cXI302zxKVUmxdU6zXHUwMDBilVx0pcsnenglKVx1MDAxZcaSkFx1MDAwNtGBSKTTSmihXHUwMDAwLcFZxitJ8TDNXHUwMDBlpl2615NlXHUwMDAw47Sz3KZcdTAwMDLDLDto+lx0XHUwMDBmJTNcdTAwMTY8XHUwMDAxXHUwMDA2lfwxRKFPzumaP5b5wk3B8e4+P1xcqVx1MDAwNIhcdTAwMTLtvMWDU9pXXHUwMDAyXHUwMDE4zlx1MDAxZLPMiYrOUZpcdTAwMWSHm85V8qx7ot0/WMO5McyBT+WndVwiUfy6RVx1MDAxMttKZF84QVx1MDAxOKGwXHUwMDBijElcdTAwMWJcdTAwMTSl2bFcdTAwMWZbpFMzXHUwMDE3PPuiK3n7aFMuRvJ9h9xcdEmmsNbXf4CtZJzDJDuaYlx1MDAwYrKG6yWf5JHWXG7JwKXjXHUwMDE4JdmRrdFcdTAwMDJdpqUojTdVWcZFMzSRXHUwMDAzjbNcdTAwMDaTvlx1MDAwMlx1MDAxN1x1MDAwMVi6xiw7o8dcdTAwMDRcdTAwMDcvw1nNXHUwMDAw9lx1MDAxNZdIbyuVXG5hmlx1MDAxZJfJdJCXp0rSjahUlVx1MDAxY1x1MDAwMjl9xGrKvVx1MDAxNH8271x1MDAxY31cXOT0e3ov4Jo6XGLB/r1cdTAwMTgtwj2xXHUwMDFi3s5p42eTpKp7OaeqeUCed2Glp1x1MDAxZIF73HRipVx1MDAxNlx1MDAwMZxZvt1cdTAwMGKOXHUwMDFlhJSud1x1MDAwNF5aXFxvaXK1XHUwMDFiXHUwMDAwXHUwMDA39Vx1MDAwNFx1MDAwN7hcdTAwMDHwPe3fbb/fXHUwMDFmaE+tZI/MdVx1MDAwNz9N3qJcdTAwMGJ+L4uqo9a+RffkqFx1MDAxZMu0dWiK5PJcdTAwMTGU58mH+Lb5r9599+3x+mlt63fz0re0l9bF4iaD9o4qWPwwhcClZY2j1u2xf3LUbo4qOlwiqtZK4prgcFx1MDAxMohrP13ZXFxvaXRH6Kr3KbCbt77b6p3022OqtO6EqVx1MDAwZuOqwbM1rVx1MDAxZcjnXGKqllx1MDAxZiCkllx1MDAwNneEblrX+N1cXPTHLV663d5B01dvi1x1MDAxYe+se/X2yTs7VuK4TozXP10nXHUwMDE1Z4ezXcbaO1x1MDAwYlvrobHls6Lu7VxiffR+XHUwMDE1dvPUv231nuBcdTAwMGW+mr4tOJi8XHUwMDFi31x1MDAxNnxy1o5Q2m2TReB+w1x1MDAxNqfZ4WQ3195a2ttcdTAwMTH6aV3jd/PQv2/1htNcdTAwMGVcdTAwMWWavv63zFx1MDAxNDW/5/Tkod081JS7/rR9za/mhunDW5gu7a3nXHJuhPb+67E6K6HHbn7707YvbOxcdTAwMDKuyftMTcm9TiGlfYaUWCdw5UJcdTAwMTnH+Fx1MDAwMb6ieGlxvZXJXHUwMDFkocvep8BuvvqPla8+WWXSz/q3t+9cdTAwMTbY+WfrhDPa02iY9NDy2Fwivy17pzj0zXSYv5r0L8bpQJz9Mso/PK+6z2evn782r16ttFmN4Td348XoXHUwMDFkWs3Az0rFi3Z9+4r5xPtWvjr0+39cdTAwMDHra827In0=<!-- 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\tSchema[\"Meadow Schema\"]\n\tColumnSchema[\"Column Schema<br/>(Column, Type, Size)\"]\n\tJsonSchema[\"JSON Schema<br/>(Validation Rules)\"]\n\tDefaultObject[\"Default Object<br/>(Initial Values)\"]\n\tAuthorizer[\"Authorizer<br/>(Role Permissions)\"]\n\n\tQueryGen[\"Query Generation<br/>(FoxHound builds SQL<br/>from column definitions)\"]\n\tValidation[\"Validation<br/>(is-my-json-valid<br/>checks objects)\"]\n\tRecordInit[\"Record Initialization<br/>(merge defaults into<br/>new records)\"]\n\tAccessControl[\"Access Control<br/>(role-based CRUD<br/>permissions)\"]\n\n\tSchema --> ColumnSchema\n\tSchema --> JsonSchema\n\tSchema --> DefaultObject\n\tSchema --> Authorizer\n\n\tColumnSchema --> QueryGen\n\tJsonSchema --> Validation\n\tDefaultObject --> RecordInit\n\tAuthorizer --> AccessControl\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 256) rotate(0 87.5 28)"><path d="M14 0 C43.26 -0.01, 75.12 -1.47, 161 0 M14 0 C65.6 1.27, 115.71 1.14, 161 0 M161 0 C171.98 -1.26, 174.08 5.36, 175 14 M161 0 C170.64 1.22, 173.57 6, 175 14 M175 14 C176.64 20.02, 175.61 27.91, 175 42 M175 14 C175.7 19.17, 174.22 25.05, 175 42 M175 42 C174.35 53.06, 171.74 54.26, 161 56 M175 42 C175.59 51.38, 169.64 55.21, 161 56 M161 56 C107.04 53.26, 58.21 55.95, 14 56 M161 56 C118.35 56.5, 75.16 55.99, 14 56 M14 56 C6.31 54.68, 1.02 52.65, 0 42 M14 56 C4.82 55.99, -2.12 49.79, 0 42 M0 42 C1.99 33.29, 0.93 22.23, 0 14 M0 42 C0.77 29.96, 0.7 20.73, 0 14 M0 14 C1.3 3.41, 5.48 -0.02, 14 0 M0 14 C-0.11 5.01, 6.32 0.08, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(18 271.5) rotate(0 79.5 12.5)"><text x="79.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 Schema</text></g><g stroke-linecap="round" transform="translate(275 23) rotate(0 126.5 39)"><path d="M19.5 0 C60.76 -2.3, 104.89 0.39, 233.5 0 M19.5 0 C85.53 2.19, 152.74 1.11, 233.5 0 M233.5 0 C246.22 1.72, 251.27 7.47, 253 19.5 M233.5 0 C246.35 1.91, 251.27 7.77, 253 19.5 M253 19.5 C252.39 27.6, 254.58 36.61, 253 58.5 M253 19.5 C252.88 32.06, 253.78 45.69, 253 58.5 M253 58.5 C251.69 72.18, 247.38 78.83, 233.5 78 M253 58.5 C250.82 72.31, 248.22 78.09, 233.5 78 M233.5 78 C175.64 79.82, 117.14 79.82, 19.5 78 M233.5 78 C168.65 79.64, 105.23 79.33, 19.5 78 M19.5 78 C6.68 79.66, -0.45 72.92, 0 58.5 M19.5 78 C4.2 76.85, -2.22 69.66, 0 58.5 M0 58.5 C1.06 48.96, 1.41 40.2, 0 19.5 M0 58.5 C0.55 43.75, -0.67 28.23, 0 19.5 M0 19.5 C-0.56 7.8, 8.4 1.66, 19.5 0 M0 19.5 C0.32 7.66, 5.09 1.5, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(275 64.5) rotate(0 126.5 10)"><text x="126.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">(Column, Type, Size)</text></g><g stroke-linecap="round" transform="translate(286 171) rotate(0 115.5 39)"><path d="M19.5 0 C56.8 -2.53, 96.71 -0.37, 211.5 0 M19.5 0 C77.6 1.3, 134.66 1.74, 211.5 0 M211.5 0 C223.79 1.69, 232.8 4.8, 231 19.5 M211.5 0 C223.77 0.04, 231.73 8.65, 231 19.5 M231 19.5 C231.07 28.91, 229.72 34.39, 231 58.5 M231 19.5 C231.93 32.11, 230.76 45.38, 231 58.5 M231 58.5 C230.66 70.78, 223.21 76.88, 211.5 78 M231 58.5 C229.08 71.66, 224.69 77.87, 211.5 78 M211.5 78 C172 76.05, 133.55 78.83, 19.5 78 M211.5 78 C163.06 76.75, 114.89 76.72, 19.5 78 M19.5 78 C6.06 76.56, -0.35 72.68, 0 58.5 M19.5 78 C4.77 79.06, 1.68 73.55, 0 58.5 M0 58.5 C-1.22 50.45, 0.6 39.86, 0 19.5 M0 58.5 C0.45 44.76, -1.09 29.35, 0 19.5 M0 19.5 C-1.28 7.32, 5.4 -0.22, 19.5 0 M0 19.5 C-1.25 6.59, 4.95 -2.24, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(286 212.5) rotate(0 115.5 10)"><text x="115.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">(Validation Rules)</text></g><g stroke-linecap="round" transform="translate(298 319) rotate(0 104 39)"><path d="M19.5 0 C53.36 0.34, 87.72 -1.14, 188.5 0 M19.5 0 C81.57 -1.99, 142.12 -2.02, 188.5 0 M188.5 0 C200.35 -1.5, 208.29 5.7, 208 19.5 M188.5 0 C199.29 -1.96, 208.76 5.6, 208 19.5 M208 19.5 C207.1 31.76, 206.61 41.3, 208 58.5 M208 19.5 C207.65 30.57, 206.94 40.87, 208 58.5 M208 58.5 C208.57 71.67, 202.22 78.23, 188.5 78 M208 58.5 C207.15 70.95, 199.91 77.5, 188.5 78 M188.5 78 C125.94 81.2, 61.75 81.24, 19.5 78 M188.5 78 C148.59 79.42, 109.27 79.42, 19.5 78 M19.5 78 C5.08 78.74, 0.76 73.39, 0 58.5 M19.5 78 C7.87 77.97, 2.18 70.32, 0 58.5 M0 58.5 C-2.28 49.69, -1.62 42.49, 0 19.5 M0 58.5 C-0.78 46.72, -0.78 34.5, 0 19.5 M0 19.5 C1.75 7.1, 5.2 -1.3, 19.5 0 M0 19.5 C1.69 6.98, 8 0.65, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(298 360.5) rotate(0 104 10)"><text x="104" 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">(Initial Values)</text></g><g stroke-linecap="round" transform="translate(286 467) rotate(0 115.5 39)"><path d="M19.5 0 C58.35 -0.44, 97.69 -0.17, 211.5 0 M19.5 0 C90.22 0.28, 158.2 0.61, 211.5 0 M211.5 0 C225.29 -0.28, 230.91 7.28, 231 19.5 M211.5 0 C222.83 1.28, 229.16 4.42, 231 19.5 M231 19.5 C232.1 28.57, 230.38 38.11, 231 58.5 M231 19.5 C230.84 27.34, 230.45 34.81, 231 58.5 M231 58.5 C231.94 72.18, 222.64 76.15, 211.5 78 M231 58.5 C232.33 69.94, 223.85 75.86, 211.5 78 M211.5 78 C162.8 75.3, 112.17 74.48, 19.5 78 M211.5 78 C141.29 78.1, 69.91 78.47, 19.5 78 M19.5 78 C4.68 78.13, -0.76 70.06, 0 58.5 M19.5 78 C4.58 76.42, -0.97 71.8, 0 58.5 M0 58.5 C1.5 44.03, -0.36 29.27, 0 19.5 M0 58.5 C0.35 48.01, 0.74 39.36, 0 19.5 M0 19.5 C-1.68 5.86, 6.17 0.94, 19.5 0 M0 19.5 C0.78 4.28, 8.6 0.22, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(286 508.5) rotate(0 115.5 10)"><text x="115.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">(Role Permissions)</text></g><g stroke-linecap="round" transform="translate(618 10) rotate(0 148 51.5)"><path d="M25.75 0 C76.34 -2.95, 123.18 -2.54, 270.25 0 M25.75 0 C105.45 -1.92, 185.03 -1.49, 270.25 0 M270.25 0 C287.35 -1.62, 294.66 8.6, 296 25.75 M270.25 0 C286.57 1.07, 298.12 9.03, 296 25.75 M296 25.75 C297.17 37.37, 295.54 48.14, 296 77.25 M296 25.75 C296.26 45.15, 296.04 63.01, 296 77.25 M296 77.25 C294.43 94.63, 286.66 103.62, 270.25 103 M296 77.25 C295.08 95.75, 286.3 103.81, 270.25 103 M270.25 103 C210.64 103.49, 149.47 104.03, 25.75 103 M270.25 103 C194.54 104.38, 120.12 103.28, 25.75 103 M25.75 103 C10.56 103.12, -0.52 96.13, 0 77.25 M25.75 103 C9.67 102.44, -2.04 96.12, 0 77.25 M0 77.25 C0.1 65.24, 0.2 57.88, 0 25.75 M0 77.25 C-0.26 66.28, 0.29 56.45, 0 25.75 M0 25.75 C-1.17 9.08, 8.74 -0.54, 25.75 0 M0 25.75 C1.48 6.73, 8.29 -0.17, 25.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(618 54) rotate(0 148 20)"><text x="148" 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">(FoxHound builds SQL</text><text x="148" y="34.096000000000004" 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">from column definitions)</text></g><g stroke-linecap="round" transform="translate(656 306) rotate(0 110 51.5)"><path d="M25.75 0 C58.26 0.2, 93.1 0.34, 194.25 0 M25.75 0 C80.31 -0.31, 134.42 -0.7, 194.25 0 M194.25 0 C210.68 -1.02, 218.11 10.3, 220 25.75 M194.25 0 C213.32 1.11, 221.69 9.97, 220 25.75 M220 25.75 C222.1 46.44, 221.58 62.84, 220 77.25 M220 25.75 C219.85 43.12, 220.36 57.54, 220 77.25 M220 77.25 C220.11 95.36, 212.69 103.5, 194.25 103 M220 77.25 C220.88 94.96, 213.61 104.09, 194.25 103 M194.25 103 C145.63 102.22, 97.54 101.08, 25.75 103 M194.25 103 C158.09 102.49, 120.73 102.82, 25.75 103 M25.75 103 C7.13 103.38, -0.39 95.95, 0 77.25 M25.75 103 C9.58 102.85, 1.36 93.64, 0 77.25 M0 77.25 C0.38 68.27, -0.83 57.21, 0 25.75 M0 77.25 C-0.29 66.69, -0.62 55.34, 0 25.75 M0 25.75 C0.78 7.3, 8.98 1.52, 25.75 0 M0 25.75 C-0.48 10.76, 9.15 -0.14, 25.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(656 350) rotate(0 110 20)"><text x="110" 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">(is-my-json-valid</text><text x="110" y="34.096000000000004" 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">checks objects)</text></g><g stroke-linecap="round" transform="translate(635 158) rotate(0 131.5 51.5)"><path d="M25.75 0 C69.6 -1.04, 110.18 -3.28, 237.25 0 M25.75 0 C109.48 0.36, 192.8 1.81, 237.25 0 M237.25 0 C255.42 -1.1, 264.18 7.13, 263 25.75 M237.25 0 C253.94 0.05, 262.35 7.69, 263 25.75 M263 25.75 C261.89 44.5, 261.54 60.1, 263 77.25 M263 25.75 C263.84 43.31, 261.94 60.75, 263 77.25 M263 77.25 C263.52 93.51, 255.47 102.82, 237.25 103 M263 77.25 C263.4 93.23, 254.78 101.12, 237.25 103 M237.25 103 C161.95 106.45, 86.32 105.84, 25.75 103 M237.25 103 C180.87 102.69, 124.34 103.13, 25.75 103 M25.75 103 C7.44 101.4, -1.81 96.14, 0 77.25 M25.75 103 C8.45 101.31, -1.81 95.3, 0 77.25 M0 77.25 C1.91 60.34, -0.06 45.34, 0 25.75 M0 77.25 C0.46 60.4, 0.16 45.69, 0 25.75 M0 25.75 C0.94 7.92, 6.95 1.09, 25.75 0 M0 25.75 C1.66 7.74, 7.56 0.05, 25.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(635 202) rotate(0 131.5 20)"><text x="131.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">(merge defaults into</text><text x="131.5" y="34.096000000000004" 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">new records)</text></g><g stroke-linecap="round" transform="translate(662 454) rotate(0 104 51.5)"><path d="M25.75 0 C56.55 1.75, 90.51 0.04, 182.25 0 M25.75 0 C85.12 -0.84, 141.75 0.64, 182.25 0 M182.25 0 C197.67 1.14, 208.57 9.25, 208 25.75 M182.25 0 C198.05 -0.77, 209.61 8.51, 208 25.75 M208 25.75 C209.43 43.74, 207.86 65.44, 208 77.25 M208 25.75 C208.18 38.45, 208.7 52.98, 208 77.25 M208 77.25 C209.79 94.25, 201.02 102.14, 182.25 103 M208 77.25 C207.97 94.02, 199.83 104.2, 182.25 103 M182.25 103 C121.68 103.13, 59.55 103.97, 25.75 103 M182.25 103 C143.73 103.06, 103.28 101.92, 25.75 103 M25.75 103 C7.58 102.53, -0.1 94.88, 0 77.25 M25.75 103 C10.04 104.59, 1.3 94.69, 0 77.25 M0 77.25 C-0.15 55.37, 1.79 35.45, 0 25.75 M0 77.25 C0.38 62.5, -0.11 48.35, 0 25.75 M0 25.75 C0.75 9.04, 8.78 1.69, 25.75 0 M0 25.75 C-1.8 8.79, 10.52 -0.42, 25.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(662 498) rotate(0 104 20)"><text x="104" 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">(role-based CRUD</text><text x="104" y="34.096000000000004" 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">permissions)</text></g><g stroke-linecap="round"><g transform="translate(185 273.248) rotate(0 45 -105.34432642275796)"><path d="M0 0 C3.97 0.56, 5.86 0.93, 16 0 M0 0 C3.88 0.12, 8.25 -0.19, 16 0 M16 0 C17.17 -0.02, 17.22 -0.72, 19.88 -1.88 M16 0 C16.79 -0.24, 17.76 -0.67, 19.88 -1.88 M19.88 -1.88 C20.9 -3.48, 22.6 -6.29, 23.52 -7.24 M19.88 -1.88 C20.7 -2.73, 21.23 -3.96, 23.52 -7.24 M23.52 -7.24 C24.01 -9.92, 25.38 -12.79, 26.96 -15.65 M23.52 -7.24 C25 -10.32, 25.52 -12.69, 26.96 -15.65 M26.96 -15.65 C27.33 -18.71, 29.84 -22.57, 30.23 -26.66 M26.96 -15.65 C27.29 -18.01, 28.93 -20.34, 30.23 -26.66 M30.23 -26.66 C32.59 -31, 32.94 -38.06, 33.36 -39.84 M30.23 -26.66 C31.29 -30.02, 31.46 -33.24, 33.36 -39.84 M33.36 -39.84 C33.32 -45.44, 34.1 -50.15, 36.37 -54.77 M33.36 -39.84 C34.73 -43.33, 34.69 -46.25, 36.37 -54.77 M36.37 -54.77 C38.41 -62.51, 37.35 -68.33, 39.29 -71 M36.37 -54.77 C37.16 -60.08, 38.65 -65.87, 39.29 -71 M39.29 -71 C39.03 -75.93, 41 -81.47, 42.16 -88.09 M39.29 -71 C39.12 -75.15, 41.48 -78.62, 42.16 -88.09 M42.16 -88.09 C41.61 -95.82, 45.74 -100.48, 45 -105.62 M42.16 -88.09 C42.38 -91.95, 43.34 -95.86, 45 -105.62 M45 -105.62 C45.71 -111.25, 47.05 -115.41, 47.84 -123.16 M45 -105.62 C46.18 -109.96, 47.17 -115.48, 47.84 -123.16 M47.84 -123.16 C47.2 -128.51, 48.19 -132.73, 50.71 -140.25 M47.84 -123.16 C48.29 -129.23, 50.47 -136.16, 50.71 -140.25 M50.71 -140.25 C52.86 -142.82, 52.26 -147.26, 53.63 -156.48 M50.71 -140.25 C52.31 -145.71, 53.16 -150.01, 53.63 -156.48 M53.63 -156.48 C55.59 -162.36, 55.28 -165.81, 56.64 -171.4 M53.63 -156.48 C54.33 -162.92, 55.77 -167.65, 56.64 -171.4 M56.64 -171.4 C56.29 -175.44, 56.82 -177.86, 59.77 -184.59 M56.64 -171.4 C57.83 -173.59, 57.94 -176.93, 59.77 -184.59 M59.77 -184.59 C61.81 -188.66, 61.06 -191.99, 63.04 -195.6 M59.77 -184.59 C60.97 -189.27, 62.62 -192.93, 63.04 -195.6 M63.04 -195.6 C63.78 -197.61, 65.34 -199.9, 66.48 -204 M63.04 -195.6 C64.43 -197.89, 65.42 -200.63, 66.48 -204 M66.48 -204 C67.12 -205.84, 69.19 -207.28, 70.12 -209.36 M66.48 -204 C67.32 -205.56, 68.06 -207.09, 70.12 -209.36 M70.12 -209.36 C71.72 -209.71, 73.01 -210.58, 74 -211.25 M70.12 -209.36 C71.61 -210.14, 73.12 -210.9, 74 -211.25 M74 -211.25 C78.7 -209.58, 82.52 -210.06, 90 -211.25 M74 -211.25 C79.32 -210.49, 83.44 -211.34, 90 -211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 273.248) rotate(0 45 -105.34432642275796)"><path d="M82.54 -208.37 C84.43 -208.67, 85.27 -209.07, 90 -211.25 M82.54 -208.37 C84.33 -209.01, 86.39 -209.87, 90 -211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 273.248) rotate(0 45 -105.34432642275796)"><path d="M82.43 -213.84 C84.31 -213.04, 85.17 -212.33, 90 -211.25 M82.43 -213.84 C84.27 -213.14, 86.35 -212.66, 90 -211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(185 280.416) rotate(0 50.5 -34.941189401781756)"><path d="M0 0 C4.38 1.54, 7.31 -0.51, 16 0 M0 0 C3.21 -0.34, 7.63 -0.54, 16 0 M16 0 C17.06 0.18, 17.94 0.04, 19.99 -0.63 M16 0 C17.25 -0.18, 18.82 -0.39, 19.99 -0.63 M19.99 -0.63 C20.69 -1.07, 22.19 -1.1, 23.93 -2.41 M19.99 -0.63 C21.31 -1.05, 22.46 -1.99, 23.93 -2.41 M23.93 -2.41 C25.28 -2.95, 25.63 -3.67, 27.82 -5.22 M23.93 -2.41 C25.02 -3.27, 26.84 -4.3, 27.82 -5.22 M27.82 -5.22 C29.49 -6.15, 30.44 -7.86, 31.66 -8.89 M27.82 -5.22 C28.97 -5.94, 29.78 -6.67, 31.66 -8.89 M31.66 -8.89 C32.68 -10.91, 34.88 -12.64, 35.47 -13.28 M31.66 -8.89 C33.19 -10.19, 34.31 -11.88, 35.47 -13.28 M35.47 -13.28 C36.61 -14.16, 36.8 -15.64, 39.26 -18.26 M35.47 -13.28 C36.57 -14.58, 37.05 -15.69, 39.26 -18.26 M39.26 -18.26 C40.6 -19.81, 41.69 -21.77, 43.02 -23.67 M39.26 -18.26 C40.35 -19.77, 41.49 -21.31, 43.02 -23.67 M43.02 -23.67 C44.46 -24.86, 45.17 -26.25, 46.76 -29.36 M43.02 -23.67 C44.37 -25.43, 45.3 -26.77, 46.76 -29.36 M46.76 -29.36 C47.4 -30.79, 49.97 -33.54, 50.5 -35.21 M46.76 -29.36 C47.89 -31.8, 49.48 -33.85, 50.5 -35.21 M50.5 -35.21 C51.52 -36.71, 52.32 -38.14, 54.24 -41.05 M50.5 -35.21 C51.74 -37.32, 53.56 -39.52, 54.24 -41.05 M54.24 -41.05 C55.78 -43.69, 57.5 -45.57, 57.98 -46.75 M54.24 -41.05 C55.88 -43.52, 57.52 -45.6, 57.98 -46.75 M57.98 -46.75 C59.15 -47.86, 59.83 -49.94, 61.74 -52.16 M57.98 -46.75 C59.16 -48.62, 60.8 -50.27, 61.74 -52.16 M61.74 -52.16 C63.16 -53.95, 64.1 -55.98, 65.53 -57.13 M61.74 -52.16 C62.82 -53.53, 63.21 -54.49, 65.53 -57.13 M65.53 -57.13 C67.52 -58.83, 68.6 -60.67, 69.34 -61.53 M65.53 -57.13 C67.02 -58.59, 68.13 -59.76, 69.34 -61.53 M69.34 -61.53 C69.71 -62.59, 70.59 -63.12, 73.18 -65.2 M69.34 -61.53 C70.3 -62.21, 71.19 -63.16, 73.18 -65.2 M73.18 -65.2 C73.85 -66.02, 74.71 -66.23, 77.07 -68 M73.18 -65.2 C74.1 -66.03, 75.23 -66.86, 77.07 -68 M77.07 -68 C78.22 -68.55, 79.24 -69.28, 81.01 -69.79 M77.07 -68 C77.77 -68.52, 78.87 -68.9, 81.01 -69.79 M81.01 -69.79 C82.17 -69.76, 83.72 -70.18, 85 -70.42 M81.01 -69.79 C82 -70.04, 82.84 -69.96, 85 -70.42 M85 -70.42 C88.25 -70.08, 94.07 -69.8, 101 -70.42 M85 -70.42 C89.07 -70.57, 92.49 -70.31, 101 -70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 280.416) rotate(0 50.5 -34.941189401781756)"><path d="M93.49 -67.66 C95.59 -67.45, 96.95 -69.03, 101 -70.42 M93.49 -67.66 C95 -68.42, 97.1 -69.11, 101 -70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 280.416) rotate(0 50.5 -34.941189401781756)"><path d="M93.48 -73.13 C95.56 -71.82, 96.93 -72.3, 101 -70.42 M93.48 -73.13 C94.97 -72.72, 97.08 -72.23, 101 -70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(185 287.584) rotate(0 56.5 35.30483274921849)"><path d="M0 0 C3.02 0.37, 6.68 1.49, 16 0 M0 0 C4.37 0.07, 9.27 0.45, 16 0 M16 0 C16.57 0.17, 18.21 -0.02, 20.69 0.63 M16 0 C17.79 0.49, 19.66 0.57, 20.69 0.63 M20.69 0.63 C21.69 1.43, 23.49 1.37, 25.31 2.41 M20.69 0.63 C22.35 1.36, 24.11 1.97, 25.31 2.41 M25.31 2.41 C27.21 3.38, 28.11 4.38, 29.88 5.22 M25.31 2.41 C26.32 2.78, 27.43 3.73, 29.88 5.22 M29.88 5.22 C31.25 5.79, 31.91 7.2, 34.39 8.89 M29.88 5.22 C31.58 6.51, 33.53 8.23, 34.39 8.89 M34.39 8.89 C35.28 9.33, 36.62 10.5, 38.86 13.28 M34.39 8.89 C35.49 10.29, 36.69 11.32, 38.86 13.28 M38.86 13.28 C40.36 15.54, 41.81 16.42, 43.3 18.26 M38.86 13.28 C39.77 14.72, 41.59 16.2, 43.3 18.26 M43.3 18.26 C44.24 20.13, 46.27 21.65, 47.71 23.67 M43.3 18.26 C44.62 19.66, 45.58 21.26, 47.71 23.67 M47.71 23.67 C48.68 25.16, 49.03 26.31, 52.11 29.36 M47.71 23.67 C49.32 25.35, 50.22 26.6, 52.11 29.36 M52.11 29.36 C54.22 32.21, 55.08 33.45, 56.5 35.21 M52.11 29.36 C53.45 31.64, 55.02 33.48, 56.5 35.21 M56.5 35.21 C57.52 36.54, 58.7 38.41, 60.89 41.05 M56.5 35.21 C57.68 37.61, 59.58 39.41, 60.89 41.05 M60.89 41.05 C61.36 41.57, 63.12 43.3, 65.29 46.75 M60.89 41.05 C62.48 42.97, 63.32 44.87, 65.29 46.75 M65.29 46.75 C66.56 48.49, 66.94 49.89, 69.7 52.16 M65.29 46.75 C66.14 47.8, 67.25 48.94, 69.7 52.16 M69.7 52.16 C71.13 52.91, 72.16 55.1, 74.14 57.13 M69.7 52.16 C71.13 53.87, 72.59 55.72, 74.14 57.13 M74.14 57.13 C76.08 58.87, 76.91 59.7, 78.61 61.53 M74.14 57.13 C75.39 58.36, 75.87 59.23, 78.61 61.53 M78.61 61.53 C80.64 62.65, 82.48 64.61, 83.13 65.2 M78.61 61.53 C79.93 62.36, 80.64 63.25, 83.13 65.2 M83.13 65.2 C84.61 66.07, 84.86 66.12, 87.69 68 M83.13 65.2 C84.68 66.18, 86.13 66.91, 87.69 68 M87.69 68 C89.07 68.45, 89.2 69.22, 92.31 69.79 M87.69 68 C89.26 68.52, 90.52 68.95, 92.31 69.79 M92.31 69.79 C93.76 70.38, 95.42 70.31, 97 70.42 M92.31 69.79 C94.18 69.99, 95.68 70.47, 97 70.42 M97 70.42 C103.17 68.83, 107.88 71.29, 113 70.42 M97 70.42 C101.16 70.78, 105.49 69.77, 113 70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 287.584) rotate(0 56.5 35.30483274921849)"><path d="M105.39 72.88 C106.8 72.57, 108.56 72.63, 113 70.42 M105.39 72.88 C107.48 72.19, 109.82 71.66, 113 70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 287.584) rotate(0 56.5 35.30483274921849)"><path d="M105.59 67.41 C106.99 68.2, 108.71 69.36, 113 70.42 M105.59 67.41 C107.57 68.34, 109.85 69.41, 113 70.42" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(185 294.752) rotate(0 50.5 105.69402903039284)"><path d="M0 0 C4.37 -0.68, 5.82 0.03, 16 0 M0 0 C4.76 0.1, 9.19 -0.7, 16 0 M16 0 C17.69 0.84, 19.28 1.58, 19.99 1.88 M16 0 C17.2 0.78, 18.49 1.36, 19.99 1.88 M19.99 1.88 C21.44 3.38, 21.85 4.5, 23.93 7.24 M19.99 1.88 C21.3 3.78, 22.98 5.8, 23.93 7.24 M23.93 7.24 C23.93 8.29, 26.39 11.16, 27.82 15.65 M23.93 7.24 C24.37 8.74, 25.83 10.31, 27.82 15.65 M27.82 15.65 C29.74 19.33, 30.35 23.4, 31.66 26.66 M27.82 15.65 C29.5 19.58, 30.6 24.17, 31.66 26.66 M31.66 26.66 C31.85 32.81, 35.68 37.31, 35.47 39.84 M31.66 26.66 C32.42 30.1, 33.29 32.6, 35.47 39.84 M35.47 39.84 C34.83 43.51, 37.71 47.67, 39.26 54.77 M35.47 39.84 C36.8 43.76, 37.11 46.71, 39.26 54.77 M39.26 54.77 C41.19 59.71, 43.8 66.18, 43.02 71 M39.26 54.77 C40.17 59.9, 41.64 63.02, 43.02 71 M43.02 71 C45.31 75.24, 44.09 81.66, 46.76 88.09 M43.02 71 C44.31 76.45, 45.92 82.45, 46.76 88.09 M46.76 88.09 C46.59 95.19, 49.39 100.07, 50.5 105.62 M46.76 88.09 C47.35 94.18, 49.12 101.22, 50.5 105.62 M50.5 105.62 C51.19 111.39, 53.2 115.94, 54.24 123.16 M50.5 105.62 C52.42 110.13, 53.03 116.75, 54.24 123.16 M54.24 123.16 C55.9 128.81, 57.3 133.64, 57.98 140.25 M54.24 123.16 C54.54 126.47, 56.71 130.72, 57.98 140.25 M57.98 140.25 C58.66 146.71, 62.41 153.33, 61.74 156.48 M57.98 140.25 C59.22 143.76, 59.65 148.1, 61.74 156.48 M61.74 156.48 C62.88 160.85, 63.4 165.75, 65.53 171.4 M61.74 156.48 C62.75 160.63, 63.98 166.7, 65.53 171.4 M65.53 171.4 C66.06 175.45, 68.93 178.74, 69.34 184.59 M65.53 171.4 C66.07 173.8, 67.11 177.72, 69.34 184.59 M69.34 184.59 C70.98 186.01, 72.01 188.72, 73.18 195.6 M69.34 184.59 C70.14 188.51, 71.97 191.46, 73.18 195.6 M73.18 195.6 C74.78 199.29, 75.89 201.74, 77.07 204 M73.18 195.6 C74.31 198.83, 75.52 201.44, 77.07 204 M77.07 204 C77.66 204.59, 78.56 206.21, 81.01 209.36 M77.07 204 C78.09 206.03, 79.97 207.48, 81.01 209.36 M81.01 209.36 C81.99 210.11, 82.72 210.5, 85 211.25 M81.01 209.36 C81.65 209.53, 82.6 210.18, 85 211.25 M85 211.25 C91.08 212.36, 94.49 210.96, 101 211.25 M85 211.25 C90 211.89, 94.34 210.83, 101 211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 294.752) rotate(0 50.5 105.69402903039284)"><path d="M93.45 213.9 C95.57 213.02, 96.2 212.84, 101 211.25 M93.45 213.9 C95.72 213.21, 97.82 212.07, 101 211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(185 294.752) rotate(0 50.5 105.69402903039284)"><path d="M93.51 208.42 C95.57 208.65, 96.19 209.57, 101 211.25 M93.51 208.42 C95.73 209.27, 97.8 209.65, 101 211.25" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(528 62) rotate(0 45 -0.05554298320738127)"><path d="M0 0 C3.92 1.29, 6.29 -0.12, 16 0 M0 0 C5.25 0.28, 9.71 -0.82, 16 0 M16 0 C17.27 -0.41, 18.57 0.1, 19.88 0 M16 0 C17.01 -0.14, 18.07 0.09, 19.88 0 M19.88 0 C20.97 0.02, 21.73 -0.02, 23.52 -0.02 M19.88 0 C20.78 -0.09, 22.11 -0.12, 23.52 -0.02 M23.52 -0.02 C24.2 0.18, 24.87 0.08, 26.96 -0.04 M23.52 -0.02 C24.66 -0.01, 25.98 -0.17, 26.96 -0.04 M26.96 -0.04 C27.83 0.15, 28.99 -0.17, 30.23 -0.06 M26.96 -0.04 C27.76 -0.17, 28.5 -0.17, 30.23 -0.06 M30.23 -0.06 C31.37 -0.1, 32.22 -0.36, 33.36 -0.09 M30.23 -0.06 C31.4 -0.01, 32.54 -0.23, 33.36 -0.09 M33.36 -0.09 C34.46 -0.28, 35.4 -0.01, 36.37 -0.13 M33.36 -0.09 C34.04 0.01, 34.62 -0.03, 36.37 -0.13 M36.37 -0.13 C37.41 0.04, 38.31 0.05, 39.29 -0.17 M36.37 -0.13 C37.51 -0.12, 38.47 -0.03, 39.29 -0.17 M39.29 -0.17 C39.95 -0.17, 41.21 -0.23, 42.16 -0.21 M39.29 -0.17 C40.15 -0.2, 41.15 -0.24, 42.16 -0.21 M42.16 -0.21 C43.01 -0.19, 43.83 -0.03, 45 -0.25 M42.16 -0.21 C42.95 -0.24, 43.61 -0.27, 45 -0.25 M45 -0.25 C45.81 -0.16, 46.77 -0.15, 47.84 -0.29 M45 -0.25 C46.23 -0.24, 47.23 -0.15, 47.84 -0.29 M47.84 -0.29 C48.77 -0.06, 49.99 -0.32, 50.71 -0.33 M47.84 -0.29 C48.98 -0.29, 49.89 -0.19, 50.71 -0.33 M50.71 -0.33 C51.76 -0.14, 52.47 -0.16, 53.63 -0.37 M50.71 -0.33 C51.28 -0.5, 51.89 -0.32, 53.63 -0.37 M53.63 -0.37 C54.11 -0.55, 55.25 -0.56, 56.64 -0.41 M53.63 -0.37 C54.85 -0.22, 55.69 -0.5, 56.64 -0.41 M56.64 -0.41 C57.54 -0.45, 58.25 -0.51, 59.77 -0.44 M56.64 -0.41 C57.97 -0.47, 58.9 -0.44, 59.77 -0.44 M59.77 -0.44 C60.2 -0.38, 60.98 -0.56, 63.04 -0.46 M59.77 -0.44 C60.84 -0.38, 61.73 -0.57, 63.04 -0.46 M63.04 -0.46 C64.03 -0.15, 65.43 -0.16, 66.48 -0.48 M63.04 -0.46 C64.21 -0.41, 65.79 -0.37, 66.48 -0.48 M66.48 -0.48 C67.1 -0.17, 68.32 -0.22, 70.12 -0.5 M66.48 -0.48 C67.88 -0.6, 69.02 -0.36, 70.12 -0.5 M70.12 -0.5 C71.66 -0.84, 72.92 -0.56, 74 -0.5 M70.12 -0.5 C71.1 -0.55, 72.62 -0.57, 74 -0.5 M74 -0.5 C80.42 0.73, 84.21 -0.05, 90 -0.5 M74 -0.5 C79.84 -0.73, 84.47 -0.44, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(528 62) rotate(0 45 -0.05554298320738127)"><path d="M82.47 2.21 C84.33 2.31, 85.41 1.06, 90 -0.5 M82.47 2.21 C84.95 1.53, 87.03 0.16, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(528 62) rotate(0 45 -0.05554298320738127)"><path d="M82.49 -3.26 C84.37 -2.06, 85.45 -2.21, 90 -0.5 M82.49 -3.26 C84.98 -2.28, 87.06 -2, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(517 210) rotate(0 69.5 73.729942468651)"><path d="M0 0 C2.09 -1.49, 6.15 1.58, 16 0 M0 0 C3.94 0.03, 8.26 0.03, 16 0 M16 0 C18.04 0.46, 20.5 0.45, 22.19 1.32 M16 0 C17.98 0.52, 20.66 0.95, 22.19 1.32 M22.19 1.32 C24.2 2.08, 25.88 3.96, 28.3 5.06 M22.19 1.32 C23.52 2.03, 24.45 2.51, 28.3 5.06 M28.3 5.06 C30.82 7.69, 33.24 8.81, 34.33 10.93 M28.3 5.06 C30.3 6.62, 32.58 9, 34.33 10.93 M34.33 10.93 C36.03 13.59, 37.99 16.97, 40.29 18.61 M34.33 10.93 C35.67 13.02, 36.68 14.35, 40.29 18.61 M40.29 18.61 C41.09 22.23, 43.96 24.52, 46.2 27.82 M40.29 18.61 C42.19 21.11, 43.21 22.41, 46.2 27.82 M46.2 27.82 C48.29 31.75, 48.67 33.39, 52.06 38.24 M46.2 27.82 C48.66 30.87, 49.53 33.95, 52.06 38.24 M52.06 38.24 C54.12 41.67, 55.47 46.28, 57.89 49.57 M52.06 38.24 C54.71 42.91, 56.83 46.56, 57.89 49.57 M57.89 49.57 C58.14 52.4, 61.69 54.25, 63.7 61.51 M57.89 49.57 C59.94 54.92, 62.12 58.83, 63.7 61.51 M63.7 61.51 C66.39 66.19, 67.06 69.93, 69.5 73.75 M63.7 61.51 C65.63 65.74, 67.21 70.71, 69.5 73.75 M69.5 73.75 C70.83 78.79, 74.79 82.12, 75.3 85.99 M69.5 73.75 C71.09 78.26, 73.88 82.81, 75.3 85.99 M75.3 85.99 C77.15 89.29, 80.01 93.89, 81.11 97.93 M75.3 85.99 C76.85 88.87, 77.82 91.6, 81.11 97.93 M81.11 97.93 C83.61 102.89, 86.39 106.75, 86.94 109.26 M81.11 97.93 C83.13 101.69, 85.27 106.55, 86.94 109.26 M86.94 109.26 C89.23 113.87, 90.59 115.38, 92.8 119.68 M86.94 109.26 C89.53 112.9, 90.86 117.2, 92.8 119.68 M92.8 119.68 C95.76 123.07, 97.01 126.06, 98.71 128.89 M92.8 119.68 C94.61 122.11, 95.82 124.53, 98.71 128.89 M98.71 128.89 C100.28 131.46, 102.65 134.54, 104.67 136.57 M98.71 128.89 C101.26 131.55, 103.46 134.32, 104.67 136.57 M104.67 136.57 C106.77 139.08, 109.67 141.51, 110.7 142.44 M104.67 136.57 C106.05 138.09, 107.45 139.84, 110.7 142.44 M110.7 142.44 C112.72 143.33, 114.56 144.58, 116.81 146.18 M110.7 142.44 C112.31 143.85, 114.8 144.77, 116.81 146.18 M116.81 146.18 C118.6 146.19, 120.55 147.34, 123 147.5 M116.81 146.18 C118.27 146.32, 120.44 147.17, 123 147.5 M123 147.5 C126.3 146.37, 129.78 148.77, 139 147.5 M123 147.5 C128.33 147.18, 134.13 147.37, 139 147.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(517 210) rotate(0 69.5 73.729942468651)"><path d="M131.41 150.04 C132.37 148.78, 134.32 149.81, 139 147.5 M131.41 150.04 C133.27 149.45, 135.33 148.84, 139 147.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(517 210) rotate(0 69.5 73.729942468651)"><path d="M131.56 144.57 C132.5 144.41, 134.42 146.54, 139 147.5 M131.56 144.57 C133.41 145.28, 135.44 145.98, 139 147.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(506 358) rotate(0 64.5 -74.20772254818046)"><path d="M0 0 C3.97 -0.51, 5.1 1.11, 16 0 M0 0 C3.72 0.28, 8.44 0.06, 16 0 M16 0 C17.95 -0.96, 20.32 -1.12, 21.62 -1.32 M16 0 C17.86 -0.38, 19.61 -0.85, 21.62 -1.32 M21.62 -1.32 C23.93 -2.19, 24.36 -3.48, 27.15 -5.09 M21.62 -1.32 C23.86 -2.41, 25.79 -3.59, 27.15 -5.09 M27.15 -5.09 C29.02 -6.82, 30.14 -7.5, 32.62 -11 M27.15 -5.09 C29.42 -7.68, 31.2 -9.7, 32.62 -11 M32.62 -11 C33.5 -13.02, 35.55 -14.57, 38.02 -18.74 M32.62 -11 C33.51 -12.37, 35.34 -14, 38.02 -18.74 M38.02 -18.74 C40.43 -23.37, 42.8 -25.78, 43.38 -28.01 M38.02 -18.74 C39.67 -21.03, 40.58 -23.28, 43.38 -28.01 M43.38 -28.01 C46.49 -32.95, 48.64 -35.47, 48.69 -38.5 M43.38 -28.01 C45.27 -32.26, 47.77 -35.79, 48.69 -38.5 M48.69 -38.5 C49.77 -41.6, 51.2 -46.32, 53.98 -49.91 M48.69 -38.5 C49.46 -41.26, 51.64 -43.91, 53.98 -49.91 M53.98 -49.91 C56.63 -55.33, 59.11 -59.47, 59.24 -61.93 M53.98 -49.91 C55.05 -53.79, 57.08 -57.68, 59.24 -61.93 M59.24 -61.93 C59.5 -65.14, 60.57 -67.96, 64.5 -74.25 M59.24 -61.93 C61.56 -66.7, 62.9 -70.9, 64.5 -74.25 M64.5 -74.25 C65.27 -76.9, 66.34 -81.5, 69.76 -86.57 M64.5 -74.25 C66.77 -79.32, 68.93 -83.94, 69.76 -86.57 M69.76 -86.57 C72.54 -89.2, 72.84 -91.82, 75.02 -98.59 M69.76 -86.57 C72.25 -91.54, 73.96 -95.96, 75.02 -98.59 M75.02 -98.59 C77.02 -100.55, 78.08 -102.87, 80.31 -110 M75.02 -98.59 C76.35 -102.31, 77.79 -105.87, 80.31 -110 M80.31 -110 C82.03 -113.96, 83.27 -119.11, 85.62 -120.49 M80.31 -110 C81.88 -113.04, 83.41 -116.6, 85.62 -120.49 M85.62 -120.49 C86.58 -123.58, 89.19 -124.78, 90.98 -129.76 M85.62 -120.49 C87.71 -123.27, 89.28 -126.42, 90.98 -129.76 M90.98 -129.76 C92.74 -132.35, 94.5 -132.72, 96.38 -137.5 M90.98 -129.76 C92.53 -131.95, 93.87 -133.93, 96.38 -137.5 M96.38 -137.5 C97.43 -138.9, 100.16 -142.12, 101.85 -143.41 M96.38 -137.5 C97.66 -138.84, 98.68 -140.55, 101.85 -143.41 M101.85 -143.41 C104.17 -145.37, 106.49 -146.51, 107.38 -147.18 M101.85 -143.41 C103.46 -144.72, 105.17 -145.45, 107.38 -147.18 M107.38 -147.18 C109.14 -146.98, 110.77 -147.53, 113 -148.5 M107.38 -147.18 C109.17 -147.78, 110.59 -147.79, 113 -148.5 M113 -148.5 C117.51 -147.92, 119.91 -149.44, 129 -148.5 M113 -148.5 C117.91 -148.91, 124.1 -147.93, 129 -148.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(506 358) rotate(0 64.5 -74.20772254818046)"><path d="M121.59 -145.49 C123.45 -146.35, 123.9 -146.15, 129 -148.5 M121.59 -145.49 C123.29 -146.13, 125.5 -147.03, 129 -148.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(506 358) rotate(0 64.5 -74.20772254818046)"><path d="M121.39 -150.96 C123.3 -150.71, 123.78 -149.4, 129 -148.5 M121.39 -150.96 C123.15 -150.18, 125.41 -149.65, 129 -148.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(517 506) rotate(0 72.5 -0.13867801585647044)"><path d="M0 0 C2.09 -0.73, 6.91 1.08, 16 0 M0 0 C4.1 -0.13, 6.47 -0.22, 16 0 M16 0 C17.76 -0.23, 20.43 -0.24, 22.54 0 M16 0 C17.92 0.15, 19.01 0.14, 22.54 0 M22.54 0 C24.22 -0.27, 25.46 -0.34, 28.99 -0.02 M22.54 0 C24.01 -0.02, 25.82 0.1, 28.99 -0.02 M28.99 -0.02 C29.79 0.63, 31.73 0.36, 35.36 -0.04 M28.99 -0.02 C30.94 -0.21, 32.79 0.25, 35.36 -0.04 M35.36 -0.04 C36.54 0.05, 38.26 -0.16, 41.65 -0.06 M35.36 -0.04 C36.85 0.12, 38.85 -0.05, 41.65 -0.06 M41.65 -0.06 C43.34 0.08, 45.25 -0.59, 47.89 -0.09 M41.65 -0.06 C43.44 0.14, 44.7 -0.24, 47.89 -0.09 M47.89 -0.09 C49.7 -0.47, 50.31 -0.47, 54.09 -0.13 M47.89 -0.09 C50.24 -0.04, 52.74 -0.15, 54.09 -0.13 M54.09 -0.13 C55.79 -0.03, 58.38 -0.3, 60.24 -0.17 M54.09 -0.13 C55.33 0.13, 56.54 -0.35, 60.24 -0.17 M60.24 -0.17 C62.36 0.01, 64.38 0.2, 66.38 -0.21 M60.24 -0.17 C62.08 0.08, 64.41 -0.09, 66.38 -0.21 M66.38 -0.21 C68.33 -0.09, 69.29 -0.72, 72.5 -0.25 M66.38 -0.21 C68.07 0.09, 69.69 -0.23, 72.5 -0.25 M72.5 -0.25 C74.47 -0.83, 76.44 -0.72, 78.62 -0.29 M72.5 -0.25 C73.69 -0.54, 75.45 -0.13, 78.62 -0.29 M78.62 -0.29 C80.92 -0.92, 82.88 -0.53, 84.76 -0.33 M78.62 -0.29 C80.34 -0.01, 81.55 -0.36, 84.76 -0.33 M84.76 -0.33 C87.22 0.16, 89.26 -0.42, 90.91 -0.37 M84.76 -0.33 C86.68 -0.01, 88.95 -0.06, 90.91 -0.37 M90.91 -0.37 C92.26 -0.32, 94.85 -0.25, 97.11 -0.41 M90.91 -0.37 C92.36 -0.21, 93.53 -0.03, 97.11 -0.41 M97.11 -0.41 C99.3 -0.7, 101.29 -0.4, 103.35 -0.44 M97.11 -0.41 C99.26 -0.17, 100.94 -0.34, 103.35 -0.44 M103.35 -0.44 C104.75 -0.44, 106.38 0.09, 109.64 -0.46 M103.35 -0.44 C105.29 -0.7, 106.75 -0.48, 109.64 -0.46 M109.64 -0.46 C111.89 -0.34, 114.07 -0.39, 116.01 -0.48 M109.64 -0.46 C111.83 -0.48, 113.9 -0.27, 116.01 -0.48 M116.01 -0.48 C117.07 -0.18, 119.35 0.05, 122.46 -0.5 M116.01 -0.48 C118.12 -0.25, 119.5 -0.36, 122.46 -0.5 M122.46 -0.5 C124.94 0.16, 127.28 -0.58, 129 -0.5 M122.46 -0.5 C125.07 -0.6, 126.92 -0.61, 129 -0.5 M129 -0.5 C132.49 -0.54, 137.39 -0.31, 145 -0.5 M129 -0.5 C133.14 0.35, 138.46 0.31, 145 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(517 506) rotate(0 72.5 -0.13867801585647044)"><path d="M137.77 2.92 C138.67 1.87, 140.93 2.09, 145 -0.5 M137.77 2.92 C139.61 2.1, 140.63 1.29, 145 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(517 506) rotate(0 72.5 -0.13867801585647044)"><path d="M137.26 -2.53 C138.25 -2.49, 140.61 -1.17, 145 -0.5 M137.26 -2.53 C139.27 -2.14, 140.4 -1.73, 145 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(275 39.5) rotate(0 126.5 12.5)"><text x="126.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">Column Schema</text></g><g transform="translate(286 187.5) rotate(0 115.5 12.5)"><text x="115.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">JSON Schema</text></g><g transform="translate(298 335.5) rotate(0 104 12.5)"><text x="104" 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">Default Object</text></g><g transform="translate(286 483.5) rotate(0 115.5 12.5)"><text x="115.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">Authorizer</text></g><g transform="translate(618 29) rotate(0 148 12.5)"><text x="148" 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">Query Generation</text></g><g transform="translate(656 325) rotate(0 110 12.5)"><text x="110" 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">Validation</text></g><g transform="translate(635 177) rotate(0 131.5 12.5)"><text x="131.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">Record Initialization</text></g><g transform="translate(662 473) rotate(0 104 12.5)"><text x="104" 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">Access Control</text></g></svg>
|
package/docs/providers/README.md
CHANGED
|
@@ -6,16 +6,8 @@ Meadow's provider system abstracts database communication behind a unified CRUD
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
└── Provider Interface
|
|
12
|
-
├── MySQL -> mysql2 connection pool, named placeholders
|
|
13
|
-
├── MSSQL -> mssql prepared statements, SCOPE_IDENTITY()
|
|
14
|
-
├── SQLite -> Lightweight embedded SQL
|
|
15
|
-
├── ALASQL -> In-memory JavaScript SQL engine (browser/Node)
|
|
16
|
-
├── MeadowEndpoints -> HTTP proxy to remote Meadow REST API
|
|
17
|
-
└── None -> No-op stub for testing
|
|
18
|
-
```
|
|
9
|
+
<!-- bespoke diagram: edit diagrams/overview.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/meadow/docs/providers -->
|
|
10
|
+

|
|
19
11
|
|
|
20
12
|
Every provider implements the same operation set:
|
|
21
13
|
|
|
@@ -32,9 +24,9 @@ Every provider implements the same operation set:
|
|
|
32
24
|
|
|
33
25
|
| Provider | Best For | Connection Module |
|
|
34
26
|
|----------|----------|-------------------|
|
|
35
|
-
| [MySQL](mysql.md) | Production web applications, MySQL/MariaDB | [meadow-connection-mysql](https://
|
|
36
|
-
| [MSSQL](mssql.md) | Enterprise environments, SQL Server | [meadow-connection-mssql](https://
|
|
37
|
-
| [SQLite](sqlite.md) | Embedded applications, local development | [meadow-connection-sqlite](https://
|
|
27
|
+
| [MySQL](mysql.md) | Production web applications, MySQL/MariaDB | [meadow-connection-mysql](https://fable-retold.github.io/meadow-connection-mysql/) |
|
|
28
|
+
| [MSSQL](mssql.md) | Enterprise environments, SQL Server | [meadow-connection-mssql](https://fable-retold.github.io/meadow-connection-mssql/) |
|
|
29
|
+
| [SQLite](sqlite.md) | Embedded applications, local development | [meadow-connection-sqlite](https://fable-retold.github.io/meadow-connection-sqlite/) |
|
|
38
30
|
| [ALASQL](alasql.md) | Browser applications, unit testing, prototyping | Built-in (no external connection) |
|
|
39
31
|
| MeadowEndpoints | Client-side proxy to remote Meadow APIs | Built-in (HTTP via simple-get) |
|
|
40
32
|
| None | Unit testing stubs, development scaffolding | None required |
|
|
@@ -250,4 +242,4 @@ meadow.doRead(meadow.query.addFilter('IDBook', 1),
|
|
|
250
242
|
|
|
251
243
|
- [Schema](schema/README.md) -- How schema definitions drive provider behavior
|
|
252
244
|
- [Query Overview](query/README.md) -- FoxHound query DSL and dialect generation
|
|
253
|
-
- [Meadow-Endpoints](https://
|
|
245
|
+
- [Meadow-Endpoints](https://fable-retold.github.io/meadow-endpoints/) -- REST API generation on top of Meadow providers
|