@creact-labs/creact 0.1.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 (103) hide show
  1. package/LICENSE +212 -0
  2. package/README.md +379 -0
  3. package/dist/cli/commands/BuildCommand.d.ts +40 -0
  4. package/dist/cli/commands/BuildCommand.js +151 -0
  5. package/dist/cli/commands/DeployCommand.d.ts +38 -0
  6. package/dist/cli/commands/DeployCommand.js +194 -0
  7. package/dist/cli/commands/DevCommand.d.ts +52 -0
  8. package/dist/cli/commands/DevCommand.js +385 -0
  9. package/dist/cli/commands/PlanCommand.d.ts +39 -0
  10. package/dist/cli/commands/PlanCommand.js +164 -0
  11. package/dist/cli/commands/index.d.ts +36 -0
  12. package/dist/cli/commands/index.js +43 -0
  13. package/dist/cli/core/ArgumentParser.d.ts +46 -0
  14. package/dist/cli/core/ArgumentParser.js +127 -0
  15. package/dist/cli/core/BaseCommand.d.ts +75 -0
  16. package/dist/cli/core/BaseCommand.js +95 -0
  17. package/dist/cli/core/CLIContext.d.ts +68 -0
  18. package/dist/cli/core/CLIContext.js +183 -0
  19. package/dist/cli/core/CommandRegistry.d.ts +64 -0
  20. package/dist/cli/core/CommandRegistry.js +89 -0
  21. package/dist/cli/core/index.d.ts +36 -0
  22. package/dist/cli/core/index.js +43 -0
  23. package/dist/cli/index.d.ts +35 -0
  24. package/dist/cli/index.js +100 -0
  25. package/dist/cli/output.d.ts +204 -0
  26. package/dist/cli/output.js +437 -0
  27. package/dist/cli/utils.d.ts +59 -0
  28. package/dist/cli/utils.js +76 -0
  29. package/dist/context/createContext.d.ts +90 -0
  30. package/dist/context/createContext.js +113 -0
  31. package/dist/context/index.d.ts +30 -0
  32. package/dist/context/index.js +35 -0
  33. package/dist/core/CReact.d.ts +409 -0
  34. package/dist/core/CReact.js +1127 -0
  35. package/dist/core/CloudDOMBuilder.d.ts +429 -0
  36. package/dist/core/CloudDOMBuilder.js +1198 -0
  37. package/dist/core/ContextDependencyTracker.d.ts +165 -0
  38. package/dist/core/ContextDependencyTracker.js +448 -0
  39. package/dist/core/ErrorRecoveryManager.d.ts +145 -0
  40. package/dist/core/ErrorRecoveryManager.js +443 -0
  41. package/dist/core/EventBus.d.ts +91 -0
  42. package/dist/core/EventBus.js +185 -0
  43. package/dist/core/ProviderOutputTracker.d.ts +211 -0
  44. package/dist/core/ProviderOutputTracker.js +476 -0
  45. package/dist/core/ReactiveUpdateQueue.d.ts +76 -0
  46. package/dist/core/ReactiveUpdateQueue.js +121 -0
  47. package/dist/core/Reconciler.d.ts +415 -0
  48. package/dist/core/Reconciler.js +1037 -0
  49. package/dist/core/RenderScheduler.d.ts +153 -0
  50. package/dist/core/RenderScheduler.js +519 -0
  51. package/dist/core/Renderer.d.ts +276 -0
  52. package/dist/core/Renderer.js +791 -0
  53. package/dist/core/Runtime.d.ts +246 -0
  54. package/dist/core/Runtime.js +640 -0
  55. package/dist/core/StateBindingManager.d.ts +121 -0
  56. package/dist/core/StateBindingManager.js +309 -0
  57. package/dist/core/StateMachine.d.ts +424 -0
  58. package/dist/core/StateMachine.js +787 -0
  59. package/dist/core/StructuralChangeDetector.d.ts +140 -0
  60. package/dist/core/StructuralChangeDetector.js +363 -0
  61. package/dist/core/Validator.d.ts +127 -0
  62. package/dist/core/Validator.js +279 -0
  63. package/dist/core/errors.d.ts +153 -0
  64. package/dist/core/errors.js +202 -0
  65. package/dist/core/index.d.ts +38 -0
  66. package/dist/core/index.js +64 -0
  67. package/dist/core/types.d.ts +263 -0
  68. package/dist/core/types.js +48 -0
  69. package/dist/hooks/context.d.ts +147 -0
  70. package/dist/hooks/context.js +334 -0
  71. package/dist/hooks/useContext.d.ts +113 -0
  72. package/dist/hooks/useContext.js +169 -0
  73. package/dist/hooks/useEffect.d.ts +105 -0
  74. package/dist/hooks/useEffect.js +540 -0
  75. package/dist/hooks/useInstance.d.ts +139 -0
  76. package/dist/hooks/useInstance.js +441 -0
  77. package/dist/hooks/useState.d.ts +120 -0
  78. package/dist/hooks/useState.js +298 -0
  79. package/dist/index.d.ts +46 -0
  80. package/dist/index.js +70 -0
  81. package/dist/jsx.d.ts +64 -0
  82. package/dist/jsx.js +76 -0
  83. package/dist/providers/DummyBackendProvider.d.ts +193 -0
  84. package/dist/providers/DummyBackendProvider.js +189 -0
  85. package/dist/providers/DummyCloudProvider.d.ts +128 -0
  86. package/dist/providers/DummyCloudProvider.js +157 -0
  87. package/dist/providers/IBackendProvider.d.ts +177 -0
  88. package/dist/providers/IBackendProvider.js +31 -0
  89. package/dist/providers/ICloudProvider.d.ts +146 -0
  90. package/dist/providers/ICloudProvider.js +31 -0
  91. package/dist/providers/index.d.ts +31 -0
  92. package/dist/providers/index.js +31 -0
  93. package/dist/test-event-callbacks.d.ts +0 -0
  94. package/dist/test-event-callbacks.js +1 -0
  95. package/dist/utils/Logger.d.ts +144 -0
  96. package/dist/utils/Logger.js +220 -0
  97. package/dist/utils/Output.d.ts +161 -0
  98. package/dist/utils/Output.js +401 -0
  99. package/dist/utils/deepEqual.d.ts +71 -0
  100. package/dist/utils/deepEqual.js +276 -0
  101. package/dist/utils/naming.d.ts +241 -0
  102. package/dist/utils/naming.js +376 -0
  103. package/package.json +87 -0
