meadow-endpoints 4.0.22 → 4.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +8 -15
  2. package/diagrams/how-it-works.excalidraw +1462 -0
  3. package/diagrams/how-it-works.mmd +9 -0
  4. package/diagrams/how-it-works.svg +2 -0
  5. package/dist/meadow-endpoints.js +516 -221
  6. package/dist/meadow-endpoints.js.map +1 -1
  7. package/dist/meadow-endpoints.min.js +18 -18
  8. package/dist/meadow-endpoints.min.js.map +1 -1
  9. package/docs/README.md +9 -25
  10. package/docs/_cover.md +9 -0
  11. package/docs/_sidebar.md +1 -0
  12. package/docs/_version.json +3 -3
  13. package/docs/architecture.md +119 -0
  14. package/docs/crud/README.md +6 -6
  15. package/docs/diagrams/behavior-injection-hook-points.excalidraw +677 -0
  16. package/docs/diagrams/behavior-injection-hook-points.mmd +9 -0
  17. package/docs/diagrams/behavior-injection-hook-points.svg +2 -0
  18. package/docs/diagrams/how-it-works.excalidraw +2777 -0
  19. package/docs/diagrams/how-it-works.mmd +16 -0
  20. package/docs/diagrams/how-it-works.svg +2 -0
  21. package/docs/diagrams/how-routes-are-generated.excalidraw +1237 -0
  22. package/docs/diagrams/how-routes-are-generated.mmd +13 -0
  23. package/docs/diagrams/how-routes-are-generated.svg +2 -0
  24. package/docs/diagrams/request-lifecycle.excalidraw +1897 -0
  25. package/docs/diagrams/request-lifecycle.mmd +22 -0
  26. package/docs/diagrams/request-lifecycle.svg +2 -0
  27. package/docs/diagrams/where-it-sits-in-the-stack.excalidraw +2068 -0
  28. package/docs/diagrams/where-it-sits-in-the-stack.mmd +19 -0
  29. package/docs/diagrams/where-it-sits-in-the-stack.svg +2 -0
  30. package/docs/index.html +2 -2
  31. package/docs/quickstart.md +151 -0
  32. package/docs/retold-catalog.json +155 -174
  33. package/docs/retold-keyword-index.json +6593 -2920
  34. package/package.json +8 -8
  35. package/source/controller/Meadow-Endpoints-Controller-Base.js +40 -0
  36. package/source/endpoints/count/Meadow-Endpoint-Count.js +1 -0
  37. package/source/endpoints/count/Meadow-Endpoint-CountBy.js +1 -0
  38. package/source/endpoints/create/Meadow-Operation-Create.js +1 -0
  39. package/source/endpoints/delete/Meadow-Endpoint-Delete.js +1 -0
  40. package/source/endpoints/delete/Meadow-Endpoint-Undelete.js +1 -0
  41. package/source/endpoints/read/Meadow-Endpoint-Read.js +1 -0
  42. package/source/endpoints/read/Meadow-Endpoint-ReadDistinctList.js +1 -0
  43. package/source/endpoints/read/Meadow-Endpoint-ReadLiteList.js +1 -0
  44. package/source/endpoints/read/Meadow-Endpoint-ReadMax.js +1 -0
  45. package/source/endpoints/read/Meadow-Endpoint-ReadSelectList.js +1 -0
  46. package/source/endpoints/read/Meadow-Endpoint-Reads.js +1 -0
  47. package/source/endpoints/read/Meadow-Endpoint-ReadsBy.js +1 -0
  48. package/source/endpoints/update/Meadow-Operation-Update.js +2 -0
  49. package/source/endpoints/upsert/Meadow-Operation-Upsert.js +1 -0
  50. package/test/MeadowEndpoints_SessionOverride_tests.js +75 -0
  51. package/dist/indoctrinate_content_staging/Indoctrinate-Catalog-AppData.json +0 -4808
