slicejs-web-framework 3.4.4 → 3.5.1

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 (110) hide show
  1. package/Slice/Components/Structural/Controller/Controller.js +135 -0
  2. package/Slice/Components/Structural/EventManager/EventManager.js +289 -4
  3. package/Slice/Components/Structural/EventManager/EventManagerDebugger.js +368 -30
  4. package/Slice/Components/Structural/LeakInspector/LeakInspector.js +296 -0
  5. package/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +56 -0
  6. package/Slice/Slice.js +14 -1
  7. package/Slice/tests/event-emitters.test.js +79 -0
  8. package/Slice/tests/event-registry.test.js +141 -0
  9. package/Slice/tests/leak-orphans.test.js +131 -0
  10. package/api/{middleware → framework}/securityMiddleware.js +18 -74
  11. package/api/framework/server.js +333 -0
  12. package/api/index.js +5 -279
  13. package/api/tests/public-env-resolver.test.js +1 -1
  14. package/package.json +4 -2
  15. package/sliceConfig.schema.json +10 -1
  16. package/src/App/index.html +31 -1
  17. package/src/manifest.json +15 -0
  18. package/src/robots.txt +4 -0
  19. package/src/sitemap.xml +8 -0
  20. package/src/sliceConfig.json +5 -1
  21. package/types/index.d.ts +12 -0
  22. package/slicejs-cli/.github/workflows/ci.yml +0 -43
  23. package/slicejs-cli/LICENSE +0 -21
  24. package/slicejs-cli/assets/Slice.js-logo.png +0 -0
  25. package/slicejs-cli/client.js +0 -740
  26. package/slicejs-cli/commands/Print.js +0 -164
  27. package/slicejs-cli/commands/Validations.js +0 -92
  28. package/slicejs-cli/commands/build/build.js +0 -40
  29. package/slicejs-cli/commands/buildProduction/buildProduction.js +0 -577
  30. package/slicejs-cli/commands/bundle/bundle.js +0 -236
  31. package/slicejs-cli/commands/createComponent/VisualComponentTemplate.js +0 -55
  32. package/slicejs-cli/commands/createComponent/createComponent.js +0 -128
  33. package/slicejs-cli/commands/deleteComponent/deleteComponent.js +0 -81
  34. package/slicejs-cli/commands/doctor/doctor.js +0 -516
  35. package/slicejs-cli/commands/getComponent/getComponent.js +0 -695
  36. package/slicejs-cli/commands/init/init.js +0 -473
  37. package/slicejs-cli/commands/listComponents/listComponents.js +0 -172
  38. package/slicejs-cli/commands/startServer/startServer.js +0 -240
  39. package/slicejs-cli/commands/startServer/watchServer.js +0 -66
  40. package/slicejs-cli/commands/types/types.js +0 -583
  41. package/slicejs-cli/commands/utils/LocalCliDelegation.js +0 -53
  42. package/slicejs-cli/commands/utils/PackageManager.js +0 -148
  43. package/slicejs-cli/commands/utils/PathHelper.js +0 -75
  44. package/slicejs-cli/commands/utils/VersionChecker.js +0 -169
  45. package/slicejs-cli/commands/utils/bundling/BundleGenerator.js +0 -2525
  46. package/slicejs-cli/commands/utils/bundling/DependencyAnalyzer.js +0 -933
  47. package/slicejs-cli/commands/utils/loadConfig.js +0 -31
  48. package/slicejs-cli/commands/utils/sliceScripts.js +0 -48
  49. package/slicejs-cli/commands/utils/updateManager.js +0 -471
  50. package/slicejs-cli/package.json +0 -71
  51. package/slicejs-cli/playwright.config.js +0 -51
  52. package/slicejs-cli/pnpm-lock.yaml +0 -1629
  53. package/slicejs-cli/tests/build-command-integration.test.js +0 -87
  54. package/slicejs-cli/tests/build-mangling-e2e.test.js +0 -290
  55. package/slicejs-cli/tests/build-production-e2e.test.js +0 -140
  56. package/slicejs-cli/tests/builder-edge-cases.test.js +0 -322
  57. package/slicejs-cli/tests/bundle-generate-e2e.test.js +0 -115
  58. package/slicejs-cli/tests/bundle-generator.test.js +0 -691
  59. package/slicejs-cli/tests/bundle-v2-register-output.test.js +0 -470
  60. package/slicejs-cli/tests/bundling-dependency-edges.test.js +0 -127
  61. package/slicejs-cli/tests/bundling-imports-unit.test.js +0 -267
  62. package/slicejs-cli/tests/client-launcher-contract.test.js +0 -211
  63. package/slicejs-cli/tests/commands-component-crud.test.js +0 -128
  64. package/slicejs-cli/tests/commands-doctor.test.js +0 -152
  65. package/slicejs-cli/tests/commands-version-checker.test.js +0 -37
  66. package/slicejs-cli/tests/component-registry-parse.test.js +0 -34
  67. package/slicejs-cli/tests/dependency-analyzer.test.js +0 -24
  68. package/slicejs-cli/tests/e2e/bundles.spec.js +0 -91
  69. package/slicejs-cli/tests/e2e/dependency-scenarios.spec.js +0 -56
  70. package/slicejs-cli/tests/e2e/fixtures/components/Service/FetchManager/FetchManager.js +0 -136
  71. package/slicejs-cli/tests/e2e/fixtures/components/Service/IndexedDbManager/IndexedDbManager.js +0 -149
  72. package/slicejs-cli/tests/e2e/fixtures/components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  73. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.css +0 -106
  74. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.html +0 -5
  75. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.js +0 -158
  76. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Link/Link.js +0 -33
  77. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.css +0 -56
  78. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.html +0 -83
  79. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.js +0 -164
  80. package/slicejs-cli/tests/e2e/fixtures/components/Visual/MultiRoute/MultiRoute.js +0 -167
  81. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.css +0 -116
  82. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.html +0 -44
  83. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.js +0 -180
  84. package/slicejs-cli/tests/e2e/fixtures/components/Visual/NotFound/NotFound.js +0 -20
  85. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Route/Route.js +0 -181
  86. package/slicejs-cli/tests/e2e/fixtures/components/registry.json +0 -12
  87. package/slicejs-cli/tests/e2e/fixtures/vendor-components.mjs +0 -65
  88. package/slicejs-cli/tests/e2e/navigation.spec.js +0 -44
  89. package/slicejs-cli/tests/e2e/render.spec.js +0 -34
  90. package/slicejs-cli/tests/e2e/serve.mjs +0 -264
  91. package/slicejs-cli/tests/e2e/shared-deps.spec.js +0 -61
  92. package/slicejs-cli/tests/e2e/unminified.spec.js +0 -33
  93. package/slicejs-cli/tests/e2e-serve.test.js +0 -148
  94. package/slicejs-cli/tests/fixtures/components.js +0 -8
  95. package/slicejs-cli/tests/fixtures/sliceConfig.json +0 -74
  96. package/slicejs-cli/tests/getcomponent.test.js +0 -435
  97. package/slicejs-cli/tests/helpers/setup.js +0 -102
  98. package/slicejs-cli/tests/init-command-contract.test.js +0 -101
  99. package/slicejs-cli/tests/init-e2e.test.js +0 -82
  100. package/slicejs-cli/tests/init-project-isolation.test.js +0 -98
  101. package/slicejs-cli/tests/local-cli-delegation.test.js +0 -81
  102. package/slicejs-cli/tests/package-manager.test.js +0 -127
  103. package/slicejs-cli/tests/path-helper.test.js +0 -206
  104. package/slicejs-cli/tests/perf-budget.test.js +0 -84
  105. package/slicejs-cli/tests/postinstall-command.test.js +0 -103
  106. package/slicejs-cli/tests/property-mangling-regression.test.js +0 -182
  107. package/slicejs-cli/tests/types-breakage.test.js +0 -491
  108. package/slicejs-cli/tests/types-generator-errors.test.js +0 -361
  109. package/slicejs-cli/tests/types-generator.test.js +0 -348
  110. /package/api/{utils → framework}/publicEnvResolver.js +0 -0
