@creact-labs/creact 0.1.7 → 0.2.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 (146) hide show
  1. package/README.md +72 -21
  2. package/dist/cli.d.ts +11 -0
  3. package/dist/cli.js +88 -0
  4. package/dist/index.d.ts +19 -44
  5. package/dist/index.js +20 -68
  6. package/dist/jsx/index.d.ts +2 -0
  7. package/dist/jsx/index.js +1 -0
  8. package/dist/jsx/jsx-dev-runtime.d.ts +4 -0
  9. package/dist/jsx/jsx-dev-runtime.js +4 -0
  10. package/dist/jsx/jsx-runtime.d.ts +38 -0
  11. package/dist/jsx/jsx-runtime.js +38 -0
  12. package/dist/jsx/types.d.ts +12 -0
  13. package/dist/jsx/types.js +4 -0
  14. package/dist/primitives/context.d.ts +34 -0
  15. package/dist/primitives/context.js +63 -0
  16. package/dist/primitives/index.d.ts +3 -0
  17. package/dist/primitives/index.js +3 -0
  18. package/dist/primitives/instance.d.ts +72 -0
  19. package/dist/primitives/instance.js +235 -0
  20. package/dist/primitives/store.d.ts +22 -0
  21. package/dist/primitives/store.js +97 -0
  22. package/dist/provider/backend.d.ts +110 -0
  23. package/dist/provider/backend.js +37 -0
  24. package/dist/provider/interface.d.ts +48 -0
  25. package/dist/provider/interface.js +39 -0
  26. package/dist/reactive/effect.d.ts +11 -0
  27. package/dist/reactive/effect.js +42 -0
  28. package/dist/reactive/index.d.ts +3 -0
  29. package/dist/reactive/index.js +3 -0
  30. package/dist/reactive/signal.d.ts +32 -0
  31. package/dist/reactive/signal.js +60 -0
  32. package/dist/reactive/tracking.d.ts +41 -0
  33. package/dist/reactive/tracking.js +161 -0
  34. package/dist/runtime/fiber.d.ts +21 -0
  35. package/dist/runtime/fiber.js +16 -0
  36. package/dist/runtime/index.d.ts +4 -0
  37. package/dist/runtime/index.js +4 -0
  38. package/dist/runtime/reconcile.d.ts +66 -0
  39. package/dist/runtime/reconcile.js +210 -0
  40. package/dist/runtime/render.d.ts +42 -0
  41. package/dist/runtime/render.js +231 -0
  42. package/dist/runtime/run.d.ts +119 -0
  43. package/dist/runtime/run.js +334 -0
  44. package/dist/runtime/state-machine.d.ts +95 -0
  45. package/dist/runtime/state-machine.js +209 -0
  46. package/dist/types.d.ts +13 -0
  47. package/dist/types.js +4 -0
  48. package/package.json +11 -27
  49. package/dist/cli/commands/BuildCommand.d.ts +0 -40
  50. package/dist/cli/commands/BuildCommand.js +0 -151
  51. package/dist/cli/commands/DeployCommand.d.ts +0 -38
  52. package/dist/cli/commands/DeployCommand.js +0 -194
  53. package/dist/cli/commands/DevCommand.d.ts +0 -52
  54. package/dist/cli/commands/DevCommand.js +0 -394
  55. package/dist/cli/commands/PlanCommand.d.ts +0 -39
  56. package/dist/cli/commands/PlanCommand.js +0 -164
  57. package/dist/cli/commands/index.d.ts +0 -36
  58. package/dist/cli/commands/index.js +0 -43
  59. package/dist/cli/core/ArgumentParser.d.ts +0 -46
  60. package/dist/cli/core/ArgumentParser.js +0 -127
  61. package/dist/cli/core/BaseCommand.d.ts +0 -75
  62. package/dist/cli/core/BaseCommand.js +0 -95
  63. package/dist/cli/core/CLIContext.d.ts +0 -68
  64. package/dist/cli/core/CLIContext.js +0 -183
  65. package/dist/cli/core/CommandRegistry.d.ts +0 -64
  66. package/dist/cli/core/CommandRegistry.js +0 -89
  67. package/dist/cli/core/index.d.ts +0 -36
  68. package/dist/cli/core/index.js +0 -43
  69. package/dist/cli/index.d.ts +0 -35
  70. package/dist/cli/index.js +0 -100
  71. package/dist/cli/output.d.ts +0 -204
  72. package/dist/cli/output.js +0 -437
  73. package/dist/cli/utils.d.ts +0 -59
  74. package/dist/cli/utils.js +0 -76
  75. package/dist/context/createContext.d.ts +0 -90
  76. package/dist/context/createContext.js +0 -113
  77. package/dist/context/index.d.ts +0 -30
  78. package/dist/context/index.js +0 -35
  79. package/dist/core/CReact.d.ts +0 -409
  80. package/dist/core/CReact.js +0 -1151
  81. package/dist/core/CloudDOMBuilder.d.ts +0 -447
  82. package/dist/core/CloudDOMBuilder.js +0 -1234
  83. package/dist/core/ContextDependencyTracker.d.ts +0 -165
  84. package/dist/core/ContextDependencyTracker.js +0 -448
  85. package/dist/core/ErrorRecoveryManager.d.ts +0 -145
  86. package/dist/core/ErrorRecoveryManager.js +0 -443
  87. package/dist/core/EventBus.d.ts +0 -91
  88. package/dist/core/EventBus.js +0 -185
  89. package/dist/core/ProviderOutputTracker.d.ts +0 -211
  90. package/dist/core/ProviderOutputTracker.js +0 -476
  91. package/dist/core/ReactiveUpdateQueue.d.ts +0 -76
  92. package/dist/core/ReactiveUpdateQueue.js +0 -121
  93. package/dist/core/Reconciler.d.ts +0 -415
  94. package/dist/core/Reconciler.js +0 -1044
  95. package/dist/core/RenderScheduler.d.ts +0 -153
  96. package/dist/core/RenderScheduler.js +0 -519
  97. package/dist/core/Renderer.d.ts +0 -336
  98. package/dist/core/Renderer.js +0 -944
  99. package/dist/core/Runtime.d.ts +0 -246
  100. package/dist/core/Runtime.js +0 -640
  101. package/dist/core/StateBindingManager.d.ts +0 -121
  102. package/dist/core/StateBindingManager.js +0 -309
  103. package/dist/core/StateMachine.d.ts +0 -441
  104. package/dist/core/StateMachine.js +0 -883
  105. package/dist/core/StructuralChangeDetector.d.ts +0 -140
  106. package/dist/core/StructuralChangeDetector.js +0 -363
  107. package/dist/core/Validator.d.ts +0 -127
  108. package/dist/core/Validator.js +0 -279
  109. package/dist/core/errors.d.ts +0 -153
  110. package/dist/core/errors.js +0 -202
  111. package/dist/core/index.d.ts +0 -38
  112. package/dist/core/index.js +0 -64
  113. package/dist/core/types.d.ts +0 -265
  114. package/dist/core/types.js +0 -48
  115. package/dist/hooks/context.d.ts +0 -147
  116. package/dist/hooks/context.js +0 -334
  117. package/dist/hooks/useContext.d.ts +0 -113
  118. package/dist/hooks/useContext.js +0 -169
  119. package/dist/hooks/useEffect.d.ts +0 -105
  120. package/dist/hooks/useEffect.js +0 -540
  121. package/dist/hooks/useInstance.d.ts +0 -139
  122. package/dist/hooks/useInstance.js +0 -455
  123. package/dist/hooks/useState.d.ts +0 -120
  124. package/dist/hooks/useState.js +0 -298
  125. package/dist/jsx.d.ts +0 -143
  126. package/dist/jsx.js +0 -76
  127. package/dist/providers/DummyBackendProvider.d.ts +0 -193
  128. package/dist/providers/DummyBackendProvider.js +0 -189
  129. package/dist/providers/DummyCloudProvider.d.ts +0 -128
  130. package/dist/providers/DummyCloudProvider.js +0 -157
  131. package/dist/providers/IBackendProvider.d.ts +0 -177
  132. package/dist/providers/IBackendProvider.js +0 -31
  133. package/dist/providers/ICloudProvider.d.ts +0 -230
  134. package/dist/providers/ICloudProvider.js +0 -31
  135. package/dist/providers/index.d.ts +0 -31
  136. package/dist/providers/index.js +0 -31
  137. package/dist/test-event-callbacks.d.ts +0 -0
  138. package/dist/test-event-callbacks.js +0 -1
  139. package/dist/utils/Logger.d.ts +0 -144
  140. package/dist/utils/Logger.js +0 -220
  141. package/dist/utils/Output.d.ts +0 -161
  142. package/dist/utils/Output.js +0 -401
  143. package/dist/utils/deepEqual.d.ts +0 -71
  144. package/dist/utils/deepEqual.js +0 -276
  145. package/dist/utils/naming.d.ts +0 -241
  146. package/dist/utils/naming.js +0 -376
