meadow-endpoints 4.0.22 → 4.0.24
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 +8 -15
- package/diagrams/how-it-works.excalidraw +1462 -0
- package/diagrams/how-it-works.mmd +9 -0
- package/diagrams/how-it-works.svg +2 -0
- package/dist/meadow-endpoints.js +572 -244
- package/dist/meadow-endpoints.js.map +1 -1
- package/dist/meadow-endpoints.min.js +18 -18
- package/dist/meadow-endpoints.min.js.map +1 -1
- package/docs/README.md +9 -25
- package/docs/_cover.md +9 -0
- package/docs/_sidebar.md +1 -0
- package/docs/_version.json +3 -3
- package/docs/architecture.md +119 -0
- package/docs/crud/README.md +6 -6
- package/docs/diagrams/behavior-injection-hook-points.excalidraw +677 -0
- package/docs/diagrams/behavior-injection-hook-points.mmd +9 -0
- package/docs/diagrams/behavior-injection-hook-points.svg +2 -0
- package/docs/diagrams/how-it-works.excalidraw +2777 -0
- package/docs/diagrams/how-it-works.mmd +16 -0
- package/docs/diagrams/how-it-works.svg +2 -0
- package/docs/diagrams/how-routes-are-generated.excalidraw +1237 -0
- package/docs/diagrams/how-routes-are-generated.mmd +13 -0
- package/docs/diagrams/how-routes-are-generated.svg +2 -0
- package/docs/diagrams/request-lifecycle.excalidraw +1897 -0
- package/docs/diagrams/request-lifecycle.mmd +22 -0
- package/docs/diagrams/request-lifecycle.svg +2 -0
- package/docs/diagrams/where-it-sits-in-the-stack.excalidraw +2068 -0
- package/docs/diagrams/where-it-sits-in-the-stack.mmd +19 -0
- package/docs/diagrams/where-it-sits-in-the-stack.svg +2 -0
- package/docs/index.html +2 -2
- package/docs/quickstart.md +151 -0
- package/docs/retold-catalog.json +155 -174
- package/docs/retold-keyword-index.json +6593 -2920
- package/package.json +8 -8
- package/source/Meadow-Endpoints.js +4 -0
- package/source/controller/Meadow-Endpoints-Controller-Base.js +40 -0
- package/source/endpoints/count/Meadow-Endpoint-Count.js +1 -0
- package/source/endpoints/count/Meadow-Endpoint-CountBy.js +1 -0
- package/source/endpoints/create/Meadow-Operation-Create.js +1 -0
- package/source/endpoints/delete/Meadow-Endpoint-Delete.js +1 -0
- package/source/endpoints/delete/Meadow-Endpoint-Undelete.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-Query.js +86 -0
- package/source/endpoints/read/Meadow-Endpoint-Read.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadDistinctList.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadLiteList.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadMax.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadSelectList.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-Reads.js +1 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadsBy.js +1 -0
- package/source/endpoints/update/Meadow-Operation-Update.js +2 -0
- package/source/endpoints/upsert/Meadow-Operation-Upsert.js +1 -0
- package/test/MeadowEndpoints_SessionOverride_tests.js +75 -0
- package/test/MeadowEndpoints_basic_tests.js +97 -0
- package/dist/indoctrinate_content_staging/Indoctrinate-Catalog-AppData.json +0 -4808
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
flowchart TD
|
|
2
|
+
A["HTTP Request<br/>(from Orator)"]
|
|
3
|
+
B["initializeRequestState(pRequest, 'Verb')<br/>marshals SessionData onto the request state"]
|
|
4
|
+
C["[Pre-Operation Behavior Injection]<br/>authenticate, authorize, validate"]
|
|
5
|
+
D["Build / Configure Query<br/>(filters, pagination, identifier)"]
|
|
6
|
+
E["[Query-Configuration Behavior Injection]<br/>modify query, add filters"]
|
|
7
|
+
F["Execute DAL Operation<br/>(doCreate / doRead / doReads / doUpdate / doDelete / doCount)"]
|
|
8
|
+
G["[Post-Operation Behavior Injection]<br/>transform results, audit, notify"]
|
|
9
|
+
H["Send Response"]
|
|
10
|
+
I["ErrorHandler.handleErrorIfSet()<br/>catches any error from the waterfall"]
|
|
11
|
+
|
|
12
|
+
A --> B
|
|
13
|
+
B --> C
|
|
14
|
+
C --> D
|
|
15
|
+
D --> E
|
|
16
|
+
E --> F
|
|
17
|
+
F --> G
|
|
18
|
+
G --> H
|
|
19
|
+
C -.error.-> I
|
|
20
|
+
E -.error.-> I
|
|
21
|
+
F -.error.-> I
|
|
22
|
+
G -.error.-> I
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 933 1252" width="933" height="1252"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dW3PbNlx1MDAxYX3vr+C4XHUwMDBm7c5YKu6XvMW3Jru9pHXaPmQ6O7RcYltMaFGlqDhpp/99QUpcdTAwMTRcdIpcdTAwMTVcdTAwMDGLWlNcdJNMK0HkR1xcvoNz8IFcdTAwMDD++sLzTtKPc3XyzDtRXHUwMDFmJn5cdTAwMTRcdTAwMDaJ/3BymqW/V8lcIoxn+ieUf1/Ey2SSXzlN0/mzb76BiI+B/lx1MDAwYp9cdTAwMTHJoVxc3aVcInWvZulCX/dGf/e8v/L/6l/CILt3MfXnavR8XHUwMDA08j/+u/yu/PdcIlx1MDAxZomapP7sLlLlT1x1MDAxZrJMXGKw+f5Rf4ds8/UhXGbSaZbE6SZtqsK7aapcdTAwMTO52KStrD7zSkOLNInfqfM4ipPs0V/CM3iFcPngXHUwMDFif/LuLomXs2BzTZr4s8XcT3Qhy+tuwyi6Tj/m1nVF6Wo8qT3jt3VcdTAwMWVRLf2f7tJcdTAwMGa9m87UXCKrSLhJjef+JEzz4oOyXHUwMDE0WVx1MDAwZecvg7zOfy/zlPj36mVW6bNlXHUwMDE0VVxyz4K14aJtytrH65S/y2wqldnAleqveUY17Yd4lvtcYiSQMUmxKFskXFxcXGjnSHNrt360UGUtZ1m6rDtO1XkqXHUwMDBl5CdJ/KBcdTAwMWTobO1CXCLeVJrhRvl1J5tf/l5/KutnOVx1MDAwZvxVbiBcdTAwMTeAXHUwMDEwxFx1MDAxOOC4rOsonL2rV15cdTAwMTRP3jVcdTAwMTQgnFx1MDAwNepD/lCweuK6+mq+XHUwMDFm+Tcq2vi+nGz7fqo+pLvdnvIxtXN8XHUwMDA0euX4sE+Ob/xQeDhmLlx1MDAxZS709Vx1MDAwNFx1MDAxMYRcdTAwMWbj4Fx1MDAwN/HC3Hl0hX59m8T33o+Jn8bJvypNXHUwMDE1z9Lr8E9l9p1Z6pV/XHUwMDFmRrlzXHUwMDE5tp5H4V1WXHUwMDA1J1x1MDAxM51tlZxUa1wiXHI1WWwuSON51XVcdTAwMTZK5zp/Tmlwop/j69Rku2HiJLxcdTAwMGJnfvR6d/79ZVx1MDAxYf+sXHUwMDE2q1x1MDAxMqTJUlXrSL0o3Fx1MDAxZY5Rpc/ZXHUwMDAwXHUwMDEz7lx1MDAwMuaKlIpcdTAwMWXlXlqTXHUwMDEyrJQwd05BtsBJQVnbXHUwMDAzK3XLSlx1MDAwMsCqV7ayXHUwMDEyXHUwMDAyJFx1MDAwM1x1MDAxOZB9YaXTdqNno/O10Xe9ojrUTnVFbby1oro6mFx1MDAxMKJcclxc11xip4Hr3LiOSSeug1x1MDAxMFxiSSmm8DG4OSjZ3fuJ7r2jhXetS6uzfOGnvqe5JvbSqfJcdTAwMTL1x1ItUm+R6udcdTAwMWUhXHUwMDE1Pqp0+1x1MDAxMSVuJ8qiP6J39kTJSmLMqlx1MDAxN9PS2VxuZFx1MDAxM8BcdTAwMDeiPFx1MDAxMFFCN8BTIaiG54FcdTAwMDZv7oxmQZPno4tiYCX6RJOknSaL2iB2NFmHksRccjTZXGKmgSbdaFx1MDAxMlI3mpRcdTAwMWE2jFH4KHl5UJrUnDDVXHUwMDBm0lSVqlMv+6ap5k/98X1cdTAwMTbzO05ydCjTfpRI2ymx6HtuXHUwMDAye0rktchOXHUwMDA1nVx1MDAwNYqxXHUwMDFjxo6HosTqKNBcdTAwMDbcglx1MDAwM0z0v1x1MDAwM5GiO39ZkOLF6HJtVNdlj0iRtZNiUVx1MDAxYvzBilx1MDAxNOtgYrCBXHUwMDE0XHUwMDFi4TSQolx1MDAxYimiSozLKk4qOOFcdTAwMTLxx8DmwHHSMNJ8tTj15n5GLKnO9alcdTAwMTdcdTAwMDZcdTAwMTmn3IbqSGOn1mXaj1x1MDAxM3k7J1x1MDAxNl3PW2TPiZVcdTAwMTbNKpWJkus2ypaXIfeBXHUwMDEzu+VEJpxcdTAwMDQvk3pcXCmqXHLSKSW6s5dcdTAwMDUlXo6u1kb/SPtEiaKdXHUwMDEyi9pcYoVcdTAwMTUl1rDEkWxcdTAwMWEnNqFpoETHcKrbOJFIXCI1cnpcdTAwMThMjYPw9qP3x1IlXHUwMDFm9YgqXGK8NZ1cdTAwMWMhXHUwMDEzWpRlP1x1MDAwNpTtXGZY9DTTe4dAqVx1MDAwMVpBt19z0eOQgVx1MDAwMFx1MDAwZkWA2EncQswxw1xiXHUwMDFl6jVcdTAwMTd3srJgwKvRt4Vf9mpQ+LydXHUwMDAxi9p4XHUwMDFiWzFgXHJLsundmUY0XHJcdTAwMDToRoBcdTAwMWNcYlx1MDAxN9hcYkmAYET0cExcdTAwMTjE54nSVr1vvECTg1x1MDAxZmw+LPJPv+TPzD+ucpx/PNeZTI9yvNhNefdj0rN2Ji16LOLbMykt43sr50fbL+dcdTAwMTBYOu7ApVx1MDAxZM85UicuJUzqblx1MDAwMaJHyeJDsJ5cdTAwMDWVfjt6UYQpe0Wl5+1UWtSGb1x1MDAxN1/dXHUwMDAyXHUwMDEza3o5p1x1MDAxMU5cdTAwMDOZOr6IKrcwslx1MDAwYjdcZkhcdTAwMDGYZP0j07yhbuPk3kvUYlx1MDAxOaWLbJYuXGLTU29cdTAwMTanenB2hHxpX6T9KPGinVx1MDAxMoue5+3y8WsooNx+XHKn8WXyyjC0XHUwMDBmXHUwMDE4PlZK5NCNXHUwMDEyMeZcdTAwMDTI7ilxRVx1MDAwMYVcdTAwMDfJoJm7clx1MDAxY39cdTAwMTJ8eNnOh1xylbFzWYYwkYRA48KMXG5tlnxIe4Wl/vMh5i6ggUhIXHQxwv17XHUwMDBi51rNXHUwMDAyT5PCPJ4tmt+4qWilTtjvPlxmgipcdTAwMGLYXHUwMDEw4Fx1MDAwZX6p0+E/XHUwMDE0aD/uu2rnvpfrvM3s30CloMZ924FVglx1MDAxYdA6XGZcdTAwMDa7WalB3Fx1MDAwMquIwUzU0v6o2tJBv21nk8JB762m6uq+2bjIr9E7h7GVXHUwMDFil4iKYZv3oJFWyEz0kEomfjqZqoXnzz56SmuqxMtXzWXLXHUwMDAyXHUwMDFl9LNcdTAwMTJ9V3SE4yu3Yu3HMy92wXjHgq6aljWQjFlcdTAwMTW6Wb3K7aAjXHUwMDE4N4ywpFx1MDAwYpLRJb/g5LPhmUZVXGKdoiSQS8k5YKI/s+7zOKxcdTAwMGbVyk9e2fr5l83n30/br4as9fIx0JmnXHUwMDAyMihcdTAwMTillIOyXGa5XHUwMDA1OVx1MDAxNpxCPV5lnDNcdTAwMDKIsLBYXs5cdTAwMDBmTFRcclwiPKZQXG5cdFx1MDAxMFx1MDAwM1xmQ1x1MDAwYmuYl/+yl+pccmtsLFx1MDAxOar+szCoXHUwMDFmXHUwMDBiXHUwMDAwxFx1MDAxY3KCIC+7hOxcdTAwMGZcdTAwMDZjhDGUTI/YIEJAcFx1MDAwYoOSYMBcdTAwMTFcdTAwMDf6ToRB2bHmXHUwMDA28Vx1MDAxOFOJJdNjeMJcdTAwMDG1KDGsXHUwMDE2iFNpZpCNq1x1MDAxNYIt2lx1MDAwMzKhryO6LFxcQoGQYU6OkSRcdTAwMTJcdTAwMTFKXHRcdTAwMTT6qnZzulJotnxcdTAwMTZcdTAwMDLJdaFw1Vx1MDAxY0HjtScxiTiS3MJcdTAwMDHNXHUwMDA2INTiXHUwMDBlXHSJLLxcYuFyeiE3wMe6XHUwMDFjXHUwMDEwk6JRLIpktjhhRo4oXHUwMDE463ZcdTAwMDOcrnFcIi3sVVtcYlx1MDAxMWDaw2NXl9VcdTAwMTaK+mRcdTAwMDKVXHUwMDEx3txcdTAwMWNcdTAwMWKvgJatONFtaeFcdTAwMTBcdTAwMDQzPTRcdTAwMTZcZlx0REXlXejcnFx1MDAxY2dcdTAwMGYpXHUwMDFkxsJcXFlcdTAwMTZcZlxiN/yLYVx1MDAxM8BcdTAwMTZwXCJcdTAwMDJcdIpcdTAwMTFawcb0L8bGa8/DXHUwMDEyM4uW0H6ycuzMIbRyNqqOZ1irPM7CU4yW5K43yEr3/UXtRj1gWKTn8f19mGpeeZVxwlx1MDAxNuOlfpKeaeFcdTAwMTLq8a4x6rqPg5yU4+QmrL4gUmzDU1x1MDAxZM837LmTK4JcdTAwMGblU2tFXHUwMDAwwOh0VylbJSmHempcdTAwMTbsncuGTVx1MDAxODrOZV6bzzPpNlX+luzQZaj+Vtd4KrqJXHUwMDFmdlx1MDAwZVx1MDAwZV+2q8rG9Y+7VaVcdTAwMTlt1L3fICrXqd2+x+JcdTAwMTalQFxcUoY4XHUwMDFjNGX2Z2SKSlx1MDAwNrOVXHUwMDFmu0RlO1x1MDAwNY5qqlJiaupcdTAwMThTVmb8YGOyykxAmrxal5atZDPqXFxajkxtXHQ5NsV5XVvaVGO34nJkqks9rDLt1dQla1x1MDAxNXcjU19i3dyGPDFcdTAwMDUm1n5mY9FRYY5MiamFleFcdTAwMTl1hWljr1uFOepaYo5MjcmZXHUwMDE0XHUwMDA2YmtcIpNimzJXZSZcdTAwMTeIm1ms6UxcdTAwMWIwkGqhMDbsOVx1MDAwYs1RTWlcdTAwMDKzTWpKXHUwMDEz2PQn3YrNkbParN/RXHUwMDBiuXl4IdeF3GzYyuS45Oa/2+Vm48pityCm7vFcdTAwMDbBuU7teG7bKYqJINYkiCpdzGetOF2jmFZhQvsoJpBWWXRcdGTiVr5xU5uQWMQqnFx1MDAwMplcdTAwMTZV+JSBzHap6Vx1MDAxMsm0XHUwMDExmlx1MDAwN45kMiktnOxcdTAwMTOKZFqITLdQpk3s8clCme1cdTAwMDJzXGJmPolu60JdNuxcbnRcXOryP+3qsnGRvkswk8rtPVx1MDAxZVx1MDAwNm3ZgbYkjpt8XG7K9Fx1MDAxMEFWXv/+nLWlYzRcdTAwMTNLm9DI01x1MDAwNjMzarOx2K2+dI1mWlx1MDAwNVx1MDAxZlx1MDAxZFx1MDAxNKZVXHUwMDBlXaKZrVOjx1x1MDAxN8y0XHUwMDExmU9cdTAwMWTNpDY5fNpoprDLo304XHUwMDEz2oBhXGJn/lx1MDAxZlx1MDAwNOfhpVxcXHUwMDE3grNhy63jXHUwMDEynN+1XHUwMDBizsY9MdzCmVx1MDAxYbNbklx1MDAxM46hRjpcdTAwMTOYc6R7L91LqFx1MDAxMWzYXHUwMDFhYlChbipUllx1MDAxZJLdztNcdTAwMWNKhGF/jlV5Ulx1MDAxMUrHTFx1MDAxMKx7Y8GA0H+RdspdKlRYXHUwMDA0T/aTnK05ctecRo5qXHUwMDAyXHUwMDEztevB1lx1MDAxYzkrTDNDrnKyPT+moJSt8bNWi4+IWrqpyfZcdTAwMWO4XHUwMDA3LfdcdTAwMTKP5t2uStG82z3+uENcdTAwMDNahFx1MDAxYndcYj6L6OJe8s642z106CbkjMt7oeJcdTAwMGWvj7pQcVxy28ZcdTAwMWSXivu+XcU1bsfiuLJcdTAwMDZcdTAwMGZLa4rUbrezJG5nPVxuXHUwMDBlJCV9Ovbgc56UXHUwMDE23c5JW1x0uCeek7aZQ+40Yug0J92u74Yp6Y6npC1cdTAwMTTgU05JW8RcdJ3mpNvDhMOc9OHF5eFlW1x1MDAxN+KyYSfF41x1MDAxMpc/tIvLxm2IXFzmpCFcdTAwMDTDXG6bXCK149NDnLQlQYDz7M3VQVp6fZiT1jxuY/Ip56ShhF2vsGlfceo4J82sVsTYT0pcdTAwMTM9KLAwOMxKXHUwMDBms9L/aPHpZqWRVYlcdTAwMWRcdTAwMDSnsFn49CnMSlx1MDAxZl7MdSE5XHUwMDFidpI7Lsn5Y/uGX8Xqejn5b1x1MDAxYabVzed2bVwiaW77hVHTXHUwMDE2kk3bsVx1MDAwZVtIOkY0mduZdYIzqImwN6Kz2PXrxevXr7yfV8d+/1/2j+x2d6/m7O+3i9erdmxcdTAwMTZLXHUwMDEx3zpgXHUwMDEzQnOyXHUwMDAxXHUwMDAx0Fx1MDAwME5cbppcdTAwMGWUXHUwMDFjwOk2JHSbbsBcdTAwMDJLrlx1MDAwN1wi/UNnOFx1MDAwYtPQj7Qjr338OtWP+Hq+/nbqffWrSm6+aj4npN/IdS/afqj+yeXUdFx1MDAwN1TXz05nwvrs9Fx1MDAwMdVuO21WzsSymkRkXFyPZ/tIum9eJWr041xcJflpqt6ZmvrvwzjxXs7eqkmW9PtcdTAwMTFcdTAwMDLapVD7Qflnl7OeXHUwMDFkoFxcP/FcdTAwMTkz61x1MDAxM59cdTAwMDcoO0GZup34XGZcdMjRjPpcdTAwMTO0LaB8tlxmo+yEq/N4dlx1MDAxYt4tXHUwMDEz5f2UnVx1MDAwZnmE+G0tyX6gvXY5jdZcdTAwMDG09TNpXHUwMDAxsT6Tdlx1MDAwMK3b6j+3na5cdTAwMTGQlFx0VmmfvmD2Te7Yo8LRPylcdTAwMTJ2Ltp+qH7tcsKmi6o2QC14U1x1MDAxY6v5nM1cdTAwMDHUbkNl7Lakl2BJXHUwMDAweeRcdTAwMDFCXHUwMDA3RfXlXHUwMDA3NVmmyrt4/p23kaFHXGLhlnLsh9dfXFyO8XPA69ZhfqQpuNV8mN+AWLdcdTAwMWRFkZt2XHUwMDE22elFXHUwMDA0yv5p5zev4kX6XHSOg1x1MDAxZEq1XHUwMDFmmn91OTbGXHUwMDFlzfXDY1x1MDAxYWeRmlx1MDAwZo9cdTAwMTmw7DaLXHUwMDA0ndhcdTAwMTdDRDCm/VnJuOHe7GCVXHUwMDE3/iyIVDKe5v/Pk17eXqv062NcZk9bl2g/XHUwMDA0/7ZG8Fx1MDAxN+u5/lx1MDAxM38+z1x1MDAwM+Enxdy4drgwqFXZKi1V87K68qTv40BdzvybqN5UJ+9D9XC2ja8vr86u+OXlujTrVv5+XHUwMDE5peG19qu8s8pP5cryl/cyXHUwMDE5+NQ66e//XHUwMDAxoP7FZCJ9<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"flowgraph","mermaid":"flowchart TD\n\tA[\"HTTP Request<br/>(from Orator)\"]\n\tB[\"initializeRequestState(pRequest, 'Verb')<br/>marshals SessionData onto the request state\"]\n\tC[\"[Pre-Operation Behavior Injection]<br/>authenticate, authorize, validate\"]\n\tD[\"Build / Configure Query<br/>(filters, pagination, identifier)\"]\n\tE[\"[Query-Configuration Behavior Injection]<br/>modify query, add filters\"]\n\tF[\"Execute DAL Operation<br/>(doCreate / doRead / doReads / doUpdate / doDelete / doCount)\"]\n\tG[\"[Post-Operation Behavior Injection]<br/>transform results, audit, notify\"]\n\tH[\"Send Response\"]\n\tI[\"ErrorHandler.handleErrorIfSet()<br/>catches any error from the waterfall\"]\n\n\tA --> B\n\tB --> C\n\tC --> D\n\tD --> E\n\tE --> F\n\tF --> G\n\tG --> H\n\tC -.error.-> I\n\tE -.error.-> I\n\tF -.error.-> I\n\tG -.error.-> I\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(274 10) rotate(0 87.5 39)"><path d="M19.5 0 C46.69 0.26, 74.86 -0.01, 155.5 0 M19.5 0 C67.68 -0.16, 117.03 -1.24, 155.5 0 M155.5 0 C169.51 -0.91, 174.98 6.91, 175 19.5 M155.5 0 C168.11 -0.62, 176.05 4.36, 175 19.5 M175 19.5 C176.77 30.5, 174.41 40.57, 175 58.5 M175 19.5 C174.53 28.92, 175.33 36.99, 175 58.5 M175 58.5 C175.24 70.05, 170.44 78.31, 155.5 78 M175 58.5 C174.8 70.07, 167.61 79.96, 155.5 78 M155.5 78 C105.21 80.14, 60.36 79.9, 19.5 78 M155.5 78 C127.04 77.37, 98.82 78.39, 19.5 78 M19.5 78 C7.5 78.76, -0.78 70, 0 58.5 M19.5 78 C5.24 78.22, -0.46 73.57, 0 58.5 M0 58.5 C-0.13 42.43, 0.79 29.49, 0 19.5 M0 58.5 C0.16 48.52, 1.1 39.36, 0 19.5 M0 19.5 C-0.35 7.15, 6.92 1.01, 19.5 0 M0 19.5 C1.18 8.37, 7.61 1.04, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(274 51.5) rotate(0 87.5 10)"><text x="87.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">(from Orator)</text></g><g stroke-linecap="round" transform="translate(109 178) rotate(0 253 39)"><path d="M19.5 0 C113.98 -0.66, 209.61 -0.83, 486.5 0 M19.5 0 C143.82 -0.34, 268.53 -0.44, 486.5 0 M486.5 0 C500.34 -0.11, 506 6.05, 506 19.5 M486.5 0 C497.66 -1.23, 503.98 4.21, 506 19.5 M506 19.5 C504.96 26.76, 506.29 38.05, 506 58.5 M506 19.5 C506.16 28.43, 506.49 36.34, 506 58.5 M506 58.5 C506.88 71.06, 499.24 76.09, 486.5 78 M506 58.5 C505.35 71.22, 499.29 78.34, 486.5 78 M486.5 78 C321.02 79.31, 156.81 79.47, 19.5 78 M486.5 78 C359.61 76.97, 232.42 76.79, 19.5 78 M19.5 78 C7.13 79.74, -0.77 70.14, 0 58.5 M19.5 78 C5.43 77.71, 0.23 70.39, 0 58.5 M0 58.5 C-0.94 44.01, 2.14 32.19, 0 19.5 M0 58.5 C0.93 51.09, 0.76 41.47, 0 19.5 M0 19.5 C1.17 5.65, 7.73 0.39, 19.5 0 M0 19.5 C-0.08 8.13, 4.28 -1.35, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(109 219.5) rotate(0 253 10)"><text x="253" 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">marshals SessionData onto the request state</text></g><g stroke-linecap="round" transform="translate(158 346) rotate(0 203.5 39)"><path d="M19.5 0 C92.2 -2.31, 166.93 -0.42, 387.5 0 M19.5 0 C133.53 2.29, 248.4 1.52, 387.5 0 M387.5 0 C400.22 1.72, 405.27 7.47, 407 19.5 M387.5 0 C400.35 1.91, 405.27 7.77, 407 19.5 M407 19.5 C406.39 27.6, 408.58 36.61, 407 58.5 M407 19.5 C406.88 32.06, 407.78 45.69, 407 58.5 M407 58.5 C405.69 72.18, 401.38 78.83, 387.5 78 M407 58.5 C404.82 72.31, 402.22 78.09, 387.5 78 M387.5 78 C287.69 80.14, 187.43 80.14, 19.5 78 M387.5 78 C276.47 80.09, 166.45 79.87, 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(158 387.5) rotate(0 203.5 10)"><text x="203.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">authenticate, authorize, validate</text></g><g stroke-linecap="round" transform="translate(164 514) rotate(0 198 39)"><path d="M19.5 0 C90.68 -3.15, 164.39 -2.19, 376.5 0 M19.5 0 C107.28 0.87, 195.17 1.03, 376.5 0 M376.5 0 C390.89 0.44, 395.47 8.11, 396 19.5 M376.5 0 C387.97 -0.44, 397.44 6.27, 396 19.5 M396 19.5 C396.18 33.96, 397.12 46.63, 396 58.5 M396 19.5 C396.4 32.5, 396.93 44.35, 396 58.5 M396 58.5 C395.5 69.69, 391.48 78.42, 376.5 78 M396 58.5 C395.12 69.59, 390.45 78.16, 376.5 78 M376.5 78 C300.62 79.83, 227.45 80.05, 19.5 78 M376.5 78 C279.59 77.29, 182.74 77.51, 19.5 78 M19.5 78 C6.78 76.43, 0.12 71.3, 0 58.5 M19.5 78 C5.42 80.01, 0.07 69.46, 0 58.5 M0 58.5 C0.95 47.48, -0.67 33.6, 0 19.5 M0 58.5 C-0.96 49.38, -0.69 39.61, 0 19.5 M0 19.5 C-1.71 7.05, 7.93 1.08, 19.5 0 M0 19.5 C-0.71 5.81, 7.1 0.24, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(164 555.5) rotate(0 198 10)"><text x="198" 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">(filters, pagination, identifier)</text></g><g stroke-linecap="round" transform="translate(125 682) rotate(0 236.5 39)"><path d="M19.5 0 C106.66 -0.44, 195.09 -0.08, 453.5 0 M19.5 0 C187.57 -2.03, 356.28 -2.19, 453.5 0 M453.5 0 C466.53 1.03, 473.93 4.9, 473 19.5 M453.5 0 C467.11 0.93, 474.99 5.19, 473 19.5 M473 19.5 C473.28 29.45, 472.95 37.57, 473 58.5 M473 19.5 C473.89 27.97, 474.03 35.68, 473 58.5 M473 58.5 C471.41 72.9, 464.57 79.92, 453.5 78 M473 58.5 C471.11 70.89, 466.77 79.47, 453.5 78 M453.5 78 C301.14 76.97, 149 77.99, 19.5 78 M453.5 78 C344.11 79.88, 234.3 79.76, 19.5 78 M19.5 78 C6.12 78.8, 1.44 71.46, 0 58.5 M19.5 78 C4.21 77.44, -2.03 70.82, 0 58.5 M0 58.5 C-0.67 45.72, -1.45 32.64, 0 19.5 M0 58.5 C-0.97 50.29, -1.25 40.87, 0 19.5 M0 19.5 C1.04 6.06, 8.16 0.8, 19.5 0 M0 19.5 C-0.04 4.81, 5 1.81, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(125 723.5) rotate(0 236.5 10)"><text x="236.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">modify query, add filters</text></g><g stroke-linecap="round" transform="translate(10 850) rotate(0 351.5 39)"><path d="M19.5 0 C154.79 1.81, 288.6 1.15, 683.5 0 M19.5 0 C181.32 1.66, 343.74 1.8, 683.5 0 M683.5 0 C695.99 1.51, 702.23 8.27, 703 19.5 M683.5 0 C695.98 -0.66, 700.8 7.16, 703 19.5 M703 19.5 C703.38 31.92, 701.81 44.61, 703 58.5 M703 19.5 C702.75 34.05, 703.92 47.71, 703 58.5 M703 58.5 C702.46 72.02, 697.4 77.37, 683.5 78 M703 58.5 C701.55 72.23, 698.71 78.74, 683.5 78 M683.5 78 C460.75 77.98, 236.54 78.35, 19.5 78 M683.5 78 C530.35 75.87, 378.22 75.59, 19.5 78 M19.5 78 C8.24 77.75, -1.42 72.02, 0 58.5 M19.5 78 C5.61 78.35, 0.68 70.42, 0 58.5 M0 58.5 C1.48 48.8, 1.67 41.01, 0 19.5 M0 58.5 C0.65 48.1, -0.97 39.78, 0 19.5 M0 19.5 C-1.63 6.25, 4.84 0.81, 19.5 0 M0 19.5 C0.02 6.71, 7.49 -1.35, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(10 891.5) rotate(0 351.5 10)"><text x="351.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">(doCreate / doRead / doReads / doUpdate / doDelete / doCount)</text></g><g stroke-linecap="round" transform="translate(153 1018) rotate(0 209 39)"><path d="M19.5 0 C94.37 -1.42, 172.08 0.2, 398.5 0 M19.5 0 C127.82 0.17, 236.99 -0.07, 398.5 0 M398.5 0 C409.71 -0.5, 419.35 7.12, 418 19.5 M398.5 0 C412.2 1.33, 417.13 8.65, 418 19.5 M418 19.5 C416.61 31.61, 417.19 42, 418 58.5 M418 19.5 C418.32 34.9, 417.74 49.64, 418 58.5 M418 58.5 C419.68 71.32, 412.05 79.08, 398.5 78 M418 58.5 C417.76 69.67, 410.72 76.26, 398.5 78 M398.5 78 C317.64 77.19, 237.03 76.67, 19.5 78 M398.5 78 C308.89 78.87, 219.66 79.31, 19.5 78 M19.5 78 C5.92 79.73, -1.07 70.76, 0 58.5 M19.5 78 C5.52 77.59, -0.92 70.22, 0 58.5 M0 58.5 C-1.27 42.78, -0.14 28.38, 0 19.5 M0 58.5 C-0.2 43.34, -0.59 29.22, 0 19.5 M0 19.5 C1.13 7.95, 5.57 0.59, 19.5 0 M0 19.5 C-1.23 7.25, 8.51 -1.94, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(153 1059.5) rotate(0 209 10)"><text x="209" 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">transform results, audit, notify</text></g><g stroke-linecap="round" transform="translate(274 1186) rotate(0 87.5 28)"><path d="M14 0 C41.96 -1.34, 75.44 0.95, 161 0 M14 0 C42.99 -0.09, 73.86 -0.29, 161 0 M161 0 C170.04 -0.15, 176.54 4.63, 175 14 M161 0 C171.91 -1.76, 176.41 5.84, 175 14 M175 14 C174.02 23.21, 173.43 31.02, 175 42 M175 14 C175.43 22.27, 174.55 30.94, 175 42 M175 42 C174.08 51.97, 169.96 57.75, 161 56 M175 42 C176.41 52.49, 169.21 57.15, 161 56 M161 56 C105.35 56.62, 48.02 55.19, 14 56 M161 56 C118.47 55.92, 73.79 57.63, 14 56 M14 56 C3.45 56.75, 0.52 50.07, 0 42 M14 56 C3.03 54.94, -1.36 53.35, 0 42 M0 42 C-0.28 32.34, -1.58 19.35, 0 14 M0 42 C0.64 32.17, 0.48 22.6, 0 14 M0 14 C1.24 4.13, 2.88 0.18, 14 0 M0 14 C0.99 4.78, 3.95 1.04, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(282 1201.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">Send Response</text></g><g stroke-linecap="round" transform="translate(494 10) rotate(0 214.5 39)"><path d="M19.5 0 C99.87 -0.38, 178.53 -0.26, 409.5 0 M19.5 0 C161.31 -0.7, 302.66 -0.6, 409.5 0 M409.5 0 C421.55 0.64, 428.8 6.02, 429 19.5 M409.5 0 C422.3 2.2, 427.08 7.37, 429 19.5 M429 19.5 C427.71 35.48, 430.21 48.85, 429 58.5 M429 19.5 C429.36 33.67, 429.91 47.59, 429 58.5 M429 58.5 C429.48 72.33, 421.05 76.12, 409.5 78 M429 58.5 C427.01 71.62, 423.43 78.68, 409.5 78 M409.5 78 C319.91 78.93, 231.81 77.32, 19.5 78 M409.5 78 C272.5 77.79, 135.19 77.73, 19.5 78 M19.5 78 C8 77.38, 1.67 70.83, 0 58.5 M19.5 78 C8.25 79.26, -1.21 72.23, 0 58.5 M0 58.5 C2 48.53, -1.73 37.72, 0 19.5 M0 58.5 C-0.34 46.16, -0.13 34.86, 0 19.5 M0 19.5 C1.91 5.5, 7.02 -1.85, 19.5 0 M0 19.5 C-1.45 8.77, 8.77 2.06, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(494 51.5) rotate(0 214.5 10)"><text x="214.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">catches any error from the waterfall</text></g><g stroke-linecap="round"><g transform="translate(361.5 88) rotate(0 0.1131895403317742 45)"><path d="M0 0 C1.18 2.21, -1.4 7.17, 0 16 M0 0 C0.02 3.89, -0.32 8.14, 0 16 M0 16 C0.32 17.38, -0.35 18.77, 0 19.88 M0 16 C0.02 17.26, 0 18.31, 0 19.88 M0 19.88 C-0.01 21.08, 0.17 22.45, 0.02 23.52 M0 19.88 C0.1 21.32, -0.02 22.44, 0.02 23.52 M0.02 23.52 C0.22 24.41, -0.2 25.45, 0.04 26.96 M0.02 23.52 C0.07 24.38, 0.07 25.39, 0.04 26.96 M0.04 26.96 C0.12 27.49, -0.15 28.07, 0.06 30.23 M0.04 26.96 C0.02 28.05, -0.03 29.42, 0.06 30.23 M0.06 30.23 C-0.12 30.6, -0.15 31.81, 0.09 33.36 M0.06 30.23 C-0.05 31.23, 0.26 32.23, 0.09 33.36 M0.09 33.36 C-0.11 34.32, 0.36 35.71, 0.13 36.37 M0.09 33.36 C0.03 34.13, 0.09 34.88, 0.13 36.37 M0.13 36.37 C0.43 36.75, 0.07 37.68, 0.17 39.29 M0.13 36.37 C0.11 37.09, 0.1 38.12, 0.17 39.29 M0.17 39.29 C0.17 39.64, 0.34 40.44, 0.21 42.16 M0.17 39.29 C0.11 40.14, 0.33 41.12, 0.21 42.16 M0.21 42.16 C0.02 43.08, 0.12 43.95, 0.25 45 M0.21 42.16 C0.2 42.97, 0.16 43.72, 0.25 45 M0.25 45 C0.19 45.84, 0.05 46.43, 0.29 47.84 M0.25 45 C0.19 45.9, 0.33 46.78, 0.29 47.84 M0.29 47.84 C0.14 48.84, 0.08 49.64, 0.33 50.71 M0.29 47.84 C0.4 49.01, 0.3 50.25, 0.33 50.71 M0.33 50.71 C0.19 51.92, 0.55 52.86, 0.37 53.63 M0.33 50.71 C0.33 51.63, 0.42 52.73, 0.37 53.63 M0.37 53.63 C0.22 54.48, 0.24 55.3, 0.41 56.64 M0.37 53.63 C0.43 54.33, 0.51 54.96, 0.41 56.64 M0.41 56.64 C0.43 58.08, 0.7 58.76, 0.44 59.77 M0.41 56.64 C0.58 57.64, 0.34 58.68, 0.44 59.77 M0.44 59.77 C0.36 61.15, 0.46 61.91, 0.46 63.04 M0.44 59.77 C0.45 60.73, 0.36 61.51, 0.46 63.04 M0.46 63.04 C0.35 64.59, 0.16 65.97, 0.48 66.48 M0.46 63.04 C0.6 64.01, 0.33 65.3, 0.48 66.48 M0.48 66.48 C0.6 67.55, 0.44 69.12, 0.5 70.12 M0.48 66.48 C0.45 67.47, 0.45 68.74, 0.5 70.12 M0.5 70.12 C0.4 70.97, 0.43 72.1, 0.5 74 M0.5 70.12 C0.37 71.65, 0.47 73.09, 0.5 74 M0.5 74 C-0.27 77.99, 1.09 81.77, 0.5 90 M0.5 74 C0.05 79.89, 0.12 87.21, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 88) rotate(0 0.1131895403317742 45)"><path d="M-2.76 82.69 C-1.51 83.65, -2.15 85.99, 0.5 90 M-2.76 82.69 C-1.89 84.48, -1.21 86.43, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 88) rotate(0 0.1131895403317742 45)"><path d="M2.7 82.31 C2.85 83.36, 1.11 85.78, 0.5 90 M2.7 82.31 C2.14 84.15, 1.39 86.2, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(362 256) rotate(0 -0.12341064880163799 45)"><path d="M0 0 C-0.23 2.56, 0.01 6.03, 0 16 M0 0 C0.66 5.7, -0.77 11.79, 0 16 M0 16 C0.15 17.03, 0.21 18.32, 0 19.88 M0 16 C0.11 16.94, 0.01 17.58, 0 19.88 M0 19.88 C0.06 21.06, -0.1 22.25, -0.02 23.52 M0 19.88 C-0.16 20.57, 0.11 21.48, -0.02 23.52 M-0.02 23.52 C-0.3 24.11, 0.16 25.25, -0.04 26.96 M-0.02 23.52 C-0.22 24.69, 0.09 25.77, -0.04 26.96 M-0.04 26.96 C-0.02 28.02, -0.29 29.05, -0.06 30.23 M-0.04 26.96 C0.08 27.87, 0.01 28.63, -0.06 30.23 M-0.06 30.23 C-0.22 31.25, -0.35 32.4, -0.09 33.36 M-0.06 30.23 C-0.18 30.94, -0.08 31.82, -0.09 33.36 M-0.09 33.36 C-0.11 34.27, -0.19 35.35, -0.13 36.37 M-0.09 33.36 C-0.23 34.34, -0.14 35.49, -0.13 36.37 M-0.13 36.37 C0.09 37.28, -0.03 37.96, -0.17 39.29 M-0.13 36.37 C-0.07 37.03, -0.05 37.93, -0.17 39.29 M-0.17 39.29 C0.05 40.11, 0 40.88, -0.21 42.16 M-0.17 39.29 C-0.18 40.08, -0.03 40.73, -0.21 42.16 M-0.21 42.16 C-0.07 43.27, -0.08 43.73, -0.25 45 M-0.21 42.16 C-0.19 42.75, -0.09 43.31, -0.25 45 M-0.25 45 C-0.11 46.05, -0.06 46.88, -0.29 47.84 M-0.25 45 C-0.28 46.19, -0.39 47.16, -0.29 47.84 M-0.29 47.84 C-0.52 48.69, -0.09 49.31, -0.33 50.71 M-0.29 47.84 C-0.26 48.93, -0.48 49.83, -0.33 50.71 M-0.33 50.71 C-0.16 51.66, -0.29 52.6, -0.37 53.63 M-0.33 50.71 C-0.35 51.57, -0.44 52.65, -0.37 53.63 M-0.37 53.63 C-0.35 54.36, -0.1 54.69, -0.41 56.64 M-0.37 53.63 C-0.46 54.55, -0.45 55.38, -0.41 56.64 M-0.41 56.64 C-0.19 57.92, -0.66 58.77, -0.44 59.77 M-0.41 56.64 C-0.32 57.51, -0.34 58.53, -0.44 59.77 M-0.44 59.77 C-0.26 60.79, -0.7 61.36, -0.46 63.04 M-0.44 59.77 C-0.43 61.01, -0.51 61.93, -0.46 63.04 M-0.46 63.04 C-0.61 64.19, -0.66 64.57, -0.48 66.48 M-0.46 63.04 C-0.39 63.68, -0.56 64.64, -0.48 66.48 M-0.48 66.48 C-0.13 68.2, -0.26 68.91, -0.5 70.12 M-0.48 66.48 C-0.61 67.39, -0.36 68.38, -0.5 70.12 M-0.5 70.12 C-0.48 71.31, -0.41 72.99, -0.5 74 M-0.5 70.12 C-0.41 71.65, -0.6 73.02, -0.5 74 M-0.5 74 C0.21 79.58, 0.99 85.89, -0.5 90 M-0.5 74 C0.16 78.8, -0.05 83.1, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 256) rotate(0 -0.12341064880163799 45)"><path d="M-2.8 82.34 C-2.44 83.55, -1.86 85.22, -0.5 90 M-2.8 82.34 C-1.63 85.07, -1.51 87.99, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 256) rotate(0 -0.12341064880163799 45)"><path d="M2.67 82.65 C1.91 83.79, 1.39 85.39, -0.5 90 M2.67 82.65 C1.85 85.26, -0.02 88.06, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(361.5 424) rotate(0 -0.00877587791396195 45)"><path d="M0 0 C-1.2 1.63, -0.21 6.59, 0 16 M0 0 C0.07 4.74, -0.67 9.93, 0 16 M0 16 C-0.3 16.9, 0.04 18.17, 0 19.88 M0 16 C0.11 17.54, 0.08 18.94, 0 19.88 M0 19.88 C-0.05 20.94, 0.04 21.32, 0.02 23.52 M0 19.88 C-0.11 21.17, -0.14 22.67, 0.02 23.52 M0.02 23.52 C-0.08 24.39, -0.05 25.49, 0.04 26.96 M0.02 23.52 C0.18 24.54, 0.06 25.45, 0.04 26.96 M0.04 26.96 C-0.22 27.98, 0.21 28.87, 0.06 30.23 M0.04 26.96 C-0.06 28.09, 0.11 29.13, 0.06 30.23 M0.06 30.23 C0.3 31.53, -0.15 32.53, 0.09 33.36 M0.06 30.23 C-0.05 31.46, -0.02 32.53, 0.09 33.36 M0.09 33.36 C-0.19 33.9, 0.41 35.01, 0.13 36.37 M0.09 33.36 C0.17 34.06, 0.18 35.01, 0.13 36.37 M0.13 36.37 C0.01 37.6, -0.14 38.53, 0.17 39.29 M0.13 36.37 C0.14 37.13, 0.24 37.82, 0.17 39.29 M0.17 39.29 C0.09 40.09, 0.21 41.04, 0.21 42.16 M0.17 39.29 C0.23 40.35, 0.26 41.2, 0.21 42.16 M0.21 42.16 C-0.04 43.1, -0.06 43.95, 0.25 45 M0.21 42.16 C0.17 43.2, 0.36 44.32, 0.25 45 M0.25 45 C0.49 45.97, 0.12 46.79, 0.29 47.84 M0.25 45 C0.14 45.49, 0.26 46.29, 0.29 47.84 M0.29 47.84 C0.04 48.89, 0.36 50.1, 0.33 50.71 M0.29 47.84 C0.26 48.54, 0.31 49.37, 0.33 50.71 M0.33 50.71 C0.22 51.53, 0.54 51.92, 0.37 53.63 M0.33 50.71 C0.25 51.74, 0.45 52.89, 0.37 53.63 M0.37 53.63 C0.52 54.57, 0.58 55.87, 0.41 56.64 M0.37 53.63 C0.49 54.57, 0.5 55.53, 0.41 56.64 M0.41 56.64 C0.4 57.14, 0.3 58.25, 0.44 59.77 M0.41 56.64 C0.52 57.84, 0.36 59.07, 0.44 59.77 M0.44 59.77 C0.27 60.8, 0.37 61.63, 0.46 63.04 M0.44 59.77 C0.29 60.65, 0.44 61.59, 0.46 63.04 M0.46 63.04 C0.2 63.75, 0.41 64.5, 0.48 66.48 M0.46 63.04 C0.45 63.82, 0.3 64.67, 0.48 66.48 M0.48 66.48 C0.35 67.54, 0.58 68.22, 0.5 70.12 M0.48 66.48 C0.43 67.51, 0.65 68.33, 0.5 70.12 M0.5 70.12 C0.48 71.73, 0.51 72.37, 0.5 74 M0.5 70.12 C0.57 71.36, 0.41 73.07, 0.5 74 M0.5 74 C-0.51 78.92, 0 80.9, 0.5 90 M0.5 74 C0.74 77.26, 0.22 80.19, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 424) rotate(0 -0.00877587791396195 45)"><path d="M-2.32 82.51 C-2.35 83.22, -1.29 85.59, 0.5 90 M-2.32 82.51 C-1.43 84.75, -0.95 87.19, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 424) rotate(0 -0.00877587791396195 45)"><path d="M3.15 82.45 C2.02 83.18, 1.98 85.57, 0.5 90 M3.15 82.45 C2.39 84.67, 1.22 87.12, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(362 592) rotate(0 -0.020519112117312943 45)"><path d="M0 0 C-0.74 3.31, -0.58 5.62, 0 16 M0 0 C0.23 5.67, -0.2 9.19, 0 16 M0 16 C0.24 16.82, 0.02 17.42, 0 19.88 M0 16 C0.02 17.34, -0.18 18.54, 0 19.88 M0 19.88 C-0.1 20.79, 0.04 21.82, -0.02 23.52 M0 19.88 C-0.16 21.01, 0.14 22.1, -0.02 23.52 M-0.02 23.52 C0.14 24.72, -0.01 26.17, -0.04 26.96 M-0.02 23.52 C0 24.82, 0.1 25.88, -0.04 26.96 M-0.04 26.96 C-0.15 27.56, -0.1 28.47, -0.06 30.23 M-0.04 26.96 C-0.09 27.84, -0.03 28.45, -0.06 30.23 M-0.06 30.23 C-0.07 30.81, -0.16 31.57, -0.09 33.36 M-0.06 30.23 C-0.21 30.96, -0.04 31.76, -0.09 33.36 M-0.09 33.36 C-0.37 34.07, -0.23 34.79, -0.13 36.37 M-0.09 33.36 C-0.03 34.16, 0.03 35.23, -0.13 36.37 M-0.13 36.37 C0.14 37.46, -0.15 38.51, -0.17 39.29 M-0.13 36.37 C-0.23 37.34, -0.03 38.53, -0.17 39.29 M-0.17 39.29 C-0.32 40.13, -0.17 41.02, -0.21 42.16 M-0.17 39.29 C-0.05 40.44, -0.25 41.44, -0.21 42.16 M-0.21 42.16 C-0.06 43.37, -0.45 44.25, -0.25 45 M-0.21 42.16 C-0.28 43.17, -0.22 44.02, -0.25 45 M-0.25 45 C-0.06 45.79, -0.22 47.11, -0.29 47.84 M-0.25 45 C-0.31 45.94, -0.29 46.77, -0.29 47.84 M-0.29 47.84 C-0.16 48.69, -0.26 50.06, -0.33 50.71 M-0.29 47.84 C-0.31 48.8, -0.46 49.5, -0.33 50.71 M-0.33 50.71 C-0.54 51.83, -0.44 52.65, -0.37 53.63 M-0.33 50.71 C-0.29 51.82, -0.35 52.64, -0.37 53.63 M-0.37 53.63 C-0.49 54.22, -0.13 55.04, -0.41 56.64 M-0.37 53.63 C-0.5 54.8, -0.5 56.05, -0.41 56.64 M-0.41 56.64 C-0.17 57.39, -0.69 58.58, -0.44 59.77 M-0.41 56.64 C-0.29 57.69, -0.31 58.89, -0.44 59.77 M-0.44 59.77 C-0.18 61, -0.7 62.03, -0.46 63.04 M-0.44 59.77 C-0.46 60.65, -0.4 61.59, -0.46 63.04 M-0.46 63.04 C-0.64 64.15, -0.45 64.86, -0.48 66.48 M-0.46 63.04 C-0.35 63.87, -0.35 64.39, -0.48 66.48 M-0.48 66.48 C-0.35 67.75, -0.2 67.98, -0.5 70.12 M-0.48 66.48 C-0.59 67.63, -0.43 68.66, -0.5 70.12 M-0.5 70.12 C-0.58 71.56, -0.53 72.43, -0.5 74 M-0.5 70.12 C-0.49 71.72, -0.36 73.28, -0.5 74 M-0.5 74 C0.56 78.25, 1.08 81.39, -0.5 90 M-0.5 74 C-0.27 77.47, 0.12 82.47, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 592) rotate(0 -0.020519112117312943 45)"><path d="M-2.84 82.35 C-2.74 83.94, -2.18 85.03, -0.5 90 M-2.84 82.35 C-2.01 85.07, -1.49 86.73, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 592) rotate(0 -0.020519112117312943 45)"><path d="M2.62 82.63 C1.62 84.14, 1.07 85.17, -0.5 90 M2.62 82.63 C1.77 85.28, 0.59 86.84, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(361.5 760) rotate(0 -0.1644088939115136 45)"><path d="M0 0 C-0.73 1.79, -0.59 5.31, 0 16 M0 0 C-0.69 3.62, -0.37 9.25, 0 16 M0 16 C-0.33 16.93, -0.22 18.33, 0 19.88 M0 16 C0.02 17.24, -0.02 18.73, 0 19.88 M0 19.88 C0.34 21.02, -0.36 21.69, 0 23.52 M0 19.88 C-0.11 20.88, -0.16 21.96, 0 23.52 M0 23.52 C-0.01 24.99, -0.01 25.68, 0 26.96 M0 23.52 C0.14 24.29, -0.09 25.12, 0 26.96 M0 26.96 C-0.21 27.43, 0.21 28.44, 0 30.23 M0 26.96 C0.12 28.2, -0.07 29.38, 0 30.23 M0 30.23 C0.14 31.5, -0.13 32.25, 0 33.36 M0 30.23 C0.04 30.85, -0.1 31.85, 0 33.36 M0 33.36 C-0.2 34.14, 0.25 35.15, 0 36.37 M0 33.36 C0.1 34.12, 0.06 35.14, 0 36.37 M0 36.37 C0 37.46, 0.05 38.61, 0 39.29 M0 36.37 C-0.01 37.45, -0.01 38.5, 0 39.29 M0 39.29 C0.23 40.32, 0.21 41.54, 0 42.16 M0 39.29 C-0.1 40.18, 0 41.2, 0 42.16 M0 42.16 C0.29 42.94, 0.08 43.89, 0 45 M0 42.16 C-0.08 43.33, 0.08 44.46, 0 45 M0 45 C-0.02 46.04, -0.18 46.77, 0 47.84 M0 45 C-0.05 45.81, 0.02 46.86, 0 47.84 M0 47.84 C0.06 48.91, -0.01 49.55, 0 50.71 M0 47.84 C-0.05 49.06, 0.02 50.04, 0 50.71 M0 50.71 C0.19 51.44, 0.26 52.38, 0 53.63 M0 50.71 C-0.06 51.63, 0.03 52.73, 0 53.63 M0 53.63 C-0.28 54.47, -0.04 54.97, 0 56.64 M0 53.63 C-0.07 54.42, 0.05 55.29, 0 56.64 M0 56.64 C0.02 57.91, 0.07 59.27, 0 59.77 M0 56.64 C0.17 57.18, -0.01 58.08, 0 59.77 M0 59.77 C-0.17 60.86, 0.11 62, 0 63.04 M0 59.77 C-0.02 60.39, 0.15 61.1, 0 63.04 M0 63.04 C-0.21 63.95, -0.08 65.4, 0 66.48 M0 63.04 C0.13 63.73, 0.05 64.67, 0 66.48 M0 66.48 C0.06 67.24, 0.05 68.4, 0 70.12 M0 66.48 C-0.03 67.36, 0.13 68.38, 0 70.12 M0 70.12 C0.15 71.28, 0.06 72.93, 0 74 M0 70.12 C-0.17 70.9, 0.12 72.11, 0 74 M0 74 C-0.22 79.01, -0.73 83.72, 0 90 M0 74 C0.59 78, -0.71 83.29, 0 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 760) rotate(0 -0.1644088939115136 45)"><path d="M-3 82.59 C-2.75 83.37, -2.07 85.01, 0 90 M-3 82.59 C-2.52 84.26, -1.54 86.92, 0 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 760) rotate(0 -0.1644088939115136 45)"><path d="M2.47 82.39 C1.6 83.19, 1.17 84.87, 0 90 M2.47 82.39 C1.45 84.07, 0.93 86.78, 0 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(361.5 928) rotate(0 0.1523974019638672 45)"><path d="M0 0 C-1.11 2.36, 1.06 5.24, 0 16 M0 0 C0.33 4.14, 0.61 8.27, 0 16 M0 16 C-0.08 17.22, -0.3 18.04, 0 19.88 M0 16 C0.15 17.62, -0.19 19.07, 0 19.88 M0 19.88 C0 21.51, 0.28 22.73, 0.02 23.52 M0 19.88 C-0.03 21.36, 0.17 22.75, 0.02 23.52 M0.02 23.52 C0.08 24.39, 0.01 25.41, 0.04 26.96 M0.02 23.52 C-0.12 24.92, -0.02 26.24, 0.04 26.96 M0.04 26.96 C-0.27 27.95, 0.01 28.58, 0.06 30.23 M0.04 26.96 C0.14 27.89, 0.2 29.06, 0.06 30.23 M0.06 30.23 C0.11 31.65, 0.22 32.39, 0.09 33.36 M0.06 30.23 C0.17 30.87, 0.18 31.62, 0.09 33.36 M0.09 33.36 C-0.07 34.65, 0.11 35.27, 0.13 36.37 M0.09 33.36 C-0.01 34.33, 0.18 35.63, 0.13 36.37 M0.13 36.37 C-0.03 37.05, -0.02 37.62, 0.17 39.29 M0.13 36.37 C0.17 37.23, 0.11 38.08, 0.17 39.29 M0.17 39.29 C0.12 40.28, 0.41 40.98, 0.21 42.16 M0.17 39.29 C0.22 40.33, 0.33 41.6, 0.21 42.16 M0.21 42.16 C0.32 43.05, 0.3 43.98, 0.25 45 M0.21 42.16 C0.21 43.19, 0.24 44.26, 0.25 45 M0.25 45 C0.11 46.05, 0.43 47.07, 0.29 47.84 M0.25 45 C0.35 45.94, 0.32 46.89, 0.29 47.84 M0.29 47.84 C0.41 48.45, 0.12 49, 0.33 50.71 M0.29 47.84 C0.22 48.68, 0.35 49.36, 0.33 50.71 M0.33 50.71 C0.09 51.94, 0.64 53.15, 0.37 53.63 M0.33 50.71 C0.4 51.5, 0.31 52.22, 0.37 53.63 M0.37 53.63 C0.33 54.98, 0.4 56.04, 0.41 56.64 M0.37 53.63 C0.34 54.17, 0.44 54.79, 0.41 56.64 M0.41 56.64 C0.31 57.33, 0.41 58.79, 0.44 59.77 M0.41 56.64 C0.5 57.33, 0.27 58.32, 0.44 59.77 M0.44 59.77 C0.58 60.23, 0.77 61.41, 0.46 63.04 M0.44 59.77 C0.35 60.75, 0.43 61.84, 0.46 63.04 M0.46 63.04 C0.47 64.02, 0.27 64.63, 0.48 66.48 M0.46 63.04 C0.45 63.76, 0.5 64.75, 0.48 66.48 M0.48 66.48 C0.41 67.96, 0.83 69.37, 0.5 70.12 M0.48 66.48 C0.35 67.36, 0.6 67.94, 0.5 70.12 M0.5 70.12 C0.2 71.41, 0.27 72.21, 0.5 74 M0.5 70.12 C0.55 71.2, 0.46 72.35, 0.5 74 M0.5 74 C0.98 76.65, -0.82 79.56, 0.5 90 M0.5 74 C-0.29 78.71, 0.01 83.76, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 928) rotate(0 0.1523974019638672 45)"><path d="M-2.74 82.69 C-2.64 83.7, -0.9 85, 0.5 90 M-2.74 82.69 C-1.68 84.6, -0.64 86.47, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(361.5 928) rotate(0 0.1523974019638672 45)"><path d="M2.71 82.31 C1.71 83.44, 2.35 84.82, 0.5 90 M2.71 82.31 C2.27 84.27, 1.8 86.25, 0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(362 1096) rotate(0 -0.5310039947814573 45)"><path d="M0 0 C-1.47 3.13, 0.47 6.19, 0 16 M0 0 C0.07 6.36, -0.61 11.37, 0 16 M0 16 C0.29 16.61, -0.3 18.03, 0 19.88 M0 16 C0.17 17.11, 0.01 18.33, 0 19.88 M0 19.88 C-0.14 20.43, 0.16 21.19, -0.02 23.52 M0 19.88 C0.15 20.83, -0.12 21.85, -0.02 23.52 M-0.02 23.52 C0 24.87, 0.09 25.92, -0.04 26.96 M-0.02 23.52 C-0.04 24.32, 0.06 25, -0.04 26.96 M-0.04 26.96 C0.17 28.28, 0.2 29.28, -0.06 30.23 M-0.04 26.96 C-0.04 28.26, -0.15 29.51, -0.06 30.23 M-0.06 30.23 C0.22 31.11, -0.14 31.9, -0.09 33.36 M-0.06 30.23 C-0.09 31.11, -0.14 31.81, -0.09 33.36 M-0.09 33.36 C-0.18 34.4, -0.08 34.67, -0.13 36.37 M-0.09 33.36 C0 34.36, -0.12 35.53, -0.13 36.37 M-0.13 36.37 C-0.15 36.91, -0.27 38.07, -0.17 39.29 M-0.13 36.37 C-0.14 37.08, -0.1 37.9, -0.17 39.29 M-0.17 39.29 C-0.15 40.18, -0.47 41.09, -0.21 42.16 M-0.17 39.29 C-0.06 40.33, -0.09 41.5, -0.21 42.16 M-0.21 42.16 C-0.18 43.28, -0.24 44.07, -0.25 45 M-0.21 42.16 C-0.25 42.99, -0.27 43.8, -0.25 45 M-0.25 45 C-0.16 45.41, -0.43 46.31, -0.29 47.84 M-0.25 45 C-0.23 46.22, -0.39 47.29, -0.29 47.84 M-0.29 47.84 C-0.12 48.77, -0.48 49.37, -0.33 50.71 M-0.29 47.84 C-0.43 48.56, -0.39 49.14, -0.33 50.71 M-0.33 50.71 C-0.13 51.96, -0.09 53.07, -0.37 53.63 M-0.33 50.71 C-0.44 51.41, -0.42 52.24, -0.37 53.63 M-0.37 53.63 C-0.59 54.58, -0.65 55.94, -0.41 56.64 M-0.37 53.63 C-0.43 54.83, -0.56 55.84, -0.41 56.64 M-0.41 56.64 C-0.3 57.47, -0.47 57.95, -0.44 59.77 M-0.41 56.64 C-0.29 57.75, -0.43 58.81, -0.44 59.77 M-0.44 59.77 C-0.31 60.52, -0.24 61.32, -0.46 63.04 M-0.44 59.77 C-0.37 61, -0.32 62.03, -0.46 63.04 M-0.46 63.04 C-0.32 64, -0.2 64.18, -0.48 66.48 M-0.46 63.04 C-0.5 64.03, -0.55 64.72, -0.48 66.48 M-0.48 66.48 C-0.48 67.42, -0.71 68.81, -0.5 70.12 M-0.48 66.48 C-0.41 67.86, -0.55 69.02, -0.5 70.12 M-0.5 70.12 C-0.25 71.78, -0.22 72.75, -0.5 74 M-0.5 70.12 C-0.44 71.72, -0.55 73.12, -0.5 74 M-0.5 74 C-1.78 79.06, -0.97 82.53, -0.5 90 M-0.5 74 C-0.83 78.01, -1.09 80.52, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 1096) rotate(0 -0.5310039947814573 45)"><path d="M-3.59 82.62 C-3.71 84.07, -2.11 85.47, -0.5 90 M-3.59 82.62 C-2.45 85.58, -1.69 87.86, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(362 1096) rotate(0 -0.5310039947814573 45)"><path d="M1.88 82.36 C0.66 83.85, 1.16 85.31, -0.5 90 M1.88 82.36 C1.06 85.41, -0.13 87.78, -0.5 90" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(274 26.5) rotate(0 87.5 12.5)"><text x="87.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">HTTP Request</text></g><g transform="translate(109 194.5) rotate(0 253 12.5)"><text x="253" 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">initializeRequestState(pRequest, 'Verb')</text></g><g transform="translate(158 362.5) rotate(0 203.5 12.5)"><text x="203.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">[Pre-Operation Behavior Injection]</text></g><g transform="translate(164 530.5) rotate(0 198 12.5)"><text x="198" 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">Build / Configure Query</text></g><g transform="translate(125 698.5) rotate(0 236.5 12.5)"><text x="236.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">[Query-Configuration Behavior Injection]</text></g><g transform="translate(10 866.5) rotate(0 351.5 12.5)"><text x="351.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">Execute DAL Operation</text></g><g transform="translate(153 1034.5) rotate(0 209 12.5)"><text x="209" 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">[Post-Operation Behavior Injection]</text></g><g transform="translate(494 26.5) rotate(0 214.5 12.5)"><text x="214.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">ErrorHandler.handleErrorIfSet()</text></g></svg>
|