@creact-labs/creact 0.1.8 → 0.2.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 (146) hide show
  1. package/README.md +85 -22
  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 +29 -24
  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,336 +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
- 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
- * Check if component should re-render by matching paths
237
- * This works with cloned fibers where object identity doesn't match
238
- *
239
- * @param fiber - Current fiber to check
240
- * @param componentsToReRender - Set of original fibers to re-render
241
- * @returns True if this fiber's path matches any in the set
242
- */
243
- private shouldReRenderComponentByPath;
244
- /**
245
- * Determine if a component should be re-rendered
246
- *
247
- * @param fiber - Fiber node to check
248
- * @param componentsToReRender - Set of components marked for re-rendering
249
- * @returns True if component should be re-rendered
250
- */
251
- private shouldReRenderComponent;
252
- /**
253
- * Re-execute a component function
254
- *
255
- * @param fiber - Fiber node to re-execute
256
- * @param currentPath - Current path in the tree
257
- */
258
- private reExecuteComponent;
259
- /**
260
- * Restore context stack for a fiber by traversing parent providers
261
- * This ensures useContext() gets the correct values during re-renders
262
- *
263
- * @param fiber - Fiber node to restore context for
264
- */
265
- private restoreContextStackForFiber;
266
- /**
267
- * Find all ancestor context providers for a fiber
268
- * Returns providers in order from root to the fiber's parent
269
- *
270
- * @param fiber - Fiber node to find ancestors for
271
- * @returns Array of provider fibers (root to leaf order)
272
- */
273
- private findAncestorProviders;
274
- /**
275
- * Recursively search for ancestor providers
276
- *
277
- * @param currentFiber - Current fiber being examined
278
- * @param targetFiber - Target fiber we're looking for ancestors of
279
- * @param providers - Array to collect providers
280
- * @param path - Current path of provider fibers
281
- * @returns True if targetFiber was found in this subtree
282
- */
283
- private findAncestorProvidersRecursive;
284
- /**
285
- * Find the root component from a set of components
286
- *
287
- * CRITICAL FIX: Find common ancestor instead of just shortest path
288
- * When multiple components have the same path length (e.g., multi-environment apps),
289
- * we need to find their common ancestor, not just pick the first one.
290
- *
291
- * @param components - Array of components
292
- * @returns Root component or null
293
- */
294
- private findRootComponent;
295
- /**
296
- * Find common path prefix among multiple paths
297
- *
298
- * @param paths - Array of path arrays
299
- * @returns Common prefix path
300
- */
301
- private findCommonPathPrefix;
302
- /**
303
- * Find fiber by path in the fiber tree
304
- *
305
- * @param fiber - Root fiber to search from
306
- * @param targetPath - Path to find
307
- * @returns Fiber at path or null
308
- */
309
- private findFiberByPath;
310
- /**
311
- * Find actual root by traversing up the fiber tree
312
- *
313
- * @param fiber - Starting fiber
314
- * @returns Root fiber
315
- */
316
- private findActualRoot;
317
- /**
318
- * Recursively find dependent components
319
- *
320
- * @param currentFiber - Current fiber being examined
321
- * @param changedFiber - Fiber that changed
322
- * @param dependents - Set to collect dependents
323
- */
324
- private findDependentsRecursive;
325
- /**
326
- * Set StateBindingManager for context dependency tracker integration
327
- */
328
- setStateBindingManager(stateBindingManager: any): void;
329
- /**
330
- * Clone a fiber node for selective updates
331
- *
332
- * @param fiber - Fiber to clone
333
- * @returns Cloned fiber
334
- */
335
- private cloneFiberForUpdate;
336
- }