@@ -1,183 +0,0 @@
1
- "use strict";
2
- /**
3
-
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
-
6
- * you may not use this file except in compliance with the License.
7
-
8
- * You may obtain a copy of the License at
9
-
10
- *
11
-
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
-
14
- *
15
-
16
- * Unless required by applicable law or agreed to in writing, software
17
-
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
-
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
-
22
- * See the License for the specific language governing permissions and
23
-
24
- * limitations under the License.
25
-
26
- *
27
-
28
- * Copyright 2025 Daniel Coutinho Ribeiro
29
-
30
- */
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.CLIContextManager = void 0;
33
- /**
34
- * CLI Context - shared context for all CLI commands
35
- * Handles entry file loading and CReact instance creation
36
- */
37
- const path_1 = require("path");
38
- const fs_1 = require("fs");
39
- const Logger_1 = require("../../utils/Logger");
40
- const logger = Logger_1.LoggerFactory.getLogger('cli');
41
- /**
42
- * CLI Context Manager - handles entry file loading and instance creation
43
- */
44
- class CLIContextManager {
45
- /**
46
- * Find entry file with fallback logic
47
- */
48
- static findEntryFile(specifiedPath) {
49
- let entryPath = specifiedPath || 'index.ts';
50
- // If default index.ts doesn't exist, try other common entry files
51
- if (entryPath === 'index.ts' && !(0, fs_1.existsSync)((0, path_1.resolve)(process.cwd(), entryPath))) {
52
- const alternatives = ['index.tsx', 'index.js', 'index.jsx', 'app.ts', 'app.tsx'];
53
- for (const alt of alternatives) {
54
- if ((0, fs_1.existsSync)((0, path_1.resolve)(process.cwd(), alt))) {
55
- return alt;
56
- }
57
- }
58
- throw new Error(`Entry file not found: ${entryPath}. Tried: ${alternatives.join(', ')}`);
59
- }
60
- // Final check if entry file exists
61
- if (!(0, fs_1.existsSync)((0, path_1.resolve)(process.cwd(), entryPath))) {
62
- throw new Error(`Entry file not found: ${entryPath}`);
63
- }
64
- return entryPath;
65
- }
66
- /**
67
- * Load entry file and create CReact instance using configured providers
68
- * This is the React way - load configuration, then create instances as needed
69
- */
70
- static async createCLIInstance(entryPath, verbose = false) {
71
- const absoluteEntryPath = (0, path_1.resolve)(process.cwd(), entryPath);
72
- // Handle TypeScript files
73
- const fileExtension = (0, path_1.extname)(entryPath);
74
- const isTypeScript = ['.ts', '.tsx'].includes(fileExtension);
75
- if (isTypeScript) {
76
- try {
77
- const { dirname } = require('path');
78
- const entryDir = dirname(absoluteEntryPath);
79
- const localTsConfig = (0, path_1.resolve)(entryDir, 'tsconfig.json');
80
- // Use ts-node with explicit JSX configuration for CReact
81
- require('ts-node').register({
82
- project: (0, fs_1.existsSync)(localTsConfig) ? localTsConfig : undefined,
83
- transpileOnly: true, // Faster compilation, skip type checking (IDE handles that)
84
- compilerOptions: {
85
- module: 'commonjs',
86
- target: 'es2020',
87
- jsx: 'react',
88
- jsxFactory: 'CReact.createElement',
89
- jsxFragmentFactory: 'CReact.Fragment',
90
- },
91
- });
92
- if (verbose) {
93
- logger.debug(`TypeScript loader registered (ts-node)`);
94
- if ((0, fs_1.existsSync)(localTsConfig)) {
95
- logger.debug(`Using tsconfig: ${localTsConfig}`);
96
- }
97
- }
98
- }
99
- catch (tsNodeError) {
100
- throw new Error('TypeScript entry files require ts-node. Install with: npm install --save-dev ts-node');
101
- }
102
- }
103
- // Clear require cache to allow reloading
104
- delete require.cache[absoluteEntryPath];
105
- if (verbose)
106
- logger.debug('Cleared module cache');
107
- // Load the entry module - this configures the providers
108
- let entryModule;
109
- try {
110
- entryModule = require(absoluteEntryPath);
111
- if (verbose)
112
- logger.debug('Entry module loaded successfully');
113
- }
114
- catch (loadError) {
115
- throw new Error(`Could not load entry file: ${entryPath}\nError: ${loadError.message}`);
116
- }
117
- // IMPORTANT: Get the CReact class from the entry module's require cache
118
- // This ensures we use the same instance that the entry file configured
119
- // The entry file imports CReact, which gets cached in require.cache
120
- // We need to find that cached module and use its CReact instance
121
- let CReactClass = null;
122
- // Look through require.cache to find the CReact module that was loaded
123
- for (const [modulePath, cachedModule] of Object.entries(require.cache)) {
124
- if (modulePath.includes('CReact') && cachedModule?.exports?.CReact) {
125
- CReactClass = cachedModule.exports.CReact;
126
- if (verbose)
127
- logger.debug('Found CReact in require cache:', modulePath);
128
- break;
129
- }
130
- }
131
- if (!CReactClass) {
132
- throw new Error('Could not find CReact class in require cache. Entry file must import CReact.');
133
- }
134
- // Debug: Check provider status
135
- if (verbose) {
136
- logger.debug('Checking providers after module load:');
137
- logger.debug(' cloudProvider:', !!CReactClass.cloudProvider);
138
- logger.debug(' backendProvider:', !!CReactClass.backendProvider);
139
- }
140
- // Validate that providers are configured (they should be after loading entry file)
141
- if (!CReactClass.cloudProvider || !CReactClass.backendProvider) {
142
- throw new Error('CReact providers must be configured in entry file before calling renderCloudDOM');
143
- }
144
- // Create a CLI instance using the same providers (React way)
145
- const instance = new CReactClass({
146
- cloudProvider: CReactClass.cloudProvider,
147
- backendProvider: CReactClass.backendProvider,
148
- migrationMap: CReactClass.migrationMap,
149
- asyncTimeout: CReactClass.asyncTimeout,
150
- });
151
- // Get the JSX element from the entry module
152
- // We need to extract the JSX element that was passed to renderCloudDOM
153
- // For now, we'll get it from the default export promise, but we need the JSX
154
- let cloudDOMPromise = entryModule.default;
155
- // If default export is a function, call it to get the promise
156
- if (typeof cloudDOMPromise === 'function') {
157
- cloudDOMPromise = cloudDOMPromise();
158
- }
159
- if (!cloudDOMPromise || typeof cloudDOMPromise.then !== 'function') {
160
- throw new Error('Entry file must export a default Promise from CReact.renderCloudDOM() or a function that returns one');
161
- }
162
- // Await the CloudDOM promise to ensure providers are configured
163
- const cloudDOM = await cloudDOMPromise;
164
- if (!Array.isArray(cloudDOM)) {
165
- throw new Error('CloudDOM must be an array of nodes');
166
- }
167
- // Get the instance that was used to build the CloudDOM (has the Fiber tree)
168
- const lastInstanceData = CReactClass.getLastInstance();
169
- if (lastInstanceData) {
170
- // Use the same instance that built the CloudDOM
171
- return {
172
- instance: lastInstanceData.instance,
173
- stackName: lastInstanceData.stackName,
174
- cloudDOM,
175
- entryPath,
176
- };
177
- }
178
- // Fallback: Extract stack name from environment or use default
179
- const stackName = process.env.STACK_NAME || 'default';
180
- return { instance, stackName, cloudDOM, entryPath };
181
- }
182
- }
183
- exports.CLIContextManager = CLIContextManager;
@@ -1,64 +0,0 @@
1
- /**
2
-
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
-
5
- * you may not use this file except in compliance with the License.
6
-
7
- * You may obtain a copy of the License at
8
-
9
- *
10
-
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
-
13
- *
14
-
15
- * Unless required by applicable law or agreed to in writing, software
16
-
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
-
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
-
21
- * See the License for the specific language governing permissions and
22
-
23
- * limitations under the License.
24
-
25
- *
26
-
27
- * Copyright 2025 Daniel Coutinho Ribeiro
28
-
29
- */
30
- /**
31
- * Command Registry - manages available CLI commands
32
- */
33
- import { BaseCommand } from './BaseCommand';
34
- import { CLIContext } from './CLIContext';
35
- export type CommandConstructor = new (context: CLIContext) => BaseCommand;
36
- /**
37
- * Registry of available CLI commands
38
- */
39
- export declare class CommandRegistry {
40
- private static commands;
41
- /**
42
- * Get all available command names
43
- */
44
- static getCommandNames(): string[];
45
- /**
46
- * Check if command exists
47
- */
48
- static hasCommand(name: string): boolean;
49
- /**
50
- * Create command instance
51
- */
52
- static createCommand(name: string, context: CLIContext): BaseCommand;
53
- /**
54
- * Register a new command
55
- */
56
- static registerCommand(name: string, commandClass: CommandConstructor): void;
57
- /**
58
- * Get command help information
59
- */
60
- static getCommandHelp(): Array<{
61
- name: string;
62
- description: string;
63
- }>;
64
- }
@@ -1,89 +0,0 @@
1
- "use strict";
2
- /**
3
-
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
-
6
- * you may not use this file except in compliance with the License.
7
-
8
- * You may obtain a copy of the License at
9
-
10
- *
11
-
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
-
14
- *
15
-
16
- * Unless required by applicable law or agreed to in writing, software
17
-
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
-
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
-
22
- * See the License for the specific language governing permissions and
23
-
24
- * limitations under the License.
25
-
26
- *
27
-
28
- * Copyright 2025 Daniel Coutinho Ribeiro
29
-
30
- */
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.CommandRegistry = void 0;
33
- const commands_1 = require("../commands");
34
- /**
35
- * Registry of available CLI commands
36
- */
37
- class CommandRegistry {
38
- /**
39
- * Get all available command names
40
- */
41
- static getCommandNames() {
42
- return Array.from(this.commands.keys());
43
- }
44
- /**
45
- * Check if command exists
46
- */
47
- static hasCommand(name) {
48
- return this.commands.has(name);
49
- }
50
- /**
51
- * Create command instance
52
- */
53
- static createCommand(name, context) {
54
- const CommandClass = this.commands.get(name);
55
- if (!CommandClass) {
56
- throw new Error(`Unknown command: ${name}`);
57
- }
58
- return new CommandClass(context);
59
- }
60
- /**
61
- * Register a new command
62
- */
63
- static registerCommand(name, commandClass) {
64
- this.commands.set(name, commandClass);
65
- }
66
- /**
67
- * Get command help information
68
- */
69
- static getCommandHelp() {
70
- const help = [];
71
- for (const [name, CommandClass] of this.commands.entries()) {
72
- // Create temporary instance to get description
73
- const tempContext = { args: [], flags: {} };
74
- const instance = new CommandClass(tempContext);
75
- help.push({
76
- name,
77
- description: instance.getDescription(),
78
- });
79
- }
80
- return help;
81
- }
82
- }
83
- exports.CommandRegistry = CommandRegistry;
84
- CommandRegistry.commands = new Map([
85
- ['build', commands_1.BuildCommand],
86
- ['plan', commands_1.PlanCommand],
87
- ['deploy', commands_1.DeployCommand],
88
- ['dev', commands_1.DevCommand],
89
- ]);
@@ -1,36 +0,0 @@
1
- /**
2
-
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
-
5
- * you may not use this file except in compliance with the License.
6
-
7
- * You may obtain a copy of the License at
8
-
9
- *
10
-
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
-
13
- *
14
-
15
- * Unless required by applicable law or agreed to in writing, software
16
-
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
-
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
-
21
- * See the License for the specific language governing permissions and
22
-
23
- * limitations under the License.
24
-
25
- *
26
-
27
- * Copyright 2025 Daniel Coutinho Ribeiro
28
-
29
- */
30
- /**
31
- * CLI Core exports
32
- */
33
- export { BaseCommand, CommandResult } from './BaseCommand';
34
- export { CLIContext, CLIFlags, CLIContextManager } from './CLIContext';
35
- export { CommandRegistry } from './CommandRegistry';
36
- export { ArgumentParser } from './ArgumentParser';
@@ -1,43 +0,0 @@
1
- "use strict";
2
- /**
3
-
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
-
6
- * you may not use this file except in compliance with the License.
7
-
8
- * You may obtain a copy of the License at
9
-
10
- *
11
-
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
-
14
- *
15
-
16
- * Unless required by applicable law or agreed to in writing, software
17
-
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
-
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
-
22
- * See the License for the specific language governing permissions and
23
-
24
- * limitations under the License.
25
-
26
- *
27
-
28
- * Copyright 2025 Daniel Coutinho Ribeiro
29
-
30
- */
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.ArgumentParser = exports.CommandRegistry = exports.CLIContextManager = exports.BaseCommand = void 0;
33
- /**
34
- * CLI Core exports
35
- */
36
- var BaseCommand_1 = require("./BaseCommand");
37
- Object.defineProperty(exports, "BaseCommand", { enumerable: true, get: function () { return BaseCommand_1.BaseCommand; } });
38
- var CLIContext_1 = require("./CLIContext");
39
- Object.defineProperty(exports, "CLIContextManager", { enumerable: true, get: function () { return CLIContext_1.CLIContextManager; } });
40
- var CommandRegistry_1 = require("./CommandRegistry");
41
- Object.defineProperty(exports, "CommandRegistry", { enumerable: true, get: function () { return CommandRegistry_1.CommandRegistry; } });
42
- var ArgumentParser_1 = require("./ArgumentParser");
43
- Object.defineProperty(exports, "ArgumentParser", { enumerable: true, get: function () { return ArgumentParser_1.ArgumentParser; } });
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
-
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
-
6
- * you may not use this file except in compliance with the License.
7
-
8
- * You may obtain a copy of the License at
9
-
10
- *
11
-
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
-
14
- *
15
-
16
- * Unless required by applicable law or agreed to in writing, software
17
-
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
-
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
-
22
- * See the License for the specific language governing permissions and
23
-
24
- * limitations under the License.
25
-
26
- *
27
-
28
- * Copyright 2025 Daniel Coutinho Ribeiro
29
-
30
- */
31
- /**
32
- * Main CLI entry point
33
- */
34
- declare function main(): Promise<void>;
35
- export { main };
package/dist/cli/index.js DELETED
@@ -1,100 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
-
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
-
7
- * you may not use this file except in compliance with the License.
8
-
9
- * You may obtain a copy of the License at
10
-
11
- *
12
-
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
-
15
- *
16
-
17
- * Unless required by applicable law or agreed to in writing, software
18
-
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
-
21
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
-
23
- * See the License for the specific language governing permissions and
24
-
25
- * limitations under the License.
26
-
27
- *
28
-
29
- * Copyright 2025 Daniel Coutinho Ribeiro
30
-
31
- */
32
- Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.main = main;
34
- /**
35
- * CReact CLI Entry Point - Clean modular architecture
36
- *
37
- * This is the main entry point for the CReact CLI.
38
- * It uses a clean, modular architecture with:
39
- * - Separate command classes
40
- * - Dependency injection through CLIContext
41
- * - Proper error handling
42
- * - Consistent output formatting
43
- */
44
- const core_1 = require("./core");
45
- const Logger_1 = require("../utils/Logger");
46
- const logger = Logger_1.LoggerFactory.getLogger('cli');
47
- const VERSION = '0.1.0';
48
- /**
49
- * Main CLI entry point
50
- */
51
- async function main() {
52
- try {
53
- // Parse command line arguments
54
- const context = core_1.ArgumentParser.parse(process.argv);
55
- const commandName = context.args[0];
56
- // Handle help and version flags
57
- if (context.flags.help || context.flags.h) {
58
- core_1.ArgumentParser.showHelp();
59
- process.exit(0);
60
- }
61
- if (context.flags.version || context.flags.V) {
62
- logger.info(`CReact CLI v${VERSION}`);
63
- process.exit(0);
64
- }
65
- // Validate command exists
66
- if (!core_1.CommandRegistry.hasCommand(commandName)) {
67
- logger.error(`Error: Unknown command '${commandName}'`);
68
- logger.error('');
69
- core_1.ArgumentParser.showHelp();
70
- process.exit(1);
71
- }
72
- // Create and execute command
73
- const command = core_1.CommandRegistry.createCommand(commandName, context);
74
- const result = await command.execute();
75
- // Exit with appropriate code
76
- process.exit(result.exitCode);
77
- }
78
- catch (error) {
79
- // Handle unexpected errors
80
- logger.error(`Fatal error: ${error.message}`);
81
- if (process.env.CREACT_DEBUG === 'true') {
82
- logger.error(error.stack || '');
83
- }
84
- process.exit(1);
85
- }
86
- }
87
- // Handle unhandled promise rejections
88
- process.on('unhandledRejection', (reason, promise) => {
89
- logger.error('Unhandled promise rejection:', reason);
90
- process.exit(1);
91
- });
92
- // Handle uncaught exceptions
93
- process.on('uncaughtException', (error) => {
94
- logger.error('Uncaught exception:', error);
95
- process.exit(1);
96
- });
97
- // Run CLI
98
- if (require.main === module) {
99
- main();
100
- }