@stream44.studio/encapsulate 0.4.0-rc.24 → 0.4.0-rc.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -27,13 +27,23 @@ It is being used to underpin:
|
|
|
27
27
|
<br/><br/>
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
|
+
### Why
|
|
31
|
+
|
|
32
|
+
When encoding a software system as a body (complete model), the body is structured through the declarative semantic schema and animated by functional processing in nodes.
|
|
33
|
+
|
|
34
|
+
We need a minimal abstraction to conveniently author graph processing nodes.
|
|
35
|
+
|
|
36
|
+
`encapsulate` provides such a primitive building block.
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
|
|
30
41
|
The CAPSULE Spine Contract
|
|
31
42
|
---
|
|
32
43
|
|
|
33
44
|
The `encapsulate` library wraps TypeScript objects and binds reference trees for constructing executable component graphs.
|
|
34
45
|
|
|
35
|
-
The binding rules are defined by **Spine Contracts**. The first *experimental* spine contract is the **Capsule Spine Contract**. It builds a model
|
|
36
|
-
around **Capsules** which have certain properties.
|
|
46
|
+
The binding rules are defined by **Spine Contracts**. The first *experimental* spine contract is the **Capsule Spine Contract**. It builds a model around **Capsules** which have certain properties.
|
|
37
47
|
|
|
38
48
|
The capsule spine contract is implemented here: [src/spine-contracts/CapsuleSpineContract.v0/](src/spine-contracts/CapsuleSpineContract.v0/)
|
|
39
49
|
|
|
@@ -44,8 +54,6 @@ The capsule spine contract is implemented here: [src/spine-contracts/CapsuleSpin
|
|
|
44
54
|
- [ ] Capsule Projectors
|
|
45
55
|
- [ ] Load capsules from packs
|
|
46
56
|
|
|
47
|
-

|
|
48
|
-
|
|
49
57
|
Provenance
|
|
50
58
|
===
|
|
51
59
|
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram name="Page-1" id="QeIE7gKKPfThrfCM8ygm">
|
|
3
|
+
<mxGraphModel dx="1145" dy="1728" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-29" value="" style="rounded=0;whiteSpace=wrap;html=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="1" vertex="1">
|
|
8
|
+
<mxGeometry x="10" y="-840" width="1070" height="480" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;strokeWidth=2;" parent="1" source="N3hJ6-WijfH2HfO5JL5S-28" target="N3hJ6-WijfH2HfO5JL5S-25" edge="1">
|
|
11
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
12
|
+
</mxCell>
|
|
13
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-28" value="Source Code Module" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;dashed=1;" parent="1" vertex="1">
|
|
14
|
+
<mxGeometry x="30" y="-800" width="570" height="420" as="geometry"/>
|
|
15
|
+
</mxCell>
|
|
16
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-25" value="Semantic Graph Module" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1">
|
|
17
|
+
<mxGeometry x="660" y="-800" width="390" height="420" as="geometry"/>
|
|
18
|
+
</mxCell>
|
|
19
|
+
<mxCell id="o5PIcx3FIGXJDux8oxUI-1" value="const <font style="color: rgb(0, 102, 204);">capsule</font> = await Capsule({<div>&nbsp; '<font style="color: rgb(204, 102, 0);">#@&lt;org&gt;/&lt;project&gt;/structs/StructA</font>': {</div><div>&nbsp; &nbsp; as:&nbsp;<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@&lt;org&gt;/&lt;project&gt;/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span></div><div>&nbsp; }</div><div>&nbsp; '#'{&nbsp;</div><div>&nbsp; &nbsp; <font style="color: rgb(0, 153, 0);">property1</font>: 'val1',</div><div>&nbsp; &nbsp; <font style="color: rgb(204, 0, 102);">mapping1</font>: '<span style="background-color: transparent;"><font style="color: rgb(204, 0, 102);">@&lt;org&gt;/&lt;project&gt;/FeatureY</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">',</span></div><div>&nbsp; &nbsp; <font style="color: rgb(0, 153, 0);">method1</font>: () =&gt; {</div><div><div>&nbsp; &nbsp; &nbsp; this.<span style="background-color: transparent;"><font style="color: light-dark(rgb(204, 0, 102), rgb(255, 255, 255));">mapping1</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.featureMethod()</span></div></div><div>&nbsp; &nbsp; &nbsp; this['<font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@&lt;org&gt;/&lt;project&gt;/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">]</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.instanceMethod2()</span></div><div>&nbsp; &nbsp; }</div><div>&nbsp; }<br>}, {<div>&nbsp; capsuleName: '<font style="color: rgb(0, 102, 204);"><span style="background-color: transparent;">@&lt;org&gt;/&lt;project&gt;/</span><span style="background-color: transparent;">MyCapsule</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span></div><div><div>})</div></div></div><div><br></div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="background-color: transparent;"><font style="color: light-dark(rgb(0, 153, 0), rgb(255, 255, 255));">property1</font></span></div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="background-color: transparent;"><font style="color: light-dark(rgb(0, 153, 0), rgb(255, 255, 255));">method1</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div><div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="color: rgb(204, 0, 102); background-color: transparent;">mapping1</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.featureMethod</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div><div><div><div><font style="color: rgb(0, 102, 204);">capsule</font>['<font style="color: rgb(204, 102, 0);">#@&lt;org&gt;/&lt;project&gt;/structs/StructA</font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">].protoMethod1</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div><div><font style="color: rgb(0, 102, 204);">capsule</font>['<font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@&lt;org&gt;/&lt;project&gt;/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">].</span>instanceMethod2<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontFamily=Courier New;fontStyle=1;fontSize=14;spacingLeft=10;fillColor=#FFFCF4;" parent="1" vertex="1">
|
|
20
|
+
<mxGeometry x="55" y="-765" width="520" height="370" as="geometry"/>
|
|
21
|
+
</mxCell>
|
|
22
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-26" value="" style="group;fillColor=default;" parent="1" connectable="0" vertex="1">
|
|
23
|
+
<mxGeometry x="685" y="-750" width="340" height="340" as="geometry"/>
|
|
24
|
+
</mxCell>
|
|
25
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-20" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#FFFCF4;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
26
|
+
<mxGeometry width="340" height="340" as="geometry"/>
|
|
27
|
+
</mxCell>
|
|
28
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-9" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-1" target="N3hJ6-WijfH2HfO5JL5S-5" edge="1">
|
|
29
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
30
|
+
</mxCell>
|
|
31
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-1" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
32
|
+
<mxGeometry x="120" y="50" width="20" height="20" as="geometry"/>
|
|
33
|
+
</mxCell>
|
|
34
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-17" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-4" target="N3hJ6-WijfH2HfO5JL5S-16" edge="1">
|
|
35
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
36
|
+
</mxCell>
|
|
37
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-4" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
38
|
+
<mxGeometry x="50" y="180" width="20" height="20" as="geometry"/>
|
|
39
|
+
</mxCell>
|
|
40
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-10" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-5" target="N3hJ6-WijfH2HfO5JL5S-7" edge="1">
|
|
41
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
42
|
+
</mxCell>
|
|
43
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-11" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-5" target="N3hJ6-WijfH2HfO5JL5S-6" edge="1">
|
|
44
|
+
<mxGeometry relative="1" as="geometry">
|
|
45
|
+
<mxPoint x="220" y="250" as="targetPoint"/>
|
|
46
|
+
</mxGeometry>
|
|
47
|
+
</mxCell>
|
|
48
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-12" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-5" target="N3hJ6-WijfH2HfO5JL5S-8" edge="1">
|
|
49
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
50
|
+
</mxCell>
|
|
51
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-13" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-5" target="N3hJ6-WijfH2HfO5JL5S-4" edge="1">
|
|
52
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
53
|
+
</mxCell>
|
|
54
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-5" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
55
|
+
<mxGeometry x="170" y="140" width="20" height="20" as="geometry"/>
|
|
56
|
+
</mxCell>
|
|
57
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-6" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
58
|
+
<mxGeometry x="230" y="250" width="20" height="20" as="geometry"/>
|
|
59
|
+
</mxCell>
|
|
60
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-7" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
61
|
+
<mxGeometry x="280" y="140" width="20" height="20" as="geometry"/>
|
|
62
|
+
</mxCell>
|
|
63
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-8" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
64
|
+
<mxGeometry x="90" y="260" width="20" height="20" as="geometry"/>
|
|
65
|
+
</mxCell>
|
|
66
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-14" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-8" target="N3hJ6-WijfH2HfO5JL5S-6" edge="1">
|
|
67
|
+
<mxGeometry relative="1" as="geometry">
|
|
68
|
+
<mxPoint x="210" y="250" as="targetPoint"/>
|
|
69
|
+
</mxGeometry>
|
|
70
|
+
</mxCell>
|
|
71
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-18" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-15" target="N3hJ6-WijfH2HfO5JL5S-7" edge="1">
|
|
72
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
73
|
+
</mxCell>
|
|
74
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-15" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
75
|
+
<mxGeometry x="220" y="80" width="20" height="20" as="geometry"/>
|
|
76
|
+
</mxCell>
|
|
77
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-16" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="N3hJ6-WijfH2HfO5JL5S-26" vertex="1">
|
|
78
|
+
<mxGeometry x="70" y="110" width="20" height="20" as="geometry"/>
|
|
79
|
+
</mxCell>
|
|
80
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-21" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.265;entryY=0.059;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;strokeColor=#3399FF;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-1" target="N3hJ6-WijfH2HfO5JL5S-20" edge="1">
|
|
81
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
82
|
+
</mxCell>
|
|
83
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-22" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.997;entryY=0.585;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;strokeColor=#3399FF;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-6" target="N3hJ6-WijfH2HfO5JL5S-20" edge="1">
|
|
84
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
85
|
+
</mxCell>
|
|
86
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-23" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.015;entryY=0.603;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;strokeColor=#3399FF;" parent="N3hJ6-WijfH2HfO5JL5S-26" source="N3hJ6-WijfH2HfO5JL5S-4" target="N3hJ6-WijfH2HfO5JL5S-20" edge="1">
|
|
87
|
+
<mxGeometry relative="1" as="geometry">
|
|
88
|
+
<Array as="points"/>
|
|
89
|
+
</mxGeometry>
|
|
90
|
+
</mxCell>
|
|
91
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-31" value="(c) 2026 <a href="https://christoph.diy">Christoph.diy</a>&nbsp;CC BY" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
|
92
|
+
<mxGeometry x="880" y="-840" width="185" height="30" as="geometry"/>
|
|
93
|
+
</mxCell>
|
|
94
|
+
<mxCell id="N3hJ6-WijfH2HfO5JL5S-32" value="Encapsulate: Source Code / Semantic Graph Isomorphism - v0.1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
|
95
|
+
<mxGeometry x="360" y="-840" width="420" height="30" as="geometry"/>
|
|
96
|
+
</mxCell>
|
|
97
|
+
</root>
|
|
98
|
+
</mxGraphModel>
|
|
99
|
+
</diagram>
|
|
100
|
+
</mxfile>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1071px" height="481px" viewBox="-0.5 -0.5 1071 481" content="<mxfile><diagram name="Page-1" id="QeIE7gKKPfThrfCM8ygm">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</diagram></mxfile>"><defs/><g><rect x="0" y="0" width="1070" height="480" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 598.24 250 L 641.76 250" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 592.24 250 L 600.24 246 L 598.24 250 L 600.24 254 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 647.76 250 L 639.76 254 L 641.76 250 L 639.76 246 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="20" y="40" width="570" height="420" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 568px; height: 1px; padding-top: 47px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Source Code Module</div></div></div></foreignObject><text x="305" y="59" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Source Code Module</text></switch></g><rect x="650" y="40" width="390" height="420" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 47px; margin-left: 651px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Semantic Graph Module</div></div></div></foreignObject><text x="845" y="59" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Semantic Graph Module</text></switch></g><rect x="45" y="75" width="520" height="370" fill="#fffcf4" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 508px; height: 1px; padding-top: 260px; margin-left: 57px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 14px; font-family: "Courier New"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">const <font style="color: rgb(0, 102, 204);">capsule</font> = await Capsule({<div> '<font style="color: rgb(204, 102, 0);">#@<org>/<project>/structs/StructA</font>': {</div><div> as: <span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@<org>/<project>/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span></div><div> }</div><div> '#'{ </div><div> <font style="color: rgb(0, 153, 0);">property1</font>: 'val1',</div><div> <font style="color: rgb(204, 0, 102);">mapping1</font>: '<span style="background-color: transparent;"><font style="color: rgb(204, 0, 102);">@<org>/<project>/FeatureY</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">',</span></div><div> <font style="color: rgb(0, 153, 0);">method1</font>: () => {</div><div><div> this.<span style="background-color: transparent;"><font style="color: light-dark(rgb(204, 0, 102), rgb(255, 255, 255));">mapping1</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.featureMethod()</span></div></div><div> this['<font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@<org>/<project>/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">]</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.instanceMethod2()</span></div><div> }</div><div> }<br />}, {<div> capsuleName: '<font style="color: rgb(0, 102, 204);"><span style="background-color: transparent;">@<org>/<project>/</span><span style="background-color: transparent;">MyCapsule</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span></div><div><div>})</div></div></div><div><br /></div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="background-color: transparent;"><font style="color: light-dark(rgb(0, 153, 0), rgb(255, 255, 255));">property1</font></span></div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="background-color: transparent;"><font style="color: light-dark(rgb(0, 153, 0), rgb(255, 255, 255));">method1</font></span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div><div><div><font style="color: rgb(0, 102, 204);">capsule</font>.<span style="color: rgb(204, 0, 102); background-color: transparent;">mapping1</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">.featureMethod</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div><div><div><div><font style="color: rgb(0, 102, 204);">capsule</font>['<font style="color: rgb(204, 102, 0);">#@<org>/<project>/structs/StructA</font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">].protoMethod1</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div><div><font style="color: rgb(0, 102, 204);">capsule</font>['<font style="color: rgb(153, 51, 255);"><span style="background-color: transparent;">$#</span><span style="background-color: transparent;">@<org>/<project>/AspectX</span></font><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">'</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">].</span>instanceMethod2<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">()</span></div></div></div></div></div></foreignObject><text x="57" y="264" fill="rgb(0, 0, 0)" font-family="Courier New" font-size="14px" font-weight="bold">const capsule = await Capsule({...</text></switch></g><rect x="675" y="90" width="340" height="340" fill="rgb(255, 255, 255)" stroke="none" pointer-events="all"/><ellipse cx="845" cy="260" rx="170" ry="170" fill="#fffcf4" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 809.86 158.74 L 850.14 231.26" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="805" cy="150" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 737.73 270.38 L 752.25 219.62" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="735" cy="280" rx="10" ry="10" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 865 240 L 955 240" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 859.54 248.91 L 907.93 342.93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 849.45 248.32 L 780.55 351.68" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 845.5 243.11 L 744.49 276.84" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="855" cy="240" rx="10" ry="10" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><ellipse cx="915" cy="350" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><ellipse cx="965" cy="240" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><ellipse cx="775" cy="360" rx="10" ry="10" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 784.98 359.31 L 905.03 350.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 912.07 187.07 L 957.93 232.93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="905" cy="180" rx="10" ry="10" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><ellipse cx="755" cy="210" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 797.93 142.93 L 765.1 110.06" fill="none" stroke="#3399ff" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 923.49 344.72 L 1013.98 288.9" fill="none" stroke="#3399ff" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 725.36 282.68 L 680.1 295.02" fill="none" stroke="#3399ff" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="870" y="0" width="185" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 183px; height: 1px; padding-top: 15px; margin-left: 870px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">(c) 2026 <a href="https://christoph.diy">Christoph.diy</a> CC BY</div></div></div></foreignObject><text x="1053" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">(c) 2026 Christoph.diy CC BY</text></switch></g><rect x="350" y="0" width="420" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 418px; height: 1px; padding-top: 15px; margin-left: 352px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Encapsulate: Source Code / Semantic Graph Isomorphism - v0.1</div></div></div></foreignObject><text x="352" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Encapsulate: Source Code / Semantic Graph Isomorphism - v0.1</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|