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
|
@@ -5,7 +5,8 @@ const Core_JS_Non_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Non_Minif
|
|
|
5
5
|
const Bundler_Using_ESBuild = require('./Bundler_Using_ESBuild');
|
|
6
6
|
const {is_array} = require('lang-tools');
|
|
7
7
|
|
|
8
|
-
const Core_JS_Single_File_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Single_File_Minifying_Bundler_Using_ESBuild');
|
|
8
|
+
const Core_JS_Single_File_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Single_File_Minifying_Bundler_Using_ESBuild');
|
|
9
|
+
const JSGUI3_HTML_Control_Optimizer = require('./JSGUI3_HTML_Control_Optimizer');
|
|
9
10
|
|
|
10
11
|
//const CSS_Extractor = require('./_Old_CSS_Extractor');
|
|
11
12
|
|
|
@@ -14,20 +15,55 @@ const Core_JS_Single_File_Minifying_Bundler_Using_ESBuild = require('./Core_JS_S
|
|
|
14
15
|
|
|
15
16
|
const Bundle = require('../../bundle');
|
|
16
17
|
|
|
17
|
-
const CSS_And_JS_From_JS_String_Extractor = require('../../../extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor');
|
|
18
|
-
const {compile_styles} = require('../../style-bundler');
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
const CSS_And_JS_From_JS_String_Extractor = require('../../../extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor');
|
|
19
|
+
const {compile_styles} = require('../../style-bundler');
|
|
20
|
+
|
|
21
|
+
const await_bundle_observable = (bundle_result) => {
|
|
22
|
+
if (!bundle_result || typeof bundle_result.on !== 'function') {
|
|
23
|
+
return Promise.resolve(bundle_result);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const normalize_result = (value) => {
|
|
27
|
+
if (Array.isArray(value)) return value;
|
|
28
|
+
if (value && value._arr) return [value];
|
|
29
|
+
return value;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
let settled = false;
|
|
34
|
+
const settle_once = (settle_fn, value) => {
|
|
35
|
+
if (settled) return;
|
|
36
|
+
settled = true;
|
|
37
|
+
settle_fn(value);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
bundle_result.on('error', (error) => settle_once(reject, error));
|
|
41
|
+
bundle_result.on('next', (value) => settle_once(resolve, normalize_result(value)));
|
|
42
|
+
bundle_result.on('complete', (value) => settle_once(resolve, normalize_result(value)));
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
22
48
|
constructor(spec = {}) {
|
|
23
49
|
super(spec);
|
|
24
50
|
|
|
25
51
|
if (spec.debug !== undefined) this.debug = spec.debug;
|
|
26
52
|
|
|
27
|
-
// Store bundler configuration
|
|
28
|
-
this.bundler_config = spec.bundler || {};
|
|
29
|
-
|
|
30
|
-
|
|
53
|
+
// Store bundler configuration
|
|
54
|
+
this.bundler_config = spec.bundler || {};
|
|
55
|
+
|
|
56
|
+
// Enable elimination by default, while preserving explicit opt-out.
|
|
57
|
+
const raw_elimination_config = this.bundler_config.elimination;
|
|
58
|
+
if (raw_elimination_config === false) {
|
|
59
|
+
this.elimination_config = {enabled: false};
|
|
60
|
+
} else if (raw_elimination_config && typeof raw_elimination_config === 'object') {
|
|
61
|
+
this.elimination_config = raw_elimination_config;
|
|
62
|
+
} else {
|
|
63
|
+
this.elimination_config = {};
|
|
64
|
+
}
|
|
65
|
+
const style_config = spec.style || this.bundler_config.style || {};
|
|
66
|
+
this.style_config = Object.assign({debug: this.debug === true}, style_config);
|
|
31
67
|
|
|
32
68
|
//this.css_extractor = new CSS_Extractor();
|
|
33
69
|
|
|
@@ -42,14 +78,45 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
42
78
|
|
|
43
79
|
|
|
44
80
|
// Probably don't use that minifying bundler in debug mode.
|
|
45
|
-
this.minifying_js_single_file_bundler = new Core_JS_Single_File_Minifying_Bundler_Using_ESBuild({
|
|
46
|
-
minify: this.bundler_config.minify
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
|
|
81
|
+
this.minifying_js_single_file_bundler = new Core_JS_Single_File_Minifying_Bundler_Using_ESBuild({
|
|
82
|
+
minify: this.bundler_config.minify
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const control_elimination_config = this.elimination_config.jsgui3_html_controls || {};
|
|
86
|
+
const elimination_enabled = this.elimination_config.enabled !== false;
|
|
87
|
+
const control_elimination_enabled = elimination_enabled &&
|
|
88
|
+
control_elimination_config.enabled !== false;
|
|
89
|
+
|
|
90
|
+
if (control_elimination_enabled) {
|
|
91
|
+
const cache_config = control_elimination_config.cache && typeof control_elimination_config.cache === 'object'
|
|
92
|
+
? control_elimination_config.cache
|
|
93
|
+
: {};
|
|
94
|
+
this.jsgui3_html_control_optimizer = new JSGUI3_HTML_Control_Optimizer({
|
|
95
|
+
package_name: control_elimination_config.package_name || 'jsgui3-html',
|
|
96
|
+
emit_manifest: control_elimination_config.emit_manifest === true,
|
|
97
|
+
allow_dynamic_controls: control_elimination_config.allow_dynamic_controls === true,
|
|
98
|
+
include_controls: control_elimination_config.include_controls,
|
|
99
|
+
exclude_controls: control_elimination_config.exclude_controls,
|
|
100
|
+
cacheEnabled: cache_config.enabled !== false,
|
|
101
|
+
sharedCache: cache_config.shared !== false,
|
|
102
|
+
log: control_elimination_config.log === true,
|
|
103
|
+
manifest_dir: control_elimination_config.manifest_dir,
|
|
104
|
+
shim_dir: control_elimination_config.shim_dir
|
|
105
|
+
});
|
|
106
|
+
} else {
|
|
107
|
+
this.jsgui3_html_control_optimizer = null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
}
|
|
50
111
|
|
|
51
112
|
bundle(js_file_path) {
|
|
52
|
-
const {
|
|
113
|
+
const {
|
|
114
|
+
non_minifying_bundler,
|
|
115
|
+
css_and_js_from_js_string_extractor,
|
|
116
|
+
minifying_js_single_file_bundler,
|
|
117
|
+
style_config,
|
|
118
|
+
jsgui3_html_control_optimizer
|
|
119
|
+
} = this;
|
|
53
120
|
|
|
54
121
|
// Validate input
|
|
55
122
|
if (typeof js_file_path !== 'string' || js_file_path.trim() === '') {
|
|
@@ -64,12 +131,27 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
64
131
|
|
|
65
132
|
|
|
66
133
|
|
|
67
|
-
const res_obs = obs(async(next, complete, error) => {
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
//console.log('Advanced_JS_Bundler_Using_ESBuild bundle js_file_path:', js_file_path);
|
|
71
|
-
|
|
72
|
-
|
|
134
|
+
const res_obs = obs(async(next, complete, error) => {
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
//console.log('Advanced_JS_Bundler_Using_ESBuild bundle js_file_path:', js_file_path);
|
|
138
|
+
|
|
139
|
+
let entry_build_overrides = {};
|
|
140
|
+
let control_scan_manifest = null;
|
|
141
|
+
|
|
142
|
+
if (jsgui3_html_control_optimizer) {
|
|
143
|
+
const optimization_result = await jsgui3_html_control_optimizer.optimize(js_file_path);
|
|
144
|
+
if (optimization_result && optimization_result.enabled && optimization_result.plugin) {
|
|
145
|
+
entry_build_overrides.plugins = [optimization_result.plugin];
|
|
146
|
+
}
|
|
147
|
+
if (optimization_result && optimization_result.manifest) {
|
|
148
|
+
control_scan_manifest = optimization_result.manifest;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const res_nmb = await await_bundle_observable(
|
|
153
|
+
non_minifying_bundler.bundle(js_file_path, entry_build_overrides)
|
|
154
|
+
);
|
|
73
155
|
|
|
74
156
|
//console.log('res_nmb', res_nmb);
|
|
75
157
|
|
|
@@ -103,7 +185,9 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
103
185
|
|
|
104
186
|
if (this.debug) {
|
|
105
187
|
// Generate source maps for CSS-free JS
|
|
106
|
-
const css_free_bundle_result = await
|
|
188
|
+
const css_free_bundle_result = await await_bundle_observable(
|
|
189
|
+
non_minifying_bundler.bundle_js_string(js)
|
|
190
|
+
);
|
|
107
191
|
const css_free_bundle_item = css_free_bundle_result[0]._arr[0];
|
|
108
192
|
|
|
109
193
|
const res_bundle = new Bundle();
|
|
@@ -118,9 +202,13 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
118
202
|
extension: 'css',
|
|
119
203
|
text: compiled_css
|
|
120
204
|
}
|
|
121
|
-
res_bundle.push(o_css_bundle_item);
|
|
122
|
-
|
|
123
|
-
|
|
205
|
+
res_bundle.push(o_css_bundle_item);
|
|
206
|
+
if (control_scan_manifest) {
|
|
207
|
+
res_bundle.bundle_analysis = res_bundle.bundle_analysis || {};
|
|
208
|
+
res_bundle.bundle_analysis.jsgui3_html_control_scan = control_scan_manifest;
|
|
209
|
+
}
|
|
210
|
+
next(res_bundle);
|
|
211
|
+
complete(res_bundle);
|
|
124
212
|
|
|
125
213
|
|
|
126
214
|
|
|
@@ -130,9 +218,13 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
130
218
|
|
|
131
219
|
} else {
|
|
132
220
|
// Generate source maps for CSS-free JS and minify
|
|
133
|
-
const css_free_bundle_result = await
|
|
134
|
-
|
|
135
|
-
|
|
221
|
+
const css_free_bundle_result = await await_bundle_observable(
|
|
222
|
+
non_minifying_bundler.bundle_js_string(js)
|
|
223
|
+
);
|
|
224
|
+
const css_free_bundle_item = css_free_bundle_result[0]._arr[0];
|
|
225
|
+
const minified_js = await await_bundle_observable(
|
|
226
|
+
minifying_js_single_file_bundler.bundle(css_free_bundle_item.text)
|
|
227
|
+
);
|
|
136
228
|
|
|
137
229
|
//console.log('minified_js', minified_js);
|
|
138
230
|
//console.log('minified_js.length', minified_js.length);
|
|
@@ -145,10 +237,14 @@ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
|
145
237
|
type: 'CSS',
|
|
146
238
|
extension: 'css',
|
|
147
239
|
text: compiled_css
|
|
148
|
-
}
|
|
149
|
-
minified_bundle.push(o_css_bundle_item);
|
|
150
|
-
|
|
151
|
-
|
|
240
|
+
}
|
|
241
|
+
minified_bundle.push(o_css_bundle_item);
|
|
242
|
+
if (control_scan_manifest) {
|
|
243
|
+
minified_bundle.bundle_analysis = minified_bundle.bundle_analysis || {};
|
|
244
|
+
minified_bundle.bundle_analysis.jsgui3_html_control_scan = control_scan_manifest;
|
|
245
|
+
}
|
|
246
|
+
next(minified_bundle);
|
|
247
|
+
complete(minified_bundle);
|
|
152
248
|
} else {
|
|
153
249
|
console.trace();
|
|
154
250
|
throw 'Unexpected minified JS structure';
|
package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js
CHANGED
|
@@ -13,14 +13,15 @@ const Bundler_Using_ESBuild = require('./Bundler_Using_ESBuild');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
17
|
-
constructor(spec = {}) {
|
|
18
|
-
super(spec);
|
|
16
|
+
class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
|
|
17
|
+
constructor(spec = {}) {
|
|
18
|
+
super(spec);
|
|
19
19
|
|
|
20
20
|
if (spec.debug !== undefined) this.debug = spec.debug;
|
|
21
21
|
|
|
22
|
-
// Store sourcemap configuration
|
|
23
|
-
this.sourcemap_config = spec.sourcemaps || {};
|
|
22
|
+
// Store sourcemap configuration
|
|
23
|
+
this.sourcemap_config = spec.sourcemaps || {};
|
|
24
|
+
this.build_plugins = Array.isArray(spec.plugins) ? spec.plugins : [];
|
|
24
25
|
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -44,7 +45,7 @@ class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
47
|
-
bundle_js_string(js_string) {
|
|
48
|
+
bundle_js_string(js_string, build_overrides = {}) {
|
|
48
49
|
const res_obs = obs(async(next, complete, error) => {
|
|
49
50
|
try {
|
|
50
51
|
const o_build = {
|
|
@@ -63,6 +64,11 @@ class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild
|
|
|
63
64
|
o_build.sourcemap = this.sourcemap_config.format || 'inline';
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
const plugins = Array.isArray(build_overrides.plugins) ? build_overrides.plugins : this.build_plugins;
|
|
68
|
+
if (plugins.length > 0) {
|
|
69
|
+
o_build.plugins = plugins;
|
|
70
|
+
}
|
|
71
|
+
|
|
66
72
|
const result = await esbuild.build(o_build);
|
|
67
73
|
|
|
68
74
|
if (result.outputFiles.length === 1) {
|
|
@@ -87,7 +93,7 @@ class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild
|
|
|
87
93
|
return res_obs;
|
|
88
94
|
}
|
|
89
95
|
|
|
90
|
-
bundle(js_file_path) {
|
|
96
|
+
bundle(js_file_path, build_overrides = {}) {
|
|
91
97
|
|
|
92
98
|
|
|
93
99
|
const res_obs = obs(async(next, complete, error) => {
|
|
@@ -110,6 +116,11 @@ class Core_JS_Non_Minifying_Bundler_Using_ESBuild extends Bundler_Using_ESBuild
|
|
|
110
116
|
o_build.sourcemap = this.sourcemap_config.format || 'inline';
|
|
111
117
|
}
|
|
112
118
|
|
|
119
|
+
const plugins = Array.isArray(build_overrides.plugins) ? build_overrides.plugins : this.build_plugins;
|
|
120
|
+
if (plugins.length > 0) {
|
|
121
|
+
o_build.plugins = plugins;
|
|
122
|
+
}
|
|
123
|
+
|
|
113
124
|
const result = await esbuild.build(o_build);
|
|
114
125
|
//console.log('result.outputFiles:\n\n');
|
|
115
126
|
//for (let out of result.outputFiles) {
|