@creact-labs/creact 0.1.8 → 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.
- package/README.md +73 -22
- package/dist/cli.d.ts +11 -0
- package/dist/cli.js +88 -0
- package/dist/index.d.ts +19 -44
- package/dist/index.js +20 -68
- package/dist/jsx/index.d.ts +2 -0
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/jsx-dev-runtime.d.ts +4 -0
- package/dist/jsx/jsx-dev-runtime.js +4 -0
- package/dist/jsx/jsx-runtime.d.ts +38 -0
- package/dist/jsx/jsx-runtime.js +38 -0
- package/dist/jsx/types.d.ts +12 -0
- package/dist/jsx/types.js +4 -0
- package/dist/primitives/context.d.ts +34 -0
- package/dist/primitives/context.js +63 -0
- package/dist/primitives/index.d.ts +3 -0
- package/dist/primitives/index.js +3 -0
- package/dist/primitives/instance.d.ts +72 -0
- package/dist/primitives/instance.js +235 -0
- package/dist/primitives/store.d.ts +22 -0
- package/dist/primitives/store.js +97 -0
- package/dist/provider/backend.d.ts +110 -0
- package/dist/provider/backend.js +37 -0
- package/dist/provider/interface.d.ts +48 -0
- package/dist/provider/interface.js +39 -0
- package/dist/reactive/effect.d.ts +11 -0
- package/dist/reactive/effect.js +42 -0
- package/dist/reactive/index.d.ts +3 -0
- package/dist/reactive/index.js +3 -0
- package/dist/reactive/signal.d.ts +32 -0
- package/dist/reactive/signal.js +60 -0
- package/dist/reactive/tracking.d.ts +41 -0
- package/dist/reactive/tracking.js +161 -0
- package/dist/runtime/fiber.d.ts +21 -0
- package/dist/runtime/fiber.js +16 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/reconcile.d.ts +66 -0
- package/dist/runtime/reconcile.js +210 -0
- package/dist/runtime/render.d.ts +42 -0
- package/dist/runtime/render.js +231 -0
- package/dist/runtime/run.d.ts +119 -0
- package/dist/runtime/run.js +334 -0
- package/dist/runtime/state-machine.d.ts +95 -0
- package/dist/runtime/state-machine.js +209 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.js +4 -0
- package/package.json +11 -24
- package/dist/cli/commands/BuildCommand.d.ts +0 -40
- package/dist/cli/commands/BuildCommand.js +0 -151
- package/dist/cli/commands/DeployCommand.d.ts +0 -38
- package/dist/cli/commands/DeployCommand.js +0 -194
- package/dist/cli/commands/DevCommand.d.ts +0 -52
- package/dist/cli/commands/DevCommand.js +0 -394
- package/dist/cli/commands/PlanCommand.d.ts +0 -39
- package/dist/cli/commands/PlanCommand.js +0 -164
- package/dist/cli/commands/index.d.ts +0 -36
- package/dist/cli/commands/index.js +0 -43
- package/dist/cli/core/ArgumentParser.d.ts +0 -46
- package/dist/cli/core/ArgumentParser.js +0 -127
- package/dist/cli/core/BaseCommand.d.ts +0 -75
- package/dist/cli/core/BaseCommand.js +0 -95
- package/dist/cli/core/CLIContext.d.ts +0 -68
- package/dist/cli/core/CLIContext.js +0 -183
- package/dist/cli/core/CommandRegistry.d.ts +0 -64
- package/dist/cli/core/CommandRegistry.js +0 -89
- package/dist/cli/core/index.d.ts +0 -36
- package/dist/cli/core/index.js +0 -43
- package/dist/cli/index.d.ts +0 -35
- package/dist/cli/index.js +0 -100
- package/dist/cli/output.d.ts +0 -204
- package/dist/cli/output.js +0 -437
- package/dist/cli/utils.d.ts +0 -59
- package/dist/cli/utils.js +0 -76
- package/dist/context/createContext.d.ts +0 -90
- package/dist/context/createContext.js +0 -113
- package/dist/context/index.d.ts +0 -30
- package/dist/context/index.js +0 -35
- package/dist/core/CReact.d.ts +0 -409
- package/dist/core/CReact.js +0 -1151
- package/dist/core/CloudDOMBuilder.d.ts +0 -447
- package/dist/core/CloudDOMBuilder.js +0 -1234
- package/dist/core/ContextDependencyTracker.d.ts +0 -165
- package/dist/core/ContextDependencyTracker.js +0 -448
- package/dist/core/ErrorRecoveryManager.d.ts +0 -145
- package/dist/core/ErrorRecoveryManager.js +0 -443
- package/dist/core/EventBus.d.ts +0 -91
- package/dist/core/EventBus.js +0 -185
- package/dist/core/ProviderOutputTracker.d.ts +0 -211
- package/dist/core/ProviderOutputTracker.js +0 -476
- package/dist/core/ReactiveUpdateQueue.d.ts +0 -76
- package/dist/core/ReactiveUpdateQueue.js +0 -121
- package/dist/core/Reconciler.d.ts +0 -415
- package/dist/core/Reconciler.js +0 -1044
- package/dist/core/RenderScheduler.d.ts +0 -153
- package/dist/core/RenderScheduler.js +0 -519
- package/dist/core/Renderer.d.ts +0 -336
- package/dist/core/Renderer.js +0 -944
- package/dist/core/Runtime.d.ts +0 -246
- package/dist/core/Runtime.js +0 -640
- package/dist/core/StateBindingManager.d.ts +0 -121
- package/dist/core/StateBindingManager.js +0 -309
- package/dist/core/StateMachine.d.ts +0 -441
- package/dist/core/StateMachine.js +0 -883
- package/dist/core/StructuralChangeDetector.d.ts +0 -140
- package/dist/core/StructuralChangeDetector.js +0 -363
- package/dist/core/Validator.d.ts +0 -127
- package/dist/core/Validator.js +0 -279
- package/dist/core/errors.d.ts +0 -153
- package/dist/core/errors.js +0 -202
- package/dist/core/index.d.ts +0 -38
- package/dist/core/index.js +0 -64
- package/dist/core/types.d.ts +0 -265
- package/dist/core/types.js +0 -48
- package/dist/hooks/context.d.ts +0 -147
- package/dist/hooks/context.js +0 -334
- package/dist/hooks/useContext.d.ts +0 -113
- package/dist/hooks/useContext.js +0 -169
- package/dist/hooks/useEffect.d.ts +0 -105
- package/dist/hooks/useEffect.js +0 -540
- package/dist/hooks/useInstance.d.ts +0 -139
- package/dist/hooks/useInstance.js +0 -455
- package/dist/hooks/useState.d.ts +0 -120
- package/dist/hooks/useState.js +0 -298
- package/dist/jsx.d.ts +0 -143
- package/dist/jsx.js +0 -76
- package/dist/providers/DummyBackendProvider.d.ts +0 -193
- package/dist/providers/DummyBackendProvider.js +0 -189
- package/dist/providers/DummyCloudProvider.d.ts +0 -128
- package/dist/providers/DummyCloudProvider.js +0 -157
- package/dist/providers/IBackendProvider.d.ts +0 -177
- package/dist/providers/IBackendProvider.js +0 -31
- package/dist/providers/ICloudProvider.d.ts +0 -230
- package/dist/providers/ICloudProvider.js +0 -31
- package/dist/providers/index.d.ts +0 -31
- package/dist/providers/index.js +0 -31
- package/dist/test-event-callbacks.d.ts +0 -0
- package/dist/test-event-callbacks.js +0 -1
- package/dist/utils/Logger.d.ts +0 -144
- package/dist/utils/Logger.js +0 -220
- package/dist/utils/Output.d.ts +0 -161
- package/dist/utils/Output.js +0 -401
- package/dist/utils/deepEqual.d.ts +0 -71
- package/dist/utils/deepEqual.js +0 -276
- package/dist/utils/naming.d.ts +0 -241
- 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
|
-
]);
|
package/dist/cli/core/index.d.ts
DELETED
|
@@ -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';
|
package/dist/cli/core/index.js
DELETED
|
@@ -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; } });
|
package/dist/cli/index.d.ts
DELETED
|
@@ -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
|
-
}
|