meadow-integration 1.0.41 → 1.0.43
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/README.md +27 -8
- package/docs/README.md +1 -1
- package/docs/_cover.md +1 -1
- package/docs/_topbar.md +1 -1
- package/docs/_version.json +3 -3
- package/docs/architecture.md +14 -225
- package/docs/css/docuserve.css +327 -0
- package/docs/data-clone/diagrams/architecture-diagram.excalidraw +1756 -0
- package/docs/data-clone/diagrams/architecture-diagram.mmd +8 -0
- package/docs/data-clone/diagrams/architecture-diagram.svg +2 -0
- package/docs/data-clone/overview.md +2 -32
- package/docs/diagrams/configuration-cascade-2.excalidraw +831 -0
- package/docs/diagrams/configuration-cascade-2.mmd +8 -0
- package/docs/diagrams/configuration-cascade-2.svg +2 -0
- package/docs/diagrams/configuration-cascade.excalidraw +831 -0
- package/docs/diagrams/configuration-cascade.mmd +8 -0
- package/docs/diagrams/configuration-cascade.svg +2 -0
- package/docs/diagrams/data-synchronization-pipeline.excalidraw +3278 -0
- package/docs/diagrams/data-synchronization-pipeline.mmd +42 -0
- package/docs/diagrams/data-synchronization-pipeline.svg +2 -0
- package/docs/diagrams/data-transformation-pipeline.excalidraw +2929 -0
- package/docs/diagrams/data-transformation-pipeline.mmd +31 -0
- package/docs/diagrams/data-transformation-pipeline.svg +2 -0
- package/docs/diagrams/docker-deployment.excalidraw +1963 -0
- package/docs/diagrams/docker-deployment.mmd +23 -0
- package/docs/diagrams/docker-deployment.svg +2 -0
- package/docs/diagrams/high-level-system-architecture.excalidraw +5752 -0
- package/docs/diagrams/high-level-system-architecture.mmd +66 -0
- package/docs/diagrams/high-level-system-architecture.svg +2 -0
- package/docs/diagrams/module-structure.excalidraw +15206 -0
- package/docs/diagrams/module-structure.mmd +56 -0
- package/docs/diagrams/module-structure.svg +2 -0
- package/docs/diagrams/sync-mode-comparison.excalidraw +3660 -0
- package/docs/diagrams/sync-mode-comparison.mmd +33 -0
- package/docs/diagrams/sync-mode-comparison.svg +2 -0
- package/docs/implementation-reference.md +2 -58
- package/docs/index.html +2 -2
- package/docs/retold-catalog.json +388 -284
- package/docs/retold-keyword-index.json +24830 -16291
- package/example-applications/mapping-demo/README.md +2 -10
- package/example-applications/mapping-demo/diagrams/architecture.excalidraw +1866 -0
- package/example-applications/mapping-demo/diagrams/architecture.mmd +8 -0
- package/example-applications/mapping-demo/diagrams/architecture.svg +2 -0
- package/example-applications/mapping-demo/package.json +0 -3
- package/example-applications/mapping-demo/web/mapping-demo-editor.js +5 -5
- package/example-applications/mapping-demo/web/mapping-demo-editor.min.js +2 -2
- package/example-applications/mapping-demo/web/pict.min.js +2 -2
- package/package.json +7 -7
- package/source/Meadow-Integration-Engine.js +34 -0
- package/source/services/clone/Meadow-Service-DeleteCursorStore.js +105 -0
- package/source/services/clone/Meadow-Service-Sync-Entity-OngoingEventualConsistency.js +327 -92
- package/source/services/clone/Meadow-Service-Sync.js +2 -0
- package/test/Meadow-Integration-BisectionSync_test.js +15 -5
- package/test/Meadow-Integration-NewStrategies_test.js +15 -5
- package/test/Meadow-Integration-OngoingEventualConsistencyDeleteCursor_test.js +228 -0
- package/test/Meadow-Integration-OngoingEventualConsistencyDeleteSync_test.js +311 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
server.js
|
|
2
|
+
├── SQLite (in-memory) ← meadow-connection-sqlite
|
|
3
|
+
├── Meadow DAL (Book entity) ← meadow + inline schema
|
|
4
|
+
├── meadow-endpoints (Book) ← auto-generates /1.0/Book(s) REST routes
|
|
5
|
+
├── Demo pipeline endpoints ← /1.0/Demo/*
|
|
6
|
+
│ ├── TabularTransform ← parse + map = comprehension
|
|
7
|
+
│ └── IntegrationAdapter ← comprehension → upsert via REST
|
|
8
|
+
└── Static web UI ← web/index.html
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773 293" width="773" height="293"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dXXPbNlx1MDAxNn3Pr+BoX9JtZeObQGb2wU7sbXaTblx1MDAxYqfb/Zg+0Fx1MDAxMiyxpkiVouN4O33t887+xP6SXHUwMDA1aUmgKagkJMpBUtgzXHUwMDFlXHUwMDBiXHUwMDA0qUvwXHUwMDFj3otzL8Gfnlx1MDAwNMGguJvLwbNgIN+PoiRcdTAwMWXn0e3gi7L9ncxcdTAwMTdxlqpNqPq8yG7yUdVzWlx1MDAxNPNnx8dcdTAwMTCFR0D9wmc0JFx1MDAxMN7vJVx1MDAxMzmTabFQ/f6tPlx1MDAwN8FP1V+1JVx1MDAxZZf7Xlx1MDAxNcOrLFx1MDAxOVx1MDAwZovocshcdTAwMTGvdqo2r8zI5aiI0klcIvWm96pcdTAwMWTy9ce70iS2/nhcdTAwMWKPi2nZXHUwMDAzrJumMp5MXHUwMDBi1aZ3uj/ks0B3Wlx1MDAxNHl2LZ9nSZaX3/uH54JcdTAwMDF0rr/1Mlx1MDAxYV1P8uwmXHUwMDFk6z7np+fh2Znuc1x1MDAxNSfJRXFXXHUwMDFkWVxykFx1MDAxYb5B4/jfraw7Yo0t2/ZTXzmZpnJRXHUwMDBlITii6/ZsXHUwMDFljeLirjpTfVx1MDAxNqWF85fjary/13bl0Uy+LFx1MDAwNzy9SZL6odPx8tCr66KHXHUwMDFlL1t+1oZKWVx1MDAxZUNdp3VTXHUwMDAzXHUwMDE19bavsrTCXHUwMDA3gpBcdTAwMTJcdTAwMWGCUFtcdTAwMTkvXihgXHUwMDE01dGuomQh9SiXJp3VQKNP4mY+ju53gSFcdTAwMDeEXG5cdTAwMDApR3pAkji9bp5hko2uXHLfXHUwMDEyp2NZomhcdTAwMTCBwZPaOW5cdTAwMDHnZTa+21x1MDAwN51cdTAwMThuolNsolx1MDAxM0JcdTAwMGbPXuAprOCJMVxuhUDIQXTCXHUwMDE2dKZq3IZgXHUwMDEzloV8XzxEJFx0XHUwMDFm3i9ccoiEeFx1MDAxM5Ko5ztmkUfpYlx1MDAxZeVq/HaC5Vx1MDAwZaCEh4Lkg1xyS+yFdtiDWHBMuPrrXGb4KuiUIypzZezRXHUwMDBmi9p1ytLiXCL+T0VcdTAwMWHwoPU8msVJObD0wXFOknhSnv8gkVe1662OW8QquFhvLrK53jpSx4viVOabo5/l8SROo+Ttdlx1MDAxYqObXCJ7I1x1MDAxN/dWXHUwMDE2+Y2sj4H8cn2rPaqNjuZcdTAwMWJq4ZtMLofvhnCTcOXBXHUwMDFmXHUwMDEyXHUwMDBlPXRcdTAwMDF0k3CG+Fx1MDAwNGuj2unGT8LzXHUwMDEw7Um3aTSa3uRyu1x1MDAxZsCNLVx1MDAxZthcdTAwMGaYSIfFXHUwMDA2wVriXHUwMDExJkJBnYxHsFx1MDAxZdF5XHUwMDE211x1MDAwM+fyR/9cdTAwMTdoYFRcdTAwMWbW/3//RXtvTHX3J43dXHUwMDA2SbQonmezWVxcqJP7urRhY9iLKC9Olc1xOmluk+l4y5Zqr5M8z26nMtq4xmq/rdvmWXI3qa5pNWrtXHUwMDE0ne5EUaZv3WufqKOgNUc1ajxFLSiqjexA0Vx1MDAxMEKCMVx1MDAxNi4ylFx1MDAxY4ihXHUwMDFha43un1x1MDAxYUNcdTAwMTW45f2UinDUeUpFNVx1MDAxNip/aiCrvrB6SqW7tbNcdTAwMTWewnOE/ZRqc0qlLpRVWFx1MDAwYkumYerknIq2zfhLeFbTfiM8N91cYmtFplx1MDAwMZg2gV5cdTAwMDdcXH4oL/KYPkTNk2xASCCHQEDGXHUwMDFjxCA7kFx1MDAwZqH13rStN9i99yfsnipNxVx1MDAxMD9uairhQ02FbmrQXGLqLrtpKr1w/+PWVLAl71x1MDAwNUOIXHUwMDAz7o7vWUkqXHUwMDE337yKXHUwMDBiXHUwMDE5PI3T4UzOsvzuM4e1ld8ydj+RJWxxwKNZ0Y1/uHaNt3heRFxyKkstLHmkKdzHTkBiQ0A114OYXHUwMDEx7M7kbUXAX3/5bzBT/iG7XHUwMDFkKiakaqKhzFx1MDAxZS5+TFx1MDAxNNKNVKzN/z8gXHUwMDE1u5m9XHUwMDFmKXkn5bNTPNyQVfimW/TKZ18hMbXKxEKBMFx1MDAxMJxcdTAwMDN3fKNGoPDKZ1x1MDAxZsrnLlx1MDAxNIVA3+C99Nk7R61SglxmMaZ4SlxcnLaeeOmzL+mTku7VJFxy6VNcdTAwMTjI6qXPQ0mf6kLZ0Fc5WEJcdTAwMTTVXFyk72ln5dOIzlbl01x1MDAwMEyvfPbhQiixqyrhKFx1MDAxNJxwSFx1MDAxY1x1MDAwNOFzL306654q6dNcdTAwMTBAtkqfYrO6XHUwMDA1cS997lx1MDAxZjvaXHUwMDExn1x0gVx0dqmUcaW8vK7ki+DFyavg6WmWXVx1MDAwN+pb1di5LIC2m7yf4vKig1xm2omLTVx1MDAxOdTghlGtXHUwMDAy2cugO0/kQFx1MDAxZGWtXjjERFxiKqjLOmjweVx1MDAxMKclWoPFaCpn0Uehgm43ej9GnnXSQHGXyLgpsFx1MDAxOOqtvVxi2ld6XCKkdbS1ztBCXHUwMDEyQlx1MDAwMlx1MDAxYyq51lxiPD9QcPw700B3oij25Z9cdTAwMDekqFx1MDAxZckurlx1MDAxMzHBIXWRoX/2XHUwMDEyaG/Vn4zuKoFC5Ms/l62PUv7JrDysgEJcdTAwMTBcbrGL/P2ye/WnXHSerVx1MDAxYahcdJleXHUwMDA07WX6xex8XGJcdTAwMDCEc1xmqItcIuhLL4I666AqXHUwMDEx1Fx1MDAxMEG2iqDQsFxiXHUwMDAxXG5ccuT3Kqhl9GjJfFwiWEhcdTAwMTByKH5cXFx0L8sqLoXVe9rfK4suq6CtXHUwMDE27ye5/KWDXGLaiYtNXHUwMDEx1OSHMTcsuuBVUFsyhnWUtZORYshcdTAwMThyyFxy11XQXHUwMDEyvcOJVFRQR19cdTAwMDTH8FxiXHUwMDFjl1x1MDAwMH+6+Cx4c3bxNlDDoTY4Lotan8V+pP1rJ52UdImem1wijOFcdTAwMTlcbq+T9ibCWOUv1Fx1MDAxZFx1MDAxNTNOmTvJRI3AV14n7UMn3Ymioa9cdTAwMTU9IEW1L+9U6IPVL3XzOfnXXindUyldrYtHmGGJpy1CKWmwlfmF8e5bXHUwMDFmRye18rBcYlx1MDAxM1x1MDAxY1x1MDAxMuxkrehXndfF21x1MDAwN52hX1x1MDAxOO9R4WnlXShBXHUwMDEwcUFcXFxmXHUwMDAw/9ZlYTxDeNMu4jFDKaNcdTAwMTfx+tBccqzAh1x1MDAwMFxmXHUwMDA14MShR9VWusFcdTAwMGI5y4J5PJdVXHTSWlx1MDAxOXNYxGu1eD894OtcdTAwMGVcIl4nLm6IeMww10BexOuBjFbr+XBRanjCQUG9VL8quauE+PFcdTAwMWZcdTAwMWTX6YyW7se9b1q4l0dxMqSmNWLbZ/qGqn4vxvXFQGg1VYCQXHUwMDAzXG5cdTAwMTF2cs3KN16N21+NezfsVG5CPUfv21x1MDAxZoGjSNhxXHUwMDE0YFx1MDAwMiCiTqpxXHUwMDE3nqN9KOa7cFx1MDAxNFx1MDAwMV9ZfECO2inmXHUwMDAwsJBTXHUwMDEwupOO1lx1MDAxY33rXHUwMDE1875qizHvLkryRlx1MDAwNafwtcXL1sdcdTAwMTAlMbdysoKFmFwiN1x1MDAxZm3/tnNtsVx1MDAxMZ6bjkS0I9PXXHUwMDE297PCnaU4iVx1MDAxMUHEoSUmNVxi/+5Li531T1VWwlx1MDAxMEJuKqFcdTAwMTA00lx1MDAxMsKQx6096O3TXHUwMDEyu8aPdsyH5Vx1MDAwNI9cdTAwMTDqoFx1MDAxNPo2urxJovxtecGusnzmcD5iu6n7iaHfdUhEdKLfRlwiwuB5Uagx4Fx1MDAxM1x1MDAxMTvTz+7FXHUwMDAygnJcdTAwMDCdKpmoZ1wi1IVayODzYFx1MDAxNs2DP1x1MDAwNaNsNs/lVKbVWZnY6E5mopPl+5HzXHUwMDFmXTJcdTAwMTVsp0xcdTAwMDUyPHnjVdC+XmlnlytEXGZBXGK4Q6s/a1xi/tOLoH0kKlhcdTAwMTeKNkXQblx1MDAxNIU24aun6IqixM6LUkRDxSknS/v/9Vx1MDAxOFx1MDAxY4X80+bodDeOXHUwMDEyX9p/QI5avcVcdTAwMDRcdTAwMTJcdTAwMGVcdTAwMThcdTAwMGZDJ5OJ0YE4+jtMVHDc/Vx1MDAxNXiNRFx1MDAwNcJ+Iehl66O8Vlx1MDAxY9s52Vx1MDAxMFx0ijl26MFXTeDLzplcbiM+WzNcdTAwMTUmaPpMRVx1MDAxZm6EYys3XCLCci1y5JBeokE48plcbmdcdTAwMWRUlakwxJDtmYr6UrP+NXh9XHUwMDA2kHbMp4QhhDh2x/2slNKXaSEneVS+xOpkXHUwMDFjzVx1MDAwYpk7nKr4LWP300PHXHUwMDFkklx1MDAxNZ1cdTAwMTjYTFaYnC82XHUwMDA1hj5ZYctAq/fgIcBoWa1cdTAwMDLdy1x1MDAxNZaS/1x1MDAwM5E/+PWX/1x1MDAwNTfzhaJN8C6OqlVDXHUwMDFjT1lY2L9cdTAwMWZRZaflTsJd8lx1MDAxNoaHXHK9KNpXTVx1MDAwZrCbrymyXHUwMDEyTJx82vXKa6J9aKI7UTT0xdtcdTAwMDekqFVIy1x1MDAwNFx1MDAxMiys1124Q9GJl0R7q91cdTAwMTbdJdHGutCI+drtZeuj1G5cdTAwMGI7XHUwMDE3XHUwMDBiIIchXHUwMDA1TuY0pt2Lt034bF1cdTAwMTjaXHUwMDA0TS+J9uJFhF1mXHJAXHUwMDAxXHUwMDAwRE5mv2OviTrroSpN1Fx1MDAxMEO2rimDTItwUdMyXHUwMDE2Xlx1MDAxMrV8+M8uXHUwMDE5wlx1MDAwNFx1MDAwMy5VvazkmItcIiriUXArL4Nva0vDOyeGbrFzP3nlh1x1MDAwZTpoJ9Zt6KDGYNCUifA6qCXtrHRQ5XBcdTAwMTmBor7ihSvEK3VEhebjXG6NR9Niljguem4zdj9cbl4vKfhk6a1cdTAwMDfRfF5yXa6nXHUwMDAzXG5A8bhxL7pvK+RcXI9E1fQ6XHUwMDFiy7M0ukyaXHUwMDAzP3hcdTAwMTfL29O22dPymr2+SYr4QqFkVOZeqolJaV91myjJJJdNP/9cdTAwMWaog0qPIn0=<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"filetree","mermaid":"server.js\n├── SQLite (in-memory) ← meadow-connection-sqlite\n├── Meadow DAL (Book entity) ← meadow + inline schema\n├── meadow-endpoints (Book) ← auto-generates /1.0/Book(s) REST routes\n├── Demo pipeline endpoints ← /1.0/Demo/*\n│ ├── TabularTransform ← parse + map = comprehension\n│ └── IntegrationAdapter ← comprehension → upsert via REST\n└── Static web UI ← web/index.html\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 15) rotate(0 5 4)"><path d="M2 0 C4.57 0.03, 6.11 0.12, 8 0 C8.17 1.32, 8.54 2.13, 10 2 C9.71 3.58, 10.15 4.86, 10 6 C9.58 8.04, 9.8 8.56, 8 8 C5.42 8.55, 4.17 8.56, 2 8 C-1.15 6.73, -0.44 8.76, 0 6 C-0.35 5.24, -0.15 4.17, 0 2 C-1.85 2.32, 0.44 -1.38, 2 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M2 0 C3.21 0, 4.54 0.07, 8 0 M2 0 C3.22 -0.02, 4.53 0.03, 8 0 M8 0 C9.29 0.04, 10.43 1.04, 10 2 M8 0 C9.64 -0.54, 10.26 0.86, 10 2 M10 2 C9.93 3.24, 10 4.37, 10 6 M10 2 C9.95 3.26, 9.98 4.58, 10 6 M10 6 C9.74 6.93, 9.03 8.41, 8 8 M10 6 C10.51 7.11, 9.27 8.38, 8 8 M8 8 C5.87 8.1, 3.42 7.86, 2 8 M8 8 C6.2 7.96, 4.46 7.97, 2 8 M2 8 C0.59 7.99, 0.12 7.05, 0 6 M2 8 C0.68 8.38, 0.26 7.13, 0 6 M0 6 C0.07 4.93, 0.1 3.8, 0 2 M0 6 C-0.01 4.96, 0.02 3.82, 0 2 M0 2 C-0.27 0.43, 1 -0.23, 2 0 M0 2 C-0.18 0.32, 0.63 -0.52, 2 0" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round" transform="translate(10 20) rotate(0 9.5 5.5)"><path d="M2.75 0 C8.66 -1.11, 12.7 -0.42, 16.25 0 C16.43 1.83, 19.89 2.35, 19 2.75 C18.84 3.98, 19.22 6.84, 19 8.25 C19.36 10.62, 17.75 12.48, 16.25 11 C12.92 10.86, 8.92 10.41, 2.75 11 C-0.54 10.21, 1.87 10.81, 0 8.25 C-0.3 7.16, 0.52 5.2, 0 2.75 C1.53 0.03, 2.37 0.44, 2.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M2.75 0 C5.28 -0.16, 8.07 0.05, 16.25 0 M2.75 0 C6.67 0.03, 10.51 0.01, 16.25 0 M16.25 0 C18.21 -0.32, 19.15 1.2, 19 2.75 M16.25 0 C17.86 0.17, 19.5 0.97, 19 2.75 M19 2.75 C19.12 4.57, 18.92 6.15, 19 8.25 M19 2.75 C18.97 4.48, 19.06 6.21, 19 8.25 M19 8.25 C19.39 9.78, 18.41 11.48, 16.25 11 M19 8.25 C18.51 10.45, 17.68 11.01, 16.25 11 M16.25 11 C11.08 10.84, 5.35 11, 2.75 11 M16.25 11 C12.12 10.86, 7.65 11.12, 2.75 11 M2.75 11 C0.87 11.42, -0.42 10.44, 0 8.25 M2.75 11 C0.81 10.81, 0.22 10.48, 0 8.25 M0 8.25 C-0.09 6.15, 0.09 4.3, 0 2.75 M0 8.25 C0 6.37, -0.01 4.44, 0 2.75 M0 2.75 C0.34 0.68, 1.36 -0.06, 2.75 0 M0 2.75 C0.24 0.63, 0.56 -0.53, 2.75 0" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.6" fill="none"/></g><g transform="translate(39 10) rotate(0 56.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-accent, #C9602F)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">server.js</text></g><g stroke-linecap="round"><g transform="translate(20 40) rotate(0 -0.09199490329848992 17.5)"><path d="M0 0 C-0.52 7.02, 0.13 14.61, 0 35 M0 0 C-0.04 7.93, -0.13 15.57, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(20 58) rotate(0 8 0.003770379375282573)"><path d="M0 0 C3.41 -0.22, 6.12 0.24, 16 0 M0 0 C4.52 0.18, 9.45 -0.07, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(42 48) rotate(0 7.5 9.5)"><path d="M3.75 0 C4.97 0.04, 6.66 -0.04, 11.25 0 C14.6 -1.2, 15.59 -1.35, 15 3.75 C15.23 4.84, 13.97 10.32, 15 15.25 C13.95 18.25, 15.3 17.19, 11.25 19 C8.6 19.74, 7.16 19.1, 3.75 19 C0.58 20.74, -2.09 20.31, 0 15.25 C0.38 12.47, 0.17 11.05, 0 3.75 C-0.98 0.18, 0.53 -2.17, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C5.12 -0.29, 6.76 -0.28, 11.25 0 M3.75 0 C5.92 -0.01, 8.45 -0.16, 11.25 0 M11.25 0 C14.09 0.54, 15.82 0.45, 15 3.75 M11.25 0 C14.49 0.71, 14.15 1.09, 15 3.75 M15 3.75 C14.65 6.11, 14.93 8.89, 15 15.25 M15 3.75 C14.83 7.96, 15.19 11.84, 15 15.25 M15 15.25 C15.48 17.5, 13.41 19.42, 11.25 19 M15 15.25 C13.85 17.94, 12.73 19.9, 11.25 19 M11.25 19 C8.87 18.83, 5.69 19.17, 3.75 19 M11.25 19 C9.51 19.15, 8.01 19.02, 3.75 19 M3.75 19 C1.52 18.72, 0.65 17.91, 0 15.25 M3.75 19 C1.98 18.21, -0.49 16.79, 0 15.25 M0 15.25 C-0.43 11.99, 0.44 10.06, 0 3.75 M0 15.25 C0.07 12.67, -0.16 10.14, 0 3.75 M0 3.75 C0.06 1.39, 0.33 -0.2, 3.75 0 M0 3.75 C-1.15 2.36, 0.6 -0.88, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(52 48) rotate(0 2.5 2.5)"><path d="M0 0 C1.01 1.01, 2.02 2.02, 5 5 M0 0 C1.87 1.87, 3.73 3.73, 5 5 M5 5 C3.15 5, 1.31 5, 0 5 M5 5 C3.69 5, 2.39 5, 0 5 M0 5 C0 3.95, 0 2.89, 0 0 M0 5 C0 3.2, 0 1.41, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(69 45) rotate(0 108.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">SQLite (in-memory)</text></g><g transform="translate(374 48) rotate(0 125 11)"><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">← meadow-connection-sqlite</text></g><g stroke-linecap="round"><g transform="translate(20 75) rotate(0 0.02450433774991545 17.5)"><path d="M0 0 C-0.27 6.94, -0.03 13.83, 0 35 M0 0 C0.28 13.26, 0.18 26.3, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(20 93) rotate(0 8 0.029607386739996855)"><path d="M0 0 C3.53 -0.28, 6.71 0.42, 16 0 M0 0 C3.93 -0.19, 7.69 0.04, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(42 83) rotate(0 7.5 9.5)"><path d="M3.75 0 C5.63 0.55, 8.18 0.64, 11.25 0 C16.09 -0.6, 15.16 1.72, 15 3.75 C16.3 6.26, 15.67 11.2, 15 15.25 C15.13 20.04, 12.05 19.26, 11.25 19 C10.13 19.17, 7.17 18.53, 3.75 19 C-1.17 18.18, -0.53 19.82, 0 15.25 C-0.7 11.5, 0.26 8.12, 0 3.75 C-0.09 0.47, 2.29 1.11, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C5.23 -0.34, 6.56 -0.11, 11.25 0 M3.75 0 C5.74 0.02, 7.52 -0.06, 11.25 0 M11.25 0 C13.28 0, 14.82 2.16, 15 3.75 M11.25 0 C14.14 0.84, 16.1 0.72, 15 3.75 M15 3.75 C15.03 8.05, 15.06 12.8, 15 15.25 M15 3.75 C15.2 6.66, 14.83 9.45, 15 15.25 M15 15.25 C15.13 18.75, 13.38 18.66, 11.25 19 M15 15.25 C15.61 17.71, 13.71 19.03, 11.25 19 M11.25 19 C8.14 19.16, 5.17 19.01, 3.75 19 M11.25 19 C9.31 18.82, 7.03 18.96, 3.75 19 M3.75 19 C1.25 19.23, 0.85 17.32, 0 15.25 M3.75 19 C0.29 19.93, -0.52 17.67, 0 15.25 M0 15.25 C-0.3 10.91, 0.22 6.83, 0 3.75 M0 15.25 C0.14 12.2, 0.02 9.03, 0 3.75 M0 3.75 C0.44 1.28, 1.13 0.64, 3.75 0 M0 3.75 C-0.92 0.71, 1.85 0.51, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(52 83) rotate(0 2.5 2.5)"><path d="M0 0 C1.01 1.01, 2.02 2.02, 5 5 M0 0 C1.62 1.62, 3.25 3.25, 5 5 M5 5 C3.56 5, 2.12 5, 0 5 M5 5 C3.85 5, 2.7 5, 0 5 M0 5 C0 3.65, 0 2.29, 0 0 M0 5 C0 3.7, 0 2.41, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(69 80) rotate(0 143.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow DAL (Book entity)</text></g><g transform="translate(374 83) rotate(0 115.5 11)"><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">← meadow + inline schema</text></g><g stroke-linecap="round"><g transform="translate(20 110) rotate(0 0.08159443978504655 17.5)"><path d="M0 0 C0.44 7.42, 0.09 14.17, 0 35 M0 0 C-0.14 13.69, 0.06 27.81, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(20 128) rotate(0 8 -0.031452255759162995)"><path d="M0 0 C3.29 0.12, 6.81 -0.1, 16 0 M0 0 C4.47 -0.14, 8.46 -0.13, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(42 118) rotate(0 7.5 9.5)"><path d="M3.75 0 C5.03 1.05, 7.58 -0.7, 11.25 0 C14.54 -1.67, 12.94 -0.8, 15 3.75 C15.85 8.43, 15.47 10.84, 15 15.25 C13.17 16.61, 11.41 18.7, 11.25 19 C8.51 19.67, 5.11 18.71, 3.75 19 C3.39 21.08, 1.29 19.56, 0 15.25 C-0.56 12.31, -0.25 9.31, 0 3.75 C0.6 1.68, 1.65 1.09, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C5.01 0.03, 6.65 0.16, 11.25 0 M3.75 0 C5.68 0.07, 7.88 0.16, 11.25 0 M11.25 0 C14.12 -0.96, 15.35 1.62, 15 3.75 M11.25 0 C13.95 -0.61, 15.14 1.32, 15 3.75 M15 3.75 C14.55 7.22, 14.67 11.56, 15 15.25 M15 3.75 C14.99 7.24, 15.14 11.07, 15 15.25 M15 15.25 C15.42 18.09, 14.3 19.05, 11.25 19 M15 15.25 C15.56 18.56, 12.83 18.76, 11.25 19 M11.25 19 C9.38 19.14, 6.77 18.67, 3.75 19 M11.25 19 C8.61 19.22, 5.86 18.89, 3.75 19 M3.75 19 C0.56 18.16, -0.86 18.43, 0 15.25 M3.75 19 C1.37 19.51, 0.7 17.13, 0 15.25 M0 15.25 C0.29 11.36, -0.47 7.2, 0 3.75 M0 15.25 C-0.11 11.56, 0.03 7.37, 0 3.75 M0 3.75 C-0.65 1.42, 0.52 -0.08, 3.75 0 M0 3.75 C0.68 0.41, 2.34 -0.65, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(52 118) rotate(0 2.5 2.5)"><path d="M0 0 C1.01 1.01, 2.02 2.02, 5 5 M0 0 C1.75 1.75, 3.49 3.49, 5 5 M5 5 C3.14 5, 1.28 5, 0 5 M5 5 C3.59 5, 2.19 5, 0 5 M0 5 C0 3.67, 0 2.35, 0 0 M0 5 C0 3.68, 0 2.36, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(69 115) rotate(0 137.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">meadow-endpoints (Book)</text></g><g transform="translate(374 118) rotate(0 194.5 11)"><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">← auto-generates /1.0/Book(s) REST routes</text></g><g stroke-linecap="round"><g transform="translate(20 145) rotate(0 -0.01239004878942751 17.5)"><path d="M0 0 C-0.21 6.72, -0.08 14.21, 0 35 M0 0 C-0.02 8.32, 0.21 16.82, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(20 163) rotate(0 8 0.06909254857049518)"><path d="M0 0 C2.84 0.35, 6.73 -0.06, 16 0 M0 0 C5.11 0.01, 9.77 0, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 155) rotate(0 5 4)"><path d="M2 0 C4.07 -0.38, 7.24 -0.04, 8 0 C8.22 0.27, 9.19 -0.86, 10 2 C9.96 2.87, 9.83 4.04, 10 6 C8.83 7.26, 7.26 7.38, 8 8 C6.46 8.6, 5.1 7.77, 2 8 C0.59 7.29, 2.09 8.13, 0 6 C-0.07 5.15, -0.24 3.38, 0 2 C0.37 1.12, 1.01 0.17, 2 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M2 0 C3.24 0.1, 4.34 0.08, 8 0 M2 0 C3.85 -0.07, 5.81 -0.04, 8 0 M8 0 C9.64 0.36, 9.57 0.32, 10 2 M8 0 C9.76 -0.43, 10.02 0.26, 10 2 M10 2 C10.05 3.07, 9.98 4, 10 6 M10 2 C9.95 3.5, 9.99 5, 10 6 M10 6 C9.97 7, 9.5 7.67, 8 8 M10 6 C9.52 7.08, 9.43 7.44, 8 8 M8 8 C6.62 7.99, 5.49 8.09, 2 8 M8 8 C6.35 8.01, 4.67 7.96, 2 8 M2 8 C0.18 8.44, 0.29 7.51, 0 6 M2 8 C0.16 7.7, 0.53 7.48, 0 6 M0 6 C-0.08 4.7, 0.09 3.29, 0 2 M0 6 C-0.02 4.61, 0 3.17, 0 2 M0 2 C-0.37 0.76, 0.74 0.09, 2 0 M0 2 C0.54 1.11, 0.52 -0.29, 2 0" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round" transform="translate(40 160) rotate(0 9.5 5.5)"><path d="M2.75 0 C4.83 0.53, 9.85 -1.08, 16.25 0 C16.48 0.78, 20.54 -0.63, 19 2.75 C19.19 5.25, 18.78 6.75, 19 8.25 C18.61 9.84, 19.41 11.3, 16.25 11 C12.43 10.97, 11.02 11.46, 2.75 11 C1.2 10.77, 0.2 10.17, 0 8.25 C0.08 5.88, 0.39 4.1, 0 2.75 C-0.45 -1.17, 2.93 1.99, 2.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M2.75 0 C5.34 0.08, 8.31 0.06, 16.25 0 M2.75 0 C8.08 -0.06, 13.39 -0.13, 16.25 0 M16.25 0 C18.57 -0.01, 19.29 0.47, 19 2.75 M16.25 0 C17.98 0.29, 19.26 0.37, 19 2.75 M19 2.75 C19.02 4.33, 18.89 5.65, 19 8.25 M19 2.75 C18.97 4.8, 18.94 6.79, 19 8.25 M19 8.25 C18.61 9.85, 17.87 10.74, 16.25 11 M19 8.25 C18.67 10.42, 17.84 11.22, 16.25 11 M16.25 11 C13.44 11.27, 10.01 10.84, 2.75 11 M16.25 11 C12.46 10.97, 8.45 11.11, 2.75 11 M2.75 11 C0.46 10.87, -0.25 9.89, 0 8.25 M2.75 11 C1.45 11.27, 0.49 9.68, 0 8.25 M0 8.25 C-0.02 6.92, 0.08 5.8, 0 2.75 M0 8.25 C0.01 6.99, -0.02 5.74, 0 2.75 M0 2.75 C0.24 1.01, 1.1 0.27, 2.75 0 M0 2.75 C-0.19 1.42, 0.45 -0.3, 2.75 0" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.6" fill="none"/></g><g transform="translate(69 150) rotate(0 137.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Demo pipeline endpoints</text></g><g transform="translate(374 153) rotate(0 64.5 11)"><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">← /1.0/Demo/*</text></g><g stroke-linecap="round"><g transform="translate(20 180) rotate(0 -0.04665529711100547 17.5)"><path d="M0 0 C-0.09 7.25, -0.31 13.74, 0 35 M0 0 C0.03 10.93, 0.13 22.47, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(50 180) rotate(0 0.006309311279384389 17.5)"><path d="M0 0 C-0.32 7.43, 0.35 13.92, 0 35 M0 0 C-0.02 9.97, 0.21 19.52, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(50 198) rotate(0 8 -0.06688298186955421)"><path d="M0 0 C3.51 0.06, 6.23 -0.34, 16 0 M0 0 C5.42 -0.19, 11.12 -0.1, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(72 188) rotate(0 7.5 9.5)"><path d="M3.75 0 C5.82 -0.74, 9.15 0.87, 11.25 0 C14.2 1.18, 15.3 1.95, 15 3.75 C13.86 6.83, 14.91 10.25, 15 15.25 C14.48 18.8, 12.76 21.08, 11.25 19 C8.65 19.93, 7.72 19.29, 3.75 19 C1.85 17.6, 2.59 15.85, 0 15.25 C-1.38 13.11, 1.51 9.83, 0 3.75 C-1.88 -1.22, 2.05 1.75, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C5.22 0.05, 6.87 0, 11.25 0 M3.75 0 C6.35 0.02, 9.16 -0.19, 11.25 0 M11.25 0 C14.26 -0.45, 14.99 1.46, 15 3.75 M11.25 0 C13.55 -0.31, 15.53 0.18, 15 3.75 M15 3.75 C15.53 6.98, 14.85 9.95, 15 15.25 M15 3.75 C14.91 6.52, 15.14 8.9, 15 15.25 M15 15.25 C15.12 17.03, 14.72 19.16, 11.25 19 M15 15.25 C14.9 17.04, 13.31 19.98, 11.25 19 M11.25 19 C8.22 19.2, 6.21 19.16, 3.75 19 M11.25 19 C9.72 18.9, 8.24 19.09, 3.75 19 M3.75 19 C1.75 19.38, -0.39 17, 0 15.25 M3.75 19 C0.62 19.11, -0.23 18.79, 0 15.25 M0 15.25 C0 10.52, 0.27 6.69, 0 3.75 M0 15.25 C0 12.31, 0.27 9.61, 0 3.75 M0 3.75 C-0.18 1.57, 1.46 0.5, 3.75 0 M0 3.75 C0.59 2.19, 1.8 0.52, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(82 188) rotate(0 2.5 2.5)"><path d="M0 0 C1.01 1.01, 2.02 2.02, 5 5 M0 0 C1.15 1.15, 2.3 2.3, 5 5 M5 5 C3.07 5, 1.14 5, 0 5 M5 5 C3.09 5, 1.18 5, 0 5 M0 5 C0 3.32, 0 1.64, 0 0 M0 5 C0 3.07, 0 1.14, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(99 185) rotate(0 97 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">TabularTransform</text></g><g transform="translate(374 188) rotate(0 139 11)"><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">← parse + map = comprehension</text></g><g stroke-linecap="round"><g transform="translate(20 215) rotate(0 -0.08862710478580738 17.5)"><path d="M0 0 C-0.14 7.24, -0.36 14.32, 0 35 M0 0 C0.1 9, -0.26 18.14, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(50 215) rotate(0 -0.08020147874042038 9)"><path d="M0 0 C-0.47 3.93, 0.13 7.56, 0 18 M0 0 C0.09 3.82, -0.13 7.75, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(50 233) rotate(0 8 0.035100542484158836)"><path d="M0 0 C3.44 0.01, 6.19 0.02, 16 0 M0 0 C4.61 -0.04, 9.4 0.19, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(72 223) rotate(0 7.5 9.5)"><path d="M3.75 0 C5.83 0.53, 7.52 0.04, 11.25 0 C15.08 -1.01, 14.43 2.93, 15 3.75 C14.35 7.57, 16.58 10.64, 15 15.25 C13.13 17.79, 15.55 19.04, 11.25 19 C8.82 18.4, 8.08 19.07, 3.75 19 C0.79 19.79, 0.5 16.02, 0 15.25 C0.97 10.11, 1.22 5.24, 0 3.75 C-1.14 1.11, -1.13 2.11, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C5.14 0.01, 6.8 0.34, 11.25 0 M3.75 0 C6.03 0.09, 8.06 0, 11.25 0 M11.25 0 C13.06 -0.85, 15.62 1.25, 15 3.75 M11.25 0 C14.76 0.03, 15.15 0.49, 15 3.75 M15 3.75 C15.2 7.47, 15.13 12.53, 15 15.25 M15 3.75 C14.84 7.01, 15.29 10.06, 15 15.25 M15 15.25 C15.67 17.75, 14.12 18.38, 11.25 19 M15 15.25 C14.94 17.43, 13.2 19.08, 11.25 19 M11.25 19 C9.82 19.08, 7.53 19.26, 3.75 19 M11.25 19 C8.37 19.15, 5.77 19.08, 3.75 19 M3.75 19 C1.32 18.41, -0.11 18.25, 0 15.25 M3.75 19 C0.34 19.73, 0.24 17.54, 0 15.25 M0 15.25 C-0.49 12.61, -0.35 9.6, 0 3.75 M0 15.25 C-0.2 10.76, 0.26 6.39, 0 3.75 M0 3.75 C0.34 0.77, 0.82 0.92, 3.75 0 M0 3.75 C0.7 1.01, 0.9 -1.1, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(82 223) rotate(0 2.5 2.5)"><path d="M0 0 C1.02 1.02, 2.04 2.04, 5 5 M0 0 C1.85 1.85, 3.71 3.71, 5 5 M5 5 C3.67 5, 2.34 5, 0 5 M5 5 C3.95 5, 2.9 5, 0 5 M0 5 C0 3.3, 0 1.6, 0 0 M0 5 C0 3.61, 0 2.23, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(99 220) rotate(0 108.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">IntegrationAdapter</text></g><g transform="translate(374 223) rotate(0 157.5 11)"><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">← comprehension → upsert via REST</text></g><g stroke-linecap="round"><g transform="translate(20 250) rotate(0 0.10549628565599356 9)"><path d="M0 0 C0.22 3.87, 0.34 7.54, 0 18 M0 0 C0.04 6.04, 0 12.18, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(20 268) rotate(0 8 0.028939482574884323)"><path d="M0 0 C3.17 0.04, 6.27 0.11, 16 0 M0 0 C3.31 -0.05, 7.02 0.17, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(42 258) rotate(0 7.5 9.5)"><path d="M3.75 0 C5.47 0.71, 8.12 0.41, 11.25 0 C12.1 -1.55, 13.8 1.57, 15 3.75 C14.66 6.23, 14.73 13.05, 15 15.25 C15.65 16.29, 11.22 19.09, 11.25 19 C10.07 18.11, 7.53 19.41, 3.75 19 C2.01 19.5, 0.51 15.76, 0 15.25 C-0.44 11.69, 1.03 8.15, 0 3.75 C1.59 2.61, 0.95 -2.38, 3.75 0" stroke="none" stroke-width="0" fill="var(--diagram-paper, #FBF7EE)"/><path d="M3.75 0 C4.9 -0.05, 6.9 0.35, 11.25 0 M3.75 0 C5.39 0.15, 6.98 0.06, 11.25 0 M11.25 0 C14.47 0.72, 14.27 1.22, 15 3.75 M11.25 0 C14.75 0.76, 14.42 1.37, 15 3.75 M15 3.75 C15.11 6.81, 15.22 9.83, 15 15.25 M15 3.75 C15.14 6.86, 15.08 10.3, 15 15.25 M15 15.25 C14.69 17.43, 13.63 18.83, 11.25 19 M15 15.25 C13.97 17.41, 14.32 17.94, 11.25 19 M11.25 19 C8.43 18.72, 6.46 18.72, 3.75 19 M11.25 19 C9.72 19.14, 8.24 19.01, 3.75 19 M3.75 19 C0.43 19.66, 0.55 18.17, 0 15.25 M3.75 19 C0.1 19, -1.07 17.06, 0 15.25 M0 15.25 C-0.11 12.52, 0.09 9.65, 0 3.75 M0 15.25 C0.16 11.44, 0.03 6.9, 0 3.75 M0 3.75 C0.44 1.55, 2.15 0.66, 3.75 0 M0 3.75 C-0.83 1.26, 0.99 0.35, 3.75 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.6" fill="none"/></g><g stroke-linecap="round"><g transform="translate(52 258) rotate(0 2.5 2.5)"><path d="M0 0 C1.01 1.01, 2.02 2.02, 5 5 M0 0 C1.47 1.47, 2.94 2.94, 5 5 M5 5 C3.96 5, 2.93 5, 0 5 M5 5 C3.57 5, 2.14 5, 0 5 M0 5 C0 3.63, 0 2.25, 0 0 M0 5 C0 3.61, 0 2.23, 0 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="1.3" fill="none"/></g></g><mask/><g transform="translate(69 255) rotate(0 79.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Static web UI</text></g><g transform="translate(374 258) rotate(0 78.5 11)"><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">← web/index.html</text></g></svg>
|
|
@@ -39,7 +39,7 @@ var _ViewConfiguration={ViewIdentifier:'MappingDemoEditor',DefaultRenderable:'Ma
|
|
|
39
39
|
*/var MappingDemoEditorView=/*#__PURE__*/function(_libMeadowMappingEdit){function MappingDemoEditorView(pFable,pOptions,pServiceHash){_classCallCheck(this,MappingDemoEditorView);return _callSuper(this,MappingDemoEditorView,[pFable,pOptions,pServiceHash]);}// ── Data methods ─────────────────────────────────────────────────────────
|
|
40
40
|
_inherits(MappingDemoEditorView,_libMeadowMappingEdit);return _createClass(MappingDemoEditorView,[{key:"_doLoadMappings",value:function _doLoadMappings(pContextID){return fetch('/1.0/Demo/VisualMapping').then(function(r){return r.json();});}},{key:"_doLoadSources",value:function _doLoadSources(){return fetch('/1.0/Demo/Sources').then(function(r){return r.json();});}},{key:"_doLoadStores",value:function _doLoadStores(pContextID){return Promise.resolve({Stores:[]});}},{key:"_doLoadTargetSchema",value:function _doLoadTargetSchema(pContextID){return fetch('/1.0/Demo/TargetSchema').then(function(r){return r.json();});}},{key:"_doLoadMapping",value:function _doLoadMapping(pMappingID){return fetch('/1.0/Demo/VisualMapping/'+pMappingID).then(function(r){return r.json();});}},{key:"_doDeleteMapping",value:function _doDeleteMapping(pMappingID){return fetch('/1.0/Demo/VisualMapping/'+pMappingID,{method:'DELETE'}).then(function(r){return r.json();});}},{key:"_doDiscoverSourceFields",value:function _doDiscoverSourceFields(pContextID,pSourceID,pRecordLimit){return fetch('/1.0/Demo/SourceSchema').then(function(r){return r.json();});}},{key:"_doCreateMapping",value:function _doCreateMapping(pContextID,pData){return fetch('/1.0/Demo/VisualMapping',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(pData)}).then(function(r){return r.json();});}},{key:"_doUpdateMapping",value:function _doUpdateMapping(pMappingID,pData){return fetch('/1.0/Demo/VisualMapping/'+pMappingID,{method:'PUT',headers:{'Content-Type':'application/json'},body:JSON.stringify(pData)}).then(function(r){return r.json();});}},{key:"_onClose",value:function _onClose(){// Hide the editor and restore the step placeholder
|
|
41
41
|
var tmpEditor=document.getElementById('MeadowMap-Editor');if(tmpEditor){tmpEditor.classList.remove('active');}var tmpPlaceholder=document.getElementById('mapping-editor-placeholder');if(tmpPlaceholder){tmpPlaceholder.style.display='';}// Dispatch an event so the outer UI can mark this step done
|
|
42
|
-
document.dispatchEvent(new CustomEvent('mapping-editor-closed'));}}]);}(libMeadowMappingEditorView);module.exports=MappingDemoEditorView;module.exports.default_configuration=_ViewConfiguration;},{"../../../../source/views/PictView-MeadowMappingEditor.js":139}],5:[function(require,module,exports){module.exports={"name":"fable-serviceproviderbase","version":"3.0.19","description":"Simple base classes for fable services.","main":"source/Fable-ServiceProviderBase.js","scripts":{"start":"node source/Fable-ServiceProviderBase.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ./tsconfig.build.json","check":"tsc -p . --noEmit"},"types":"types/source/Fable-ServiceProviderBase.d.ts","mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"repository":{"type":"git","url":"https://github.com/
|
|
42
|
+
document.dispatchEvent(new CustomEvent('mapping-editor-closed'));}}]);}(libMeadowMappingEditorView);module.exports=MappingDemoEditorView;module.exports.default_configuration=_ViewConfiguration;},{"../../../../source/views/PictView-MeadowMappingEditor.js":139}],5:[function(require,module,exports){module.exports={"name":"fable-serviceproviderbase","version":"3.0.19","description":"Simple base classes for fable services.","main":"source/Fable-ServiceProviderBase.js","scripts":{"start":"node source/Fable-ServiceProviderBase.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ./tsconfig.build.json","check":"tsc -p . --noEmit"},"types":"types/source/Fable-ServiceProviderBase.d.ts","mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"repository":{"type":"git","url":"https://github.com/fable-retold/fable-serviceproviderbase.git"},"keywords":["entity","behavior"],"author":"Steven Velozo <steven@velozo.com> (http://velozo.com/)","license":"MIT","bugs":{"url":"https://github.com/fable-retold/fable-serviceproviderbase/issues"},"homepage":"https://github.com/fable-retold/fable-serviceproviderbase","devDependencies":{"@types/mocha":"^10.0.10","fable":"^3.1.62","quackage":"^1.0.58","typescript":"^5.9.3"}};},{}],6:[function(require,module,exports){/**
|
|
43
43
|
* Fable Service Base
|
|
44
44
|
* @author <steven@velozo.com>
|
|
45
45
|
*/var libPackage=require('../package.json');var FableServiceProviderBase=/*#__PURE__*/function(){/**
|
|
@@ -60,7 +60,7 @@ this.serviceType="Unknown-".concat(this.UUID);// The service hash is used to ide
|
|
|
60
60
|
this.Hash=typeof pServiceHash==='string'?pServiceHash:!this.fable&&typeof pOptions==='string'?pOptions:"".concat(this.UUID);}/**
|
|
61
61
|
* @param {import('fable')} pFable
|
|
62
62
|
*/return _createClass(FableServiceProviderBase,[{key:"connectFable",value:function connectFable(pFable){if(_typeof(pFable)!=='object'||!pFable.isFable){var tmpErrorMessage="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(_typeof(pFable),"].}");console.log(tmpErrorMessage);return new Error(tmpErrorMessage);}if(!this.fable){this.fable=pFable;}if(!this.log){this.log=this.fable.Logging;}if(!this.services){this.services=this.fable.services;}if(!this.servicesMap){this.servicesMap=this.fable.servicesMap;}return true;}}]);}();_defineProperty(FableServiceProviderBase,"isFableService",true);module.exports=FableServiceProviderBase;// This is left here in case we want to go back to having different code/base class for "core" services
|
|
63
|
-
module.exports.CoreServiceProviderBase=FableServiceProviderBase;},{"../package.json":5}],7:[function(require,module,exports){module.exports={"name":"pict-application","version":"1.0.34","description":"Application base class for a pict view-based application","main":"source/Pict-Application.js","scripts":{"test":"npx quack test","start":"node source/Pict-Application.js","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-application-image:local","docker-dev-run":"docker run -it -d --name pict-application-dev -p 30001:8080 -p 38086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-application\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-application-image:local","docker-dev-shell":"docker exec -it pict-application-dev /bin/bash","tests":"npx quack test -g","lint":"eslint source/**","types":"tsc -p ."},"types":"types/source/Pict-Application.d.ts","repository":{"type":"git","url":"git+https://github.com/
|
|
63
|
+
module.exports.CoreServiceProviderBase=FableServiceProviderBase;},{"../package.json":5}],7:[function(require,module,exports){module.exports={"name":"pict-application","version":"1.0.34","description":"Application base class for a pict view-based application","main":"source/Pict-Application.js","scripts":{"test":"npx quack test","start":"node source/Pict-Application.js","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-application-image:local","docker-dev-run":"docker run -it -d --name pict-application-dev -p 30001:8080 -p 38086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-application\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-application-image:local","docker-dev-shell":"docker exec -it pict-application-dev /bin/bash","tests":"npx quack test -g","lint":"eslint source/**","types":"tsc -p ."},"types":"types/source/Pict-Application.d.ts","repository":{"type":"git","url":"git+https://github.com/fable-retold/pict-application.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/fable-retold/pict-application/issues"},"homepage":"https://github.com/fable-retold/pict-application#readme","devDependencies":{"@eslint/js":"^9.28.0","browser-env":"^3.3.0","eslint":"^9.28.0","pict":"^1.0.348","pict-docuserve":"^0.1.5","pict-provider":"^1.0.10","pict-view":"^1.0.66","quackage":"^1.1.0","typescript":"^5.9.3"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"dependencies":{"fable-serviceproviderbase":"^3.0.19"}};},{}],8:[function(require,module,exports){var libFableServiceBase=require('fable-serviceproviderbase');var libPackage=require('../package.json');var defaultPictSettings={Name:'DefaultPictApplication',// The main "viewport" is the view that is used to host our application
|
|
64
64
|
MainViewportViewIdentifier:'Default-View',MainViewportRenderableHash:false,MainViewportDestinationAddress:false,MainViewportDefaultDataAddress:false,// Whether or not we should automatically render the main viewport and other autorender views after we initialize the pict application
|
|
65
65
|
AutoSolveAfterInitialize:true,AutoRenderMainViewportViewAfterInitialize:true,AutoRenderViewsAfterInitialize:false,AutoLoginAfterInitialize:false,AutoLoadDataAfterLogin:false,ConfigurationOnlyViews:[],Manifests:{},// The prefix to prepend on all template destination hashes
|
|
66
66
|
IdentifierAddressPrefix:'PICT-'};/**
|
|
@@ -444,7 +444,7 @@ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){
|
|
|
444
444
|
*
|
|
445
445
|
* Useful inside style attributes and in CSS-in-JS contexts where you want
|
|
446
446
|
* the live custom-property reference rather than the resolved value.
|
|
447
|
-
*/var libPictTemplate=require('pict-template');var PictTemplateThemeVar=/*#__PURE__*/function(_libPictTemplate4){function PictTemplateThemeVar(pFable,pOptions,pServiceHash){var _this16;_classCallCheck(this,PictTemplateThemeVar);_this16=_callSuper(this,PictTemplateThemeVar,[pFable,pOptions,pServiceHash]);_this16.addPattern('{~ThemeVar:','~}');return _this16;}_inherits(PictTemplateThemeVar,_libPictTemplate4);return _createClass(PictTemplateThemeVar,[{key:"render",value:function render(pTemplateHash){var tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';var tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';return tmpProvider.cssVar(tmpPath);}},{key:"_findThemeProvider",value:function _findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}]);}(libPictTemplate);module.exports=PictTemplateThemeVar;},{"pict-template":135}],14:[function(require,module,exports){module.exports={"name":"pict-provider","version":"1.0.13","description":"Pict Provider Base Class","main":"source/Pict-Provider.js","scripts":{"start":"node source/Pict-Provider.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-provider-image:local","docker-dev-run":"docker run -it -d --name pict-provider-dev -p 24125:8080 -p 30027:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-provider\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-provider-image:local","docker-dev-shell":"docker exec -it pict-provider-dev /bin/bash","lint":"eslint source/**","types":"tsc -p ."},"types":"types/source/Pict-Provider.d.ts","repository":{"type":"git","url":"git+https://github.com/
|
|
447
|
+
*/var libPictTemplate=require('pict-template');var PictTemplateThemeVar=/*#__PURE__*/function(_libPictTemplate4){function PictTemplateThemeVar(pFable,pOptions,pServiceHash){var _this16;_classCallCheck(this,PictTemplateThemeVar);_this16=_callSuper(this,PictTemplateThemeVar,[pFable,pOptions,pServiceHash]);_this16.addPattern('{~ThemeVar:','~}');return _this16;}_inherits(PictTemplateThemeVar,_libPictTemplate4);return _createClass(PictTemplateThemeVar,[{key:"render",value:function render(pTemplateHash){var tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';var tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';return tmpProvider.cssVar(tmpPath);}},{key:"_findThemeProvider",value:function _findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}]);}(libPictTemplate);module.exports=PictTemplateThemeVar;},{"pict-template":135}],14:[function(require,module,exports){module.exports={"name":"pict-provider","version":"1.0.13","description":"Pict Provider Base Class","main":"source/Pict-Provider.js","scripts":{"start":"node source/Pict-Provider.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-provider-image:local","docker-dev-run":"docker run -it -d --name pict-provider-dev -p 24125:8080 -p 30027:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-provider\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-provider-image:local","docker-dev-shell":"docker exec -it pict-provider-dev /bin/bash","lint":"eslint source/**","types":"tsc -p ."},"types":"types/source/Pict-Provider.d.ts","repository":{"type":"git","url":"git+https://github.com/fable-retold/pict-provider.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/fable-retold/pict-provider/issues"},"homepage":"https://github.com/fable-retold/pict-provider#readme","devDependencies":{"@eslint/js":"^9.39.1","eslint":"^9.39.1","pict":"^1.0.351","pict-docuserve":"^0.1.5","quackage":"^1.1.0","typescript":"^5.9.3"},"dependencies":{"fable-serviceproviderbase":"^3.0.19"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}};},{}],15:[function(require,module,exports){var libFableServiceBase=require('fable-serviceproviderbase');var libPackage=require('../package.json');var defaultPictProviderSettings={ProviderIdentifier:false,// If this is set to true, when the App initializes this will.
|
|
448
448
|
// After the App initializes, initialize will be called as soon as it's added.
|
|
449
449
|
AutoInitialize:true,AutoInitializeOrdinal:0,AutoLoadDataWithApp:true,AutoLoadDataOrdinal:0,AutoSolveWithApp:true,AutoSolveOrdinal:0,Manifests:{},Templates:[]};var PictProvider=/*#__PURE__*/function(_libFableServiceBase2){/**
|
|
450
450
|
* @param {import('fable')} pFable - The Fable instance.
|
|
@@ -5578,7 +5578,7 @@ tmpStyleEl.textContent='.pict-theme-topbar-nav { display: flex !impor
|
|
|
5578
5578
|
* Override on the instance (`view.openBurgerMenu = function() {...}`)
|
|
5579
5579
|
* to customise the popup contents — e.g. emit a per-app menu view
|
|
5580
5580
|
* instead of cloning the topbar DOM.
|
|
5581
|
-
*/},{key:"openBurgerMenu",value:function openBurgerMenu(){if(typeof document==='undefined')return null;var tmpModal=this.pict.views['Pict-Section-Modal'];if(!tmpModal||typeof tmpModal.show!=='function'){if(typeof console!=='undefined'&&console.warn){console.warn('Theme-TopBar: pict-section-modal not registered — burger menu unavailable.');}return null;}var tmpSections=[];var tmpNav=document.querySelector('#Theme-TopBar-Nav');var tmpUser=document.querySelector('#Theme-TopBar-User');if(tmpNav&&tmpNav.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpNav.innerHTML+'</div>');}if(tmpUser&&tmpUser.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpUser.innerHTML+'</div>');}if(tmpSections.length===0){tmpSections.push('<div class="pict-theme-burger-menu-empty">No menu items configured.</div>');}var tmpHTML='<div class="pict-theme-burger-menu">'+tmpSections.join('')+'</div>';return tmpModal.show({title:'Menu',content:tmpHTML,width:'280px',closeable:true,buttons:[]});}}]);}(libPictView);module.exports=PictViewThemeTopBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":137}],134:[function(require,module,exports){module.exports={"name":"pict-template","version":"1.0.15","description":"Pict Template Base Class","main":"source/Pict-Template.js","scripts":{"start":"node source/Pict-Template.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ."},"types":"types/source/Pict-Template.d.ts","repository":{"type":"git","url":"git+https://github.com/
|
|
5581
|
+
*/},{key:"openBurgerMenu",value:function openBurgerMenu(){if(typeof document==='undefined')return null;var tmpModal=this.pict.views['Pict-Section-Modal'];if(!tmpModal||typeof tmpModal.show!=='function'){if(typeof console!=='undefined'&&console.warn){console.warn('Theme-TopBar: pict-section-modal not registered — burger menu unavailable.');}return null;}var tmpSections=[];var tmpNav=document.querySelector('#Theme-TopBar-Nav');var tmpUser=document.querySelector('#Theme-TopBar-User');if(tmpNav&&tmpNav.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpNav.innerHTML+'</div>');}if(tmpUser&&tmpUser.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpUser.innerHTML+'</div>');}if(tmpSections.length===0){tmpSections.push('<div class="pict-theme-burger-menu-empty">No menu items configured.</div>');}var tmpHTML='<div class="pict-theme-burger-menu">'+tmpSections.join('')+'</div>';return tmpModal.show({title:'Menu',content:tmpHTML,width:'280px',closeable:true,buttons:[]});}}]);}(libPictView);module.exports=PictViewThemeTopBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":137}],134:[function(require,module,exports){module.exports={"name":"pict-template","version":"1.0.15","description":"Pict Template Base Class","main":"source/Pict-Template.js","scripts":{"start":"node source/Pict-Template.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ."},"types":"types/source/Pict-Template.d.ts","repository":{"type":"git","url":"git+https://github.com/fable-retold/pict-view.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/fable-retold/pict-view/issues"},"homepage":"https://github.com/fable-retold/pict-view#readme","devDependencies":{"pict":"^1.0.348","quackage":"^1.0.58","typescript":"^5.9.3"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"dependencies":{"fable-serviceproviderbase":"^3.0.19"}};},{}],135:[function(require,module,exports){var libFableServiceBase=require('fable-serviceproviderbase');var libPackage=require('../package.json');/** @typedef {import('pict') & {
|
|
5582
5582
|
* [key: string]: any, // represent services for now as a workaround
|
|
5583
5583
|
* }} Pict *//**
|
|
5584
5584
|
* @class PictTemplateExpression
|
|
@@ -5626,7 +5626,7 @@ tmpStyleEl.textContent='.pict-theme-topbar-nav { display: flex !impor
|
|
|
5626
5626
|
* @param {any} [pState] - A catchall state object for plumbing data through template processing.
|
|
5627
5627
|
*
|
|
5628
5628
|
* @return {any} The value at the given address, or undefined
|
|
5629
|
-
*/},{key:"resolveStateFromAddress",value:function resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState){return this.pict.resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState);}}]);}(libFableServiceBase);module.exports=PictTemplateExpression;module.exports.template_hash='Default';},{"../package.json":134,"fable-serviceproviderbase":6}],136:[function(require,module,exports){module.exports={"name":"pict-view","version":"1.0.68","description":"Pict View Base Class","main":"source/Pict-View.js","scripts":{"test":"npx quack test","tests":"npx quack test -g","start":"node source/Pict-View.js","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":"docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-view\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-view-image:local","docker-dev-shell":"docker exec -it pict-view-dev /bin/bash","types":"tsc -p .","lint":"eslint source/**"},"types":"types/source/Pict-View.d.ts","repository":{"type":"git","url":"git+https://github.com/
|
|
5629
|
+
*/},{key:"resolveStateFromAddress",value:function resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState){return this.pict.resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState);}}]);}(libFableServiceBase);module.exports=PictTemplateExpression;module.exports.template_hash='Default';},{"../package.json":134,"fable-serviceproviderbase":6}],136:[function(require,module,exports){module.exports={"name":"pict-view","version":"1.0.68","description":"Pict View Base Class","main":"source/Pict-View.js","scripts":{"test":"npx quack test","tests":"npx quack test -g","start":"node source/Pict-View.js","coverage":"npx quack coverage","build":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":"docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict-view\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-view-image:local","docker-dev-shell":"docker exec -it pict-view-dev /bin/bash","types":"tsc -p .","lint":"eslint source/**"},"types":"types/source/Pict-View.d.ts","repository":{"type":"git","url":"git+https://github.com/fable-retold/pict-view.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/fable-retold/pict-view/issues"},"homepage":"https://github.com/fable-retold/pict-view#readme","devDependencies":{"@eslint/js":"^9.39.1","browser-env":"^3.3.0","eslint":"^9.39.1","pict":"^1.0.363","quackage":"^1.0.65","typescript":"^5.9.3"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"dependencies":{"fable":"^3.1.67","fable-serviceproviderbase":"^3.0.19"}};},{}],137:[function(require,module,exports){var libFableServiceBase=require('fable-serviceproviderbase');var libPackage=require('../package.json');var defaultPictViewSettings={DefaultRenderable:false,DefaultDestinationAddress:false,DefaultTemplateRecordAddress:false,ViewIdentifier:false,// If this is set to true, when the App initializes this will.
|
|
5630
5630
|
// After the App initializes, initialize will be called as soon as it's added.
|
|
5631
5631
|
AutoInitialize:true,AutoInitializeOrdinal:0,// If this is set to true, when the App autorenders (on load) this will.
|
|
5632
5632
|
// After the App initializes, render will be called as soon as it's added.
|