@laitszkin/apollo-toolkit 3.11.0 → 3.11.2
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/CHANGELOG.md +29 -0
- package/analyse-app-logs/scripts/__pycache__/filter_logs_by_time.cpython-312.pyc +0 -0
- package/analyse-app-logs/scripts/__pycache__/log_cli_utils.cpython-312.pyc +0 -0
- package/analyse-app-logs/scripts/__pycache__/search_logs.cpython-312.pyc +0 -0
- package/docs-to-voice/scripts/__pycache__/docs_to_voice.cpython-312.pyc +0 -0
- package/generate-spec/scripts/__pycache__/create-specscpython-312.pyc +0 -0
- package/init-project-html/SKILL.md +56 -20
- package/init-project-html/agents/openai.yaml +6 -6
- package/init-project-html/lib/atlas/assets/architecture.css +27 -6
- package/init-project-html/lib/atlas/assets/viewer.client.js +124 -81
- package/init-project-html/lib/atlas/cli.js +48 -15
- package/init-project-html/lib/atlas/layout.js +112 -11
- package/init-project-html/lib/atlas/render.js +131 -33
- package/init-project-html/lib/atlas/schema.js +39 -2
- package/init-project-html/references/TEMPLATE_SPEC.md +26 -8
- package/init-project-html/sample-demo/resources/project-architecture/assets/architecture.css +27 -6
- package/init-project-html/sample-demo/resources/project-architecture/assets/viewer.client.js +124 -81
- package/init-project-html/sample-demo/resources/project-architecture/atlas/features/get-invite-codes.yaml +17 -4
- package/init-project-html/sample-demo/resources/project-architecture/features/get-invite-codes/invite-code-generator.html +23 -7
- package/init-project-html/sample-demo/resources/project-architecture/features/get-invite-codes/invite-issuance-service.html +45 -13
- package/init-project-html/sample-demo/resources/project-architecture/features/get-invite-codes/postgresql.html +28 -10
- package/init-project-html/sample-demo/resources/project-architecture/features/get-invite-codes/public-api.html +33 -13
- package/init-project-html/sample-demo/resources/project-architecture/features/get-invite-codes/web-get-invite-ui.html +28 -10
- package/init-project-html/sample-demo/resources/project-architecture/features/invite-code-registration/postgresql.html +28 -10
- package/init-project-html/sample-demo/resources/project-architecture/features/invite-code-registration/public-api.html +28 -10
- package/init-project-html/sample-demo/resources/project-architecture/features/invite-code-registration/registration-service.html +38 -17
- package/init-project-html/sample-demo/resources/project-architecture/features/invite-code-registration/web-register-ui.html +29 -11
- package/init-project-html/sample-demo/resources/project-architecture/index.html +100 -76
- package/init-project-html/scripts/architecture-bootstrap-render.js +16 -0
- package/init-project-html/scripts/architecture.js +22 -12
- package/katex/scripts/__pycache__/render_katex.cpython-312.pyc +0 -0
- package/open-github-issue/scripts/__pycache__/open_github_issue.cpython-312.pyc +0 -0
- package/package.json +1 -1
- package/read-github-issue/scripts/__pycache__/find_issues.cpython-312.pyc +0 -0
- package/read-github-issue/scripts/__pycache__/read_issue.cpython-312.pyc +0 -0
- package/resolve-review-comments/scripts/__pycache__/review_threads.cpython-312.pyc +0 -0
- package/spec-to-project-html/SKILL.md +25 -16
- package/spec-to-project-html/agents/openai.yaml +5 -5
- package/spec-to-project-html/references/TEMPLATE_SPEC.md +2 -0
- package/text-to-short-video/scripts/__pycache__/enforce_video_aspect_ratio.cpython-312.pyc +0 -0
|
@@ -34,23 +34,40 @@
|
|
|
34
34
|
</section>
|
|
35
35
|
<section class="sub-dataflow" aria-label="Internal data flow">
|
|
36
36
|
<h2>Internal data flow</h2>
|
|
37
|
-
<
|
|
38
|
-
|
|
37
|
+
<div class="sub-dataflow__canvas" data-pan-zoom-container>
|
|
38
|
+
<div class="sub-dataflow__toolbar" role="toolbar" aria-label="Diagram controls">
|
|
39
|
+
<button type="button" data-pan-zoom="zoom-in" aria-label="Zoom in">+</button>
|
|
40
|
+
<button type="button" data-pan-zoom="zoom-out" aria-label="Zoom out">−</button>
|
|
41
|
+
<button type="button" data-pan-zoom="fit" aria-label="Reset view">Fit</button>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="sub-dataflow__viewport" data-pan-zoom-viewport>
|
|
44
|
+
<svg class="sub-dataflow__svg" data-atlas-svg="sub-dataflow" viewBox="0 0 628 368" role="img" aria-label="Internal dataflow">
|
|
45
|
+
<defs>
|
|
46
|
+
<marker id="sub-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="9" markerHeight="9" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 Z" /></marker>
|
|
47
|
+
</defs>
|
|
39
48
|
<g class="sub-dataflow__step">
|
|
40
|
-
<
|
|
41
|
-
<text x="
|
|
49
|
+
<circle class="sub-dataflow__badge" cx="42" cy="68" r="18" />
|
|
50
|
+
<text class="sub-dataflow__badge-text" x="42" y="73" text-anchor="middle">1</text>
|
|
51
|
+
<rect class="sub-dataflow__box" x="80" y="32" width="520" height="72" rx="14" ry="14" />
|
|
52
|
+
<text class="sub-dataflow__text" x="340" y="74" text-anchor="middle">Read userId from auth context.</text>
|
|
42
53
|
</g>
|
|
43
|
-
<line class="sub-dataflow__arrow" x1="
|
|
54
|
+
<line class="sub-dataflow__arrow" x1="340" y1="110" x2="340" y2="140" marker-end="url(#sub-arrow)" />
|
|
44
55
|
<g class="sub-dataflow__step">
|
|
45
|
-
<
|
|
46
|
-
<text x="
|
|
56
|
+
<circle class="sub-dataflow__badge" cx="42" cy="184" r="18" />
|
|
57
|
+
<text class="sub-dataflow__badge-text" x="42" y="189" text-anchor="middle">2</text>
|
|
58
|
+
<rect class="sub-dataflow__box" x="80" y="148" width="520" height="72" rx="14" ry="14" />
|
|
59
|
+
<text class="sub-dataflow__text" x="340" y="190" text-anchor="middle">POST /api/invites with userId.</text>
|
|
47
60
|
</g>
|
|
48
|
-
<line class="sub-dataflow__arrow" x1="
|
|
61
|
+
<line class="sub-dataflow__arrow" x1="340" y1="226" x2="340" y2="256" marker-end="url(#sub-arrow)" />
|
|
49
62
|
<g class="sub-dataflow__step">
|
|
50
|
-
<
|
|
51
|
-
<text x="
|
|
63
|
+
<circle class="sub-dataflow__badge" cx="42" cy="300" r="18" />
|
|
64
|
+
<text class="sub-dataflow__badge-text" x="42" y="305" text-anchor="middle">3</text>
|
|
65
|
+
<rect class="sub-dataflow__box" x="80" y="264" width="520" height="72" rx="14" ry="14" />
|
|
66
|
+
<text class="sub-dataflow__text" x="340" y="306" text-anchor="middle">Render returned code or surface error.</text>
|
|
52
67
|
</g>
|
|
53
68
|
</svg>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
54
71
|
</section>
|
|
55
72
|
<section class="sub-errors" aria-label="Errors">
|
|
56
73
|
<h2>Errors</h2>
|
|
@@ -63,5 +80,6 @@
|
|
|
63
80
|
</table>
|
|
64
81
|
</section>
|
|
65
82
|
</main>
|
|
83
|
+
<script src="../../assets/viewer.client.js" defer></script>
|
|
66
84
|
</body>
|
|
67
85
|
</html>
|
|
@@ -36,23 +36,40 @@
|
|
|
36
36
|
</section>
|
|
37
37
|
<section class="sub-dataflow" aria-label="Internal data flow">
|
|
38
38
|
<h2>Internal data flow</h2>
|
|
39
|
-
<
|
|
40
|
-
|
|
39
|
+
<div class="sub-dataflow__canvas" data-pan-zoom-container>
|
|
40
|
+
<div class="sub-dataflow__toolbar" role="toolbar" aria-label="Diagram controls">
|
|
41
|
+
<button type="button" data-pan-zoom="zoom-in" aria-label="Zoom in">+</button>
|
|
42
|
+
<button type="button" data-pan-zoom="zoom-out" aria-label="Zoom out">−</button>
|
|
43
|
+
<button type="button" data-pan-zoom="fit" aria-label="Reset view">Fit</button>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="sub-dataflow__viewport" data-pan-zoom-viewport>
|
|
46
|
+
<svg class="sub-dataflow__svg" data-atlas-svg="sub-dataflow" viewBox="0 0 628 368" role="img" aria-label="Internal dataflow">
|
|
47
|
+
<defs>
|
|
48
|
+
<marker id="sub-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="9" markerHeight="9" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 Z" /></marker>
|
|
49
|
+
</defs>
|
|
41
50
|
<g class="sub-dataflow__step">
|
|
42
|
-
<
|
|
43
|
-
<text x="
|
|
51
|
+
<circle class="sub-dataflow__badge" cx="42" cy="68" r="18" />
|
|
52
|
+
<text class="sub-dataflow__badge-text" x="42" y="73" text-anchor="middle">1</text>
|
|
53
|
+
<rect class="sub-dataflow__box" x="80" y="32" width="520" height="72" rx="14" ry="14" />
|
|
54
|
+
<text class="sub-dataflow__text" x="340" y="74" text-anchor="middle">Apply row lock on invite_codes.</text>
|
|
44
55
|
</g>
|
|
45
|
-
<line class="sub-dataflow__arrow" x1="
|
|
56
|
+
<line class="sub-dataflow__arrow" x1="340" y1="110" x2="340" y2="140" marker-end="url(#sub-arrow)" />
|
|
46
57
|
<g class="sub-dataflow__step">
|
|
47
|
-
<
|
|
48
|
-
<text x="
|
|
58
|
+
<circle class="sub-dataflow__badge" cx="42" cy="184" r="18" />
|
|
59
|
+
<text class="sub-dataflow__badge-text" x="42" y="189" text-anchor="middle">2</text>
|
|
60
|
+
<rect class="sub-dataflow__box" x="80" y="148" width="520" height="72" rx="14" ry="14" />
|
|
61
|
+
<text class="sub-dataflow__text" x="340" y="190" text-anchor="middle">Validate uniqueness of users.email.</text>
|
|
49
62
|
</g>
|
|
50
|
-
<line class="sub-dataflow__arrow" x1="
|
|
63
|
+
<line class="sub-dataflow__arrow" x1="340" y1="226" x2="340" y2="256" marker-end="url(#sub-arrow)" />
|
|
51
64
|
<g class="sub-dataflow__step">
|
|
52
|
-
<
|
|
53
|
-
<text x="
|
|
65
|
+
<circle class="sub-dataflow__badge" cx="42" cy="300" r="18" />
|
|
66
|
+
<text class="sub-dataflow__badge-text" x="42" y="305" text-anchor="middle">3</text>
|
|
67
|
+
<rect class="sub-dataflow__box" x="80" y="264" width="520" height="72" rx="14" ry="14" />
|
|
68
|
+
<text class="sub-dataflow__text" x="340" y="306" text-anchor="middle">Write users row and update invite_codes.consumed_at.</text>
|
|
54
69
|
</g>
|
|
55
70
|
</svg>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
56
73
|
</section>
|
|
57
74
|
<section class="sub-errors" aria-label="Errors">
|
|
58
75
|
<h2>Errors</h2>
|
|
@@ -64,5 +81,6 @@
|
|
|
64
81
|
</table>
|
|
65
82
|
</section>
|
|
66
83
|
</main>
|
|
84
|
+
<script src="../../assets/viewer.client.js" defer></script>
|
|
67
85
|
</body>
|
|
68
86
|
</html>
|
|
@@ -33,23 +33,40 @@
|
|
|
33
33
|
</section>
|
|
34
34
|
<section class="sub-dataflow" aria-label="Internal data flow">
|
|
35
35
|
<h2>Internal data flow</h2>
|
|
36
|
-
<
|
|
37
|
-
|
|
36
|
+
<div class="sub-dataflow__canvas" data-pan-zoom-container>
|
|
37
|
+
<div class="sub-dataflow__toolbar" role="toolbar" aria-label="Diagram controls">
|
|
38
|
+
<button type="button" data-pan-zoom="zoom-in" aria-label="Zoom in">+</button>
|
|
39
|
+
<button type="button" data-pan-zoom="zoom-out" aria-label="Zoom out">−</button>
|
|
40
|
+
<button type="button" data-pan-zoom="fit" aria-label="Reset view">Fit</button>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="sub-dataflow__viewport" data-pan-zoom-viewport>
|
|
43
|
+
<svg class="sub-dataflow__svg" data-atlas-svg="sub-dataflow" viewBox="0 0 628 368" role="img" aria-label="Internal dataflow">
|
|
44
|
+
<defs>
|
|
45
|
+
<marker id="sub-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="9" markerHeight="9" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 Z" /></marker>
|
|
46
|
+
</defs>
|
|
38
47
|
<g class="sub-dataflow__step">
|
|
39
|
-
<
|
|
40
|
-
<text x="
|
|
48
|
+
<circle class="sub-dataflow__badge" cx="42" cy="68" r="18" />
|
|
49
|
+
<text class="sub-dataflow__badge-text" x="42" y="73" text-anchor="middle">1</text>
|
|
50
|
+
<rect class="sub-dataflow__box" x="80" y="32" width="520" height="72" rx="14" ry="14" />
|
|
51
|
+
<text class="sub-dataflow__text" x="340" y="74" text-anchor="middle">Decode JSON body.</text>
|
|
41
52
|
</g>
|
|
42
|
-
<line class="sub-dataflow__arrow" x1="
|
|
53
|
+
<line class="sub-dataflow__arrow" x1="340" y1="110" x2="340" y2="140" marker-end="url(#sub-arrow)" />
|
|
43
54
|
<g class="sub-dataflow__step">
|
|
44
|
-
<
|
|
45
|
-
<text x="
|
|
55
|
+
<circle class="sub-dataflow__badge" cx="42" cy="184" r="18" />
|
|
56
|
+
<text class="sub-dataflow__badge-text" x="42" y="189" text-anchor="middle">2</text>
|
|
57
|
+
<rect class="sub-dataflow__box" x="80" y="148" width="520" height="72" rx="14" ry="14" />
|
|
58
|
+
<text class="sub-dataflow__text" x="340" y="190" text-anchor="middle">Call registration-service.RegisterWithInvite.</text>
|
|
46
59
|
</g>
|
|
47
|
-
<line class="sub-dataflow__arrow" x1="
|
|
60
|
+
<line class="sub-dataflow__arrow" x1="340" y1="226" x2="340" y2="256" marker-end="url(#sub-arrow)" />
|
|
48
61
|
<g class="sub-dataflow__step">
|
|
49
|
-
<
|
|
50
|
-
<text x="
|
|
62
|
+
<circle class="sub-dataflow__badge" cx="42" cy="300" r="18" />
|
|
63
|
+
<text class="sub-dataflow__badge-text" x="42" y="305" text-anchor="middle">3</text>
|
|
64
|
+
<rect class="sub-dataflow__box" x="80" y="264" width="520" height="72" rx="14" ry="14" />
|
|
65
|
+
<text class="sub-dataflow__text" x="340" y="306" text-anchor="middle">Serialize success or 422 / 5xx error.</text>
|
|
51
66
|
</g>
|
|
52
67
|
</svg>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
53
70
|
</section>
|
|
54
71
|
<section class="sub-errors" aria-label="Errors">
|
|
55
72
|
<h2>Errors</h2>
|
|
@@ -61,5 +78,6 @@
|
|
|
61
78
|
</table>
|
|
62
79
|
</section>
|
|
63
80
|
</main>
|
|
81
|
+
<script src="../../assets/viewer.client.js" defer></script>
|
|
64
82
|
</body>
|
|
65
83
|
</html>
|
|
@@ -35,34 +35,54 @@
|
|
|
35
35
|
</section>
|
|
36
36
|
<section class="sub-dataflow" aria-label="Internal data flow">
|
|
37
37
|
<h2>Internal data flow</h2>
|
|
38
|
-
<
|
|
39
|
-
|
|
38
|
+
<div class="sub-dataflow__canvas" data-pan-zoom-container>
|
|
39
|
+
<div class="sub-dataflow__toolbar" role="toolbar" aria-label="Diagram controls">
|
|
40
|
+
<button type="button" data-pan-zoom="zoom-in" aria-label="Zoom in">+</button>
|
|
41
|
+
<button type="button" data-pan-zoom="zoom-out" aria-label="Zoom out">−</button>
|
|
42
|
+
<button type="button" data-pan-zoom="fit" aria-label="Reset view">Fit</button>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="sub-dataflow__viewport" data-pan-zoom-viewport>
|
|
45
|
+
<svg class="sub-dataflow__svg" data-atlas-svg="sub-dataflow" viewBox="0 0 628 600" role="img" aria-label="Internal dataflow">
|
|
46
|
+
<defs>
|
|
47
|
+
<marker id="sub-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="9" markerHeight="9" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 Z" /></marker>
|
|
48
|
+
</defs>
|
|
40
49
|
<g class="sub-dataflow__step">
|
|
41
|
-
<
|
|
42
|
-
<text x="
|
|
50
|
+
<circle class="sub-dataflow__badge" cx="42" cy="68" r="18" />
|
|
51
|
+
<text class="sub-dataflow__badge-text" x="42" y="73" text-anchor="middle">1</text>
|
|
52
|
+
<rect class="sub-dataflow__box" x="80" y="32" width="520" height="72" rx="14" ry="14" />
|
|
53
|
+
<text class="sub-dataflow__text" x="340" y="74" text-anchor="middle">Open transaction.</text>
|
|
43
54
|
</g>
|
|
44
|
-
<line class="sub-dataflow__arrow" x1="
|
|
55
|
+
<line class="sub-dataflow__arrow" x1="340" y1="110" x2="340" y2="140" marker-end="url(#sub-arrow)" />
|
|
45
56
|
<g class="sub-dataflow__step">
|
|
46
|
-
<
|
|
47
|
-
<text x="
|
|
57
|
+
<circle class="sub-dataflow__badge" cx="42" cy="184" r="18" />
|
|
58
|
+
<text class="sub-dataflow__badge-text" x="42" y="189" text-anchor="middle">2</text>
|
|
59
|
+
<rect class="sub-dataflow__box" x="80" y="148" width="520" height="72" rx="14" ry="14" />
|
|
60
|
+
<text class="sub-dataflow__text" x="340" y="190" text-anchor="middle">SELECT invite_codes FOR UPDATE WHERE code = ?</text>
|
|
48
61
|
</g>
|
|
49
|
-
<line class="sub-dataflow__arrow" x1="
|
|
62
|
+
<line class="sub-dataflow__arrow" x1="340" y1="226" x2="340" y2="256" marker-end="url(#sub-arrow)" />
|
|
50
63
|
<g class="sub-dataflow__step">
|
|
51
|
-
<
|
|
52
|
-
<text x="
|
|
64
|
+
<circle class="sub-dataflow__badge" cx="42" cy="300" r="18" />
|
|
65
|
+
<text class="sub-dataflow__badge-text" x="42" y="305" text-anchor="middle">3</text>
|
|
66
|
+
<rect class="sub-dataflow__box" x="80" y="264" width="520" height="72" rx="14" ry="14" />
|
|
67
|
+
<text class="sub-dataflow__text" x="340" y="306" text-anchor="middle">decideInviteValid against current time.</text>
|
|
53
68
|
</g>
|
|
54
|
-
<line class="sub-dataflow__arrow" x1="
|
|
69
|
+
<line class="sub-dataflow__arrow" x1="340" y1="342" x2="340" y2="372" marker-end="url(#sub-arrow)" />
|
|
55
70
|
<g class="sub-dataflow__step">
|
|
56
|
-
<
|
|
57
|
-
<text x="
|
|
58
|
-
<
|
|
71
|
+
<circle class="sub-dataflow__badge" cx="42" cy="416" r="18" />
|
|
72
|
+
<text class="sub-dataflow__badge-text" x="42" y="421" text-anchor="middle">4</text>
|
|
73
|
+
<rect class="sub-dataflow__box" x="80" y="380" width="520" height="72" rx="14" ry="14" />
|
|
74
|
+
<text class="sub-dataflow__text" x="340" y="422" text-anchor="middle">INSERT users row and UPDATE invite_codes.consumed_at.</text>
|
|
59
75
|
</g>
|
|
60
|
-
<line class="sub-dataflow__arrow" x1="
|
|
76
|
+
<line class="sub-dataflow__arrow" x1="340" y1="458" x2="340" y2="488" marker-end="url(#sub-arrow)" />
|
|
61
77
|
<g class="sub-dataflow__step">
|
|
62
|
-
<
|
|
63
|
-
<text x="
|
|
78
|
+
<circle class="sub-dataflow__badge" cx="42" cy="532" r="18" />
|
|
79
|
+
<text class="sub-dataflow__badge-text" x="42" y="537" text-anchor="middle">5</text>
|
|
80
|
+
<rect class="sub-dataflow__box" x="80" y="496" width="520" height="72" rx="14" ry="14" />
|
|
81
|
+
<text class="sub-dataflow__text" x="340" y="538" text-anchor="middle">Commit and return NewUserID.</text>
|
|
64
82
|
</g>
|
|
65
83
|
</svg>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
66
86
|
</section>
|
|
67
87
|
<section class="sub-errors" aria-label="Errors">
|
|
68
88
|
<h2>Errors</h2>
|
|
@@ -75,5 +95,6 @@
|
|
|
75
95
|
</table>
|
|
76
96
|
</section>
|
|
77
97
|
</main>
|
|
98
|
+
<script src="../../assets/viewer.client.js" defer></script>
|
|
78
99
|
</body>
|
|
79
100
|
</html>
|
|
@@ -34,24 +34,41 @@
|
|
|
34
34
|
</section>
|
|
35
35
|
<section class="sub-dataflow" aria-label="Internal data flow">
|
|
36
36
|
<h2>Internal data flow</h2>
|
|
37
|
-
<
|
|
38
|
-
|
|
37
|
+
<div class="sub-dataflow__canvas" data-pan-zoom-container>
|
|
38
|
+
<div class="sub-dataflow__toolbar" role="toolbar" aria-label="Diagram controls">
|
|
39
|
+
<button type="button" data-pan-zoom="zoom-in" aria-label="Zoom in">+</button>
|
|
40
|
+
<button type="button" data-pan-zoom="zoom-out" aria-label="Zoom out">−</button>
|
|
41
|
+
<button type="button" data-pan-zoom="fit" aria-label="Reset view">Fit</button>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="sub-dataflow__viewport" data-pan-zoom-viewport>
|
|
44
|
+
<svg class="sub-dataflow__svg" data-atlas-svg="sub-dataflow" viewBox="0 0 628 372" role="img" aria-label="Internal dataflow">
|
|
45
|
+
<defs>
|
|
46
|
+
<marker id="sub-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="9" markerHeight="9" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 Z" /></marker>
|
|
47
|
+
</defs>
|
|
39
48
|
<g class="sub-dataflow__step">
|
|
40
|
-
<
|
|
41
|
-
<text x="
|
|
49
|
+
<circle class="sub-dataflow__badge" cx="42" cy="68" r="18" />
|
|
50
|
+
<text class="sub-dataflow__badge-text" x="42" y="73" text-anchor="middle">1</text>
|
|
51
|
+
<rect class="sub-dataflow__box" x="80" y="32" width="520" height="72" rx="14" ry="14" />
|
|
52
|
+
<text class="sub-dataflow__text" x="340" y="74" text-anchor="middle">Collect form fields.</text>
|
|
42
53
|
</g>
|
|
43
|
-
<line class="sub-dataflow__arrow" x1="
|
|
54
|
+
<line class="sub-dataflow__arrow" x1="340" y1="110" x2="340" y2="140" marker-end="url(#sub-arrow)" />
|
|
44
55
|
<g class="sub-dataflow__step">
|
|
45
|
-
<
|
|
46
|
-
<text x="
|
|
56
|
+
<circle class="sub-dataflow__badge" cx="42" cy="184" r="18" />
|
|
57
|
+
<text class="sub-dataflow__badge-text" x="42" y="189" text-anchor="middle">2</text>
|
|
58
|
+
<rect class="sub-dataflow__box" x="80" y="148" width="520" height="72" rx="14" ry="14" />
|
|
59
|
+
<text class="sub-dataflow__text" x="340" y="190" text-anchor="middle">POST /api/register with payload.</text>
|
|
47
60
|
</g>
|
|
48
|
-
<line class="sub-dataflow__arrow" x1="
|
|
61
|
+
<line class="sub-dataflow__arrow" x1="340" y1="226" x2="340" y2="256" marker-end="url(#sub-arrow)" />
|
|
49
62
|
<g class="sub-dataflow__step">
|
|
50
|
-
<
|
|
51
|
-
<text x="
|
|
52
|
-
<
|
|
63
|
+
<circle class="sub-dataflow__badge" cx="42" cy="302" r="18" />
|
|
64
|
+
<text class="sub-dataflow__badge-text" x="42" y="307" text-anchor="middle">3</text>
|
|
65
|
+
<rect class="sub-dataflow__box" x="80" y="264" width="520" height="76" rx="14" ry="14" />
|
|
66
|
+
<text class="sub-dataflow__text" x="340" y="298" text-anchor="middle">On 2xx redirect to /welcome; otherwise surface field-level</text>
|
|
67
|
+
<text class="sub-dataflow__text" x="340" y="318" text-anchor="middle">errors.</text>
|
|
53
68
|
</g>
|
|
54
69
|
</svg>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
55
72
|
</section>
|
|
56
73
|
<section class="sub-errors" aria-label="Errors">
|
|
57
74
|
<h2>Errors</h2>
|
|
@@ -63,5 +80,6 @@
|
|
|
63
80
|
</table>
|
|
64
81
|
</section>
|
|
65
82
|
</main>
|
|
83
|
+
<script src="../../assets/viewer.client.js" defer></script>
|
|
66
84
|
</body>
|
|
67
85
|
</html>
|