retold-data-service 2.1.1 → 2.1.5
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/BUILDING-AND-PUBLISHING.md +2 -2
- package/Dockerfile +1 -1
- package/README.md +12 -27
- package/build-all.js +66 -0
- package/diagrams/architecture.excalidraw +2966 -0
- package/diagrams/architecture.mmd +17 -0
- package/diagrams/architecture.svg +2 -0
- package/docs/README.md +12 -12
- package/docs/_brand.json +18 -0
- package/docs/_cover.md +1 -1
- package/docs/_topbar.md +1 -1
- package/docs/_version.json +3 -3
- package/docs/api/reference.md +8 -8
- package/docs/architecture.md +6 -84
- package/docs/diagrams/component-diagram.excalidraw +2807 -0
- package/docs/diagrams/component-diagram.mmd +14 -0
- package/docs/diagrams/component-diagram.svg +2 -0
- package/docs/diagrams/component-stack.excalidraw +1169 -0
- package/docs/diagrams/component-stack.mmd +6 -0
- package/docs/diagrams/component-stack.svg +2 -0
- package/docs/diagrams/hook-execution-order.excalidraw +3230 -0
- package/docs/diagrams/hook-execution-order.mmd +19 -0
- package/docs/diagrams/hook-execution-order.svg +2 -0
- package/docs/diagrams/initialization-flow.excalidraw +1800 -0
- package/docs/diagrams/initialization-flow.mmd +22 -0
- package/docs/diagrams/initialization-flow.svg +2 -0
- package/docs/index.html +6 -7
- package/docs/lifecycle-hooks.md +2 -21
- package/docs/retold-catalog.json +141 -141
- package/docs/retold-keyword-index.json +6818 -1608
- package/package.json +130 -96
- package/source/services/RetoldDataService-Brand.js +13 -0
- package/source/services/comprehension-loader/pict-app/Pict-Application-ComprehensionLoader.js +65 -15
- package/source/services/comprehension-loader/pict-app/providers/Pict-Provider-ComprehensionLoader.js +2 -2
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Layout.js +68 -114
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Load.js +29 -29
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Schema.js +3 -3
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Session.js +2 -2
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-SettingsPanel.js +62 -0
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Shell.js +142 -0
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Source.js +7 -7
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusBar.js +125 -0
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusDetail.js +89 -0
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-Nav.js +42 -0
- package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-User.js +48 -0
- package/source/services/comprehension-loader/web/comprehension-loader.js +5475 -6243
- package/source/services/comprehension-loader/web/comprehension-loader.js.map +1 -1
- package/source/services/comprehension-loader/web/comprehension-loader.min.js +75 -1
- package/source/services/comprehension-loader/web/comprehension-loader.min.js.map +1 -1
- package/source/services/comprehension-loader/web/favicons/favicon-dark.svg +13 -0
- package/source/services/comprehension-loader/web/favicons/favicon-light.svg +13 -0
- package/source/services/comprehension-loader/web/favicons/favicon.svg +13 -0
- package/source/services/comprehension-loader/web/index.html +3 -0
- package/source/services/comprehension-loader/web/pict.min.js +12 -0
- package/source/services/data-cloner/DataCloner-Command-Headless.js +2 -1
- package/source/services/data-cloner/DataCloner-Command-Sync.js +110 -75
- package/source/services/data-cloner/pict-app/Pict-Application-DataCloner.js +70 -47
- package/source/services/data-cloner/pict-app/providers/Pict-Provider-DataCloner.js +3 -3
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Connection.js +1 -1
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Deploy.js +5 -5
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Export.js +11 -11
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Layout.js +89 -135
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Schema.js +3 -3
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Session.js +2 -2
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-SettingsPanel.js +61 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Shell.js +136 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusBar.js +117 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusDetail.js +81 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Sync.js +38 -38
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-Nav.js +42 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-User.js +48 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-ViewData.js +5 -5
- package/source/services/data-cloner/web/data-cloner.js +5855 -8067
- package/source/services/data-cloner/web/data-cloner.js.map +1 -1
- package/source/services/data-cloner/web/data-cloner.min.js +75 -1
- package/source/services/data-cloner/web/data-cloner.min.js.map +1 -1
- package/source/services/data-cloner/web/favicons/favicon-dark.svg +13 -0
- package/source/services/data-cloner/web/favicons/favicon-light.svg +13 -0
- package/source/services/data-cloner/web/favicons/favicon.svg +13 -0
- package/source/services/data-cloner/web/favicons/favicons/favicon-dark.svg +13 -0
- package/source/services/data-cloner/web/favicons/favicons/favicon-light.svg +13 -0
- package/source/services/data-cloner/web/favicons/favicons/favicon.svg +13 -0
- package/source/services/data-cloner/web/index.html +3 -0
- package/source/services/data-cloner/web/pict.min.js +12 -0
- package/test/Bundles_smoke_tests.js +43 -0
- package/test/ComprehensionLoader_smoke_tests.js +95 -0
- package/test/DataCloner-RuntimeOverrides_tests.js +344 -0
- package/test/DataCloner_smoke_tests.js +87 -0
- package/docs/css/docuserve.css +0 -327
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
sequenceDiagram
|
|
2
|
+
participant App as Application
|
|
3
|
+
participant RDS as RetoldDataService
|
|
4
|
+
participant O as Orator
|
|
5
|
+
participant PE as PersistenceEngine
|
|
6
|
+
participant M as Meadow
|
|
7
|
+
participant ME as MeadowEndpoints
|
|
8
|
+
|
|
9
|
+
App->>RDS: initializeService()
|
|
10
|
+
RDS->>RDS: onBeforeInitialize()
|
|
11
|
+
RDS->>O: startWebServer()
|
|
12
|
+
RDS->>PE: initializePersistenceEngine()
|
|
13
|
+
RDS->>RDS: onInitialize()
|
|
14
|
+
RDS->>M: Load Stricture model
|
|
15
|
+
loop Each Entity
|
|
16
|
+
RDS->>M: loadFromPackageObject(schema)
|
|
17
|
+
M-->>RDS: DAL instance
|
|
18
|
+
RDS->>ME: new MeadowEndpoints(DAL)
|
|
19
|
+
ME->>O: connectRoutes()
|
|
20
|
+
end
|
|
21
|
+
RDS->>RDS: onAfterInitialize()
|
|
22
|
+
RDS-->>App: callback()
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1764 1034" width="1764" height="1034"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2dW3PbuFx1MDAxNcff8yk03pd0JvHifsmbndjdtPE6jXebtjt5oCVYZkOTKkXHSTP57lx1MDAwYtK2XGKSkFx1MDAwNZhSXGY5zO5kXCJexCPw/PnDOThcdTAwMDC/Plx1MDAxOY12ii8ztfNitKM+j6MknuTR1c6zcvsnlc/jLNW7UPV5nl3m4+rI86KYvfj5Z4j4LtD/wVx1MDAxN0RyKK/PUom6UGkx18f9oT+PRl+rv/WeeFKeO1f/e57EZ+r53mxWnVHtu7UhiVNVb/2sN0HJXHUwMDE2n7+Un1H9+SqeXHUwMDE053pcdTAwMWJYbDlX8fS80JskXHUwMDE1i41ROk1U47B5kWdcdTAwMWbVyyzJ8vKqP4k9fshRfeHTaPxxmmeX6WRxTJFH6XxcdTAwMTbl+rfVx53FSXJSfKm+XbePbr2d1jXe35hcYndpa8/ivEk0P1fGifq60/NUzcsmhIut2SxcdTAwMWHHRdVcdTAwMDKg/iGlkbPXk6q1P9Rm5dGFel02d3qZJOZcdTAwMTenk5svbuyYKzVpfXHr5pvbfs3SylxyICBcdTAwMTJcdTAwMTDOcf3L4vkrff+L6tvOomSu6lx1MDAxNi2vfWD4Rm3t5WxcdTAwMTJdn1x1MDAwMrlcdTAwMDCEIMYo4HKxX/vEx7bFSTb+aLnKLItN1yv/1P9cdTAwMWHVXHUwMDBlUH1Y/PvDs9VHa3+qj3/SOm8niebFy+ziXCIu9Fx1MDAwZnlbXHUwMDFh0WniXCLKi/04ncTptL1PpZMle6qz9vI8uzpXUed+6vOW70tOsytLXHUwMDBi6euoUlY7XHUwMDEx2DGaLfkyrW52dXC1+duzO9X77tWJi3opqGU4qHej6sW8o9S71Cuh4JJhMoh3XHUwMDFixVx1MDAwYnuJ99hFulx1MDAwMtWOOkh3o9LlyFx1MDAwZrxYMMCBlLXMXHUwMDA27W6PdlEv7b49cOo1Q1xcu8+g3o2qV4i6zVx1MDAxY9SLXHUwMDExo5SR2sRBu9ujXdxLu0dO0iWEXGbS/T7ShcRcdTAwMGK8jFx1MDAxM1x1MDAxZPLyXHUwMDAxu9soXdJPum7Y5XTIVo2+j3ZcdTAwMTH2indcdTAwMTGRSIc0XHUwMDAzd7dSvPS+4j0tXHUwMDFi/znoijdX4+JaalxyXHUwMDA1XHUwMDEz3kxYMVB71K2AITayWlx1MDAwYlxyI1ZcdTAwMWZcdTAwMTmEhoNS8NeFQ97eXHUwMDAxfLPlW1vYXHUwMDEy1s9MXHUwMDA3YXOCKIKY8WCEXbst23FxzyQ6VYnNR1x1MDAwYvW5aLmnYC337PJcdTAwMDVcIoks7lx0tsM7W2c9XHUwMDE4XrRP+XkhXHUwMDEz2lx1MDAwYnE4Xlg5T9lLybLZ6I+DaHw+OkhcdTAwMGLdalx1MDAxZoz7laXFSfz/KqnEXHUwMDFhW1x1MDAwZqOLOClcdTAwMWKYNr5wL4mnafWt6sy477oxinhcdTAwMWMli91FZlxm7o3190W6r5R370KWx9M4jZLfXHUwMDFjjI0ui+ydml+bW+SXymxcdTAwMTX1y62jw11k5LRcdTAwMTdS5KukXHUwMDE4jYsst49KLmFcdTAwMDWETTHy2lx1MDAxNVx1MDAxN1pklt6e0UdcXC1FuFx1MDAwZlx1MDAwZlx1MDAxMe4pxXPdoJe5WiZG1Nr+oGL0IFx1MDAwNTLutINGXHSnXHUwMDEy03t1XHUwMDAwXHUwMDE3NtXWdZ3n+jluelDDiypBLnZ86/TLNkIg4eT2XcvvYFx1MDAxMETN/ISgRrSwcHwjiVEziH5vx99uXHUwMDA2IeTVXHUwMDEzQlx1MDAxMFDMKME4OFxiaddKNCCK8lx1MDAxN9joY/ROXFzoM9ZGq/xcdTAwMGX+XFzEk4n5uG5cImjZ875NI6vVXHJcZjV/rVx1MDAwYoekXHUwMDFih6zj60s4hGUz12/hkFx1MDAxOSxcdTAwMGZcdTAwMWNaN4c8x+8oXHUwMDE3jFxuLDdNXCLTh1x1MDAxYX70ICTa8yCR1fst0ZBxn5eSXGJcdTAwMTm9tIFE91x1MDAxZaH2ioakxFx1MDAwMlx1MDAxMVx1MDAxNE5tyS2H3qlcIksmr6JcIjpR+ad4rMKiUcPv2zS6w/aeTNp3Y5KlbGRcdJE4qy+zLDKCQ2S0wVx1MDAxY1x1MDAxYfVKjkNJXHUwMDA1oFx1MDAxMG5cdTAwMWNJx1x1MDAwMVx1MDAwMemlXHUwMDA3kCyu38VcdTAwMTHnuOH1Vlx1MDAxY8khLupNI0mxj3cjgFx1MDAwNUdEivB4dJxH2sfCgtDxclx1MDAwNLXN7cmdV27csZU8LUvJgdU5uSFcdTAwMTbaJHk8y5A5XHUwMDEwQHIm7pU391x1MDAwMI/hQ1xyP3pcdTAwMTDyXHUwMDFjeJDH5vyWnFx1MDAxY3BJylxyodBa6uy94Fx1MDAwM1x1MDAxMcZcdTAwMWNwXHUwMDA2wqlcdTAwMWG6hc/b0tJ5obShXHUwMDA36bRRzFx1MDAxMlx1MDAwModMz2+D6Fx1MDAwZdN7MunQjUmWUr5lSMKivktDMPRcdTAwMDBIYpKb7rhymFxiXHUwMDAzSeHmXHUwMDA3io5cdTAwMDJcItJfPYhkcX1cdTAwMGKQsNHoQzC0QVx1MDAxZTHpVX5cdTAwMGUlYoBIKsNcdTAwMWIkOlLRJLtcblx1MDAwYkJHy1x1MDAxOdQ2tyd4fnFcdTAwMDSPRzDE6OqBIVsp20CeNZFHXG7PiV1cdTAwMTjo/1x1MDAwNb5XX9FcdTAwMDc9IUVDr33Y41x1MDAxNlxyMeYwMFx1MDAwNK1lclx1MDAwM338UnHCa2BcYkpGXHUwMDAwRlx1MDAwMY5cZl0/zVx1MDAwZtLJTVl2WFx1MDAxNLojXHUwMDE0Wmp4T1x1MDAxZf1tlSwv5lNb0WpUVnm39CibXHUwMDExXHUwMDEwNG7VrVx1MDAxYTGw5CZ8alY3L8bAKYSWUYhAv8EgKjiikINweohrnSpheFrr+Fx1MDAwZe+CmCqh3TZu9e5WT5j4u4N6PerOdcyw21rJw+hbLogq0K4toqtFXHUwMDEwgoyDZyqBXlx1MDAxOUZcXFb9IcjCSzDGaVxcxFGiXHR0U7Hw9C/rqD1fydX7Vp/faW+/8vM3LjSFTjRtr6mDjElcdTAwMDe3SiRcdTAwMTaYXHUwMDFhXHUwMDE1uSHIcFtpKjxpKimTXHUwMDAyU1x1MDAxZU6Xd600Jctg6nI4IauOXHUwMDA3y1x1MDAwZX9ErD5yZrXlXHUwMDAx0WU1Zc2hQESEc/Q7kNpv6Vx1MDAwZj9SI0AwIYCBcCYh36I6S/fVWZar11x1MDAwYlx1MDAwNK6H1Vx1MDAxYpondre5/VD9q1x1MDAwYqqRXHUwMDFiqmF9p8tGwqSL6iHw3Vxc4GtcdTAwMTRFONWiIIyBfKzrWf5cdTAwMTBx77EzSy1cbrawVPDd5lx1MDAxOFxuRpbhe4p3bZU1XHUwMDAzTf3iXr/pnFxiYMkkXHUwMDAzNLw515Wfv1enZVx1MDAxOKnywKPe5cb24+hbXHUwMDE3juJ7cZSAboeWQctI5sDRtYS8xIujXHUwMDE4XHUwMDBiwLEkjzR/bDha6/hHxNF/OHPUouAuR5lo54+xsdDOolx1MDAxOIGLIX+8hqiUeHGUYFx0XHUwMDE4JFx1MDAwMVx1MDAwNqV1PrZT71x1MDAxOThTXHUwMDFkLe9cdTAwMDfYdy6AJW6AbeWUXHSrXHUwMDFm3kNOeeOA5dgrj0Qg44xSXHUwMDFhzojPkFJcdTAwMGVcdTAwMGLfJ874tjxcdTAwMWZWp5RcdCe2lDImXHUwMDAzvtcw11x1MDAxZXv1tlx1MDAxOSaCgFx1MDAwMCuqsnRrksmbSCP/5kJn6kbnVvhLeZfOXHUwMDEyW6aQXGbh71rSyMIvL1x1MDAwNVx1MDAxMWVCcFx1MDAxNE5eaq14NjytdfwjXHUwMDAy6O/OXHUwMDAwtUi4XHUwMDBiUGFcdTAwMTSCV1xuJpZ1O4dcdTAwMTHZNeSQhd+SaYBg3Y9G4fSkb+n5Josmo1x1MDAxM+264+IyV6OLbKKSoEPeu1xy7sfSf7qwlN2LpYzVn1x1MDAwN5ZunKXSbyEpXGI4Ylx1MDAxNFx1MDAxM1x1MDAxOU73dmCpL0vfO7PUXCJhXHUwMDBiSzFr5ZKZXHUwMDExMVxyueT1zu9Bfst5XGKGXHUwMDAwguH0fOtVsKPJYZ5dvNW3MJqq49P/qnHxdD4+V1x1MDAxN1HYqWRHy/tcdTAwMDH2Xy6A5W6TfVxiaVx1MDAxMpbD7myfbSZsIO9PWIpY7Pf+XHUwMDA0wpHQ0er9ln5cdTAwMGKfsM9/XGLE/ttcdTAwMTmxXHUwMDE2XHUwMDExd1x1MDAxMSuhXHTPXG6x0jLdXHUwMDA30l0ozT9cdTAwMDNv+/JcdTAwMTZDr7VKIIJcdTAwMTBiylx1MDAwM5z882rvzShOteunS1ZZXHJcdTAwMDWwdkP78fQ/LjxcdTAwMTX3XG5YOe/WXHUwMDEwQ0QsuaMt4WnoXHUwMDExq+dcdTAwMWFcdTAwMGVcXHBMqXisXHUwMDExq+lqrVx1MDAxM1x1MDAxZVx1MDAxMU8jZ55aRGxbnlx1MDAwZrZjVk5tK1OCXWzy1PaasVx1MDAwMahcdTAwMWJdoILi8lx1MDAxNVx1MDAxYTK8XGI2VVej1lpcdTAwMGZPNbrCXHUwMDBlXldcdTAwMWLdj7OnLpyVbnErp63lm3G3xGGb49bAOWtezyXThCTnXHUwMDEw4CFs3WLMjp0xa9Gw7c1UrdWfXHUwMDA16Fx1MDAxNlx1MDAxOdvfTDVQ1YuqXHUwMDEw+FGVaaFSiVx1MDAwMpyqo2GWqnHxLrss1DzwquKltvaD6MRpbVxut6We2oXEXHUwMDEydJO/QyFxKDN1IEVcdTAwMWNhIVx1MDAwM3p57lBJXHUwMDFjXHUwMDE2opX74lx1MDAxNE4rSbVLiSVcdTAwMDK2UuJhJalcdTAwMDeYXHSEXHUwMDA1XHUwMDAz+nHAwkld1bXEe2eaqVtTUHyHtf1YfebEateFpJpv6dKduse1LmPoI7XIb/lcdTAwMTiCMMfmaPpDq3O9XHUwMDEx71x1MDAwZrE+xdRcdTAwMWSnTos9YdDCqWWcVlx1MDAwZWtT9CYpgn5cdTAwMWRrXHUwMDAwOabMfFHZQ4t1XHUwMDEx8EZJUt7A0GNdi5n90Hl+I70nN0+SnWg2Oyl08y5cdTAwMWXa2mXiSWut5+tthZrVbVBtOsom6iCNTpN2U+98itXVflchP1x1MDAxZO5cdTAwMWbyg9uFnG/u0tFlUsQn2i/G5UumK3yU9lWPh1I+6mbTtz9cdTAwMDHYSUztIn0=<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"seqgraph","mermaid":"sequenceDiagram\n participant App as Application\n participant RDS as RetoldDataService\n participant O as Orator\n participant PE as PersistenceEngine\n participant M as Meadow\n participant ME as MeadowEndpoints\n\n App->>RDS: initializeService()\n RDS->>RDS: onBeforeInitialize()\n RDS->>O: startWebServer()\n RDS->>PE: initializePersistenceEngine()\n RDS->>RDS: onInitialize()\n RDS->>M: Load Stricture model\n loop Each Entity\n RDS->>M: loadFromPackageObject(schema)\n M-->>RDS: DAL instance\n RDS->>ME: new MeadowEndpoints(DAL)\n ME->>O: connectRoutes()\n end\n RDS->>RDS: onAfterInitialize()\n RDS-->>App: callback()\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"><g transform="translate(90 66) rotate(0 -0.17985870467555287 479)"><path d="M0 0 C-0.08 191.39, -0.77 383.39, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(402 66) rotate(0 0.38813303356411666 479)"><path d="M0 0 C1.37 193.43, 0.63 385.88, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(714 66) rotate(0 -0.8700193441812871 479)"><path d="M0 0 C-2.43 194.7, -2.21 389.2, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1026 66) rotate(0 -0.1866900489485488 479)"><path d="M0 0 C-0.23 196.2, -0.71 390.41, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1338 66) rotate(0 1.119367145346473 479)"><path d="M0 0 C2.31 192.58, 3.59 384.74, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1650 66) rotate(0 0.7088389026064306 479)"><path d="M0 0 C2.1 193.25, 1.67 385.14, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round" transform="translate(372 542) rotate(0 654 131)"><path d="M32 0 C285.62 -2.78, 540.29 -3.37, 1276 0 M1276 0 C1298.26 1.17, 1307.07 12.05, 1308 32 M1308 32 C1309.43 101.69, 1306.86 174.6, 1308 230 M1308 230 C1308.27 252.39, 1296.09 263.16, 1276 262 M1276 262 C987.9 261.52, 698.74 262.08, 32 262 M32 262 C8.71 261.04, -0.26 253, 0 230 M0 230 C0.63 182.13, 2.69 129.06, 0 32 M0 32 C0.51 10.7, 10.07 -0.69, 32 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.5" fill="none" stroke-dasharray="8 9"/></g><g transform="translate(380 546) rotate(0 646 10)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">loop [Each Entity]</text></g><g stroke-linecap="round" transform="translate(10 10) rotate(0 80 28)"><path d="M14 0 C41.42 1.41, 67.12 2.24, 146 0 M14 0 C66.75 -1.91, 119.87 -1.82, 146 0 M146 0 C155.43 -0.93, 161.75 2.83, 160 14 M146 0 C154.04 2.08, 158.66 3.25, 160 14 M160 14 C161.79 21.84, 159.29 33.74, 160 42 M160 14 C160.03 21.68, 160.66 26.62, 160 42 M160 42 C161.95 51.66, 156.25 56.95, 146 56 M160 42 C161.73 51.67, 154.29 54.29, 146 56 M146 56 C103.81 56.75, 59.7 57.34, 14 56 M146 56 C99.14 57.6, 51.73 56.55, 14 56 M14 56 C4.12 55.32, 0.46 50.05, 0 42 M14 56 C2.56 56.64, -1.69 49.99, 0 42 M0 42 C2.06 33.37, -0.13 23.52, 0 14 M0 42 C0.25 30.45, 0.35 20.64, 0 14 M0 14 C-1.92 5.87, 3.58 1.73, 14 0 M0 14 C-1.57 3.26, 2.75 0.71, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(18 25.5) rotate(0 72 12.5)"><text x="72" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Application</text></g><g stroke-linecap="round" transform="translate(286 10) rotate(0 116 28)"><path d="M14 0 C54.77 -1.67, 96.72 -2.12, 218 0 M14 0 C62.27 1.92, 110.67 1.12, 218 0 M218 0 C227.25 -0.98, 230.81 6.39, 232 14 M218 0 C225.5 1.61, 230 2.43, 232 14 M232 14 C232.58 18.05, 233.37 25.08, 232 42 M232 14 C232.12 20.61, 231.74 27.87, 232 42 M232 42 C230.66 50.38, 225.86 55.43, 218 56 M232 42 C232.47 52.86, 227.22 57.42, 218 56 M218 56 C160.04 54.95, 101.97 53.79, 14 56 M218 56 C138.07 55.84, 58.89 55.7, 14 56 M14 56 C4.13 55.03, -0.54 53.23, 0 42 M14 56 C4.81 54.84, -2.2 49.33, 0 42 M0 42 C-0.7 32.87, 1.88 26.61, 0 14 M0 42 C0.87 35.96, 0.02 30.49, 0 14 M0 14 C-0.14 4.11, 5.57 0.33, 14 0 M0 14 C1.87 6.16, 5.43 0.88, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(294 25.5) rotate(0 108 12.5)"><text x="108" 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">RetoldDataService</text></g><g stroke-linecap="round" transform="translate(659 10) rotate(0 55 28)"><path d="M14 0 C28.87 -0.32, 49.1 1.4, 96 0 M14 0 C41.48 0.89, 69.12 0.61, 96 0 M96 0 C104.27 1.8, 108.72 3.95, 110 14 M96 0 C103.6 -1.58, 111.11 3.93, 110 14 M110 14 C110.79 21.88, 110 29.89, 110 42 M110 14 C109.18 20.43, 110.68 27.05, 110 42 M110 42 C110.78 51.52, 104.16 56.34, 96 56 M110 42 C109.58 49.04, 106.13 56.77, 96 56 M96 56 C70.01 55.44, 42.46 54.87, 14 56 M96 56 C75.52 54.99, 52.51 55.27, 14 56 M14 56 C6.38 56.33, -1.31 51.64, 0 42 M14 56 C6.32 55.36, 2.02 53.26, 0 42 M0 42 C0.01 33.25, -1.72 27.4, 0 14 M0 42 C0.72 32.29, 0.5 23.26, 0 14 M0 14 C0.99 3.28, 5.62 0.9, 14 0 M0 14 C0.56 4.05, 6.01 -0.91, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(667 25.5) rotate(0 47 12.5)"><text x="47" 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">Orator</text></g><g stroke-linecap="round" transform="translate(910 10) rotate(0 116 28)"><path d="M14 0 C55.95 -0.2, 95.44 -1.87, 218 0 M14 0 C91.84 1.49, 169.8 0.75, 218 0 M218 0 C226.73 -1.14, 232.95 4.06, 232 14 M218 0 C225.35 -0.51, 229.93 2.48, 232 14 M232 14 C233.44 21.91, 230.58 31.06, 232 42 M232 14 C231.25 21.89, 232.05 30.11, 232 42 M232 42 C231.47 50.67, 225.41 54.07, 218 56 M232 42 C231.52 49.4, 228.16 56.08, 218 56 M218 56 C172.51 52.94, 125.27 52.57, 14 56 M218 56 C159.78 56.52, 102.38 56.68, 14 56 M14 56 C4.76 55.06, 0.62 49.61, 0 42 M14 56 C2.56 56.36, 0.67 52.64, 0 42 M0 42 C1.66 35.09, -1.27 27.03, 0 14 M0 42 C0.53 35.85, -0.27 30.12, 0 14 M0 14 C0.16 5.34, 5.5 -0.53, 14 0 M0 14 C1.54 4.71, 6.86 1.26, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(918 25.5) rotate(0 108 12.5)"><text x="108" 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">PersistenceEngine</text></g><g stroke-linecap="round" transform="translate(1283 10) rotate(0 55 28)"><path d="M14 0 C32.17 0.44, 48.45 -0.66, 96 0 M14 0 C45.86 0.29, 77.15 1.37, 96 0 M96 0 C105.09 0.85, 110.6 2.96, 110 14 M96 0 C105.83 0.2, 108.8 6.31, 110 14 M110 14 C109.13 25.82, 111.99 37.84, 110 42 M110 14 C109.08 22.03, 109.46 30.76, 110 42 M110 42 C108.96 53.15, 106.73 57, 96 56 M110 42 C110.23 49.12, 104.4 54.88, 96 56 M96 56 C71.26 54.83, 41.12 57.06, 14 56 M96 56 C76.78 55.11, 59.57 55.78, 14 56 M14 56 C5.53 55.64, 1.5 51.1, 0 42 M14 56 C6.41 57.54, 1.03 49.41, 0 42 M0 42 C1.78 33.25, -1.2 23.58, 0 14 M0 42 C-0.52 35.1, 0.6 26.58, 0 14 M0 14 C-0.17 4.19, 3.26 0.41, 14 0 M0 14 C0.04 5.49, 2.82 1.51, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1291 25.5) rotate(0 47 12.5)"><text x="47" 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</text></g><g stroke-linecap="round" transform="translate(1546 10) rotate(0 104 28)"><path d="M14 0 C48.91 -0.68, 88.23 2.62, 194 0 M14 0 C76.95 0, 140.7 -0.17, 194 0 M194 0 C201.95 0.61, 207.33 5.52, 208 14 M194 0 C202.56 0.34, 208.54 6.41, 208 14 M208 14 C208.11 23.42, 207.07 33.38, 208 42 M208 14 C206.74 22.56, 207.22 32.48, 208 42 M208 42 C209.45 50.76, 203.72 56.17, 194 56 M208 42 C206.28 50.8, 202.73 56.46, 194 56 M194 56 C131.12 57.68, 64.57 57.69, 14 56 M194 56 C138.57 58.5, 85.25 56.72, 14 56 M14 56 C5.55 56.29, 1.77 50.42, 0 42 M14 56 C2.38 54.87, -1.91 51.35, 0 42 M0 42 C-0.25 32.51, 1.49 26.89, 0 14 M0 42 C0.24 33.84, 0.14 25.81, 0 14 M0 14 C1.2 3.18, 6.18 0.28, 14 0 M0 14 C1.59 5.86, 6.8 -1.68, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1554 25.5) rotate(0 96 12.5)"><text x="96" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">MeadowEndpoints</text></g><g stroke-linecap="round"><g transform="translate(93 119) rotate(0 152.4590061571682 -0.9189003353286438)"><path d="M0.59 -0.48 C51.7 -0.47, 254.45 -1.05, 305.47 -1.04 M-0.55 -1.78 C50.45 -1.56, 253.1 -0.45, 304.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(93 119) rotate(0 152.4590061571682 -0.9189003353286438)"><path d="M302.9 0.26 L291.23 5.76 L292.29 -7.09 L306.09 -0.35" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M304.25 -0.05 C300.83 0.62, 297.38 3.46, 290.61 6.2 M304.25 -0.05 C300.58 2.24, 297.86 3.8, 290.61 6.2 M290.61 6.2 C290.94 3.46, 290.07 -0.92, 290.69 -6.48 M290.61 6.2 C291.36 3.18, 291.15 0.32, 290.69 -6.48 M290.69 -6.48 C294.52 -4.54, 301.17 -1.16, 304.25 -0.05 M290.69 -6.48 C294.66 -4.33, 297.88 -2.98, 304.25 -0.05 M304.25 -0.05 C304.25 -0.05, 304.25 -0.05, 304.25 -0.05 M304.25 -0.05 C304.25 -0.05, 304.25 -0.05, 304.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(154.8 92) rotate(0 91.20000000000002 10.5)"><text x="91.2" 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">initializeService()</text></g><g stroke-linecap="round"><g transform="translate(402 177) rotate(0 25.87470651799154 21.76871693387649)"><path d="M-0.24 -0.52 C7.54 -0.52, 38.55 -7.83, 46.19 -0.45 C53.82 6.93, 53.23 36.29, 45.59 43.77 C37.94 51.26, 7.88 44.37, 0.3 44.44 M0.63 0.4 C8.41 0.5, 38.17 -7.29, 45.85 0.02 C53.53 7.33, 54.24 37.01, 46.69 44.26 C39.14 51.51, 8.43 43.46, 0.57 43.5" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 177) rotate(0 25.87470651799154 21.76871693387649)"><path d="M1.07 43.44 L15.79 39.21 L12.91 50.72 L-0.14 44.3" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M0.57 43.5 C2.79 42.85, 5.8 41.1, 14.85 38.92 M0.57 43.5 C4.37 42.4, 7.82 40.9, 14.85 38.92 M14.85 38.92 C14.15 42.51, 13.26 47.01, 13.27 51.5 M14.85 38.92 C14.35 43.34, 13.99 46.92, 13.27 51.5 M13.27 51.5 C8.52 48.8, 4.7 46.44, 0.57 43.5 M13.27 51.5 C10.29 49.97, 7.93 47.7, 0.57 43.5 M0.57 43.5 C0.57 43.5, 0.57 43.5, 0.57 43.5 M0.57 43.5 C0.57 43.5, 0.57 43.5, 0.57 43.5" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 188.5) rotate(0 96 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onBeforeInitialize()</text></g><g stroke-linecap="round"><g transform="translate(405 287) rotate(0 153.8733589945827 -0.028683043124345886)"><path d="M1.11 0.89 C52.18 0.91, 254.48 -0.85, 305.21 -0.95 M0.24 0.31 C51.79 0.54, 256.8 -0.15, 307.51 0.1" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 287) rotate(0 153.8733589945827 -0.028683043124345886)"><path d="M308.47 -0.84 L295.89 6.55 L293.4 -4.53 L308.45 -0.39" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M307.51 0.1 C305.82 0.52, 300.78 2.17, 293.91 6.43 M307.51 0.1 C303.23 1.91, 298.83 4.36, 293.91 6.43 M293.91 6.43 C294.03 2.2, 294.61 0.08, 293.92 -6.25 M293.91 6.43 C293.84 2.88, 294.09 -1.69, 293.92 -6.25 M293.92 -6.25 C297.47 -3.3, 303.1 -1.85, 307.51 0.1 M293.92 -6.25 C298.28 -3.84, 302.96 -1.44, 307.51 0.1 M307.51 0.1 C307.51 0.1, 307.51 0.1, 307.51 0.1 M307.51 0.1 C307.51 0.1, 307.51 0.1, 307.51 0.1" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(481.20000000000005 260) rotate(0 76.80000000000001 10.5)"><text x="76.8" 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">startWebServer()</text></g><g stroke-linecap="round"><g transform="translate(405 345) rotate(0 308.164502820843 0.880436417573037)"><path d="M0.05 0.92 C103.19 0.82, 514.75 0.1, 617.71 0.08 M-1.38 0.35 C101.68 0.42, 513.55 1.91, 616.61 1.65" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 345) rotate(0 308.164502820843 0.880436417573037)"><path d="M618.43 0.86 L604.51 7.36 L604.69 -5.37 L618.13 2.75" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M616.61 1.65 C615.02 2.59, 611.2 4.03, 603.01 7.98 M616.61 1.65 C612.16 3.37, 607.04 5.78, 603.01 7.98 M603.01 7.98 C602.67 4.67, 604.19 0.51, 603.02 -4.7 M603.01 7.98 C602.62 3.38, 603.4 -0.11, 603.02 -4.7 M603.02 -4.7 C607.08 -2.57, 612.06 0.28, 616.61 1.65 M603.02 -4.7 C606.94 -3.38, 611.29 -0.56, 616.61 1.65 M616.61 1.65 C616.61 1.65, 616.61 1.65, 616.61 1.65 M616.61 1.65 C616.61 1.65, 616.61 1.65, 616.61 1.65" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(574.8 318) rotate(0 139.2 10.5)"><text x="139.2" 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">initializePersistenceEngine()</text></g><g stroke-linecap="round"><g transform="translate(402 403) rotate(0 25.929566058667945 21.92263988808159)"><path d="M0.3 0.1 C7.99 0.21, 37.95 -6.94, 45.6 0.45 C53.24 7.83, 53.78 37.21, 46.17 44.39 C38.56 51.57, 7.66 43.64, -0.06 43.53 M-0.21 -0.32 C7.7 -0.34, 38.94 -7.6, 46.62 -0.29 C54.31 7.02, 53.67 36.18, 45.9 43.53 C38.14 50.88, 7.54 43.75, 0.02 43.79" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 403) rotate(0 25.929566058667945 21.92263988808159)"><path d="M0.25 43.69 L14.71 39.65 L12.42 50.98 L-0.56 44.19" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M0.02 43.79 C3.06 42.23, 6.42 42.03, 14.24 39 M0.02 43.79 C5.23 41.89, 10.84 40.46, 14.24 39 M14.24 39 C14.02 43.02, 13.79 48.27, 12.83 51.6 M14.24 39 C13.54 42.29, 13.67 46.33, 12.83 51.6 M12.83 51.6 C7.57 48.14, 3.12 46.13, 0.02 43.79 M12.83 51.6 C7.65 48.42, 2.8 45.58, 0.02 43.79 M0.02 43.79 C0.02 43.79, 0.02 43.79, 0.02 43.79 M0.02 43.79 C0.02 43.79, 0.02 43.79, 0.02 43.79" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 414.5) rotate(0 67.19999999999999 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onInitialize()</text></g><g stroke-linecap="round"><g transform="translate(405 513) rotate(0 464.3795183248725 -0.48033242302454937)"><path d="M0.35 -0.14 C155.49 0.06, 774.73 0.49, 929.69 0.55 M-0.93 -1.25 C154.13 -1.36, 773.53 -1.76, 928.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 513) rotate(0 464.3795183248725 -0.48033242302454937)"><path d="M926.62 -2.26 L915.86 5.63 L913.75 -7.73 L928.63 -0.7" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M928.58 -1.28 C925.63 -0.35, 923.74 1.42, 914.98 5.05 M928.58 -1.28 C923.65 1.08, 919.45 2.21, 914.98 5.05 M914.98 5.05 C915.76 1.88, 915.39 -0.38, 914.99 -7.63 M914.98 5.05 C915.4 2.78, 914.85 -0.01, 914.99 -7.63 M914.99 -7.63 C918.35 -6.76, 925.15 -2.4, 928.58 -1.28 M914.99 -7.63 C917.83 -5.52, 921.41 -5.18, 928.58 -1.28 M928.58 -1.28 C928.58 -1.28, 928.58 -1.28, 928.58 -1.28 M928.58 -1.28 C928.58 -1.28, 928.58 -1.28, 928.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(774 486) rotate(0 96 10.5)"><text x="96" 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">Load Stricture model</text></g><g stroke-linecap="round"><g transform="translate(405 601) rotate(0 464.7833992169146 0.14661664062896307)"><path d="M0.78 0.92 C155.94 1.15, 775.04 1.05, 929.84 0.9 M-0.28 0.36 C154.82 0.3, 774 -0.92, 928.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 601) rotate(0 464.7833992169146 0.14661664062896307)"><path d="M928.12 -1.91 L913.43 4.85 L913.35 -5.12 L926.9 1.17" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M928.81 -0.74 C927.17 0.44, 924.37 1.4, 915.22 5.6 M928.81 -0.74 C925.11 1.01, 920.25 2.93, 915.22 5.6 M915.22 5.6 C914.52 0.52, 916.2 -4.14, 915.21 -7.07 M915.22 5.6 C915.25 2.41, 915.44 -0.31, 915.21 -7.07 M915.21 -7.07 C920.57 -5.4, 926.24 -2.77, 928.81 -0.74 M915.21 -7.07 C919.68 -5.43, 922.46 -4.18, 928.81 -0.74 M928.81 -0.74 C928.81 -0.74, 928.81 -0.74, 928.81 -0.74 M928.81 -0.74 C928.81 -0.74, 928.81 -0.74, 928.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(730.8 574) rotate(0 139.19999999999993 10.5)"><text x="139.2" 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">loadFromPackageObject(schema)</text></g><g stroke-linecap="round"><g transform="translate(1335 659) rotate(0 -466.00006720572713 0.5470600797717111)"><path d="M-1.15 0.54 C-156.1 0.48, -776.2 0.56, -930.85 0.57" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1335 659) rotate(0 -466.00006720572713 0.5470600797717111)"><path d="M-932.09 0.35 L-917.74 -4.35 L-917.97 5.17 L-929.9 1.12" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-930.85 0.57 C-927.48 -1.63, -924.7 -0.68, -917.25 -5.77 M-917.25 -5.77 C-916.05 -0.73, -916.21 2.38, -917.25 6.91 M-917.25 6.91 C-921.21 5.43, -925.34 2.47, -930.85 0.57 M-930.85 0.57 C-930.85 0.57, -930.85 0.57, -930.85 0.57" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(812.4 632) rotate(0 57.599999999999966 10.5)"><text x="57.599999999999994" 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">DAL instance</text></g><g stroke-linecap="round"><g transform="translate(405 717) rotate(0 621.4806821391592 -0.3216494647878676)"><path d="M-0.48 -1.13 C206.58 -1, 1033.89 0.09, 1241.16 0.38 M1.47 0.89 C209.01 0.69, 1036.52 -1.16, 1243.44 -1.54" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 717) rotate(0 621.4806821391592 -0.3216494647878676)"><path d="M1244.77 -3.2 L1230.74 5.12 L1231.6 -8.76 L1241.45 -2.52" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M1243.44 -1.54 C1239.23 -1.33, 1238.34 2.44, 1229.86 4.83 M1243.44 -1.54 C1238.01 0.92, 1233.23 3.05, 1229.86 4.83 M1229.86 4.83 C1230.35 1.48, 1229.99 -0.73, 1229.83 -7.85 M1229.86 4.83 C1230.12 0.06, 1229.63 -5.04, 1229.83 -7.85 M1229.83 -7.85 C1234.25 -7.4, 1236.46 -4.9, 1243.44 -1.54 M1229.83 -7.85 C1233.98 -5.91, 1237.24 -4.31, 1243.44 -1.54 M1243.44 -1.54 C1243.44 -1.54, 1243.44 -1.54, 1243.44 -1.54 M1243.44 -1.54 C1243.44 -1.54, 1243.44 -1.54, 1243.44 -1.54" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(910.8 690) rotate(0 115.19999999999993 10.5)"><text x="115.19999999999999" 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">new MeadowEndpoints(DAL)</text></g><g stroke-linecap="round"><g transform="translate(1647 775) rotate(0 -465.0549636554857 -0.7335389741310792)"><path d="M-0.88 -0.16 C-155.84 -0.36, -775.95 -1.41, -930.97 -1.19 M0.86 -1.3 C-153.63 -1.39, -773.85 -0.4, -928.76 -0.27" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1647 775) rotate(0 -465.0549636554857 -0.7335389741310792)"><path d="M-930.18 0.62 L-913.86 -5.37 L-914.73 4.82 L-927.58 0.2" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-928.76 -0.27 C-926.24 -2.65, -924.8 -3.98, -915.18 -6.63 M-928.76 -0.27 C-922.9 -2.45, -917.81 -5.13, -915.18 -6.63 M-915.18 -6.63 C-914.77 -3.11, -915.99 2.54, -915.16 6.05 M-915.18 -6.63 C-915.23 -2.57, -915.4 1.66, -915.16 6.05 M-915.16 6.05 C-919.18 3.26, -925.66 2.46, -928.76 -0.27 M-915.16 6.05 C-919.76 4.83, -923.46 2.05, -928.76 -0.27 M-928.76 -0.27 C-928.76 -0.27, -928.76 -0.27, -928.76 -0.27 M-928.76 -0.27 C-928.76 -0.27, -928.76 -0.27, -928.76 -0.27" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(1110 748) rotate(0 72 10.5)"><text x="72" 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">connectRoutes()</text></g><g stroke-linecap="round"><g transform="translate(402 849) rotate(0 25.386127106754287 22.21517659049698)"><path d="M0.02 0.42 C7.76 0.38, 38.22 -7.29, 45.87 0.04 C53.52 7.36, 53.49 37.01, 45.92 44.35 C38.36 51.68, 8.08 44.19, 0.48 44.06 M-0.63 0.16 C7.07 0.19, 37.67 -6.46, 45.37 0.75 C53.06 7.97, 53.23 36.15, 45.53 43.46 C37.83 50.76, 6.79 44.58, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 849) rotate(0 25.386127106754287 22.21517659049698)"><path d="M0.08 44.19 L14.05 39.25 L12.94 51.85 L-0.07 45.14" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-0.83 44.59 C2.61 43.38, 4.97 42.43, 13.3 39.56 M-0.83 44.59 C4.49 42.46, 9.53 40.7, 13.3 39.56 M13.3 39.56 C12.87 42.7, 13.33 45.41, 12.11 52.18 M13.3 39.56 C12.79 43.66, 12.78 48.32, 12.11 52.18 M12.11 52.18 C7.84 49.91, 4.08 47.92, -0.83 44.59 M12.11 52.18 C7.59 49.37, 3.3 47.26, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 860.5) rotate(0 91.19999999999999 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onAfterInitialize()</text></g><g stroke-linecap="round"><g transform="translate(399 959) rotate(0 -153.10827314816416 -0.453135031834222)"><path d="M-1 -0.84 C-51.67 -0.7, -254.36 -0.27, -305.22 -0.06" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(399 959) rotate(0 -153.10827314816416 -0.453135031834222)"><path d="M-307.17 1.3 L-293.13 -6.26 L-292.77 7.6 L-307.11 0.21" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-305.22 -0.06 C-303.49 -0.25, -299.79 -2.7, -291.64 -6.44 M-291.64 -6.44 C-291.93 -1.59, -292.44 1.99, -291.6 6.23 M-291.6 6.23 C-296.51 5, -299.37 3.18, -305.22 -0.06 M-305.22 -0.06 C-305.22 -0.06, -305.22 -0.06, -305.22 -0.06" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(198 932) rotate(0 48 10.5)"><text x="48" 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">callback()</text></g></svg>
|
package/docs/index.html
CHANGED
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
7
|
-
<meta name="description" content="Retold Data Service v2.
|
|
7
|
+
<meta name="description" content="Retold Data Service v2.1.4 Documentation — Serve up a whole model!">
|
|
8
8
|
|
|
9
|
-
<title>Retold Data Service v2.
|
|
9
|
+
<title>Retold Data Service v2.1.4 Documentation</title>
|
|
10
10
|
|
|
11
|
-
<!-- Application Stylesheet -->
|
|
12
|
-
<link href="css/docuserve.css" rel="stylesheet">
|
|
13
11
|
<!-- KaTeX stylesheet for LaTeX equation rendering -->
|
|
14
12
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css">
|
|
15
13
|
<!-- PICT Dynamic View CSS Container -->
|
|
@@ -28,12 +26,13 @@
|
|
|
28
26
|
<!-- The root container for the Pict application -->
|
|
29
27
|
<div id="Docuserve-Application-Container"></div>
|
|
30
28
|
|
|
31
|
-
<!-- Mermaid diagram rendering
|
|
29
|
+
<!-- Mermaid diagram rendering. pict-section-content (v0.1.8+) drives
|
|
30
|
+
initialization with theme: 'base' + themeVariables sourced
|
|
31
|
+
from --theme-color-* so diagrams follow the active theme. -->
|
|
32
32
|
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
|
|
33
|
-
<script>mermaid.initialize({ startOnLoad: false, theme: 'default' });</script>
|
|
34
33
|
<!-- KaTeX for LaTeX equation rendering -->
|
|
35
34
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js"></script>
|
|
36
35
|
<!-- Load the Docuserve PICT Application Bundle from jsDelivr CDN -->
|
|
37
|
-
<script src="https://cdn.jsdelivr.net/npm/pict-docuserve@
|
|
36
|
+
<script src="https://cdn.jsdelivr.net/npm/pict-docuserve@1/dist/pict-docuserve.min.js" type="text/javascript"></script>
|
|
38
37
|
</body>
|
|
39
38
|
</html>
|
package/docs/lifecycle-hooks.md
CHANGED
|
@@ -46,27 +46,8 @@ class MyDataService extends libRetoldDataService
|
|
|
46
46
|
|
|
47
47
|
## Hook Execution Order
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
│
|
|
52
|
-
├── onBeforeInitialize()
|
|
53
|
-
│
|
|
54
|
-
├── Start Orator (if AutoStartOrator)
|
|
55
|
-
│
|
|
56
|
-
├── initializePersistenceEngine()
|
|
57
|
-
│
|
|
58
|
-
├── onInitialize()
|
|
59
|
-
│
|
|
60
|
-
├── initializeDataEndpoints()
|
|
61
|
-
│ ├── Load schema model
|
|
62
|
-
│ ├── Create DAL for each entity
|
|
63
|
-
│ ├── Create Endpoints for each entity
|
|
64
|
-
│ └── Connect routes to Orator
|
|
65
|
-
│
|
|
66
|
-
├── onAfterInitialize()
|
|
67
|
-
│
|
|
68
|
-
└── callback(error)
|
|
69
|
-
```
|
|
49
|
+
<!-- bespoke diagram: edit diagrams/hook-execution-order.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/retold-data-service/docs -->
|
|
50
|
+

|
|
70
51
|
|
|
71
52
|
## Error Handling
|
|
72
53
|
|
package/docs/retold-catalog.json
CHANGED
|
@@ -1,144 +1,144 @@
|
|
|
1
1
|
{
|
|
2
|
-
"Generated": "2026-
|
|
3
|
-
"
|
|
2
|
+
"Generated": "2026-06-01T03:44:33.668Z",
|
|
3
|
+
"Mode": "module",
|
|
4
|
+
"GitHubOrg": "fable-retold",
|
|
4
5
|
"DefaultBranch": "master",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"
|
|
85
|
-
"api/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
"
|
|
89
|
-
"api/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
"
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
"
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
]
|
|
6
|
+
"Module": {
|
|
7
|
+
"Name": "retold-data-service",
|
|
8
|
+
"Repo": "retold-data-service",
|
|
9
|
+
"Group": "",
|
|
10
|
+
"Branch": "master",
|
|
11
|
+
"HasDocs": true,
|
|
12
|
+
"HasCover": true,
|
|
13
|
+
"Sidebar": [
|
|
14
|
+
{
|
|
15
|
+
"Title": "Getting Started",
|
|
16
|
+
"Children": [
|
|
17
|
+
{
|
|
18
|
+
"Title": "Overview",
|
|
19
|
+
"Path": "README.md"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"Title": "Quick Start",
|
|
23
|
+
"Path": "quick-start.md"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"Title": "Configuration",
|
|
27
|
+
"Path": "configuration.md"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"Title": "Architecture",
|
|
33
|
+
"Children": [
|
|
34
|
+
{
|
|
35
|
+
"Title": "System Design",
|
|
36
|
+
"Path": "architecture.md"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"Title": "Initialization",
|
|
40
|
+
"Path": "initialization.md"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"Title": "Schema Definition",
|
|
44
|
+
"Path": "schema-definition.md"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"Title": "Usage",
|
|
50
|
+
"Children": [
|
|
51
|
+
{
|
|
52
|
+
"Title": "REST Endpoints",
|
|
53
|
+
"Path": "endpoints.md"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"Title": "DAL Access",
|
|
57
|
+
"Path": "dal-access.md"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"Title": "Behavior Injection",
|
|
61
|
+
"Path": "behavior-injection.md"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"Title": "Lifecycle Hooks",
|
|
65
|
+
"Path": "lifecycle-hooks.md"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"Title": "API Reference",
|
|
71
|
+
"Children": [
|
|
72
|
+
{
|
|
73
|
+
"Title": "Overview",
|
|
74
|
+
"Path": "api/reference.md"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"Title": "constructor",
|
|
78
|
+
"Path": "api/constructor.md"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"Title": "initializeService",
|
|
82
|
+
"Path": "api/initializeService.md"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"Title": "stopService",
|
|
86
|
+
"Path": "api/stopService.md"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"Title": "initializePersistenceEngine",
|
|
90
|
+
"Path": "api/initializePersistenceEngine.md"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"Title": "initializeDataEndpoints",
|
|
94
|
+
"Path": "api/initializeDataEndpoints.md"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"Title": "onBeforeInitialize",
|
|
98
|
+
"Path": "api/onBeforeInitialize.md"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"Title": "onInitialize",
|
|
102
|
+
"Path": "api/onInitialize.md"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"Title": "onAfterInitialize",
|
|
106
|
+
"Path": "api/onAfterInitialize.md"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"DocFiles": [
|
|
112
|
+
".nojekyll",
|
|
113
|
+
"README.md",
|
|
114
|
+
"_brand.json",
|
|
115
|
+
"_cover.md",
|
|
116
|
+
"_sidebar.md",
|
|
117
|
+
"_topbar.md",
|
|
118
|
+
"_version.json",
|
|
119
|
+
"api/constructor.md",
|
|
120
|
+
"api/initializeDataEndpoints.md",
|
|
121
|
+
"api/initializePersistenceEngine.md",
|
|
122
|
+
"api/initializeService.md",
|
|
123
|
+
"api/onAfterInitialize.md",
|
|
124
|
+
"api/onBeforeInitialize.md",
|
|
125
|
+
"api/onInitialize.md",
|
|
126
|
+
"api/reference.md",
|
|
127
|
+
"api/stopService.md",
|
|
128
|
+
"architecture.md",
|
|
129
|
+
"behavior-injection.md",
|
|
130
|
+
"configuration.md",
|
|
131
|
+
"dal-access.md",
|
|
132
|
+
"endpoints.md",
|
|
133
|
+
"index.html",
|
|
134
|
+
"initialization.md",
|
|
135
|
+
"lifecycle-hooks.md",
|
|
136
|
+
"quick-start.md",
|
|
137
|
+
"retold-catalog.json",
|
|
138
|
+
"retold-keyword-index.json",
|
|
139
|
+
"schema-definition.md",
|
|
140
|
+
"storage-providers.md"
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
"Groups": []
|
|
144
144
|
}
|