slicejs-web-framework 3.4.4 → 3.5.0

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 (101) 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/Slice.js +14 -1
  6. package/Slice/tests/event-emitters.test.js +79 -0
  7. package/Slice/tests/event-registry.test.js +141 -0
  8. package/Slice/tests/leak-orphans.test.js +131 -0
  9. package/api/index.js +35 -8
  10. package/package.json +1 -1
  11. package/sliceConfig.schema.json +10 -1
  12. package/src/sliceConfig.json +5 -1
  13. package/types/index.d.ts +12 -0
  14. package/slicejs-cli/.github/workflows/ci.yml +0 -43
  15. package/slicejs-cli/LICENSE +0 -21
  16. package/slicejs-cli/assets/Slice.js-logo.png +0 -0
  17. package/slicejs-cli/client.js +0 -740
  18. package/slicejs-cli/commands/Print.js +0 -164
  19. package/slicejs-cli/commands/Validations.js +0 -92
  20. package/slicejs-cli/commands/build/build.js +0 -40
  21. package/slicejs-cli/commands/buildProduction/buildProduction.js +0 -577
  22. package/slicejs-cli/commands/bundle/bundle.js +0 -236
  23. package/slicejs-cli/commands/createComponent/VisualComponentTemplate.js +0 -55
  24. package/slicejs-cli/commands/createComponent/createComponent.js +0 -128
  25. package/slicejs-cli/commands/deleteComponent/deleteComponent.js +0 -81
  26. package/slicejs-cli/commands/doctor/doctor.js +0 -516
  27. package/slicejs-cli/commands/getComponent/getComponent.js +0 -695
  28. package/slicejs-cli/commands/init/init.js +0 -473
  29. package/slicejs-cli/commands/listComponents/listComponents.js +0 -172
  30. package/slicejs-cli/commands/startServer/startServer.js +0 -240
  31. package/slicejs-cli/commands/startServer/watchServer.js +0 -66
  32. package/slicejs-cli/commands/types/types.js +0 -583
  33. package/slicejs-cli/commands/utils/LocalCliDelegation.js +0 -53
  34. package/slicejs-cli/commands/utils/PackageManager.js +0 -148
  35. package/slicejs-cli/commands/utils/PathHelper.js +0 -75
  36. package/slicejs-cli/commands/utils/VersionChecker.js +0 -169
  37. package/slicejs-cli/commands/utils/bundling/BundleGenerator.js +0 -2525
  38. package/slicejs-cli/commands/utils/bundling/DependencyAnalyzer.js +0 -933
  39. package/slicejs-cli/commands/utils/loadConfig.js +0 -31
  40. package/slicejs-cli/commands/utils/sliceScripts.js +0 -48
  41. package/slicejs-cli/commands/utils/updateManager.js +0 -471
  42. package/slicejs-cli/package.json +0 -71
  43. package/slicejs-cli/playwright.config.js +0 -51
  44. package/slicejs-cli/pnpm-lock.yaml +0 -1629
  45. package/slicejs-cli/tests/build-command-integration.test.js +0 -87
  46. package/slicejs-cli/tests/build-mangling-e2e.test.js +0 -290
  47. package/slicejs-cli/tests/build-production-e2e.test.js +0 -140
  48. package/slicejs-cli/tests/builder-edge-cases.test.js +0 -322
  49. package/slicejs-cli/tests/bundle-generate-e2e.test.js +0 -115
  50. package/slicejs-cli/tests/bundle-generator.test.js +0 -691
  51. package/slicejs-cli/tests/bundle-v2-register-output.test.js +0 -470
  52. package/slicejs-cli/tests/bundling-dependency-edges.test.js +0 -127
  53. package/slicejs-cli/tests/bundling-imports-unit.test.js +0 -267
  54. package/slicejs-cli/tests/client-launcher-contract.test.js +0 -211
  55. package/slicejs-cli/tests/commands-component-crud.test.js +0 -128
  56. package/slicejs-cli/tests/commands-doctor.test.js +0 -152
  57. package/slicejs-cli/tests/commands-version-checker.test.js +0 -37
  58. package/slicejs-cli/tests/component-registry-parse.test.js +0 -34
  59. package/slicejs-cli/tests/dependency-analyzer.test.js +0 -24
  60. package/slicejs-cli/tests/e2e/bundles.spec.js +0 -91
  61. package/slicejs-cli/tests/e2e/dependency-scenarios.spec.js +0 -56
  62. package/slicejs-cli/tests/e2e/fixtures/components/Service/FetchManager/FetchManager.js +0 -136
  63. package/slicejs-cli/tests/e2e/fixtures/components/Service/IndexedDbManager/IndexedDbManager.js +0 -149
  64. package/slicejs-cli/tests/e2e/fixtures/components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  65. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.css +0 -106
  66. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.html +0 -5
  67. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Button/Button.js +0 -158
  68. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Link/Link.js +0 -33
  69. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.css +0 -56
  70. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.html +0 -83
  71. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Loading/Loading.js +0 -164
  72. package/slicejs-cli/tests/e2e/fixtures/components/Visual/MultiRoute/MultiRoute.js +0 -167
  73. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.css +0 -116
  74. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.html +0 -44
  75. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Navbar/Navbar.js +0 -180
  76. package/slicejs-cli/tests/e2e/fixtures/components/Visual/NotFound/NotFound.js +0 -20
  77. package/slicejs-cli/tests/e2e/fixtures/components/Visual/Route/Route.js +0 -181
  78. package/slicejs-cli/tests/e2e/fixtures/components/registry.json +0 -12
  79. package/slicejs-cli/tests/e2e/fixtures/vendor-components.mjs +0 -65
  80. package/slicejs-cli/tests/e2e/navigation.spec.js +0 -44
  81. package/slicejs-cli/tests/e2e/render.spec.js +0 -34
  82. package/slicejs-cli/tests/e2e/serve.mjs +0 -264
  83. package/slicejs-cli/tests/e2e/shared-deps.spec.js +0 -61
  84. package/slicejs-cli/tests/e2e/unminified.spec.js +0 -33
  85. package/slicejs-cli/tests/e2e-serve.test.js +0 -148
  86. package/slicejs-cli/tests/fixtures/components.js +0 -8
  87. package/slicejs-cli/tests/fixtures/sliceConfig.json +0 -74
  88. package/slicejs-cli/tests/getcomponent.test.js +0 -435
  89. package/slicejs-cli/tests/helpers/setup.js +0 -102
  90. package/slicejs-cli/tests/init-command-contract.test.js +0 -101
  91. package/slicejs-cli/tests/init-e2e.test.js +0 -82
  92. package/slicejs-cli/tests/init-project-isolation.test.js +0 -98
  93. package/slicejs-cli/tests/local-cli-delegation.test.js +0 -81
  94. package/slicejs-cli/tests/package-manager.test.js +0 -127
  95. package/slicejs-cli/tests/path-helper.test.js +0 -206
  96. package/slicejs-cli/tests/perf-budget.test.js +0 -84
  97. package/slicejs-cli/tests/postinstall-command.test.js +0 -103
  98. package/slicejs-cli/tests/property-mangling-regression.test.js +0 -182
  99. package/slicejs-cli/tests/types-breakage.test.js +0 -491
  100. package/slicejs-cli/tests/types-generator-errors.test.js +0 -361
  101. package/slicejs-cli/tests/types-generator.test.js +0 -348
@@ -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
- }