@@ -0,0 +1,2 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1283 237" width="1283" height="237"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bXVPbOFx1MDAxNH3nV2TSV+Lq+4M3oDDtQ3e7253dh25nx0lcdTAwMDTxYOysrVx1MDAxNNhO//vKxrFsJUQ2XHRt6EBcdTAwMTnGlq3rq6tzfc611K9cdTAwMDeDwVDfzdXwaDBUt5MwjqZZeDM8LNq/qCyP0sRcXELleZ4uskl550zr+dHr11x1MDAxMPFcdTAwMDCYf/CISFx1MDAwZeV9L1x1MDAxNatrlejc3PfJnFx1MDAwZlx1MDAwNl/Lv+ZKNC36TuJFrlU2+jBcdTAwMGJzlZd9yqtLLzI10WFyXHUwMDE5K3vpdulCeXZnzkZQ1uc30VTPTFx1MDAxYkRcZteNM1x1MDAxNV3OdNFcdTAwMGbyuvHe7NFcdTAwMDDULbnO0it1msZpVjz7lTjm51x1MDAxY9knj8PJ1WWWLpJpfY/OwiSfh5lcdTAwMTmjve9cIorjj/qutG7iZKI4dJ7x19JLp73uNVxy85lqdDNPvZwlKs9bndJ5OIl0XHUwMDExXHUwMDAyXGLsMFxuXHUwMDE35++mZcw/W6ey8Fq9K4KeLOK4aTiZVoaXc2Pjj6uWb9ZPpVxuXHUwMDFiXHUwMDA02JA7yGi2/ZImJUZcdTAwMTgkmEPObPSj/I3Bhi6NXYRxrmyUXHUwMDBij85cdTAwMWG4sWNYzKfhfVx1MDAxN8hcdTAwMDUgXHUwMDA0MVx1MDAwNlx1MDAwNKP19ThKrtxcdTAwMDHG6eRqzVOiZKpcbiRcckMwPGhcZvFcdTAwMDF8xuFYxVx1MDAwZqJUq1u9XHUwMDE5oKQzQJ9cdTAwMDc+nV7fXHUwMDA1nq1cdTAwMGKPwyHkmFx1MDAwYiZcdTAwMTmie1x1MDAwM8RcdTAwMTI7JqJv0/RqMC9cdTAwMDE2mKtskJo/oS7GY2OUJvpj9F85XHUwMDEw2mo9XHUwMDBmr6O4XGI0bdk9jqPLpISxXHUwMDE5gsqGzbDoyLzf61x1MDAxYnQ6t1cnxmJcdTAwMTglKludjzSLLqMkjP/o7nW40OnvKr/3W2dcdTAwMGLVjJJ6u0Q+XGaak1JnJ9yUnfksnKvRh0yNQPlzXHI6M1xiszC9a58uXHUwMDEzXHUwMDE0XHUwMDAz+7aq85OLXHUwMDFl+Vx0T+A5wk+Zn8hp/6H52YM+uFxcSdGNaUspkIhRan3vkba1W9bBXHUwMDFhQWGWpTclgn5bqOyuwlx1MDAxMSd16FpYKu9cdTAwMWXWV75VR09MUGhTXG5UxFSnwJR2oSdcdTAwMDf9XHUwMDEwoIB2S1x1MDAwMFx1MDAwNPYqXHUwMDAx9p+gOO6FdExcdTAwMDSQXHUwMDAwS/xcdTAwMTikPylBjdVFmqmBnqnBv0WuXGaifDBeRLFeT1DsXHRcdGps+KYgjzZcdTAwMTH2oK1cdTAwMGVj2Y62sJ+2mi9cdTAwMWN81Zm4XGK1XHUwMDE0VFx1MDAwNJSs1j5rXHUwMDEzXHUwMDE3XHUwMDAyXHUwMDBiqX3I3OdKXVx1MDAxMIkmSr2VXHUwMDBmgoJcblx1MDAwMVx1MDAxZVX5PFx1MDAxZHNcdTAwMWT6Td+b/ZDmurJNr/aJXHUwMDE1iZ9cdTAwMTWbgVx1MDAxMbMuvOgmV+M1vDG5yFx1MDAwYiv2YkVcZmifJEJcYlx1MDAwMFPp0f0jxfDC0NZcdTAwMWFcdTAwMWU5/DupOEbdqsni4Tpur2nyUaPbjjhph3rPvpKS7rwpqH3cQ1x1MDAxNV+jvnip+HZLm4L0ok1IXHUwMDEwh1x1MDAxMtFHfad59tzGOlR81vdwTVx1MDAxMqxSm4v/XHUwMDA3ar51KfBS8/VkN1x1MDAwMfpgnWNcdTAwMDYpRo/6tvGdyK3+rDeYpNfzwrf8WdPZxvFsR2B8U+56Rbvz4mllMGZtcdrE7zJ/pW2q01x1MDAxNzTy3J+/6Iy/aTr0k1PYuvxFlDUh6f86SThcdTAwMDJcZkpbif/oXGaep5HLhfZoYGe/PKmPP1x1MDAxZq692yZ1t9tlIDiFXHUwMDFjXHUwMDEyxjkjgKFW98BIeVNmQVx1MDAwNs3YKOVcdTAwMDBDn0WEXHUwMDAzXG6lkFx1MDAwMDHAMJCOQ1x1MDAwMWg8XGYgRJjwWmSBZMj+Sscg5vaXXCLsM4dBgDCG0rzHJTTFiuCOPYZcclhhsVx1MDAwNEpcdTAwMTDkiHpccuJcdTAwMDBTiSUjXHUwMDE4XHUwMDEz44Jw7EliylDEgXkqMqP3O8iC5pCwY1x1MDAwZjZCwVxip8hrT1x1MDAwNkhcdTAwMTKJXGKlXHUwMDA0XG7cQGllkFx081x1MDAxMGJcdTAwMDLBpeE2zn1cdTAwMDZcdFxuKkQwiTg2XHUwMDE4aVx1MDAxYjQxpYBcYlx1MDAwMIHkxFx1MDAxY3hnmDhcdTAwMWX5Y054YEZcdTAwMDIxKWPLpHRQhiQkssIhNVx1MDAwNz57XHUwMDE0XHUwMDA0ZuZcdTAwMDCnXHUwMDE13Fx1MDAxZIy18EKYXHUwMDFmZFx1MDAxNFx1MDAwN03IMu7415pgxrwhpywoXHUwMDEzXHUwMDA2U8YoMsW1XHUwMDEzMVx1MDAwMsq5QJJcdTAwMWJjUiC/QVx1MDAxOZhbXHUwMDFiXHUwMDEz79gz/CWlYEggyo0574Qw3E5EJ6lIK1x1MDAxYVB6zbGgXHUwMDAyXHUwMDEwlphJ+zm0MieQMCpcZt3nXHUwMDFk9k5cdTAwMDcv0qbRyVx1MDAwMayByn1qXHUwMDE0gEKCM689x4A3PFx1MDAxMjzY4cDpaGqGXFyfptfXkTZcdTAwMDTzoSCHXHUwMDE16tNhpk+MjImSy3Zld51OS3ZOs3GkXHUwMDFiVdJyb88731JsKVx1MDAwZW7tcz+13TYvxsOVlpWx2IJSJdOt/Xzg2/uOPS1jelxcXGK5mVxuV1SIXHUwMDE5R/Oaq/hUPE5vNlaJwq80N9W5m6QmZ26xXGLWXHUwMDE0iy9ic1x1MDAxN2JcdTAwMTP0Klx1MDAxNlx0NFx1MDAwMkLsz/aV/VWaI0dqXG5KqPet7kpNjl2TTa1JgfDSjis18YrFJsch7Jc2jtqEhLhcdTAwMTa3lJtMulx1MDAwNlx1MDAxYnpcdTAwMTOKLvqwrTdXPGxcdE5AvEF09KZ0J7qlN7GkXrbdrDdHbcGJJfDLqbbgXHUwMDFjba84R23JyYD0i1x1MDAxMkdzXHUwMDAy4Vx1MDAxONyx6Fx1MDAxYzmqU1x1MDAwMO9Mblado1x1MDAxZMhO7lx1MDAxYdyp7lx1MDAxY+1YeI52rDxHW0vPUW/tOdpcdTAwMGbx+X1E3S7k5/pcdTAwMTWs56U+Zb9daf/oSDeX5DrvTeO889a0PsrzZZmiWHfoozxccq+at4qAcH8+cy5cdTAwMTcqvv6psvG3XHUwMDAyb79u3DXdWMjaw+WJjaPYblHiuO9mme7p6m6ZaSxSvGTrLlx1MDAxN1x1MDAxNWG/LdPAXHUwMDE0iqbPXHUwMDFl/k+HXG7nJeBO0+RcIrpcXDz3nN00lu0y96TnVoDuietuXGJYT7Rr91x1MDAwM7ykbq/UXHUwMDE1pNcnXHUwMDFliM2PqVx1MDAwNvnepm6BuJ+BaddcdTAwMGZju4Q9rVx1MDAxMvagKoGG4Xz+UZuJqMtcdTAwMDVcdTAwMDOuaOrE6b5Nq7mNUdn03lRcdTAwMTVnSTiO3UlcdTAwMTl+idTNyWouvTo/OednZ9Voqvl8v4h19NEgaFKMtNy5VfhXvlSKRFNV07f/XHUwMDAxnUxcdTAwMTZyIn0=<!-- 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 LR\n\tsubgraph Phases[\"Hook phases per operation\"]\n\t\tdirection TB\n\t\tPre[\"{Verb}-PreOperation<br/>before the query is built\"]\n\t\tQuery[\"{Verb}-QueryConfiguration<br/>after the query is built,<br/>before execution\"]\n\t\tPost[\"{Verb}-PostOperation<br/>after the operation completes\"]\n\tend\n\n\tPre --> Query --> Post\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 10) rotate(0 631.5 108.5)"><path d="M32 0 C273.45 -4.96, 516.5 -4.36, 1231 0 M1231 0 C1251.24 0.36, 1262.42 11.13, 1263 32 M1263 32 C1265.36 83.38, 1263.44 135.48, 1263 185 M1263 185 C1261.67 205.95, 1253.59 216.8, 1231 217 M1231 217 C801.43 213.81, 372.03 213.29, 32 217 M32 217 C10.96 217.92, 0.73 206.77, 0 185 M0 185 C-1.65 125.99, 0.83 71.02, 0 32 M0 32 C-0.77 9.01, 11.49 0.14, 32 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.5" fill="none" stroke-dasharray="8 9"/></g><g transform="translate(10 15) rotate(0 631.5 10.5)"><text x="631.5" y="13.215" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="15px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Hook phases per operation</text></g><g stroke-linecap="round" transform="translate(69 90) rotate(0 153.5 39)"><path d="M19.5 0 C74.8 2.14, 129.2 0.44, 287.5 0 M19.5 0 C78.51 -1.47, 137.09 -0.83, 287.5 0 M287.5 0 C299.01 1.12, 305.09 5.4, 307 19.5 M287.5 0 C299.17 0.62, 305.49 4.73, 307 19.5 M307 19.5 C305.8 30.16, 307.07 40.29, 307 58.5 M307 19.5 C307.44 31.95, 307.02 42.01, 307 58.5 M307 58.5 C308.52 71.45, 301.88 77.57, 287.5 78 M307 58.5 C305.45 72.95, 298.77 77.95, 287.5 78 M287.5 78 C230.38 79.79, 172.05 79.92, 19.5 78 M287.5 78 C198.51 78.68, 110.18 78.23, 19.5 78 M19.5 78 C6.11 76.33, -1.19 71.39, 0 58.5 M19.5 78 C5.05 80.17, 1.49 71.82, 0 58.5 M0 58.5 C-0.63 43.81, 0.61 30.49, 0 19.5 M0 58.5 C-0.72 45.97, 0.15 33.77, 0 19.5 M0 19.5 C-0.76 5.69, 7.7 -1.84, 19.5 0 M0 19.5 C-1.39 6.07, 6.65 -1.1, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(69 131.5) rotate(0 153.5 10)"><text x="153.5" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">before the query is built</text></g><g stroke-linecap="round" transform="translate(466 78) rotate(0 153.5 51.5)"><path d="M25.75 0 C76.78 -0.83, 129.11 -2.84, 281.25 0 M25.75 0 C80.82 -0.17, 135.54 -0.22, 281.25 0 M281.25 0 C298.36 1.74, 305.5 6.89, 307 25.75 M281.25 0 C298.55 0.54, 308.64 7.11, 307 25.75 M307 25.75 C305.65 36.2, 305.61 49.97, 307 77.25 M307 25.75 C306.36 39.63, 306.29 51.77, 307 77.25 M307 77.25 C305.21 95.8, 298.38 104.81, 281.25 103 M307 77.25 C309.28 95.56, 296.3 103.2, 281.25 103 M281.25 103 C229.21 101.16, 177.47 103.27, 25.75 103 M281.25 103 C223.1 104.24, 166.8 103.82, 25.75 103 M25.75 103 C9.07 104.2, -0.5 95.95, 0 77.25 M25.75 103 C10.6 103.05, -1.87 95.24, 0 77.25 M0 77.25 C1.82 63.18, -0.57 43.52, 0 25.75 M0 77.25 C-0.46 58.23, -0.52 38.89, 0 25.75 M0 25.75 C1.8 10.13, 7.99 -1.41, 25.75 0 M0 25.75 C1.1 7.98, 7.24 -1.22, 25.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(466 122) rotate(0 153.5 20)"><text x="153.5" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">after the query is built,</text><text x="153.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">before execution</text></g><g stroke-linecap="round" transform="translate(863 90) rotate(0 175.5 39)"><path d="M19.5 0 C83.77 -2.34, 145.86 -1.63, 331.5 0 M19.5 0 C97.27 -1.1, 175.55 -1.79, 331.5 0 M331.5 0 C346.36 -1.24, 350.31 4.53, 351 19.5 M331.5 0 C345.1 -0.15, 352.94 5.09, 351 19.5 M351 19.5 C351.91 27.42, 352.66 39.63, 351 58.5 M351 19.5 C351.12 32.77, 350.67 43.96, 351 58.5 M351 58.5 C349.86 69.93, 344.99 77.24, 331.5 78 M351 58.5 C351.46 71.87, 344.57 77.32, 331.5 78 M331.5 78 C240.07 78.47, 150.24 76.55, 19.5 78 M331.5 78 C264.15 77.76, 196.91 77.28, 19.5 78 M19.5 78 C8.45 76.23, 0.97 72.94, 0 58.5 M19.5 78 C6.37 79.19, -1.77 72.61, 0 58.5 M0 58.5 C-1.24 49.46, -1.03 43.72, 0 19.5 M0 58.5 C-0.11 50.39, 0.97 43.52, 0 19.5 M0 19.5 C-0.35 5.49, 4.81 0.92, 19.5 0 M0 19.5 C0.67 5.08, 8.22 1.95, 19.5 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(863 131.5) rotate(0 175.5 10)"><text x="175.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">after the operation completes</text></g><g stroke-linecap="round"><g transform="translate(376 129) rotate(0 45 0.3651830453831053)"><path d="M0 0 C4.39 0.46, 6.55 -0.32, 16 0 M0 0 C3.06 -0.18, 7.82 -0.29, 16 0 M16 0 C17.26 -0.32, 18.85 0.19, 19.88 0 M16 0 C16.94 -0.09, 17.93 -0.09, 19.88 0 M19.88 0 C21.5 -0.13, 22.44 -0.17, 23.52 0.02 M19.88 0 C21.04 0.14, 22.04 0, 23.52 0.02 M23.52 0.02 C24.21 0.14, 24.92 -0.05, 26.96 0.04 M23.52 0.02 C24.99 0.05, 26.09 -0.06, 26.96 0.04 M26.96 0.04 C28.11 0.23, 29.3 0.32, 30.23 0.06 M26.96 0.04 C27.51 0.18, 28.46 0.18, 30.23 0.06 M30.23 0.06 C31.67 0.11, 32.95 0.3, 33.36 0.09 M30.23 0.06 C31.37 0.13, 32.32 -0.01, 33.36 0.09 M33.36 0.09 C34.23 0.16, 35.43 0.37, 36.37 0.13 M33.36 0.09 C34.43 -0.05, 35.65 0, 36.37 0.13 M36.37 0.13 C36.96 0.13, 38.02 0.36, 39.29 0.17 M36.37 0.13 C36.91 0.23, 37.68 0.13, 39.29 0.17 M39.29 0.17 C40.33 0.24, 41.77 0, 42.16 0.21 M39.29 0.17 C40.2 0.12, 41.27 0.13, 42.16 0.21 M42.16 0.21 C42.52 0.04, 43.11 0.05, 45 0.25 M42.16 0.21 C43.06 0.24, 43.78 0.25, 45 0.25 M45 0.25 C45.75 0.23, 46.96 0.13, 47.84 0.29 M45 0.25 C45.78 0.18, 46.78 0.36, 47.84 0.29 M47.84 0.29 C48.79 0.22, 49.63 0.3, 50.71 0.33 M47.84 0.29 C48.95 0.34, 50.19 0.24, 50.71 0.33 M50.71 0.33 C51.58 0.55, 52.48 0.6, 53.63 0.37 M50.71 0.33 C51.77 0.38, 52.63 0.37, 53.63 0.37 M53.63 0.37 C54.6 0.55, 55.68 0.42, 56.64 0.41 M53.63 0.37 C54.62 0.51, 55.68 0.35, 56.64 0.41 M56.64 0.41 C57.17 0.49, 58.08 0.7, 59.77 0.44 M56.64 0.41 C57.61 0.37, 58.42 0.37, 59.77 0.44 M59.77 0.44 C61.06 0.15, 62.2 0.75, 63.04 0.46 M59.77 0.44 C60.95 0.33, 61.85 0.5, 63.04 0.46 M63.04 0.46 C63.62 0.44, 64.74 0.18, 66.48 0.48 M63.04 0.46 C63.87 0.37, 64.55 0.3, 66.48 0.48 M66.48 0.48 C67.4 0.12, 68.87 0.54, 70.12 0.5 M66.48 0.48 C67.28 0.35, 68.2 0.64, 70.12 0.5 M70.12 0.5 C71.69 0.9, 73.03 0.84, 74 0.5 M70.12 0.5 C71.61 0.31, 72.68 0.44, 74 0.5 M74 0.5 C77.06 0.07, 81.46 -0.69, 90 0.5 M74 0.5 C77.65 0.78, 83.15 1.26, 90 0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(376 129) rotate(0 45 0.3651830453831053)"><path d="M82.68 3.73 C84.72 3.32, 85.67 2.28, 90 0.5 M82.68 3.73 C84.07 2.9, 86.29 2.09, 90 0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(376 129) rotate(0 45 0.3651830453831053)"><path d="M82.32 -1.73 C84.46 -1.04, 85.48 -0.99, 90 0.5 M82.32 -1.73 C83.76 -1.3, 86.07 -0.85, 90 0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(773 129.5) rotate(0 45 -0.3836995148453397)"><path d="M0 0 C4.38 -0.9, 4.87 -1.02, 16 0 M0 0 C6.57 -0.18, 12.23 -0.47, 16 0 M16 0 C16.78 0.07, 17.68 0.32, 19.88 0 M16 0 C17.11 0.1, 18 0.14, 19.88 0 M19.88 0 C21 -0.02, 22 -0.06, 23.52 -0.02 M19.88 0 C21.16 0.2, 22.68 0.1, 23.52 -0.02 M23.52 -0.02 C24.42 0.26, 25.94 -0.16, 26.96 -0.04 M23.52 -0.02 C24.45 0.07, 25.73 0.09, 26.96 -0.04 M26.96 -0.04 C27.89 -0.24, 28.58 0, 30.23 -0.06 M26.96 -0.04 C27.87 0, 28.66 0.12, 30.23 -0.06 M30.23 -0.06 C31.39 0.23, 32.7 0.03, 33.36 -0.09 M30.23 -0.06 C31.43 0.01, 32.42 -0.07, 33.36 -0.09 M33.36 -0.09 C34.16 0.22, 34.35 -0.22, 36.37 -0.13 M33.36 -0.09 C34.23 -0.08, 35.26 -0.02, 36.37 -0.13 M36.37 -0.13 C37.22 0.04, 38.51 -0.42, 39.29 -0.17 M36.37 -0.13 C37.54 -0.13, 38.54 -0.25, 39.29 -0.17 M39.29 -0.17 C40.22 -0.44, 41.22 -0.05, 42.16 -0.21 M39.29 -0.17 C40.55 -0.25, 41.57 -0.05, 42.16 -0.21 M42.16 -0.21 C43.28 -0.02, 44.03 0, 45 -0.25 M42.16 -0.21 C42.89 -0.18, 43.57 -0.13, 45 -0.25 M45 -0.25 C45.89 0.04, 46.7 -0.15, 47.84 -0.29 M45 -0.25 C45.69 -0.43, 46.6 -0.32, 47.84 -0.29 M47.84 -0.29 C49.11 -0.16, 50.09 -0.07, 50.71 -0.33 M47.84 -0.29 C48.82 -0.24, 49.98 -0.3, 50.71 -0.33 M50.71 -0.33 C51.62 -0.1, 52.65 -0.56, 53.63 -0.37 M50.71 -0.33 C51.78 -0.45, 52.65 -0.26, 53.63 -0.37 M53.63 -0.37 C54.25 -0.62, 55.48 -0.24, 56.64 -0.41 M53.63 -0.37 C54.56 -0.45, 55.3 -0.44, 56.64 -0.41 M56.64 -0.41 C57.82 -0.56, 58.89 -0.33, 59.77 -0.44 M56.64 -0.41 C58.02 -0.42, 59.13 -0.42, 59.77 -0.44 M59.77 -0.44 C60.57 -0.56, 61.53 -0.25, 63.04 -0.46 M59.77 -0.44 C60.92 -0.42, 62.23 -0.31, 63.04 -0.46 M63.04 -0.46 C64.35 -0.79, 65.43 -0.68, 66.48 -0.48 M63.04 -0.46 C64.22 -0.53, 65.15 -0.57, 66.48 -0.48 M66.48 -0.48 C66.94 -0.3, 68.07 -0.5, 70.12 -0.5 M66.48 -0.48 C67.71 -0.65, 69.15 -0.58, 70.12 -0.5 M70.12 -0.5 C70.83 -0.38, 71.73 -0.67, 74 -0.5 M70.12 -0.5 C71.33 -0.53, 72.66 -0.61, 74 -0.5 M74 -0.5 C80.64 0.93, 87.88 -0.96, 90 -0.5 M74 -0.5 C80.08 -1.08, 84.62 -1.05, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(773 129.5) rotate(0 45 -0.3836995148453397)"><path d="M82.3 1.66 C84.45 0.77, 84.63 0.28, 90 -0.5 M82.3 1.66 C85.46 0.71, 88.18 -0.3, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g><g transform="translate(773 129.5) rotate(0 45 -0.3836995148453397)"><path d="M82.71 -3.8 C84.72 -3.59, 84.83 -2.98, 90 -0.5 M82.71 -3.8 C85.71 -2.57, 88.26 -1.4, 90 -0.5" stroke="var(--diagram-link, #2E7D74)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(69 106.5) rotate(0 153.5 12.5)"><text x="153.5" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">{Verb}-PreOperation</text></g><g transform="translate(466 97) rotate(0 153.5 12.5)"><text x="153.5" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">{Verb}-QueryConfiguration</text></g><g transform="translate(863 106.5) rotate(0 175.5 12.5)"><text x="175.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">{Verb}-PostOperation</text></g></svg>