jsgui3-server 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.github/agents/Mobile Developer.agent.md +89 -0
  2. package/.github/workflows/control-scan-manifest-check.yml +31 -0
  3. package/AGENTS.md +4 -0
  4. package/README.md +215 -3
  5. package/admin-ui/client.js +81 -51
  6. package/admin-ui/v1/admin_auth_service.js +197 -0
  7. package/admin-ui/v1/admin_user_store.js +71 -0
  8. package/admin-ui/v1/client.js +17 -0
  9. package/admin-ui/v1/controls/admin_shell.js +1399 -0
  10. package/admin-ui/v1/controls/group_box.js +84 -0
  11. package/admin-ui/v1/controls/stat_card.js +125 -0
  12. package/admin-ui/v1/server.js +658 -0
  13. package/admin-ui/v1/utils/formatters.js +68 -0
  14. package/dev-status.svg +139 -0
  15. package/docs/admin-extension-guide.md +345 -0
  16. package/docs/api-reference.md +301 -43
  17. package/docs/books/adaptive-control-improvements/01-control-candidate-matrix.md +122 -0
  18. package/docs/books/adaptive-control-improvements/02-tier-1-layout-playbooks.md +207 -0
  19. package/docs/books/adaptive-control-improvements/03-tier-2-navigation-form-overlay.md +140 -0
  20. package/docs/books/adaptive-control-improvements/04-cross-cutting-platform-functionality.md +141 -0
  21. package/docs/books/adaptive-control-improvements/05-styling-theming-density-upgrades.md +114 -0
  22. package/docs/books/adaptive-control-improvements/06-testing-quality-gates.md +97 -0
  23. package/docs/books/adaptive-control-improvements/07-delivery-roadmap-and-ownership.md +137 -0
  24. package/docs/books/adaptive-control-improvements/08-appendix-tier1-acceptance-and-pr-templates.md +261 -0
  25. package/docs/books/adaptive-control-improvements/README.md +66 -0
  26. package/docs/books/admin-ui-authentication/01-threat-model-and-goals.md +124 -0
  27. package/docs/books/admin-ui-authentication/02-session-model-and-token-model.md +75 -0
  28. package/docs/books/admin-ui-authentication/03-auth-middleware-patterns.md +77 -0
  29. package/docs/books/admin-ui-authentication/README.md +25 -0
  30. package/docs/books/creating-a-new-admin-ui/01-introduction-and-vision.md +130 -0
  31. package/docs/books/creating-a-new-admin-ui/02-architecture-and-data-flow.md +298 -0
  32. package/docs/books/creating-a-new-admin-ui/03-server-introspection.md +381 -0
  33. package/docs/books/creating-a-new-admin-ui/04-admin-module-adapter-layer.md +592 -0
  34. package/docs/books/creating-a-new-admin-ui/05-domain-controls-stat-cards-and-gauges.md +513 -0
  35. package/docs/books/creating-a-new-admin-ui/06-domain-controls-process-manager.md +544 -0
  36. package/docs/books/creating-a-new-admin-ui/07-domain-controls-resource-pool-inspector.md +493 -0
  37. package/docs/books/creating-a-new-admin-ui/08-domain-controls-route-table-and-api-explorer.md +586 -0
  38. package/docs/books/creating-a-new-admin-ui/09-domain-controls-log-viewer-and-activity-feed.md +490 -0
  39. package/docs/books/creating-a-new-admin-ui/10-domain-controls-build-status-and-bundle-inspector.md +526 -0
  40. package/docs/books/creating-a-new-admin-ui/11-domain-controls-configuration-panel.md +808 -0
  41. package/docs/books/creating-a-new-admin-ui/12-admin-shell-layout-sidebar-navigation.md +210 -0
  42. package/docs/books/creating-a-new-admin-ui/13-telemetry-integration.md +556 -0
  43. package/docs/books/creating-a-new-admin-ui/14-realtime-sse-observable-integration.md +485 -0
  44. package/docs/books/creating-a-new-admin-ui/15-styling-theming-aero-design-system.md +521 -0
  45. package/docs/books/creating-a-new-admin-ui/16-testing-and-quality-assurance.md +147 -0
  46. package/docs/books/creating-a-new-admin-ui/17-next-steps-process-resource-roadmap.md +356 -0
  47. package/docs/books/creating-a-new-admin-ui/README.md +68 -0
  48. package/docs/books/device-adaptive-composition/01-platform-feature-audit.md +177 -0
  49. package/docs/books/device-adaptive-composition/02-responsive-composition-model.md +187 -0
  50. package/docs/books/device-adaptive-composition/03-data-model-vs-view-model.md +231 -0
  51. package/docs/books/device-adaptive-composition/04-styling-theme-breakpoints.md +234 -0
  52. package/docs/books/device-adaptive-composition/05-showcase-app-multi-device-assessment.md +193 -0
  53. package/docs/books/device-adaptive-composition/06-implementation-patterns-and-apis.md +346 -0
  54. package/docs/books/device-adaptive-composition/07-testing-harness-and-quality-gates.md +265 -0
  55. package/docs/books/device-adaptive-composition/08-roadmap-and-adoption-plan.md +250 -0
  56. package/docs/books/device-adaptive-composition/README.md +47 -0
  57. package/docs/books/jsgui3-bundling-research-book/00-table-of-contents.md +35 -0
  58. package/docs/books/jsgui3-bundling-research-book/01-pipeline-and-runtime-semantics.md +34 -0
  59. package/docs/books/jsgui3-bundling-research-book/02-javascript-bundling-core.md +36 -0
  60. package/docs/books/jsgui3-bundling-research-book/03-style-extraction-and-css-compilation.md +35 -0
  61. package/docs/books/jsgui3-bundling-research-book/04-static-publishing-and-delivery.md +39 -0
  62. package/docs/books/jsgui3-bundling-research-book/05-current-limits-and-size-bloat-vectors.md +25 -0
  63. package/docs/books/jsgui3-bundling-research-book/06-unused-module-elimination-strategy.md +77 -0
  64. package/docs/books/jsgui3-bundling-research-book/07-jsgui3-html-control-and-mixin-pruning.md +63 -0
  65. package/docs/books/jsgui3-bundling-research-book/08-test-and-verification-methodology.md +43 -0
  66. package/docs/books/jsgui3-bundling-research-book/09-roadmap-and-rollout.md +42 -0
  67. package/docs/books/jsgui3-bundling-research-book/10-further-research-strategies-and-upgrades.md +211 -0
  68. package/docs/books/jsgui3-bundling-research-book/README.md +35 -0
  69. package/docs/bundling-system-deep-dive.md +9 -4
  70. package/docs/comparison-report-express-plex-cpanel.md +549 -0
  71. package/docs/comprehensive-documentation.md +49 -18
  72. package/docs/configuration-reference.md +152 -27
  73. package/docs/core/README.md +19 -0
  74. package/docs/core/jsgui3-server-core-book/00-table-of-contents.md +21 -0
  75. package/docs/core/jsgui3-server-core-book/01-startup-readiness-state-machine.md +41 -0
  76. package/docs/core/jsgui3-server-core-book/02-resource-abstraction-and-lifecycle.md +92 -0
  77. package/docs/core/jsgui3-server-core-book/03-resource-pool-and-event-topology.md +47 -0
  78. package/docs/core/jsgui3-server-core-book/04-sse-publisher-semantics.md +41 -0
  79. package/docs/core/jsgui3-server-core-book/05-serve-factory-resource-wiring.md +46 -0
  80. package/docs/core/jsgui3-server-core-book/06-e2e-testing-methodology.md +48 -0
  81. package/docs/core/jsgui3-server-core-book/07-defect-detection-and-hardening-loop.md +47 -0
  82. package/docs/designs/server-admin-interface-aero.svg +611 -0
  83. package/docs/publishers-guide.md +59 -4
  84. package/docs/resources-guide.md +184 -35
  85. package/docs/simple-server-api-design.md +72 -17
  86. package/docs/system-architecture.md +18 -14
  87. package/docs/troubleshooting.md +84 -53
  88. package/examples/controls/15) window, observable SSE/server.js +6 -1
  89. package/examples/controls/19) window, auto observable ui/server.js +9 -0
  90. package/examples/controls/20) window, task manager app/README.md +133 -0
  91. package/examples/controls/20) window, task manager app/client.js +797 -0
  92. package/examples/controls/20) window, task manager app/server.js +178 -0
  93. package/examples/controls/6) window, color_palette/client.js +165 -68
  94. package/examples/controls/9) window, date picker/client.js +362 -76
  95. package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +104 -83
  96. package/examples/jsgui3-html/06) theming/client.js +22 -1
  97. package/examples/jsgui3-html/10) binding-debugger/client.js +137 -1
  98. package/http/responders/static/Static_Route_HTTP_Responder.js +52 -34
  99. package/lab/experiments/capture-color-controls.js +196 -0
  100. package/lab/results/screenshots/color-controls/full_page.png +0 -0
  101. package/lab/results/screenshots/color-controls/section_1_color_grid_12x12.png +0 -0
  102. package/lab/results/screenshots/color-controls/section_2_color_grid_4x2.png +0 -0
  103. package/lab/results/screenshots/color-controls/section_3_color_palette.png +0 -0
  104. package/lab/results/screenshots/color-controls/section_4_palette_comparison.png +0 -0
  105. package/lab/results/screenshots/color-controls/section_5_raw_swatches.png +0 -0
  106. package/lab/results/screenshots/color-controls/section_6_optimized_crayola.png +0 -0
  107. package/lab/results/screenshots/color-controls/section_7_pastel_palette.png +0 -0
  108. package/lab/results/screenshots/color-controls/section_8_extended_144.png +0 -0
  109. package/lab/screenshot-utils.js +248 -0
  110. package/module.js +12 -0
  111. package/package.json +12 -2
  112. package/publishers/Publishers.js +4 -3
  113. package/publishers/helpers/assigners/static-compressed-response-buffers/Single_Control_Webpage_Server_Static_Compressed_Response_Buffers_Assigner.js +5 -5
  114. package/publishers/http-sse-publisher.js +341 -0
  115. package/resources/process-resource.js +950 -0
  116. package/resources/processors/bundlers/js/esbuild/Advanced_JS_Bundler_Using_ESBuild.js +129 -33
  117. package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js +18 -7
  118. package/resources/processors/bundlers/js/esbuild/JSGUI3_HTML_Control_Optimizer.js +829 -0
  119. package/resources/remote-process-resource.js +355 -0
  120. package/resources/server-resource-pool.js +354 -41
  121. package/serve-factory.js +442 -259
  122. package/server.js +288 -13
  123. package/tests/README.md +71 -4
  124. package/tests/admin-ui-jsgui-controls.test.js +581 -0
  125. package/tests/admin-ui-render.test.js +24 -0
  126. package/tests/assigners.test.js +56 -40
  127. package/tests/bundling-default-control-elimination.puppeteer.test.js +260 -0
  128. package/tests/configuration-validation.test.js +21 -18
  129. package/tests/content-analysis.test.js +7 -6
  130. package/tests/control-optimizer-cache-behavior.test.js +52 -0
  131. package/tests/control-scan-manifest-regression.test.js +144 -0
  132. package/tests/end-to-end.test.js +15 -14
  133. package/tests/error-handling.test.js +222 -179
  134. package/tests/fixtures/bundling-default-button-client.js +37 -0
  135. package/tests/fixtures/bundling-default-window-client.js +34 -0
  136. package/tests/fixtures/control_scan_manifest_expectations.json +48 -0
  137. package/tests/fixtures/resource-monitor-client.js +319 -0
  138. package/tests/helpers/puppeteer-e2e-harness.js +317 -0
  139. package/tests/http-sse-publisher.test.js +136 -0
  140. package/tests/performance.test.js +69 -65
  141. package/tests/process-resource.test.js +138 -0
  142. package/tests/publishers.test.js +7 -7
  143. package/tests/remote-process-resource.test.js +160 -0
  144. package/tests/sass-controls.e2e.test.js +7 -1
  145. package/tests/serve-resources.test.js +270 -0
  146. package/tests/serve.test.js +120 -50
  147. package/tests/server-resource-pool.test.js +106 -0
  148. package/tests/small-controls-bundle-size.test.js +252 -0
  149. package/tests/test-runner.js +14 -1
  150. package/tests/window-examples.puppeteer.test.js +204 -1
  151. package/tests/window-resource-integration.puppeteer.test.js +585 -0
  152. package/tests/temp_invalid.js +0 -7
  153. package/tests/temp_invalid_utf8.js +0 -1
  154. package/tests/temp_malformed.js +0 -10
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ const jsgui = require('jsgui3-client');
4
+ const { controls, Control } = jsgui;
5
+
6
+ /**
7
+ * Group_Box — a Windows-style grouping container with a title
8
+ * rendered on the top border. Used to visually separate sections
9
+ * of the admin dashboard.
10
+ *
11
+ * Book reference: Chapter 6 — Implementation Patterns (reusable wrapper)
12
+ * Layer: D (Concrete Render)
13
+ */
14
+ class Group_Box extends Control {
15
+ constructor(spec = {}) {
16
+ spec.__type_name = spec.__type_name || 'group_box';
17
+ super(spec);
18
+ const { context } = this;
19
+
20
+ const compose = () => {
21
+ // Legend / title
22
+ const title_text = spec.title || '';
23
+ if (title_text) {
24
+ const legend = new controls.div({ context, 'class': 'group-box-legend' });
25
+ legend.add(title_text);
26
+ this.add(legend);
27
+ }
28
+
29
+ // Content container — callers add children here
30
+ const content = new controls.div({ context, 'class': 'group-box-content' });
31
+ this.add(content);
32
+ this._content = content;
33
+ };
34
+
35
+ if (!spec.el) {
36
+ compose();
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Returns the inner content container so callers can do:
42
+ * group.inner.add(child);
43
+ */
44
+ get inner() {
45
+ return this._content;
46
+ }
47
+
48
+ activate() {
49
+ if (!this.__active) {
50
+ super.activate();
51
+ }
52
+ }
53
+ }
54
+
55
+ Group_Box.css = `
56
+ .group-box {
57
+ position: relative;
58
+ border: 1px solid #3a3a5a;
59
+ border-radius: 8px;
60
+ margin-bottom: 20px;
61
+ padding: 20px 16px 16px;
62
+ background: transparent;
63
+ }
64
+ .group-box-legend {
65
+ position: absolute;
66
+ top: -10px;
67
+ left: 16px;
68
+ padding: 0 8px;
69
+ font-size: 0.75rem;
70
+ font-weight: 600;
71
+ text-transform: uppercase;
72
+ letter-spacing: 0.08em;
73
+ color: #8888aa;
74
+ background: #1a1a2e;
75
+ }
76
+ .group-box-content {
77
+ display: flex;
78
+ flex-wrap: wrap;
79
+ gap: 16px;
80
+ }
81
+ `;
82
+
83
+ controls.Group_Box = Group_Box;
84
+ module.exports = Group_Box;
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ const jsgui = require('jsgui3-client');
4
+ const { controls, Control } = jsgui;
5
+
6
+ /**
7
+ * Stat_Card — a single KPI card showing value, label, and optional detail.
8
+ * Accent colour on the left border is set via spec.accent (CSS colour string).
9
+ *
10
+ * Usage:
11
+ * new Stat_Card({
12
+ * context,
13
+ * label: 'Uptime',
14
+ * value: '3h 22m',
15
+ * detail: 'Since 09:41',
16
+ * accent: '#4facfe'
17
+ * })
18
+ *
19
+ * Book reference: Chapter 6 — Implementation Patterns (domain control)
20
+ * Layer: D (Concrete Render) — pure presentation, no data fetching
21
+ */
22
+ class Stat_Card extends Control {
23
+ constructor(spec = {}) {
24
+ spec.__type_name = spec.__type_name || 'stat_card';
25
+ super(spec);
26
+ const { context } = this;
27
+
28
+ const compose = () => {
29
+ // Accent stripe colour
30
+ const accent = spec.accent || '#4facfe';
31
+ this.dom.attributes.style = `border-left-color: ${accent};`;
32
+
33
+ // Value (big number / text)
34
+ const value_el = new controls.div({ context, 'class': 'stat-value' });
35
+ value_el.add(String(spec.value != null ? spec.value : '—'));
36
+ this.add(value_el);
37
+ this._value_el = value_el;
38
+
39
+ // Label
40
+ const label_el = new controls.div({ context, 'class': 'stat-label' });
41
+ label_el.add(String(spec.label || ''));
42
+ this.add(label_el);
43
+ this._label_el = label_el;
44
+
45
+ // Detail (small secondary text)
46
+ if (spec.detail) {
47
+ const detail_el = new controls.div({ context, 'class': 'stat-detail' });
48
+ detail_el.add(String(spec.detail));
49
+ this.add(detail_el);
50
+ this._detail_el = detail_el;
51
+ }
52
+ };
53
+
54
+ if (!spec.el) {
55
+ compose();
56
+ }
57
+ }
58
+
59
+ // ─── Client-side updates ─────────────────────────────────
60
+
61
+ /**
62
+ * Update displayed value (client-side only).
63
+ */
64
+ set_value(value) {
65
+ if (this._value_el && this._value_el.el) {
66
+ this._value_el.el.textContent = String(value != null ? value : '—');
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Update displayed detail text (client-side only).
72
+ */
73
+ set_detail(text) {
74
+ if (this._detail_el && this._detail_el.el) {
75
+ this._detail_el.el.textContent = String(text);
76
+ }
77
+ }
78
+
79
+ activate() {
80
+ if (!this.__active) {
81
+ super.activate();
82
+ }
83
+ }
84
+ }
85
+
86
+ Stat_Card.css = `
87
+ .stat_card {
88
+ background: #2a2a4a;
89
+ border-left: 4px solid #4facfe;
90
+ border-radius: 8px;
91
+ padding: 20px 24px;
92
+ min-width: 180px;
93
+ flex: 1 1 180px;
94
+ max-width: 280px;
95
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
96
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
97
+ cursor: default;
98
+ }
99
+ .stat_card:hover {
100
+ transform: translateY(-2px);
101
+ box-shadow: 0 4px 16px rgba(0,0,0,0.25);
102
+ }
103
+ .stat-value {
104
+ font-size: 1.75rem;
105
+ font-weight: 700;
106
+ color: #ffffff;
107
+ line-height: 1.2;
108
+ margin-bottom: 4px;
109
+ }
110
+ .stat-label {
111
+ font-size: 0.8rem;
112
+ font-weight: 500;
113
+ text-transform: uppercase;
114
+ letter-spacing: 0.06em;
115
+ color: #8888aa;
116
+ margin-bottom: 6px;
117
+ }
118
+ .stat-detail {
119
+ font-size: 0.75rem;
120
+ color: #6a6a8a;
121
+ }
122
+ `;
123
+
124
+ controls.Stat_Card = Stat_Card;
125
+ module.exports = Stat_Card;