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.
- package/.github/agents/Mobile Developer.agent.md +89 -0
- package/.github/workflows/control-scan-manifest-check.yml +31 -0
- package/AGENTS.md +4 -0
- package/README.md +215 -3
- package/admin-ui/client.js +81 -51
- package/admin-ui/v1/admin_auth_service.js +197 -0
- package/admin-ui/v1/admin_user_store.js +71 -0
- package/admin-ui/v1/client.js +17 -0
- package/admin-ui/v1/controls/admin_shell.js +1399 -0
- package/admin-ui/v1/controls/group_box.js +84 -0
- package/admin-ui/v1/controls/stat_card.js +125 -0
- package/admin-ui/v1/server.js +658 -0
- package/admin-ui/v1/utils/formatters.js +68 -0
- package/dev-status.svg +139 -0
- package/docs/admin-extension-guide.md +345 -0
- package/docs/api-reference.md +301 -43
- package/docs/books/adaptive-control-improvements/01-control-candidate-matrix.md +122 -0
- package/docs/books/adaptive-control-improvements/02-tier-1-layout-playbooks.md +207 -0
- package/docs/books/adaptive-control-improvements/03-tier-2-navigation-form-overlay.md +140 -0
- package/docs/books/adaptive-control-improvements/04-cross-cutting-platform-functionality.md +141 -0
- package/docs/books/adaptive-control-improvements/05-styling-theming-density-upgrades.md +114 -0
- package/docs/books/adaptive-control-improvements/06-testing-quality-gates.md +97 -0
- package/docs/books/adaptive-control-improvements/07-delivery-roadmap-and-ownership.md +137 -0
- package/docs/books/adaptive-control-improvements/08-appendix-tier1-acceptance-and-pr-templates.md +261 -0
- package/docs/books/adaptive-control-improvements/README.md +66 -0
- package/docs/books/admin-ui-authentication/01-threat-model-and-goals.md +124 -0
- package/docs/books/admin-ui-authentication/02-session-model-and-token-model.md +75 -0
- package/docs/books/admin-ui-authentication/03-auth-middleware-patterns.md +77 -0
- package/docs/books/admin-ui-authentication/README.md +25 -0
- package/docs/books/creating-a-new-admin-ui/01-introduction-and-vision.md +130 -0
- package/docs/books/creating-a-new-admin-ui/02-architecture-and-data-flow.md +298 -0
- package/docs/books/creating-a-new-admin-ui/03-server-introspection.md +381 -0
- package/docs/books/creating-a-new-admin-ui/04-admin-module-adapter-layer.md +592 -0
- package/docs/books/creating-a-new-admin-ui/05-domain-controls-stat-cards-and-gauges.md +513 -0
- package/docs/books/creating-a-new-admin-ui/06-domain-controls-process-manager.md +544 -0
- package/docs/books/creating-a-new-admin-ui/07-domain-controls-resource-pool-inspector.md +493 -0
- package/docs/books/creating-a-new-admin-ui/08-domain-controls-route-table-and-api-explorer.md +586 -0
- package/docs/books/creating-a-new-admin-ui/09-domain-controls-log-viewer-and-activity-feed.md +490 -0
- package/docs/books/creating-a-new-admin-ui/10-domain-controls-build-status-and-bundle-inspector.md +526 -0
- package/docs/books/creating-a-new-admin-ui/11-domain-controls-configuration-panel.md +808 -0
- package/docs/books/creating-a-new-admin-ui/12-admin-shell-layout-sidebar-navigation.md +210 -0
- package/docs/books/creating-a-new-admin-ui/13-telemetry-integration.md +556 -0
- package/docs/books/creating-a-new-admin-ui/14-realtime-sse-observable-integration.md +485 -0
- package/docs/books/creating-a-new-admin-ui/15-styling-theming-aero-design-system.md +521 -0
- package/docs/books/creating-a-new-admin-ui/16-testing-and-quality-assurance.md +147 -0
- package/docs/books/creating-a-new-admin-ui/17-next-steps-process-resource-roadmap.md +356 -0
- package/docs/books/creating-a-new-admin-ui/README.md +68 -0
- package/docs/books/device-adaptive-composition/01-platform-feature-audit.md +177 -0
- package/docs/books/device-adaptive-composition/02-responsive-composition-model.md +187 -0
- package/docs/books/device-adaptive-composition/03-data-model-vs-view-model.md +231 -0
- package/docs/books/device-adaptive-composition/04-styling-theme-breakpoints.md +234 -0
- package/docs/books/device-adaptive-composition/05-showcase-app-multi-device-assessment.md +193 -0
- package/docs/books/device-adaptive-composition/06-implementation-patterns-and-apis.md +346 -0
- package/docs/books/device-adaptive-composition/07-testing-harness-and-quality-gates.md +265 -0
- package/docs/books/device-adaptive-composition/08-roadmap-and-adoption-plan.md +250 -0
- package/docs/books/device-adaptive-composition/README.md +47 -0
- package/docs/books/jsgui3-bundling-research-book/00-table-of-contents.md +35 -0
- package/docs/books/jsgui3-bundling-research-book/01-pipeline-and-runtime-semantics.md +34 -0
- package/docs/books/jsgui3-bundling-research-book/02-javascript-bundling-core.md +36 -0
- package/docs/books/jsgui3-bundling-research-book/03-style-extraction-and-css-compilation.md +35 -0
- package/docs/books/jsgui3-bundling-research-book/04-static-publishing-and-delivery.md +39 -0
- package/docs/books/jsgui3-bundling-research-book/05-current-limits-and-size-bloat-vectors.md +25 -0
- package/docs/books/jsgui3-bundling-research-book/06-unused-module-elimination-strategy.md +77 -0
- package/docs/books/jsgui3-bundling-research-book/07-jsgui3-html-control-and-mixin-pruning.md +63 -0
- package/docs/books/jsgui3-bundling-research-book/08-test-and-verification-methodology.md +43 -0
- package/docs/books/jsgui3-bundling-research-book/09-roadmap-and-rollout.md +42 -0
- package/docs/books/jsgui3-bundling-research-book/10-further-research-strategies-and-upgrades.md +211 -0
- package/docs/books/jsgui3-bundling-research-book/README.md +35 -0
- package/docs/bundling-system-deep-dive.md +9 -4
- package/docs/comparison-report-express-plex-cpanel.md +549 -0
- package/docs/comprehensive-documentation.md +49 -18
- package/docs/configuration-reference.md +152 -27
- package/docs/core/README.md +19 -0
- package/docs/core/jsgui3-server-core-book/00-table-of-contents.md +21 -0
- package/docs/core/jsgui3-server-core-book/01-startup-readiness-state-machine.md +41 -0
- package/docs/core/jsgui3-server-core-book/02-resource-abstraction-and-lifecycle.md +92 -0
- package/docs/core/jsgui3-server-core-book/03-resource-pool-and-event-topology.md +47 -0
- package/docs/core/jsgui3-server-core-book/04-sse-publisher-semantics.md +41 -0
- package/docs/core/jsgui3-server-core-book/05-serve-factory-resource-wiring.md +46 -0
- package/docs/core/jsgui3-server-core-book/06-e2e-testing-methodology.md +48 -0
- package/docs/core/jsgui3-server-core-book/07-defect-detection-and-hardening-loop.md +47 -0
- package/docs/designs/server-admin-interface-aero.svg +611 -0
- package/docs/publishers-guide.md +59 -4
- package/docs/resources-guide.md +184 -35
- package/docs/simple-server-api-design.md +72 -17
- package/docs/system-architecture.md +18 -14
- package/docs/troubleshooting.md +84 -53
- package/examples/controls/15) window, observable SSE/server.js +6 -1
- package/examples/controls/19) window, auto observable ui/server.js +9 -0
- package/examples/controls/20) window, task manager app/README.md +133 -0
- package/examples/controls/20) window, task manager app/client.js +797 -0
- package/examples/controls/20) window, task manager app/server.js +178 -0
- package/examples/controls/6) window, color_palette/client.js +165 -68
- package/examples/controls/9) window, date picker/client.js +362 -76
- package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +104 -83
- package/examples/jsgui3-html/06) theming/client.js +22 -1
- package/examples/jsgui3-html/10) binding-debugger/client.js +137 -1
- package/http/responders/static/Static_Route_HTTP_Responder.js +52 -34
- package/lab/experiments/capture-color-controls.js +196 -0
- package/lab/results/screenshots/color-controls/full_page.png +0 -0
- package/lab/results/screenshots/color-controls/section_1_color_grid_12x12.png +0 -0
- package/lab/results/screenshots/color-controls/section_2_color_grid_4x2.png +0 -0
- package/lab/results/screenshots/color-controls/section_3_color_palette.png +0 -0
- package/lab/results/screenshots/color-controls/section_4_palette_comparison.png +0 -0
- package/lab/results/screenshots/color-controls/section_5_raw_swatches.png +0 -0
- package/lab/results/screenshots/color-controls/section_6_optimized_crayola.png +0 -0
- package/lab/results/screenshots/color-controls/section_7_pastel_palette.png +0 -0
- package/lab/results/screenshots/color-controls/section_8_extended_144.png +0 -0
- package/lab/screenshot-utils.js +248 -0
- package/module.js +12 -0
- package/package.json +12 -2
- package/publishers/Publishers.js +4 -3
- package/publishers/helpers/assigners/static-compressed-response-buffers/Single_Control_Webpage_Server_Static_Compressed_Response_Buffers_Assigner.js +5 -5
- package/publishers/http-sse-publisher.js +341 -0
- package/resources/process-resource.js +950 -0
- package/resources/processors/bundlers/js/esbuild/Advanced_JS_Bundler_Using_ESBuild.js +129 -33
- package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js +18 -7
- package/resources/processors/bundlers/js/esbuild/JSGUI3_HTML_Control_Optimizer.js +829 -0
- package/resources/remote-process-resource.js +355 -0
- package/resources/server-resource-pool.js +354 -41
- package/serve-factory.js +442 -259
- package/server.js +288 -13
- package/tests/README.md +71 -4
- package/tests/admin-ui-jsgui-controls.test.js +581 -0
- package/tests/admin-ui-render.test.js +24 -0
- package/tests/assigners.test.js +56 -40
- package/tests/bundling-default-control-elimination.puppeteer.test.js +260 -0
- package/tests/configuration-validation.test.js +21 -18
- package/tests/content-analysis.test.js +7 -6
- package/tests/control-optimizer-cache-behavior.test.js +52 -0
- package/tests/control-scan-manifest-regression.test.js +144 -0
- package/tests/end-to-end.test.js +15 -14
- package/tests/error-handling.test.js +222 -179
- package/tests/fixtures/bundling-default-button-client.js +37 -0
- package/tests/fixtures/bundling-default-window-client.js +34 -0
- package/tests/fixtures/control_scan_manifest_expectations.json +48 -0
- package/tests/fixtures/resource-monitor-client.js +319 -0
- package/tests/helpers/puppeteer-e2e-harness.js +317 -0
- package/tests/http-sse-publisher.test.js +136 -0
- package/tests/performance.test.js +69 -65
- package/tests/process-resource.test.js +138 -0
- package/tests/publishers.test.js +7 -7
- package/tests/remote-process-resource.test.js +160 -0
- package/tests/sass-controls.e2e.test.js +7 -1
- package/tests/serve-resources.test.js +270 -0
- package/tests/serve.test.js +120 -50
- package/tests/server-resource-pool.test.js +106 -0
- package/tests/small-controls-bundle-size.test.js +252 -0
- package/tests/test-runner.js +14 -1
- package/tests/window-examples.puppeteer.test.js +204 -1
- package/tests/window-resource-integration.puppeteer.test.js +585 -0
- package/tests/temp_invalid.js +0 -7
- package/tests/temp_invalid_utf8.js +0 -1
- package/tests/temp_malformed.js +0 -10
|
@@ -54,6 +54,15 @@ if (require.main === module) {
|
|
|
54
54
|
};
|
|
55
55
|
server.publish_observable('/api/logs', obs_logs);
|
|
56
56
|
|
|
57
|
+
// Expose Status Diagram
|
|
58
|
+
server.publish('/dev-status.svg', (req, res) => {
|
|
59
|
+
const fs = require('fs');
|
|
60
|
+
const path = require('path');
|
|
61
|
+
const filePath = path.join(__dirname, '../../../../dev-status.svg');
|
|
62
|
+
res.setHeader('Content-Type', 'image/svg+xml');
|
|
63
|
+
fs.createReadStream(filePath).pipe(res);
|
|
64
|
+
});
|
|
65
|
+
|
|
57
66
|
// Start
|
|
58
67
|
const port = 52100;
|
|
59
68
|
server.start(port, (err) => {
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# 20) Task Manager Application
|
|
2
|
+
|
|
3
|
+
A comprehensive example demonstrating a multi-window task management application built with jsgui3.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multiple Windows**: Main task manager window + floating quick-add window
|
|
8
|
+
- **Tabbed Interface**: Tasks, Projects, and Stats tabs in the main window
|
|
9
|
+
- **Data Binding**: Uses `Data_Object` and `field()` for reactive state management
|
|
10
|
+
- **API Integration**: Full CRUD operations via `server.publish()` endpoints
|
|
11
|
+
- **Interactive Controls**: Checkboxes, text inputs, select dropdowns, buttons
|
|
12
|
+
- **Real-time Updates**: UI updates immediately after API responses
|
|
13
|
+
- **Statistics Dashboard**: Tracks completion rates with visual progress bar
|
|
14
|
+
|
|
15
|
+
## Running the Example
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cd examples/controls/20) window, task manager app
|
|
19
|
+
node server.js
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then open http://localhost:52021 in your browser.
|
|
23
|
+
|
|
24
|
+
## Architecture
|
|
25
|
+
|
|
26
|
+
### Client (`client.js`)
|
|
27
|
+
|
|
28
|
+
The `Task_Manager_App` class extends `Active_HTML_Document` and demonstrates:
|
|
29
|
+
|
|
30
|
+
1. **Data Model Setup**:
|
|
31
|
+
```javascript
|
|
32
|
+
this.data = { model: new Data_Object({ context }) };
|
|
33
|
+
field(this.data.model, 'tasks');
|
|
34
|
+
field(this.data.model, 'projects');
|
|
35
|
+
field(this.data.model, 'stats');
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. **Multiple Windows**:
|
|
39
|
+
```javascript
|
|
40
|
+
const main_window = new controls.Window({ context, title: 'Task Manager', pos: [20, 20] });
|
|
41
|
+
const quick_add_window = new controls.Window({ context, title: 'Quick Add Task', pos: [540, 20] });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
3. **Tabbed Panel**:
|
|
45
|
+
```javascript
|
|
46
|
+
const main_tabs = new controls.Tabbed_Panel({
|
|
47
|
+
context,
|
|
48
|
+
tabs: [
|
|
49
|
+
['Tasks', this._create_tasks_panel(context)],
|
|
50
|
+
['Projects', this._create_projects_panel(context)],
|
|
51
|
+
['Stats', this._create_stats_panel(context)]
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
4. **API Calls**:
|
|
57
|
+
```javascript
|
|
58
|
+
async _add_task() {
|
|
59
|
+
const response = await fetch('/api/tasks/add', {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: { 'Content-Type': 'application/json' },
|
|
62
|
+
body: JSON.stringify({ text, project })
|
|
63
|
+
});
|
|
64
|
+
const result = await response.json();
|
|
65
|
+
// Update UI...
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Server (`server.js`)
|
|
70
|
+
|
|
71
|
+
Uses the simple `server.publish()` API for endpoints:
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
// GET /api/tasks/list
|
|
75
|
+
server.publish('tasks/list', () => ({ tasks: get_tasks() }));
|
|
76
|
+
|
|
77
|
+
// POST /api/tasks/add
|
|
78
|
+
server.publish('tasks/add', (data) => {
|
|
79
|
+
const new_task = { id: next_id++, text: data.text, ... };
|
|
80
|
+
tasks.push(new_task);
|
|
81
|
+
return { success: true, tasks: get_tasks() };
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## API Endpoints
|
|
86
|
+
|
|
87
|
+
| Method | Endpoint | Description |
|
|
88
|
+
|--------|----------|-------------|
|
|
89
|
+
| GET | `/api/tasks/list` | Get all tasks |
|
|
90
|
+
| POST | `/api/tasks/add` | Add a new task |
|
|
91
|
+
| POST | `/api/tasks/toggle` | Toggle task completion |
|
|
92
|
+
| POST | `/api/tasks/delete` | Delete a task |
|
|
93
|
+
| POST | `/api/tasks/clear-completed` | Remove completed tasks |
|
|
94
|
+
| GET | `/api/stats` | Get statistics by project |
|
|
95
|
+
|
|
96
|
+
## UI Components Used
|
|
97
|
+
|
|
98
|
+
- `Window` - Draggable, resizable window containers
|
|
99
|
+
- `Tabbed_Panel` - Tab navigation between views
|
|
100
|
+
- `Text_Field` - Text input for task descriptions
|
|
101
|
+
- `Select_Options` - Dropdown for project selection
|
|
102
|
+
- `Button` - Action buttons with click handlers
|
|
103
|
+
- `Checkbox` - Task completion (rendered dynamically)
|
|
104
|
+
|
|
105
|
+
## Key Patterns Demonstrated
|
|
106
|
+
|
|
107
|
+
1. **Control References**: Storing component references for later access
|
|
108
|
+
```javascript
|
|
109
|
+
this._ctrl_fields = { main_window, main_tabs, quick_add_window };
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
2. **Conditional Composition**: Only compose if not hydrating from DOM
|
|
113
|
+
```javascript
|
|
114
|
+
if (!spec.el) { compose(); }
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
3. **Activation Guard**: Prevent double-activation
|
|
118
|
+
```javascript
|
|
119
|
+
if (!this.__active) { super.activate(); ... }
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
4. **CSS as Static Property**: Scoped styles
|
|
123
|
+
```javascript
|
|
124
|
+
Task_Manager_App.css = `...`;
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Customization Ideas
|
|
128
|
+
|
|
129
|
+
- Add task due dates with `Date_Picker`
|
|
130
|
+
- Implement drag-and-drop task reordering
|
|
131
|
+
- Add task priority levels
|
|
132
|
+
- Connect to a real database instead of in-memory store
|
|
133
|
+
- Add real-time updates with `publish_observable` for multi-user sync
|