@@ -0,0 +1,276 @@
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
+ import { FiberNode, JSXElement, ReRenderReason } from './types';
31
+ import { RenderScheduler } from './RenderScheduler';
32
+ /**
33
+ * Renderer transforms JSX into a Fiber tree
34
+ *
35
+ * The Fiber tree is an intermediate representation that includes:
36
+ * - All components (containers + resources)
37
+ * - Hierarchical paths for identity tracking
38
+ * - Props and children resolved recursively
39
+ *
40
+ * Enhanced with context reactivity:
41
+ * - Tracks context provider value changes
42
+ * - Integrates with ContextDependencyTracker for selective re-rendering
43
+ * - Detects when context values change and triggers appropriate re-renders
44
+ *
45
+ * No dependencies injected - pure transformation logic
46
+ */
47
+ export declare class Renderer {
48
+ private currentFiber;
49
+ private currentPath;
50
+ private renderScheduler?;
51
+ private contextDependencyTracker?;
52
+ private structuralChangeDetector?;
53
+ private previousStructures;
54
+ /**
55
+ * Render JSX to Fiber tree
56
+ *
57
+ * @param jsx - JSX element to render
58
+ * @returns Root Fiber node
59
+ */
60
+ render(jsx: JSXElement): FiberNode;
61
+ /**
62
+ * Recursively render a JSX element to a Fiber node
63
+ *
64
+ * @param element - JSX element
65
+ * @param parentPath - Path from parent
66
+ * @param siblingIndex - Sibling index for automatic key generation (default 0)
67
+ * @returns Fiber node
68
+ */
69
+ private renderElement;
70
+ /**
71
+ * Execute a component function to resolve its children
72
+ *
73
+ * Note: setRenderContext should already be called by renderComponent before this
74
+ *
75
+ * @param type - Component type (function or class)
76
+ * @param props - Props to pass
77
+ * @param path - Current path (for context)
78
+ * @returns Children elements
79
+ */
80
+ private executeComponent;
81
+ /**
82
+ * Render children elements
83
+ *
84
+ * @param children - Children to render (can be array, single element, or null)
85
+ * @param parentPath - Path from parent
86
+ * @returns Array of Fiber nodes
87
+ */
88
+ private renderChildren;
89
+ /**
90
+ * Get a human-readable type name for warning messages
91
+ *
92
+ * @param type - Component type
93
+ * @returns Type name string
94
+ */
95
+ private getTypeName;
96
+ /**
97
+ * Get current path (for hooks to access)
98
+ */
99
+ getCurrentPath(): string[];
100
+ /**
101
+ * Get current Fiber for post-deployment effects
102
+ *
103
+ * @returns Current Fiber node or null
104
+ */
105
+ getCurrentFiber(): FiberNode | null;
106
+ /**
107
+ * Set the RenderScheduler for selective re-rendering integration
108
+ *
109
+ * @param scheduler - RenderScheduler instance
110
+ */
111
+ setRenderScheduler(scheduler: RenderScheduler): void;
112
+ /**
113
+ * Set the ContextDependencyTracker for context reactivity
114
+ *
115
+ * @param tracker - ContextDependencyTracker instance
116
+ */
117
+ setContextDependencyTracker(tracker: any): void;
118
+ /**
119
+ * Set structural change detector for topology change detection
120
+ * @param detector - StructuralChangeDetector instance
121
+ */
122
+ setStructuralChangeDetector(detector: any): void;
123
+ /**
124
+ * Handle context provider value changes
125
+ * Called when a context provider's value prop changes
126
+ *
127
+ * @param contextId - Context identifier
128
+ * @param newValue - New context value
129
+ */
130
+ private handleContextProviderValueChange;
131
+ /**
132
+ * Detect structural changes in a component
133
+ * Compares the current structure with the previous render
134
+ *
135
+ * @param fiber - Fiber node to check for structural changes
136
+ * @returns True if structural changes were detected
137
+ */
138
+ private detectStructuralChanges;
139
+ /**
140
+ * Generate a structural signature for a fiber node
141
+ * This captures the essential structure that affects CloudDOM generation
142
+ *
143
+ * @param fiber - Fiber node to generate signature for
144
+ * @returns Structural signature string
145
+ */
146
+ private generateStructuralSignature;
147
+ /**
148
+ * Check for structural changes and schedule re-renders if needed
149
+ * Called during component re-execution
150
+ *
151
+ * @param fiber - Fiber node to check
152
+ */
153
+ private handleStructuralChanges;
154
+ /**
155
+ * Handle structural changes between old and new fiber trees
156
+ * Called during re-rendering to detect topology changes
157
+ *
158
+ * @param oldFiber - Previous fiber tree
159
+ * @param newFiber - New fiber tree after re-render
160
+ */
161
+ private handleStructuralChangesComparison;
162
+ /**
163
+ * Extract CloudDOM nodes from a fiber tree for structural comparison
164
+ *
165
+ * @param fiber - Fiber tree to extract CloudDOM from
166
+ * @returns Array of CloudDOM nodes
167
+ */
168
+ private extractCloudDOMFromFiber;
169
+ /**
170
+ * Re-render specific components with selective updates
171
+ * This method re-executes only the specified components and their children
172
+ *
173
+ * @param components - Array of fiber nodes to re-render
174
+ * @param reason - Reason for the re-render
175
+ * @returns Updated root fiber node
176
+ */
177
+ reRenderComponents(components: FiberNode[], reason: ReRenderReason): FiberNode;
178
+ /**
179
+ * Find components that depend on changed state/outputs
180
+ * This method traverses the fiber tree to find dependent components
181
+ *
182
+ * @param changedFiber - Fiber node that changed
183
+ * @returns Set of fiber nodes that depend on the changed fiber
184
+ */
185
+ findDependentComponents(changedFiber: FiberNode): Set<FiberNode>;
186
+ /**
187
+ * Track component dependencies during render
188
+ * This builds the dependency graph for selective re-rendering
189
+ *
190
+ * @param components - Components being rendered
191
+ */
192
+ private trackDependenciesDuringRender;
193
+ /**
194
+ * Build dependency graph for a component
195
+ * This analyzes the component's usage patterns to determine dependencies
196
+ *
197
+ * @param component - Component to analyze
198
+ */
199
+ private buildDependencyGraph;
200
+ /**
201
+ * Find the context provider fiber for a given context ID
202
+ * This traverses up the fiber tree to find the provider
203
+ *
204
+ * @param contextId - Context identifier to find provider for
205
+ * @returns Provider fiber node or null if not found
206
+ */
207
+ private findContextProvider;
208
+ /**
209
+ * Recursively search for a context provider in the fiber tree
210
+ *
211
+ * @param fiber - Current fiber to search
212
+ * @param contextId - Context ID to find
213
+ * @returns Provider fiber or null
214
+ */
215
+ private searchForProvider;
216
+ /**
217
+ * Perform selective re-render of specific components
218
+ * Only re-executes components that need updates
219
+ *
220
+ * @param rootFiber - Root fiber node
221
+ * @param componentsToReRender - Set of components that need re-rendering
222
+ * @param reason - Reason for re-render
223
+ * @returns Updated fiber tree
224
+ */
225
+ private selectiveReRender;
226
+ /**
227
+ * Recursively perform selective re-rendering
228
+ *
229
+ * @param fiber - Current fiber node
230
+ * @param componentsToReRender - Set of components to re-render
231
+ * @param reason - Reason for re-render
232
+ * @param currentPath - Current path in the tree
233
+ */
234
+ private selectiveReRenderRecursive;
235
+ /**
236
+ * Determine if a component should be re-rendered
237
+ *
238
+ * @param fiber - Fiber node to check
239
+ * @param componentsToReRender - Set of components marked for re-rendering
240
+ * @returns True if component should be re-rendered
241
+ */
242
+ private shouldReRenderComponent;
243
+ /**
244
+ * Re-execute a component function
245
+ *
246
+ * @param fiber - Fiber node to re-execute
247
+ * @param currentPath - Current path in the tree
248
+ */
249
+ private reExecuteComponent;
250
+ /**
251
+ * Find the root component from a set of components
252
+ *
253
+ * @param components - Array of components
254
+ * @returns Root component or null
255
+ */
256
+ private findRootComponent;
257
+ /**
258
+ * Recursively find dependent components
259
+ *
260
+ * @param currentFiber - Current fiber being examined
261
+ * @param changedFiber - Fiber that changed
262
+ * @param dependents - Set to collect dependents
263
+ */
264
+ private findDependentsRecursive;
265
+ /**
266
+ * Set StateBindingManager for context dependency tracker integration
267
+ */
268
+ setStateBindingManager(stateBindingManager: any): void;
269
+ /**
270
+ * Clone a fiber node for selective updates
271
+ *
272
+ * @param fiber - Fiber to clone
273
+ * @returns Cloned fiber
274
+ */
275
+ private cloneFiberForUpdate;
276
+ }