@@ -1,164 +0,0 @@
1
- import chalk from 'chalk';
2
-
3
- export default class Print {
4
- constructor() { }
5
-
6
- static error(message) {
7
- console.error(chalk.red(`❌ Error: ${message}`));
8
- }
9
-
10
- static success(message) {
11
- console.log(chalk.green(`✅ Success: ${message}`));
12
- }
13
-
14
- static warning(message) {
15
- console.log(chalk.yellow(`⚠️ Warning: ${message}`));
16
- }
17
-
18
- static info(message) {
19
- console.log(chalk.cyan(`ℹ️ Info: ${message}`));
20
- }
21
-
22
- static title(message) {
23
- console.log(chalk.magenta.bold(`🎯 ${message}`));
24
- }
25
-
26
- static subtitle(message) {
27
- console.log(chalk.blue(`📋 ${message}`));
28
- }
29
-
30
- static step(stepNumber, message) {
31
- console.log(chalk.cyan(`${stepNumber}. ${message}`));
32
- }
33
-
34
- static highlight(message) {
35
- console.log(chalk.bgYellow.black(` ${message} `));
36
- }
37
-
38
- static newLine() {
39
- console.log('');
40
- }
41
-
42
- static separator() {
43
- console.log(chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
44
- }
45
-
46
- // Methods for CLI-specific context
47
- static componentSuccess(componentName, action = 'processed') {
48
- console.log(chalk.green(`✅ ${componentName} ${action} successfully!`));
49
- }
50
-
51
- static componentError(componentName, action = 'processing', error) {
52
- console.error(chalk.red(`❌ Error ${action} ${componentName}: ${error}`));
53
- }
54
-
55
- static downloadProgress(fileName) {
56
- console.log(chalk.cyan(` 📥 Downloading ${fileName}...`));
57
- }
58
-
59
- static downloadError(fileName) {
60
- console.error(chalk.red(` ❌ ${fileName}`));
61
- }
62
-
63
- static registryUpdate(message) {
64
- console.log(chalk.magenta(`📝 Registry: ${message}`));
65
- }
66
-
67
- static versionInfo(component, currentVersion, latestVersion = null) {
68
- if (latestVersion && currentVersion !== latestVersion) {
69
- console.log(chalk.yellow(`🔄 ${component}: v${currentVersion} → v${latestVersion}`));
70
- } else {
71
- console.log(chalk.green(`✅ ${component}: v${currentVersion}`));
72
- }
73
- }
74
-
75
- static commandExample(description, command) {
76
- console.log(chalk.gray(`💡 ${description}:`));
77
- console.log(chalk.white(` ${command}`));
78
- }
79
-
80
- static summary(successful, failed, total) {
81
- Print.separator();
82
- console.log(chalk.bold('📊 Summary:'));
83
- if (successful > 0) {
84
- Print.success(`Successful: ${successful}/${total}`);
85
- }
86
- if (failed > 0) {
87
- Print.error(`Failed: ${failed}/${total}`);
88
- }
89
- Print.separator();
90
- }
91
-
92
- // Method to show minification results
93
- static minificationResult(filename, originalSize, minifiedSize, savingsPercent) {
94
- const originalKB = (originalSize / 1024).toFixed(1);
95
- const minifiedKB = (minifiedSize / 1024).toFixed(1);
96
-
97
- console.log(chalk.green(` ✅ ${filename}`));
98
- console.log(chalk.gray(` ${originalKB}KB → ${minifiedKB}KB (${savingsPercent}% saved)`));
99
- }
100
-
101
- // Method to show build progress
102
- static buildProgress(message) {
103
- console.log(chalk.cyan(`🔄 ${message}`));
104
- }
105
-
106
- // Method to show server statistics
107
- static serverStats(mode, port, directory) {
108
- Print.newLine();
109
- console.log(chalk.magenta(`🌐 Server Configuration:`));
110
- console.log(chalk.gray(` Mode: ${mode}`));
111
- console.log(chalk.gray(` Port: ${port}`));
112
- console.log(chalk.gray(` Serving: /${directory}`));
113
- Print.newLine();
114
- }
115
-
116
- // Method to show the server is ready with highlighted URL
117
- static serverReady(port) {
118
- Print.newLine();
119
- console.log(chalk.bgGreen.black.bold(' ✓ SERVER READY '));
120
- Print.newLine();
121
- console.log(chalk.cyan.bold(` → Local: http://localhost:${port}`));
122
- console.log(chalk.gray(` → Network: http://127.0.0.1:${port}`));
123
- Print.newLine();
124
- console.log(chalk.yellow(` Press Ctrl+C to stop the server`));
125
- Print.newLine();
126
- }
127
-
128
- // Method to show server status during startup
129
- static serverStatus(status, message = '') {
130
- const icons = {
131
- checking: '🔍',
132
- starting: '🚀',
133
- ready: '✅',
134
- error: '❌'
135
- };
136
- const colors = {
137
- checking: chalk.cyan,
138
- starting: chalk.magenta,
139
- ready: chalk.green,
140
- error: chalk.red
141
- };
142
-
143
- const icon = icons[status] || 'ℹ️';
144
- const color = colors[status] || chalk.white;
145
- const displayMessage = message || status;
146
-
147
- console.log(color(`${icon} ${displayMessage}`));
148
- }
149
-
150
- // Method to show port checking status
151
- static checkingPort(port) {
152
- console.log(chalk.cyan(`🔍 Checking port ${port}...`));
153
- }
154
-
155
- // New: Debug method
156
- static debug(message) {
157
- console.log(chalk.gray(`🐛 DEBUG: ${message}`));
158
- }
159
-
160
- // New: Verbose logging method
161
- static verbose(message) {
162
- console.log(chalk.gray(`📝 ${message}`));
163
- }
164
- }
@@ -1,92 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import Print from './Print.js';
4
- import { getComponentsJsPath } from './utils/PathHelper.js';
5
- import { loadConfigSync } from './utils/loadConfig.js';
6
-
7
- class Validations {
8
- constructor() {
9
- this._config = null;
10
- this._categories = null;
11
- }
12
-
13
- _ensureConfig() {
14
- if (!this._config) {
15
- this._config = this.loadConfig();
16
- if (this._config) {
17
- this._categories = this._config.paths?.components;
18
- }
19
- }
20
- }
21
-
22
- get config() {
23
- this._ensureConfig();
24
- return this._config;
25
- }
26
-
27
- isValidComponentName(componentName) {
28
- // Regex to check if the name contains special characters
29
- const regex = /^[a-zA-Z][a-zA-Z0-9]*$/;
30
- return regex.test(componentName);
31
- }
32
-
33
- loadConfig() {
34
- return loadConfigSync(import.meta.url);
35
- }
36
-
37
- getCategories() {
38
- this._ensureConfig();
39
- return this._categories;
40
- }
41
-
42
- getCategoryPath(category) {
43
- this._ensureConfig();
44
- return this._categories && this._categories[category] ? this._categories[category].path : null;
45
- }
46
-
47
- getCategoryType(category) {
48
- this._ensureConfig();
49
- return this._categories && this._categories[category] ? this._categories[category].type : null;
50
- }
51
-
52
- isValidCategory(category) {
53
- this._ensureConfig();
54
- if (!this._categories) return { isValid: false, category: null };
55
-
56
- const availableCategories = Object.keys(this._categories).map(cat => cat.toLowerCase());
57
-
58
- if (availableCategories.includes(category.toLowerCase())) {
59
- return { isValid: true, category };
60
- } else {
61
- return { isValid: false, category: null };
62
- }
63
- }
64
-
65
- componentExists(componentName) {
66
- try {
67
- const componentFilePath = getComponentsJsPath(import.meta.url);
68
-
69
- if (!fs.existsSync(componentFilePath)) {
70
- Print.error('components.js not found in expected path');
71
- Print.info('Run "slice component list" to generate components.js');
72
- return false;
73
- }
74
-
75
- const fileContent = fs.readFileSync(componentFilePath, 'utf-8');
76
- const match = fileContent.match(/const components = ({[\s\S]*?});/);
77
- if (!match) return false;
78
- const components = JSON.parse(match[1]);
79
-
80
- return components.hasOwnProperty(componentName);
81
-
82
- } catch (error) {
83
- Print.error(`Error checking component existence: ${error.message}`);
84
- Print.info('The components.js file may be corrupted');
85
- return false;
86
- }
87
- }
88
- }
89
-
90
- const validations = new Validations();
91
-
92
- export default validations;
@@ -1,40 +0,0 @@
1
- import bundle from '../bundle/bundle.js';
2
- import buildProduction, { serveProductionBuild } from '../buildProduction/buildProduction.js';
3
- import Print from '../Print.js';
4
-
5
- export default async function build(options = {}) {
6
- const minify = options.minify !== false;
7
- const obfuscate = options.obfuscate !== false;
8
-
9
- if (options.analyze) {
10
- return bundle({ analyze: true, verbose: options.verbose });
11
- }
12
-
13
- if (options.serve) {
14
- await serveProductionBuild(options.port);
15
- return true;
16
- }
17
-
18
- const success = await buildProduction({
19
- ...options,
20
- minify,
21
- obfuscate
22
- });
23
- if (!success) {
24
- return false;
25
- }
26
-
27
- Print.info('Generating bundles for production build...');
28
- await bundle({
29
- verbose: options.verbose,
30
- minify,
31
- obfuscate,
32
- output: 'dist'
33
- });
34
-
35
- if (options.preview) {
36
- await serveProductionBuild(options.port);
37
- }
38
-
39
- return true;
40
- }