react-state-basis 0.2.3 β 0.2.4
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 +63 -40
- package/dist/index.js +197 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +169 -26
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -181,61 +181,84 @@ Basis automatically detects the environment. In mobile environments, it switches
|
|
|
181
181
|
|
|
182
182
|
## Key Capabilities
|
|
183
183
|
|
|
184
|
-
###
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
184
|
+
### 1. Temporal State Matrix (Real-time HUD)
|
|
185
|
+
The "Heartbeat" of your application. Basis injects a high-performance, Zero-Overhead HUD that visualizes your state transitions as a temporal heatmap.
|
|
186
|
+
* **Signal Visualization:** Watch every `useState`, `useReducer`, and `useEffect` update pulse in real-time.
|
|
187
|
+
* **Visual Pattern Recognition:** Identify architectural flaws simply by looking at the rhythm of the matrix. If multiple rows pulse together, they likely belong together.
|
|
188
|
+
* **Zero-Overhead:** Powered by Canvas API and `requestAnimationFrame` polling to ensure your application's performance remains untouched during development.
|
|
189
|
+
|
|
190
|
+
### 2. Redundant State Detection (Dimension Collapse)
|
|
191
|
+
Basis monitors transition vectors to identify "Dimension Collapses" in your state space.
|
|
192
|
+
* **Collinearity Alerts:** When multiple states (like `isLoading`, `isSuccess`, `hasData`) update in lockstep, Basis flags them as mathematically redundant.
|
|
193
|
+
* **Visual Debugging:** Redundant states are automatically highlighted in **Red** within the HUD, providing immediate visual proof that you are storing the same information in multiple places.
|
|
194
|
+
|
|
195
|
+
### 3. Causal Detective (Double Render Tracker)
|
|
196
|
+
Identify "Double Render Cycles" by tracking the causality chain from effects to state setters.
|
|
197
|
+
* **Sequence Tracking:** Detects when a state update is a lagging echo of a `useEffect` or `useLayoutEffect`.
|
|
198
|
+
* **Refactor Insights:** Provides direct console hints to move from manual synchronization to pure, deterministic mathematical projections using `useMemo`.
|
|
199
|
+
|
|
200
|
+
### 4. Stability Circuit Breaker
|
|
201
|
+
A real-time safety monitor for your execution thread.
|
|
202
|
+
* **Oscillation Detection:** If high-frequency state oscillation is detected (e.g., a recursive effect loop), Basis forcefully halts the update chain.
|
|
203
|
+
* **Tab Protection:** Stops the browser thread from locking up, allowing you to catch and fix infinite loops without having to force-quit your browser tab.
|
|
204
|
+
|
|
205
|
+
### 5. System Health & Efficiency Rank
|
|
206
|
+
Basis performs a global audit of your state space to calculate its **Mathematical Rank**βthe actual number of independent information dimensions.
|
|
207
|
+
* **Efficiency Score:** A real-time KPI for your architecture. A 100% score means every state variable is a unique, non-redundant source of truth.
|
|
208
|
+
* **Architecture Audit:** Use the global Health Report (`window.printBasisReport()`) to generate a correlation matrix of your entire application state.
|
|
208
209
|
|
|
209
210
|
---
|
|
211
|
+
|
|
212
|
+
### See it in Action
|
|
213
|
+
<p align="center">
|
|
214
|
+
<img src="./assets/react-state-basis.gif" width="800" alt="React State Basis Demo" />
|
|
215
|
+
</p>
|
|
216
|
+
|
|
210
217
|
---
|
|
211
218
|
|
|
212
|
-
## π Case Study: Auditing
|
|
219
|
+
## π Case Study: Auditing High-Integrity React Architecture
|
|
213
220
|
|
|
214
|
-
|
|
221
|
+
To test the engine against professional standards, Basis was used to audit the [shadcn-admin](https://github.com/satnaing/shadcn-admin) template-a high-quality, production-ready dashboard implementation.
|
|
215
222
|
|
|
216
223
|
<p align="center">
|
|
217
|
-
<img src="./assets/
|
|
224
|
+
<img src="./assets/shadcn-admin.png" width="800" alt="Basis Real World Audit" />
|
|
218
225
|
</p>
|
|
219
226
|
|
|
220
|
-
###
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
227
|
+
### Audit Results: 100% Basis Efficiency
|
|
228
|
+
The project demonstrated exceptional architectural integrity. The engine verified a **100% Efficiency**, confirming that all state variables are linearly independent. This proves that the codebase follows a "Single Source of Truth" philosophy with zero redundant state.
|
|
229
|
+
|
|
230
|
+
### Subtle Optimization Caught
|
|
231
|
+
Despite the perfect efficiency score, the **Causality Engine** identified a hidden performance bottleneck:
|
|
232
|
+
* **Double Render Detection:** Basis flagged a "Double Render Cycle" in the `use-mobile.tsx` hook. It detected that the `isMobile` state was being manually synchronized within a `useEffect`, triggering a secondary render pass.
|
|
233
|
+
* **Refactor Insight:** While the logic was correct, Basis revealed the cost of the implementation - a redundant render cycle that occurs before every layout shift.
|
|
234
|
+
|
|
235
|
+
### Stability Confirmation
|
|
236
|
+
The auditor provided formal verification for the rest of the suite:
|
|
237
|
+
* **Stable Callbacks:** Verified that `Sidebar` methods were correctly memoized, ensuring child components are protected from unnecessary updates.
|
|
238
|
+
* **Valid Projections:** Confirmed that complex table logic (pagination and filtering) was implemented as pure mathematical projections, rather than state-syncing.
|
|
224
239
|
|
|
225
240
|
Math reveals exactly what standard code reviews often miss: the **temporal topology** of your application.
|
|
226
241
|
---
|
|
227
242
|
|
|
228
243
|
## Roadmap
|
|
229
244
|
|
|
230
|
-
#### **v0.2.x -
|
|
231
|
-
- [x] Full React Hook
|
|
232
|
-
- [x]
|
|
233
|
-
- [x]
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
- [
|
|
237
|
-
|
|
238
|
-
|
|
245
|
+
#### **v0.2.x - Signal Intelligence & Visual Foundation (Current)** β
|
|
246
|
+
- [x] **Full React Hook Parity:** Support for all standard hooks and React Native/Expo.
|
|
247
|
+
- [x] **React 19 Ready:** Full support for `use()`, `useOptimistic()`, and `useActionState()`.
|
|
248
|
+
- [x] **Temporal Matrix HUD:** Real-time Canvas-based visualization of state signals.
|
|
249
|
+
- [x] **Causality Engine:** Detection of sequential sync-leaks and double-render cycles.
|
|
250
|
+
- [x] **Ghost Mode:** Zero-op production exports with no bundle overhead.
|
|
251
|
+
- [x] **95% Test Coverage:** Verified mathematical engine.
|
|
252
|
+
|
|
253
|
+
#### **v0.3.0 - Global State & Ecosystem**
|
|
254
|
+
- [ ] **Zustand Middleware:** Auditing global-to-local state redundancy.
|
|
255
|
+
- [ ] **Redux Integration:** Connecting the causal engine to Redux dispatch cycles.
|
|
256
|
+
- [ ] **CLI Initializer:** `rsb-init` to automatically configure Babel/Vite plugins.
|
|
257
|
+
- [ ] **Context Auditor:** Tracking signal collisions across multiple React Context providers.
|
|
258
|
+
|
|
259
|
+
#### **v0.4.0 - Topology & Automation**
|
|
260
|
+
- [ ] **State-Space Topology Map:** 2D force-directed graph showing coupling clusters.
|
|
261
|
+
- [ ] **Automated Fix Hints:** Advanced console codemods for converting redundant state to `useMemo`.
|
|
239
262
|
|
|
240
263
|
---
|
|
241
264
|
|
package/dist/index.js
CHANGED
|
@@ -77,8 +77,8 @@ __export(index_exports, {
|
|
|
77
77
|
useMemo: () => useMemo,
|
|
78
78
|
useOptimistic: () => useOptimistic2,
|
|
79
79
|
useReducer: () => useReducer,
|
|
80
|
-
useRef: () =>
|
|
81
|
-
useState: () =>
|
|
80
|
+
useRef: () => useRef2,
|
|
81
|
+
useState: () => useState2,
|
|
82
82
|
useSyncExternalStore: () => useSyncExternalStore,
|
|
83
83
|
useTransition: () => useTransition,
|
|
84
84
|
version: () => version2
|
|
@@ -307,6 +307,7 @@ var LOOP_WINDOW_MS = 500;
|
|
|
307
307
|
var ANALYSIS_INTERVAL = 5;
|
|
308
308
|
|
|
309
309
|
// src/engine.ts
|
|
310
|
+
var redundantLabels = /* @__PURE__ */ new Set();
|
|
310
311
|
var config = {
|
|
311
312
|
debug: false
|
|
312
313
|
};
|
|
@@ -328,14 +329,18 @@ var analyzeBasis = () => {
|
|
|
328
329
|
if (!config.debug) return;
|
|
329
330
|
const entries = Array.from(history.entries());
|
|
330
331
|
if (entries.length < 2) return;
|
|
332
|
+
const newRedundant = /* @__PURE__ */ new Set();
|
|
331
333
|
entries.forEach(([labelA, vecA], i) => {
|
|
332
334
|
entries.slice(i + 1).forEach(([labelB, vecB]) => {
|
|
333
335
|
const sim = calculateCosineSimilarity(vecA, vecB);
|
|
334
336
|
if (sim > SIMILARITY_THRESHOLD) {
|
|
337
|
+
newRedundant.add(labelA);
|
|
338
|
+
newRedundant.add(labelB);
|
|
335
339
|
displayRedundancyAlert(labelA, labelB, sim, history.size);
|
|
336
340
|
}
|
|
337
341
|
});
|
|
338
342
|
});
|
|
343
|
+
redundantLabels = newRedundant;
|
|
339
344
|
};
|
|
340
345
|
var printBasisHealthReport = (threshold = 0.5) => {
|
|
341
346
|
if (!config.debug) {
|
|
@@ -405,85 +410,223 @@ var __testEngine__ = {
|
|
|
405
410
|
};
|
|
406
411
|
|
|
407
412
|
// src/context.tsx
|
|
413
|
+
var import_react2 = require("react");
|
|
414
|
+
|
|
415
|
+
// src/ui/BasisHUD.tsx
|
|
408
416
|
var import_react = require("react");
|
|
417
|
+
|
|
418
|
+
// src/ui/config.ts
|
|
419
|
+
var HUD_DIMENSIONS = {
|
|
420
|
+
WINDOW_SIZE,
|
|
421
|
+
ROW_HEIGHT: 16,
|
|
422
|
+
COL_WIDTH: 5,
|
|
423
|
+
LABEL_WIDTH: 100,
|
|
424
|
+
PADDING: 10,
|
|
425
|
+
RADIUS: 1.5
|
|
426
|
+
};
|
|
427
|
+
var HUD_THEME = {
|
|
428
|
+
bg: "rgba(15, 23, 42, 0.95)",
|
|
429
|
+
border: "#334155",
|
|
430
|
+
header: "#8b5cf6",
|
|
431
|
+
text: "#f1f5f9",
|
|
432
|
+
textDim: "#94a3b8",
|
|
433
|
+
success: "#10b981",
|
|
434
|
+
error: "#ef4444",
|
|
435
|
+
grid: "#1e293b"
|
|
436
|
+
};
|
|
437
|
+
var getHUDContainerStyle = (isExpanded) => ({
|
|
438
|
+
position: "fixed",
|
|
439
|
+
bottom: "20px",
|
|
440
|
+
right: "20px",
|
|
441
|
+
backgroundColor: HUD_THEME.bg,
|
|
442
|
+
border: `1px solid ${HUD_THEME.border}`,
|
|
443
|
+
borderRadius: "12px",
|
|
444
|
+
backdropFilter: "blur(8px)",
|
|
445
|
+
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)",
|
|
446
|
+
zIndex: 999999,
|
|
447
|
+
overflow: "hidden",
|
|
448
|
+
width: isExpanded ? "380px" : "130px",
|
|
449
|
+
transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
450
|
+
cursor: "pointer",
|
|
451
|
+
userSelect: "none",
|
|
452
|
+
WebkitUserSelect: "none"
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
// src/ui/BasisHUD.tsx
|
|
409
456
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
410
|
-
var
|
|
457
|
+
var BasisHUD = () => {
|
|
458
|
+
const [isExpanded, setIsExpanded] = (0, import_react.useState)(false);
|
|
459
|
+
const canvasRef = (0, import_react.useRef)(null);
|
|
460
|
+
(0, import_react.useEffect)(() => {
|
|
461
|
+
if (!isExpanded) return;
|
|
462
|
+
let animationFrame;
|
|
463
|
+
const draw = () => {
|
|
464
|
+
const canvas = canvasRef.current;
|
|
465
|
+
if (!canvas) return;
|
|
466
|
+
const ctx = canvas.getContext("2d");
|
|
467
|
+
if (!ctx) return;
|
|
468
|
+
const entries = Array.from(history.entries());
|
|
469
|
+
const dpr = window.devicePixelRatio || 1;
|
|
470
|
+
const rawWidth = HUD_DIMENSIONS.WINDOW_SIZE * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.LABEL_WIDTH + HUD_DIMENSIONS.PADDING * 2;
|
|
471
|
+
const rawHeight = Math.max(entries.length * HUD_DIMENSIONS.ROW_HEIGHT + HUD_DIMENSIONS.PADDING * 2, 60);
|
|
472
|
+
updateCanvasSize(canvas, rawWidth, rawHeight, dpr);
|
|
473
|
+
ctx.save();
|
|
474
|
+
ctx.scale(dpr, dpr);
|
|
475
|
+
ctx.clearRect(0, 0, rawWidth, rawHeight);
|
|
476
|
+
if (entries.length === 0) {
|
|
477
|
+
renderEmptyState(ctx);
|
|
478
|
+
} else {
|
|
479
|
+
renderMatrix(ctx, entries);
|
|
480
|
+
}
|
|
481
|
+
ctx.restore();
|
|
482
|
+
animationFrame = requestAnimationFrame(draw);
|
|
483
|
+
};
|
|
484
|
+
draw();
|
|
485
|
+
return () => cancelAnimationFrame(animationFrame);
|
|
486
|
+
}, [isExpanded]);
|
|
487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: getHUDContainerStyle(isExpanded), onClick: () => setIsExpanded(!isExpanded), children: [
|
|
488
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(HUDHeader, { isExpanded }),
|
|
489
|
+
isExpanded && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: "10px 14px 15px 14px" }, children: [
|
|
490
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("canvas", { ref: canvasRef, style: { display: "block" } }),
|
|
491
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(HUDFooter, {})
|
|
492
|
+
] })
|
|
493
|
+
] });
|
|
494
|
+
};
|
|
495
|
+
function updateCanvasSize(canvas, w, h, dpr) {
|
|
496
|
+
const targetW = Math.floor(w * dpr);
|
|
497
|
+
const targetH = Math.floor(h * dpr);
|
|
498
|
+
if (canvas.width !== targetW || canvas.height !== targetH) {
|
|
499
|
+
canvas.width = targetW;
|
|
500
|
+
canvas.height = targetH;
|
|
501
|
+
canvas.style.width = `${w}px`;
|
|
502
|
+
canvas.style.height = `${h}px`;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function renderEmptyState(ctx) {
|
|
506
|
+
ctx.fillStyle = HUD_THEME.textDim;
|
|
507
|
+
ctx.font = "11px Inter, sans-serif";
|
|
508
|
+
ctx.fillText("Waiting for state transitions...", HUD_DIMENSIONS.PADDING, 30);
|
|
509
|
+
}
|
|
510
|
+
function renderMatrix(ctx, entries) {
|
|
511
|
+
entries.forEach(([label, vector], rowIndex) => {
|
|
512
|
+
const y = rowIndex * HUD_DIMENSIONS.ROW_HEIGHT + HUD_DIMENSIONS.PADDING;
|
|
513
|
+
const stateName = label.split(" -> ")[1] || label;
|
|
514
|
+
const isRedundant = redundantLabels.has(label);
|
|
515
|
+
vector.forEach((bit, colIndex) => {
|
|
516
|
+
const x = colIndex * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.PADDING;
|
|
517
|
+
ctx.fillStyle = bit === 1 ? isRedundant ? HUD_THEME.error : HUD_THEME.success : HUD_THEME.grid;
|
|
518
|
+
const w = HUD_DIMENSIONS.COL_WIDTH - 1.5;
|
|
519
|
+
const h = HUD_DIMENSIONS.ROW_HEIGHT - 4;
|
|
520
|
+
if (ctx.roundRect) {
|
|
521
|
+
ctx.beginPath();
|
|
522
|
+
ctx.roundRect(x, y, w, h, HUD_DIMENSIONS.RADIUS);
|
|
523
|
+
ctx.fill();
|
|
524
|
+
} else {
|
|
525
|
+
ctx.fillRect(x, y, w, h);
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
const textX = HUD_DIMENSIONS.WINDOW_SIZE * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.PADDING + 10;
|
|
529
|
+
ctx.fillStyle = isRedundant ? HUD_THEME.error : HUD_THEME.text;
|
|
530
|
+
ctx.font = `${isRedundant ? "600" : "400"} 11px Inter, Menlo, monospace`;
|
|
531
|
+
const cleanName = isRedundant ? `! ${stateName}` : stateName;
|
|
532
|
+
const truncatedName = cleanName.length > 18 ? cleanName.substring(0, 16) + ".." : cleanName;
|
|
533
|
+
ctx.fillText(truncatedName, textX, y + 9);
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
var HUDHeader = ({ isExpanded }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: {
|
|
537
|
+
padding: "10px 14px",
|
|
538
|
+
backgroundColor: isExpanded ? HUD_THEME.header : "transparent",
|
|
539
|
+
color: isExpanded ? "white" : HUD_THEME.header,
|
|
540
|
+
fontWeight: 600,
|
|
541
|
+
fontSize: "11px",
|
|
542
|
+
letterSpacing: "0.05em",
|
|
543
|
+
display: "flex",
|
|
544
|
+
justifyContent: "space-between",
|
|
545
|
+
alignItems: "center",
|
|
546
|
+
transition: "background 0.3s"
|
|
547
|
+
}, children: [
|
|
548
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: isExpanded ? "STATE BASIS MATRIX" : "\u{1F4D0} BASIS ACTIVE" }),
|
|
549
|
+
isExpanded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: { opacity: 0.8, fontSize: "9px" }, children: "R50" })
|
|
550
|
+
] });
|
|
551
|
+
var HUDFooter = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: {
|
|
552
|
+
marginTop: "12px",
|
|
553
|
+
paddingTop: "8px",
|
|
554
|
+
borderTop: `1px solid ${HUD_THEME.grid}`,
|
|
555
|
+
color: HUD_THEME.textDim,
|
|
556
|
+
fontSize: "9px",
|
|
557
|
+
display: "flex",
|
|
558
|
+
justifyContent: "space-between"
|
|
559
|
+
}, children: [
|
|
560
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "LINEAR DEPENDENCY AUDIT" }),
|
|
561
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "THRESHOLD 0.88" })
|
|
562
|
+
] });
|
|
563
|
+
|
|
564
|
+
// src/context.tsx
|
|
565
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
566
|
+
var BasisContext = (0, import_react2.createContext)({ debug: false });
|
|
411
567
|
var isWeb2 = typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
412
568
|
var BasisProvider = ({ children, debug = true }) => {
|
|
413
|
-
(0,
|
|
569
|
+
(0, import_react2.useLayoutEffect)(() => {
|
|
414
570
|
configureBasis({ debug });
|
|
415
571
|
if (isWeb2) {
|
|
416
572
|
window._basis_debug = debug;
|
|
417
573
|
}
|
|
418
574
|
}, [debug]);
|
|
419
|
-
return /* @__PURE__ */ (0,
|
|
575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(BasisContext.Provider, { value: { debug }, children: [
|
|
420
576
|
children,
|
|
421
|
-
debug && isWeb2 && /* @__PURE__ */ (0,
|
|
422
|
-
position: "fixed",
|
|
423
|
-
bottom: 10,
|
|
424
|
-
right: 10,
|
|
425
|
-
background: "black",
|
|
426
|
-
color: "#0f0",
|
|
427
|
-
padding: "5px 10px",
|
|
428
|
-
fontSize: "10px",
|
|
429
|
-
fontFamily: "monospace",
|
|
430
|
-
border: "1px solid #0f0",
|
|
431
|
-
zIndex: 99999,
|
|
432
|
-
borderRadius: "4px",
|
|
433
|
-
pointerEvents: "none"
|
|
434
|
-
}, children: "BASIS_ENGINE: ACTIVE" })
|
|
577
|
+
debug && isWeb2 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BasisHUD, {})
|
|
435
578
|
] });
|
|
436
579
|
};
|
|
437
|
-
var useBasisConfig = () => (0,
|
|
580
|
+
var useBasisConfig = () => (0, import_react2.useContext)(BasisContext);
|
|
438
581
|
|
|
439
582
|
// src/hooks.ts
|
|
440
|
-
var
|
|
441
|
-
var
|
|
442
|
-
function
|
|
443
|
-
const [val, setVal] = (0,
|
|
583
|
+
var React3 = __toESM(require("react"));
|
|
584
|
+
var import_react3 = require("react");
|
|
585
|
+
function useState2(initialState, label) {
|
|
586
|
+
const [val, setVal] = (0, import_react3.useState)(initialState);
|
|
444
587
|
const effectiveLabel = label || "anonymous_state";
|
|
445
|
-
(0,
|
|
588
|
+
(0, import_react3.useEffect)(() => {
|
|
446
589
|
registerVariable(effectiveLabel);
|
|
447
590
|
return () => unregisterVariable(effectiveLabel);
|
|
448
591
|
}, [effectiveLabel]);
|
|
449
|
-
const setter = (0,
|
|
592
|
+
const setter = (0, import_react3.useCallback)((newValue) => {
|
|
450
593
|
if (recordUpdate(effectiveLabel)) setVal(newValue);
|
|
451
594
|
}, [effectiveLabel, setVal]);
|
|
452
595
|
return [val, setter];
|
|
453
596
|
}
|
|
454
|
-
function
|
|
455
|
-
return (0,
|
|
597
|
+
function useRef2(initialValue, _label) {
|
|
598
|
+
return (0, import_react3.useRef)(initialValue);
|
|
456
599
|
}
|
|
457
600
|
function useReducer(reducer, initialArg, init, label) {
|
|
458
601
|
const effectiveLabel = typeof init === "string" ? init : label || "anonymous_reducer";
|
|
459
602
|
const reactInit = typeof init === "function" ? init : void 0;
|
|
460
|
-
const [state, dispatch] = (0,
|
|
461
|
-
(0,
|
|
603
|
+
const [state, dispatch] = (0, import_react3.useReducer)(reducer, initialArg, reactInit);
|
|
604
|
+
(0, import_react3.useEffect)(() => {
|
|
462
605
|
registerVariable(effectiveLabel);
|
|
463
606
|
return () => unregisterVariable(effectiveLabel);
|
|
464
607
|
}, [effectiveLabel]);
|
|
465
|
-
const basisDispatch = (0,
|
|
608
|
+
const basisDispatch = (0, import_react3.useCallback)((action) => {
|
|
466
609
|
if (recordUpdate(effectiveLabel)) dispatch(action);
|
|
467
610
|
}, [effectiveLabel, dispatch]);
|
|
468
611
|
return [state, basisDispatch];
|
|
469
612
|
}
|
|
470
613
|
function useMemo(factory, deps, label) {
|
|
471
614
|
const effectiveLabel = label || "anonymous_projection";
|
|
472
|
-
(0,
|
|
615
|
+
(0, import_react3.useEffect)(() => {
|
|
473
616
|
if (config.debug) console.log(`%c [Basis] Valid Projection: "${effectiveLabel}" `, "color: #2ecc71; font-weight: bold;");
|
|
474
617
|
}, [effectiveLabel]);
|
|
475
|
-
return (0,
|
|
618
|
+
return (0, import_react3.useMemo)(factory, deps || []);
|
|
476
619
|
}
|
|
477
620
|
function useCallback(callback, deps, label) {
|
|
478
621
|
const effectiveLabel = label || "anonymous_callback";
|
|
479
|
-
(0,
|
|
622
|
+
(0, import_react3.useEffect)(() => {
|
|
480
623
|
if (config.debug) console.log(`%c [Basis] Stable Callback: "${effectiveLabel}" `, "color: #2ecc71; font-weight: bold;");
|
|
481
624
|
}, [effectiveLabel]);
|
|
482
|
-
return (0,
|
|
625
|
+
return (0, import_react3.useCallback)(callback, deps);
|
|
483
626
|
}
|
|
484
627
|
function useEffect2(effect, deps, label) {
|
|
485
628
|
const effectiveLabel = label || "anonymous_effect";
|
|
486
|
-
(0,
|
|
629
|
+
(0, import_react3.useEffect)(() => {
|
|
487
630
|
beginEffectTracking(effectiveLabel);
|
|
488
631
|
const cleanup = effect();
|
|
489
632
|
endEffectTracking();
|
|
@@ -492,7 +635,7 @@ function useEffect2(effect, deps, label) {
|
|
|
492
635
|
}
|
|
493
636
|
function useLayoutEffect2(effect, deps, label) {
|
|
494
637
|
const effectiveLabel = label || "anonymous_layout_effect";
|
|
495
|
-
(0,
|
|
638
|
+
(0, import_react3.useLayoutEffect)(() => {
|
|
496
639
|
beginEffectTracking(effectiveLabel);
|
|
497
640
|
const cleanup = effect();
|
|
498
641
|
endEffectTracking();
|
|
@@ -500,7 +643,7 @@ function useLayoutEffect2(effect, deps, label) {
|
|
|
500
643
|
}, deps);
|
|
501
644
|
}
|
|
502
645
|
function useTransition(_label) {
|
|
503
|
-
const [isPending, startTransition3] = (0,
|
|
646
|
+
const [isPending, startTransition3] = (0, import_react3.useTransition)();
|
|
504
647
|
const effectiveLabel = _label || "anonymous_transition";
|
|
505
648
|
const basisStartTransition = (callback) => {
|
|
506
649
|
if (config.debug) console.log(`%c [Basis] Transition Started: "${effectiveLabel}" `, "color: #e67e22; font-weight: bold;");
|
|
@@ -512,34 +655,34 @@ function useDeferredValue(value, initialValueOrLabel, label) {
|
|
|
512
655
|
const isLabelAsSecondArg = typeof initialValueOrLabel === "string" && label === void 0;
|
|
513
656
|
const actualInitialValue = isLabelAsSecondArg ? void 0 : initialValueOrLabel;
|
|
514
657
|
const effectiveLabel = isLabelAsSecondArg ? initialValueOrLabel : label || "anonymous_deferred";
|
|
515
|
-
const deferredValue = (0,
|
|
516
|
-
(0,
|
|
658
|
+
const deferredValue = (0, import_react3.useDeferredValue)(value, actualInitialValue);
|
|
659
|
+
(0, import_react3.useEffect)(() => {
|
|
517
660
|
if (config.debug && value !== deferredValue) console.log(`%c [Basis] Value Deferred: "${effectiveLabel}" `, "color: #e67e22; font-weight: bold;");
|
|
518
661
|
}, [value, deferredValue, effectiveLabel]);
|
|
519
662
|
return deferredValue;
|
|
520
663
|
}
|
|
521
664
|
function createContext2(defaultValue, label) {
|
|
522
|
-
const context = (0,
|
|
665
|
+
const context = (0, import_react3.createContext)(defaultValue);
|
|
523
666
|
if (label) context._basis_label = label;
|
|
524
667
|
return context;
|
|
525
668
|
}
|
|
526
|
-
var useContext2 =
|
|
527
|
-
var useId2 = (label) =>
|
|
528
|
-
var useDebugValue2 =
|
|
529
|
-
var useImperativeHandle2 =
|
|
530
|
-
var useInsertionEffect2 =
|
|
531
|
-
var useSyncExternalStore =
|
|
669
|
+
var useContext2 = import_react3.useContext;
|
|
670
|
+
var useId2 = (label) => React3.useId();
|
|
671
|
+
var useDebugValue2 = React3.useDebugValue;
|
|
672
|
+
var useImperativeHandle2 = React3.useImperativeHandle;
|
|
673
|
+
var useInsertionEffect2 = React3.useInsertionEffect;
|
|
674
|
+
var useSyncExternalStore = import_react3.useSyncExternalStore;
|
|
532
675
|
function use(usable) {
|
|
533
|
-
return (0,
|
|
676
|
+
return (0, import_react3.use)(usable);
|
|
534
677
|
}
|
|
535
678
|
function useOptimistic2(passthrough, reducer, label) {
|
|
536
679
|
const effectiveLabel = label || "anonymous_optimistic";
|
|
537
|
-
(0,
|
|
680
|
+
(0, import_react3.useEffect)(() => {
|
|
538
681
|
registerVariable(effectiveLabel);
|
|
539
682
|
return () => unregisterVariable(effectiveLabel);
|
|
540
683
|
}, [effectiveLabel]);
|
|
541
|
-
const [state, reactAddOptimistic] =
|
|
542
|
-
const addOptimistic = (0,
|
|
684
|
+
const [state, reactAddOptimistic] = React3.useOptimistic(passthrough, reducer);
|
|
685
|
+
const addOptimistic = (0, import_react3.useCallback)((payload) => {
|
|
543
686
|
if (recordUpdate(effectiveLabel)) {
|
|
544
687
|
reactAddOptimistic(payload);
|
|
545
688
|
}
|
|
@@ -550,16 +693,16 @@ function useActionState2(action, initialState, permalink, label) {
|
|
|
550
693
|
const isLabelAsThirdArg = typeof permalink === "string" && label === void 0;
|
|
551
694
|
const actualPermalink = isLabelAsThirdArg ? void 0 : permalink;
|
|
552
695
|
const effectiveLabel = isLabelAsThirdArg ? permalink : label || "anonymous_action_state";
|
|
553
|
-
const [state, reactDispatch, isPending] =
|
|
696
|
+
const [state, reactDispatch, isPending] = React3.useActionState(
|
|
554
697
|
action,
|
|
555
698
|
initialState,
|
|
556
699
|
actualPermalink
|
|
557
700
|
);
|
|
558
|
-
(0,
|
|
701
|
+
(0, import_react3.useEffect)(() => {
|
|
559
702
|
registerVariable(effectiveLabel);
|
|
560
703
|
return () => unregisterVariable(effectiveLabel);
|
|
561
704
|
}, [effectiveLabel]);
|
|
562
|
-
const basisDispatch = (0,
|
|
705
|
+
const basisDispatch = (0, import_react3.useCallback)((payload) => {
|
|
563
706
|
if (recordUpdate(effectiveLabel)) {
|
|
564
707
|
reactDispatch(payload);
|
|
565
708
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/core/logger.ts","../src/core/math.ts","../src/core/constants.ts","../src/engine.ts","../src/context.tsx","../src/hooks.ts"],"sourcesContent":["// src/index.ts\n\nimport * as ReactNamespace from 'react';\nimport * as ReactDOMNamespace from 'react-dom';\n\nimport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, __testEngine__ \n} from './engine';\n\nimport { BasisProvider, useBasisConfig } from './context';\n\nimport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, __test__, \n use,\n useOptimistic,\n useActionState\n} from './hooks';\n\n// 1. BASIS EXPORTS\nexport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, \n __testEngine__, BasisProvider, useBasisConfig, __test__ \n};\n\n// 2. WRAPPED & REACT 19 HOOKS EXPORTS\nexport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, use, useOptimistic, useActionState \n};\n\nexport const Children = ReactNamespace.Children;\nexport const Component = ReactNamespace.Component;\nexport const Fragment = ReactNamespace.Fragment;\nexport const Profiler = ReactNamespace.Profiler;\nexport const PureComponent = ReactNamespace.PureComponent;\nexport const StrictMode = ReactNamespace.StrictMode;\nexport const Suspense = ReactNamespace.Suspense;\nexport const cloneElement = ReactNamespace.cloneElement;\nexport const createRef = ReactNamespace.createRef;\nexport const forwardRef = ReactNamespace.forwardRef;\nexport const isValidElement = ReactNamespace.isValidElement;\nexport const lazy = ReactNamespace.lazy;\nexport const memo = ReactNamespace.memo;\nexport const startTransition = ReactNamespace.startTransition;\nexport const version = ReactNamespace.version;\n\n// 4. REACT DOM PROXY\nconst RD: any = ReactDOMNamespace;\nexport const createPortal = RD.createPortal;\nexport const flushSync = RD.flushSync;\n\n// 5. NAMESPACE & DEFAULT\nexport { ReactNamespace as React };\nexport default ReactNamespace;\n\n// 6. TYPES (TypeScript-only)\nexport type {\n ReactNode, ReactElement, ReactPortal, FC, ComponentType,\n ComponentProps, ComponentPropsWithoutRef, ComponentPropsWithRef,\n ElementType, JSX, CSSProperties, Ref, RefObject, MutableRefObject,\n Dispatch, SetStateAction, Reducer, ChangeEvent, FormEvent,\n MouseEvent, KeyboardEvent, FocusEvent, PointerEvent, TouchEvent,\n DragEvent, SVGProps, InputHTMLAttributes, ButtonHTMLAttributes,\n AnchorHTMLAttributes, HTMLAttributes, HTMLProps, DetailedHTMLProps,\n PropsWithChildren, Attributes, Key, EffectCallback, DependencyList\n} from 'react';","// src/core/logger.ts\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n math: \"color: #636e72; font-style: italic; font-family: serif;\",\n\n codeBlock: `\n background: #1e1e1e; \n color: #9cdcfe; \n padding: 8px 12px; \n display: block; \n margin: 4px 0; \n border-left: 3px solid #00b894; \n font-family: 'Fira Code', monospace; \n line-height: 1.4; \n border-radius: 0 3px 3px 0;\n `,\n\n dim: \"color: #e84393; font-weight: bold;\",\n bold: \"font-weight: bold;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return {\n file: parts[0] || \"Unknown\",\n name: parts[1] || label\n };\n};\n\nconst logBasis = (message: string, ...styles: string[]) => {\n if (isWeb) {\n console.log(message, ...styles);\n } else {\n console.log(message.replace(/%c/g, ''));\n }\n};\n\nexport const displayBootLog = (windowSize: number) => {\n logBasis(\n `%cBasis%cAuditor%c Monitoring State Space | Window: ${windowSize} ticks`,\n STYLES.basis,\n STYLES.version,\n \"color: #636e72; font-style: italic; margin-left: 8px;\"\n );\n};\n\nexport const displayRedundancyAlert = (labelA: string, labelB: string, sim: number, totalDimensions: number) => {\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n const isCrossFile = infoA.file !== infoB.file;\n\n if (isWeb) {\n console.group(`%c π BASIS | DIMENSION COLLAPSE DETECTED `, STYLES.headerRed);\n console.log(`%cπ Location: %c${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`, STYLES.bold, STYLES.location);\n console.log(\n `%cAnalysis:%c Vectors %c${infoA.name}%c and %c${infoB.name}%c are collinear (redundant).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cHow to fix:%c Project %c${infoB.name}%c as a derived value:\n%c// π οΈ Basis Fix: Remove useState, use useMemo\nconst ${infoB.name} = useMemo(() => deriveFrom(${infoA.name}), [${infoA.name}]);%c`,\n \"color: #00b894; font-weight: bold;\", \"\",\n \"color: #e84393; font-weight: bold;\", \"\",\n STYLES.codeBlock, \"\"\n );\n console.groupCollapsed(`%c π¬ Proof Details `, \"color: #636e72; font-size: 10px; cursor: pointer;\");\n console.table({\n \"Similarity\": `${(sim * 100).toFixed(2)}%`,\n \"Linear Dependency\": \"TRUE\",\n \"Rank\": totalDimensions - 1\n });\n console.groupEnd();\n console.groupEnd();\n } else {\n console.log(`[BASIS] REDUNDANCY DETECTED: ${infoA.name} <-> ${infoB.name} (${(sim * 100).toFixed(0)}% similarity)`);\n console.log(`Location: ${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`);\n }\n};\n\nexport const displayCausalHint = (targetLabel: string, sourceLabel: string) => {\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n\n const isCrossFile = target.file !== source.file;\n const locationPath = isCrossFile\n ? `${source.file} β ${target.file}`\n : target.file;\n\n if (isWeb) {\n console.groupCollapsed(`%c π‘ BASIS | CAUSALITY (Sequential Update) `, STYLES.headerBlue);\n console.log(`%cπ Location: %c${locationPath}`, STYLES.bold, STYLES.location);\n console.log(\n `%cSequence:%c %c${source.name}%c β Effect β %c${target.name}%c`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cObservation:%c Variable %c${target.name}%c is being manually synchronized. This creates a %c\"Double Render Cycle\"%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", \"color: #d63031; font-weight: bold;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS] CAUSALITY: ${source.name} β ${target.name} (Double Render Cycle)`);\n }\n};\n\nexport const displayInfiniteLoop = (label: string) => {\n const info = parseLabel(label);\n if (isWeb) {\n console.group(`%c π BASIS CRITICAL | CIRCUIT BREAKER `, STYLES.headerRed);\n console.error(\n `Infinite oscillation detected on: %c${info.name}%c\\nExecution halted to prevent browser thread lock.`,\n \"color: white; background: #d63031; padding: 2px 4px; border-radius: 3px;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS CRITICAL] INFINITE LOOP ON: ${info.name}. Execution halted.`);\n }\n};\n\nexport const displayHealthReport = (\n history: Map<string, number[]>,\n similarityFn: (A: number[], B: number[]) => number,\n threshold: number\n) => {\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, vecA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n entries.forEach(([labelB, vecB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = similarityFn(vecA, vecB);\n if (sim > threshold) {\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) {\n clusters.push(currentCluster);\n } else {\n independentCount++;\n }\n });\n\n const systemRank = independentCount + clusters.length;\n const efficiency = (systemRank / totalVars) * 100;\n\n if (isWeb) {\n console.group(`%c π BASIS | SYSTEM HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cBasis Efficiency: %c${efficiency.toFixed(1)}% %c(Rank: ${systemRank}/${totalVars})`,\n STYLES.bold,\n `color: ${efficiency > 85 ? '#00b894' : '#d63031'}; font-size: 16px; font-weight: bold;`,\n \"color: #636e72; font-style: italic;\"\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Redundancy Clusters:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n clusters.forEach((cluster, idx) => {\n const names = cluster.map(l => parseLabel(l).name).join(' β· ');\n console.log(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace;\");\n });\n } else {\n console.log(\"%cβ¨ All state variables are linearly independent. Your Basis is optimal.\", \"color: #00b894; font-weight: bold; margin-top: 10px;\");\n }\n\n if (totalVars > 0 && totalVars < 15) {\n console.groupCollapsed(\"%cView Full Correlation Matrix\", \"color: #636e72; font-size: 11px;\");\n const matrix: any = {};\n entries.forEach(([labelA]) => {\n const nameA = parseLabel(labelA).name;\n matrix[nameA] = {};\n entries.forEach(([labelB]) => {\n const nameB = parseLabel(labelB).name;\n const sim = similarityFn(history.get(labelA)!, history.get(labelB)!);\n matrix[nameA][nameB] = sim > threshold ? `β ${(sim * 100).toFixed(0)}%` : `β
`;\n });\n });\n console.table(matrix);\n console.groupEnd();\n }\n console.groupEnd();\n } else {\n console.log(`[BASIS HEALTH] Efficiency: ${efficiency.toFixed(1)}% (Rank: ${systemRank}/${totalVars})`);\n if (clusters.length > 0) {\n console.log(`Redundancy Clusters: ${clusters.length}`);\n }\n }\n};","// src/core/math.ts\n\nexport const calculateCosineSimilarity = (A: number[], B: number[]): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return magA && magB ? dot / (Math.sqrt(magA) * Math.sqrt(magB)) : 0;\n};","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 25;\nexport const LOOP_WINDOW_MS = 500;\nexport const ANALYSIS_INTERVAL = 5;","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { calculateCosineSimilarity } from './core/math';\nimport { \n WINDOW_SIZE, \n SIMILARITY_THRESHOLD, \n LOOP_THRESHOLD, \n LOOP_WINDOW_MS, \n ANALYSIS_INTERVAL \n} from './core/constants';\n\nexport interface BasisConfig {\n debug: boolean;\n}\n\nexport let config: BasisConfig = {\n debug: false,\n};\n\nlet booted = false;\n\nexport const configureBasis = (newConfig: Partial<BasisConfig>) => {\n config = { ...config, ...newConfig };\n\n if (config.debug && !booted) {\n UI.displayBootLog(WINDOW_SIZE);\n booted = true;\n }\n};\n\nexport const history = new Map<string, number[]>();\nexport const currentTickBatch = new Set<string>();\nlet updateLog: { label: string; ts: number }[] = [];\nlet currentEffectSource: string | null = null; \nlet tick = 0;\nlet isBatching = false;\n\nconst analyzeBasis = () => {\n if (!config.debug) return;\n\n const entries = Array.from(history.entries());\n if (entries.length < 2) return;\n\n entries.forEach(([labelA, vecA], i) => {\n entries.slice(i + 1).forEach(([labelB, vecB]) => {\n const sim = calculateCosineSimilarity(vecA, vecB);\n \n if (sim > SIMILARITY_THRESHOLD) {\n UI.displayRedundancyAlert(labelA, labelB, sim, history.size);\n }\n });\n });\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!config.debug) {\n console.warn(\"[Basis] Cannot generate report. Debug mode is OFF.\");\n return;\n }\n UI.displayHealthReport(history, calculateCosineSimilarity, threshold);\n};\n\nexport const beginEffectTracking = (label: string) => { currentEffectSource = label; };\nexport const endEffectTracking = () => { currentEffectSource = null; };\n\nexport const registerVariable = (label: string) => {\n if (!config.debug) return; \n\n if (!history.has(label)) {\n history.set(label, new Array(WINDOW_SIZE).fill(0));\n }\n};\n\nexport const unregisterVariable = (label: string) => {\n history.delete(label);\n};\n\nexport const recordUpdate = (label: string): boolean => {\n if (!config.debug) return true;\n\n const now = Date.now();\n\n updateLog.push({ label, ts: now });\n updateLog = updateLog.filter(e => now - e.ts < LOOP_WINDOW_MS);\n if (updateLog.filter(e => e.label === label).length > LOOP_THRESHOLD) {\n UI.displayInfiniteLoop(label);\n return false;\n }\n\n if (currentEffectSource && currentEffectSource !== label) {\n UI.displayCausalHint(label, currentEffectSource);\n }\n\n currentTickBatch.add(label);\n\n if (!isBatching) {\n isBatching = true;\n setTimeout(() => {\n tick++;\n history.forEach((vec, l) => {\n vec.shift();\n vec.push(currentTickBatch.has(l) ? 1 : 0);\n });\n\n currentTickBatch.clear();\n isBatching = false;\n \n if (tick % ANALYSIS_INTERVAL === 0) {\n analyzeBasis();\n }\n }, 20);\n }\n\n return true;\n};\n\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n}\n\nexport const __testEngine__ = {\n config,\n configureBasis,\n history,\n currentTickBatch,\n registerVariable,\n recordUpdate,\n printBasisHealthReport,\n beginEffectTracking,\n endEffectTracking,\n};","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useEffect, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\n\nconst BasisContext = createContext({ debug: false });\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n \n useLayoutEffect(() => {\n configureBasis({ debug });\n\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n \n {(debug && isWeb) && (\n <div style={{ \n position: 'fixed', bottom: 10, right: 10, background: 'black', color: '#0f0', \n padding: '5px 10px', fontSize: '10px', fontFamily: 'monospace', \n border: '1px solid #0f0', zIndex: 99999, borderRadius: '4px', pointerEvents: 'none'\n }}>\n BASIS_ENGINE: ACTIVE\n </div>\n )}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/hooks.ts\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore, \n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n use as reactUse,\n useOptimistic as reactUseOptimistic,\n useActionState as reactUseActionState\n} from 'react';\n\nimport { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, config } from './engine';\nimport * as engine from './engine';\n\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\nexport function useState<S>(initialState: S | (() => S), label?: string): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = label || 'anonymous_state';\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const setter = reactUseCallback((newValue: any) => { if (recordUpdate(effectiveLabel)) setVal(newValue); }, [effectiveLabel, setVal]);\n return [val, setter];\n}\n\nexport function useRef<T>(initialValue: T): React.RefObject<T>;\nexport function useRef<T>(initialValue: T | null): React.RefObject<T>;\nexport function useRef<T = undefined>(): React.MutableRefObject<T | undefined>;\nexport function useRef<T>(initialValue?: T, _label?: string): any { return reactUseRef(initialValue); }\n\nexport function useReducer<R extends React.Reducer<any, any>, I>(reducer: R, initialArg: I, init?: any, label?: string): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const effectiveLabel = typeof init === 'string' ? init : (label || 'anonymous_reducer');\n const reactInit = typeof init === 'function' ? init : undefined;\n const [state, dispatch] = reactUseReducer(reducer, initialArg, reactInit);\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const basisDispatch = reactUseCallback((action: any) => { if (recordUpdate(effectiveLabel)) dispatch(action); }, [effectiveLabel, dispatch]);\n return [state, basisDispatch] as any;\n}\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = label || 'anonymous_projection';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Valid Projection: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: any[]) => any>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = label || 'anonymous_callback';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Stable Callback: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useTransition(_label?: string): [boolean, (callback: () => void) => void] {\n const [isPending, startTransition] = reactUseTransition();\n const effectiveLabel = _label || 'anonymous_transition';\n const basisStartTransition = (callback: () => void) => {\n if (config.debug) console.log(`%c [Basis] Transition Started: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\");\n startTransition(callback);\n };\n return [isPending, basisStartTransition];\n}\n\nexport function useDeferredValue<T>(value: T, initialValueOrLabel?: T | string, label?: string): T {\n const isLabelAsSecondArg = typeof initialValueOrLabel === 'string' && label === undefined;\n const actualInitialValue = isLabelAsSecondArg ? undefined : initialValueOrLabel as T;\n const effectiveLabel = isLabelAsSecondArg ? (initialValueOrLabel as string) : (label || 'anonymous_deferred');\n const deferredValue = reactUseDeferredValue(value, actualInitialValue);\n reactUseEffect(() => { if (config.debug && value !== deferredValue) console.log(`%c [Basis] Value Deferred: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\"); }, [value, deferredValue, effectiveLabel]);\n return deferredValue;\n}\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue);\n if (label) (context as any)._basis_label = label;\n return context;\n}\n\nexport const useContext = reactUseContext;\nexport const useId = (label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = (reactUseSyncExternalStore as any);\n\nexport function use<T>(usable: React.Usable<T>): T {\n return reactUse(usable);\n}\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = label || 'anonymous_optimistic';\n \n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = (React as any).useOptimistic(passthrough, reducer) as [S, (p: P) => void];\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n \n const isLabelAsThirdArg = typeof permalink === 'string' && label === undefined;\n const actualPermalink = isLabelAsThirdArg ? undefined : permalink;\n const effectiveLabel = isLabelAsThirdArg ? (permalink as string) : (label || 'anonymous_action_state');\n\n const [state, reactDispatch, isPending] = (React as any).useActionState(\n action, \n initialState, \n actualPermalink\n ) as [State, (p: Payload) => void, boolean];\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\nexport const __test__ = { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, history: (engine as any).history, currentTickBatch: (engine as any).currentTickBatch };"],"mappings":"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","names":["Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","createRef","forwardRef","isValidElement","lazy","memo","startTransition","useActionState","useContext","useDebugValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useOptimistic","version","history","isWeb","React","import_react","reactUseState","reactUseEffect","reactUseCallback","reactUseRef","reactUseReducer","reactUseMemo","useEffect","useLayoutEffect","reactUseLayoutEffect","startTransition","reactUseTransition","reactUseDeferredValue","createContext","reactCreateContext","useContext","reactUseContext","useId","useDebugValue","useImperativeHandle","useInsertionEffect","reactUseSyncExternalStore","reactUse","useOptimistic","useActionState","Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createRef","forwardRef","isValidElement","lazy","memo","startTransition","version"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/logger.ts","../src/core/math.ts","../src/core/constants.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts","../src/hooks.ts"],"sourcesContent":["// src/index.ts\n\nimport * as ReactNamespace from 'react';\nimport * as ReactDOMNamespace from 'react-dom';\n\nimport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, __testEngine__ \n} from './engine';\n\nimport { BasisProvider, useBasisConfig } from './context';\n\nimport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, __test__, \n use,\n useOptimistic,\n useActionState\n} from './hooks';\n\n// 1. BASIS EXPORTS\nexport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, \n __testEngine__, BasisProvider, useBasisConfig, __test__ \n};\n\n// 2. WRAPPED & REACT 19 HOOKS EXPORTS\nexport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, use, useOptimistic, useActionState \n};\n\nexport const Children = ReactNamespace.Children;\nexport const Component = ReactNamespace.Component;\nexport const Fragment = ReactNamespace.Fragment;\nexport const Profiler = ReactNamespace.Profiler;\nexport const PureComponent = ReactNamespace.PureComponent;\nexport const StrictMode = ReactNamespace.StrictMode;\nexport const Suspense = ReactNamespace.Suspense;\nexport const cloneElement = ReactNamespace.cloneElement;\nexport const createRef = ReactNamespace.createRef;\nexport const forwardRef = ReactNamespace.forwardRef;\nexport const isValidElement = ReactNamespace.isValidElement;\nexport const lazy = ReactNamespace.lazy;\nexport const memo = ReactNamespace.memo;\nexport const startTransition = ReactNamespace.startTransition;\nexport const version = ReactNamespace.version;\n\n// 4. REACT DOM PROXY\nconst RD: any = ReactDOMNamespace;\nexport const createPortal = RD.createPortal;\nexport const flushSync = RD.flushSync;\n\n// 5. NAMESPACE & DEFAULT\nexport { ReactNamespace as React };\nexport default ReactNamespace;\n\n// 6. TYPES (TypeScript-only)\nexport type {\n ReactNode, ReactElement, ReactPortal, FC, ComponentType,\n ComponentProps, ComponentPropsWithoutRef, ComponentPropsWithRef,\n ElementType, JSX, CSSProperties, Ref, RefObject, MutableRefObject,\n Dispatch, SetStateAction, Reducer, ChangeEvent, FormEvent,\n MouseEvent, KeyboardEvent, FocusEvent, PointerEvent, TouchEvent,\n DragEvent, SVGProps, InputHTMLAttributes, ButtonHTMLAttributes,\n AnchorHTMLAttributes, HTMLAttributes, HTMLProps, DetailedHTMLProps,\n PropsWithChildren, Attributes, Key, EffectCallback, DependencyList\n} from 'react';","// src/core/logger.ts\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n math: \"color: #636e72; font-style: italic; font-family: serif;\",\n\n codeBlock: `\n background: #1e1e1e; \n color: #9cdcfe; \n padding: 8px 12px; \n display: block; \n margin: 4px 0; \n border-left: 3px solid #00b894; \n font-family: 'Fira Code', monospace; \n line-height: 1.4; \n border-radius: 0 3px 3px 0;\n `,\n\n dim: \"color: #e84393; font-weight: bold;\",\n bold: \"font-weight: bold;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return {\n file: parts[0] || \"Unknown\",\n name: parts[1] || label\n };\n};\n\nconst logBasis = (message: string, ...styles: string[]) => {\n if (isWeb) {\n console.log(message, ...styles);\n } else {\n console.log(message.replace(/%c/g, ''));\n }\n};\n\nexport const displayBootLog = (windowSize: number) => {\n logBasis(\n `%cBasis%cAuditor%c Monitoring State Space | Window: ${windowSize} ticks`,\n STYLES.basis,\n STYLES.version,\n \"color: #636e72; font-style: italic; margin-left: 8px;\"\n );\n};\n\nexport const displayRedundancyAlert = (labelA: string, labelB: string, sim: number, totalDimensions: number) => {\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n const isCrossFile = infoA.file !== infoB.file;\n\n if (isWeb) {\n console.group(`%c π BASIS | DIMENSION COLLAPSE DETECTED `, STYLES.headerRed);\n console.log(`%cπ Location: %c${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`, STYLES.bold, STYLES.location);\n console.log(\n `%cAnalysis:%c Vectors %c${infoA.name}%c and %c${infoB.name}%c are collinear (redundant).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cHow to fix:%c Project %c${infoB.name}%c as a derived value:\n%c// π οΈ Basis Fix: Remove useState, use useMemo\nconst ${infoB.name} = useMemo(() => deriveFrom(${infoA.name}), [${infoA.name}]);%c`,\n \"color: #00b894; font-weight: bold;\", \"\",\n \"color: #e84393; font-weight: bold;\", \"\",\n STYLES.codeBlock, \"\"\n );\n console.groupCollapsed(`%c π¬ Proof Details `, \"color: #636e72; font-size: 10px; cursor: pointer;\");\n console.table({\n \"Similarity\": `${(sim * 100).toFixed(2)}%`,\n \"Linear Dependency\": \"TRUE\",\n \"Rank\": totalDimensions - 1\n });\n console.groupEnd();\n console.groupEnd();\n } else {\n console.log(`[BASIS] REDUNDANCY DETECTED: ${infoA.name} <-> ${infoB.name} (${(sim * 100).toFixed(0)}% similarity)`);\n console.log(`Location: ${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`);\n }\n};\n\nexport const displayCausalHint = (targetLabel: string, sourceLabel: string) => {\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n\n const isCrossFile = target.file !== source.file;\n const locationPath = isCrossFile\n ? `${source.file} β ${target.file}`\n : target.file;\n\n if (isWeb) {\n console.groupCollapsed(`%c π‘ BASIS | CAUSALITY (Sequential Update) `, STYLES.headerBlue);\n console.log(`%cπ Location: %c${locationPath}`, STYLES.bold, STYLES.location);\n console.log(\n `%cSequence:%c %c${source.name}%c β Effect β %c${target.name}%c`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cObservation:%c Variable %c${target.name}%c is being manually synchronized. This creates a %c\"Double Render Cycle\"%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", \"color: #d63031; font-weight: bold;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS] CAUSALITY: ${source.name} β ${target.name} (Double Render Cycle)`);\n }\n};\n\nexport const displayInfiniteLoop = (label: string) => {\n const info = parseLabel(label);\n if (isWeb) {\n console.group(`%c π BASIS CRITICAL | CIRCUIT BREAKER `, STYLES.headerRed);\n console.error(\n `Infinite oscillation detected on: %c${info.name}%c\\nExecution halted to prevent browser thread lock.`,\n \"color: white; background: #d63031; padding: 2px 4px; border-radius: 3px;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS CRITICAL] INFINITE LOOP ON: ${info.name}. Execution halted.`);\n }\n};\n\nexport const displayHealthReport = (\n history: Map<string, number[]>,\n similarityFn: (A: number[], B: number[]) => number,\n threshold: number\n) => {\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, vecA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n entries.forEach(([labelB, vecB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = similarityFn(vecA, vecB);\n if (sim > threshold) {\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) {\n clusters.push(currentCluster);\n } else {\n independentCount++;\n }\n });\n\n const systemRank = independentCount + clusters.length;\n const efficiency = (systemRank / totalVars) * 100;\n\n if (isWeb) {\n console.group(`%c π BASIS | SYSTEM HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cBasis Efficiency: %c${efficiency.toFixed(1)}% %c(Rank: ${systemRank}/${totalVars})`,\n STYLES.bold,\n `color: ${efficiency > 85 ? '#00b894' : '#d63031'}; font-size: 16px; font-weight: bold;`,\n \"color: #636e72; font-style: italic;\"\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Redundancy Clusters:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n clusters.forEach((cluster, idx) => {\n const names = cluster.map(l => parseLabel(l).name).join(' β· ');\n console.log(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace;\");\n });\n } else {\n console.log(\"%cβ¨ All state variables are linearly independent. Your Basis is optimal.\", \"color: #00b894; font-weight: bold; margin-top: 10px;\");\n }\n\n if (totalVars > 0 && totalVars < 15) {\n console.groupCollapsed(\"%cView Full Correlation Matrix\", \"color: #636e72; font-size: 11px;\");\n const matrix: any = {};\n entries.forEach(([labelA]) => {\n const nameA = parseLabel(labelA).name;\n matrix[nameA] = {};\n entries.forEach(([labelB]) => {\n const nameB = parseLabel(labelB).name;\n const sim = similarityFn(history.get(labelA)!, history.get(labelB)!);\n matrix[nameA][nameB] = sim > threshold ? `β ${(sim * 100).toFixed(0)}%` : `β
`;\n });\n });\n console.table(matrix);\n console.groupEnd();\n }\n console.groupEnd();\n } else {\n console.log(`[BASIS HEALTH] Efficiency: ${efficiency.toFixed(1)}% (Rank: ${systemRank}/${totalVars})`);\n if (clusters.length > 0) {\n console.log(`Redundancy Clusters: ${clusters.length}`);\n }\n }\n};","// src/core/math.ts\n\nexport const calculateCosineSimilarity = (A: number[], B: number[]): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return magA && magB ? dot / (Math.sqrt(magA) * Math.sqrt(magB)) : 0;\n};","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 25;\nexport const LOOP_WINDOW_MS = 500;\nexport const ANALYSIS_INTERVAL = 5;","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { calculateCosineSimilarity } from './core/math';\nimport { \n WINDOW_SIZE, \n SIMILARITY_THRESHOLD, \n LOOP_THRESHOLD, \n LOOP_WINDOW_MS, \n ANALYSIS_INTERVAL \n} from './core/constants';\n\nexport let redundantLabels = new Set<string>();\n\nexport interface BasisConfig {\n debug: boolean;\n}\n\nexport let config: BasisConfig = {\n debug: false,\n};\n\nlet booted = false;\n\nexport const configureBasis = (newConfig: Partial<BasisConfig>) => {\n config = { ...config, ...newConfig };\n\n if (config.debug && !booted) {\n UI.displayBootLog(WINDOW_SIZE);\n booted = true;\n }\n};\n\nexport const history = new Map<string, number[]>();\nexport const currentTickBatch = new Set<string>();\nlet updateLog: { label: string; ts: number }[] = [];\nlet currentEffectSource: string | null = null; \nlet tick = 0;\nlet isBatching = false;\n\nconst analyzeBasis = () => {\n if (!config.debug) return;\n\n const entries = Array.from(history.entries());\n if (entries.length < 2) return;\n\n const newRedundant = new Set<string>();\n\n entries.forEach(([labelA, vecA], i) => {\n entries.slice(i + 1).forEach(([labelB, vecB]) => {\n const sim = calculateCosineSimilarity(vecA, vecB);\n \n if (sim > SIMILARITY_THRESHOLD) {\n newRedundant.add(labelA);\n newRedundant.add(labelB);\n UI.displayRedundancyAlert(labelA, labelB, sim, history.size);\n }\n });\n });\n\n redundantLabels = newRedundant;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!config.debug) {\n console.warn(\"[Basis] Cannot generate report. Debug mode is OFF.\");\n return;\n }\n UI.displayHealthReport(history, calculateCosineSimilarity, threshold);\n};\n\nexport const beginEffectTracking = (label: string) => { currentEffectSource = label; };\nexport const endEffectTracking = () => { currentEffectSource = null; };\n\nexport const registerVariable = (label: string) => {\n if (!config.debug) return; \n\n if (!history.has(label)) {\n history.set(label, new Array(WINDOW_SIZE).fill(0));\n }\n};\n\nexport const unregisterVariable = (label: string) => {\n history.delete(label);\n};\n\nexport const recordUpdate = (label: string): boolean => {\n if (!config.debug) return true;\n\n const now = Date.now();\n\n updateLog.push({ label, ts: now });\n updateLog = updateLog.filter(e => now - e.ts < LOOP_WINDOW_MS);\n if (updateLog.filter(e => e.label === label).length > LOOP_THRESHOLD) {\n UI.displayInfiniteLoop(label);\n return false;\n }\n\n if (currentEffectSource && currentEffectSource !== label) {\n UI.displayCausalHint(label, currentEffectSource);\n }\n\n currentTickBatch.add(label);\n\n if (!isBatching) {\n isBatching = true;\n setTimeout(() => {\n tick++;\n history.forEach((vec, l) => {\n vec.shift();\n vec.push(currentTickBatch.has(l) ? 1 : 0);\n });\n\n currentTickBatch.clear();\n isBatching = false;\n \n if (tick % ANALYSIS_INTERVAL === 0) {\n analyzeBasis();\n }\n }, 20);\n }\n\n return true;\n};\n\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n}\n\nexport const __testEngine__ = {\n config,\n configureBasis,\n history,\n currentTickBatch,\n registerVariable,\n recordUpdate,\n printBasisHealthReport,\n beginEffectTracking,\n endEffectTracking,\n};","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n {(debug && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let animationFrame: number;\n\n const draw = () => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n\n const rawWidth = (DIM.WINDOW_SIZE * DIM.COL_WIDTH) + DIM.LABEL_WIDTH + (DIM.PADDING * 2);\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + (DIM.PADDING * 2), 60);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) {\n renderEmptyState(ctx);\n } else {\n renderMatrix(ctx, entries);\n }\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n draw();\n return () => cancelAnimationFrame(animationFrame);\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n <HUDFooter />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, number[]][]) {\n entries.forEach(([label, vector], rowIndex) => {\n const y = rowIndex * DIM.ROW_HEIGHT + DIM.PADDING;\n const stateName = label.split(' -> ')[1] || label;\n const isRedundant = redundantLabels.has(label);\n\n vector.forEach((bit, colIndex) => {\n const x = colIndex * DIM.COL_WIDTH + DIM.PADDING;\n ctx.fillStyle = bit === 1 ? (isRedundant ? THEME.error : THEME.success) : THEME.grid;\n\n const w = DIM.COL_WIDTH - 1.5;\n const h = DIM.ROW_HEIGHT - 4;\n\n if (ctx.roundRect) {\n ctx.beginPath();\n ctx.roundRect(x, y, w, h, DIM.RADIUS);\n ctx.fill();\n } else {\n ctx.fillRect(x, y, w, h);\n }\n });\n\n const textX = (DIM.WINDOW_SIZE * DIM.COL_WIDTH) + DIM.PADDING + 10;\n ctx.fillStyle = isRedundant ? THEME.error : THEME.text;\n ctx.font = `${isRedundant ? '600' : '400'} 11px Inter, Menlo, monospace`;\n \n const cleanName = isRedundant ? `! ${stateName}` : stateName;\n const truncatedName = cleanName.length > 18 ? cleanName.substring(0, 16) + '..' : cleanName;\n ctx.fillText(truncatedName, textX, y + 9);\n });\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div style={{ \n padding: '10px 14px', \n backgroundColor: isExpanded ? THEME.header : 'transparent', \n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600, fontSize: '11px', letterSpacing: '0.05em',\n display: 'flex', justifyContent: 'space-between', alignItems: 'center',\n transition: 'background 0.3s'\n }}>\n <span>{isExpanded ? 'STATE BASIS MATRIX' : 'π BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>R50</span>}\n </div>\n);\n\nconst HUDFooter: React.FC = () => (\n <div style={{ \n marginTop: '12px', paddingTop: '8px', borderTop: `1px solid ${THEME.grid}`,\n color: THEME.textDim, fontSize: '9px', display: 'flex', justifyContent: 'space-between'\n }}>\n <span>LINEAR DEPENDENCY AUDIT</span>\n <span>THRESHOLD 0.88</span>\n </div>\n);\n","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});","// src/hooks.ts\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore, \n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n use as reactUse,\n useOptimistic as reactUseOptimistic,\n useActionState as reactUseActionState\n} from 'react';\n\nimport { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, config } from './engine';\nimport * as engine from './engine';\n\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\nexport function useState<S>(initialState: S | (() => S), label?: string): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = label || 'anonymous_state';\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const setter = reactUseCallback((newValue: any) => { if (recordUpdate(effectiveLabel)) setVal(newValue); }, [effectiveLabel, setVal]);\n return [val, setter];\n}\n\nexport function useRef<T>(initialValue: T): React.RefObject<T>;\nexport function useRef<T>(initialValue: T | null): React.RefObject<T>;\nexport function useRef<T = undefined>(): React.MutableRefObject<T | undefined>;\nexport function useRef<T>(initialValue?: T, _label?: string): any { return reactUseRef(initialValue); }\n\nexport function useReducer<R extends React.Reducer<any, any>, I>(reducer: R, initialArg: I, init?: any, label?: string): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const effectiveLabel = typeof init === 'string' ? init : (label || 'anonymous_reducer');\n const reactInit = typeof init === 'function' ? init : undefined;\n const [state, dispatch] = reactUseReducer(reducer, initialArg, reactInit);\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const basisDispatch = reactUseCallback((action: any) => { if (recordUpdate(effectiveLabel)) dispatch(action); }, [effectiveLabel, dispatch]);\n return [state, basisDispatch] as any;\n}\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = label || 'anonymous_projection';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Valid Projection: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: any[]) => any>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = label || 'anonymous_callback';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Stable Callback: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useTransition(_label?: string): [boolean, (callback: () => void) => void] {\n const [isPending, startTransition] = reactUseTransition();\n const effectiveLabel = _label || 'anonymous_transition';\n const basisStartTransition = (callback: () => void) => {\n if (config.debug) console.log(`%c [Basis] Transition Started: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\");\n startTransition(callback);\n };\n return [isPending, basisStartTransition];\n}\n\nexport function useDeferredValue<T>(value: T, initialValueOrLabel?: T | string, label?: string): T {\n const isLabelAsSecondArg = typeof initialValueOrLabel === 'string' && label === undefined;\n const actualInitialValue = isLabelAsSecondArg ? undefined : initialValueOrLabel as T;\n const effectiveLabel = isLabelAsSecondArg ? (initialValueOrLabel as string) : (label || 'anonymous_deferred');\n const deferredValue = reactUseDeferredValue(value, actualInitialValue);\n reactUseEffect(() => { if (config.debug && value !== deferredValue) console.log(`%c [Basis] Value Deferred: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\"); }, [value, deferredValue, effectiveLabel]);\n return deferredValue;\n}\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue);\n if (label) (context as any)._basis_label = label;\n return context;\n}\n\nexport const useContext = reactUseContext;\nexport const useId = (label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = (reactUseSyncExternalStore as any);\n\nexport function use<T>(usable: React.Usable<T>): T {\n return reactUse(usable);\n}\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = label || 'anonymous_optimistic';\n \n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = (React as any).useOptimistic(passthrough, reducer) as [S, (p: P) => void];\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n \n const isLabelAsThirdArg = typeof permalink === 'string' && label === undefined;\n const actualPermalink = isLabelAsThirdArg ? undefined : permalink;\n const effectiveLabel = isLabelAsThirdArg ? (permalink as string) : (label || 'anonymous_action_state');\n\n const [state, reactDispatch, isPending] = (React as any).useActionState(\n action, \n initialState, \n actualPermalink\n ) as [State, (p: Payload) => void, boolean];\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\nexport const __test__ = { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, history: (engine as any).history, currentTickBatch: (engine as any).currentTickBatch };"],"mappings":"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","names":["Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","createRef","forwardRef","isValidElement","lazy","memo","startTransition","useActionState","useContext","useDebugValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useOptimistic","useRef","useState","version","history","import_react","import_jsx_runtime","isWeb","React","import_react","useState","reactUseState","reactUseEffect","reactUseCallback","useRef","reactUseRef","reactUseReducer","reactUseMemo","useEffect","useLayoutEffect","reactUseLayoutEffect","startTransition","reactUseTransition","reactUseDeferredValue","createContext","reactCreateContext","useContext","reactUseContext","useId","useDebugValue","useImperativeHandle","useInsertionEffect","reactUseSyncExternalStore","reactUse","useOptimistic","useActionState","Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createRef","forwardRef","isValidElement","lazy","memo","startTransition","version"]}
|
package/dist/index.mjs
CHANGED
|
@@ -222,6 +222,7 @@ var LOOP_WINDOW_MS = 500;
|
|
|
222
222
|
var ANALYSIS_INTERVAL = 5;
|
|
223
223
|
|
|
224
224
|
// src/engine.ts
|
|
225
|
+
var redundantLabels = /* @__PURE__ */ new Set();
|
|
225
226
|
var config = {
|
|
226
227
|
debug: false
|
|
227
228
|
};
|
|
@@ -243,14 +244,18 @@ var analyzeBasis = () => {
|
|
|
243
244
|
if (!config.debug) return;
|
|
244
245
|
const entries = Array.from(history.entries());
|
|
245
246
|
if (entries.length < 2) return;
|
|
247
|
+
const newRedundant = /* @__PURE__ */ new Set();
|
|
246
248
|
entries.forEach(([labelA, vecA], i) => {
|
|
247
249
|
entries.slice(i + 1).forEach(([labelB, vecB]) => {
|
|
248
250
|
const sim = calculateCosineSimilarity(vecA, vecB);
|
|
249
251
|
if (sim > SIMILARITY_THRESHOLD) {
|
|
252
|
+
newRedundant.add(labelA);
|
|
253
|
+
newRedundant.add(labelB);
|
|
250
254
|
displayRedundancyAlert(labelA, labelB, sim, history.size);
|
|
251
255
|
}
|
|
252
256
|
});
|
|
253
257
|
});
|
|
258
|
+
redundantLabels = newRedundant;
|
|
254
259
|
};
|
|
255
260
|
var printBasisHealthReport = (threshold = 0.5) => {
|
|
256
261
|
if (!config.debug) {
|
|
@@ -321,7 +326,158 @@ var __testEngine__ = {
|
|
|
321
326
|
|
|
322
327
|
// src/context.tsx
|
|
323
328
|
import { createContext, useContext, useLayoutEffect } from "react";
|
|
329
|
+
|
|
330
|
+
// src/ui/BasisHUD.tsx
|
|
331
|
+
import { useEffect, useRef, useState } from "react";
|
|
332
|
+
|
|
333
|
+
// src/ui/config.ts
|
|
334
|
+
var HUD_DIMENSIONS = {
|
|
335
|
+
WINDOW_SIZE,
|
|
336
|
+
ROW_HEIGHT: 16,
|
|
337
|
+
COL_WIDTH: 5,
|
|
338
|
+
LABEL_WIDTH: 100,
|
|
339
|
+
PADDING: 10,
|
|
340
|
+
RADIUS: 1.5
|
|
341
|
+
};
|
|
342
|
+
var HUD_THEME = {
|
|
343
|
+
bg: "rgba(15, 23, 42, 0.95)",
|
|
344
|
+
border: "#334155",
|
|
345
|
+
header: "#8b5cf6",
|
|
346
|
+
text: "#f1f5f9",
|
|
347
|
+
textDim: "#94a3b8",
|
|
348
|
+
success: "#10b981",
|
|
349
|
+
error: "#ef4444",
|
|
350
|
+
grid: "#1e293b"
|
|
351
|
+
};
|
|
352
|
+
var getHUDContainerStyle = (isExpanded) => ({
|
|
353
|
+
position: "fixed",
|
|
354
|
+
bottom: "20px",
|
|
355
|
+
right: "20px",
|
|
356
|
+
backgroundColor: HUD_THEME.bg,
|
|
357
|
+
border: `1px solid ${HUD_THEME.border}`,
|
|
358
|
+
borderRadius: "12px",
|
|
359
|
+
backdropFilter: "blur(8px)",
|
|
360
|
+
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)",
|
|
361
|
+
zIndex: 999999,
|
|
362
|
+
overflow: "hidden",
|
|
363
|
+
width: isExpanded ? "380px" : "130px",
|
|
364
|
+
transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
365
|
+
cursor: "pointer",
|
|
366
|
+
userSelect: "none",
|
|
367
|
+
WebkitUserSelect: "none"
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
// src/ui/BasisHUD.tsx
|
|
324
371
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
372
|
+
var BasisHUD = () => {
|
|
373
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
374
|
+
const canvasRef = useRef(null);
|
|
375
|
+
useEffect(() => {
|
|
376
|
+
if (!isExpanded) return;
|
|
377
|
+
let animationFrame;
|
|
378
|
+
const draw = () => {
|
|
379
|
+
const canvas = canvasRef.current;
|
|
380
|
+
if (!canvas) return;
|
|
381
|
+
const ctx = canvas.getContext("2d");
|
|
382
|
+
if (!ctx) return;
|
|
383
|
+
const entries = Array.from(history.entries());
|
|
384
|
+
const dpr = window.devicePixelRatio || 1;
|
|
385
|
+
const rawWidth = HUD_DIMENSIONS.WINDOW_SIZE * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.LABEL_WIDTH + HUD_DIMENSIONS.PADDING * 2;
|
|
386
|
+
const rawHeight = Math.max(entries.length * HUD_DIMENSIONS.ROW_HEIGHT + HUD_DIMENSIONS.PADDING * 2, 60);
|
|
387
|
+
updateCanvasSize(canvas, rawWidth, rawHeight, dpr);
|
|
388
|
+
ctx.save();
|
|
389
|
+
ctx.scale(dpr, dpr);
|
|
390
|
+
ctx.clearRect(0, 0, rawWidth, rawHeight);
|
|
391
|
+
if (entries.length === 0) {
|
|
392
|
+
renderEmptyState(ctx);
|
|
393
|
+
} else {
|
|
394
|
+
renderMatrix(ctx, entries);
|
|
395
|
+
}
|
|
396
|
+
ctx.restore();
|
|
397
|
+
animationFrame = requestAnimationFrame(draw);
|
|
398
|
+
};
|
|
399
|
+
draw();
|
|
400
|
+
return () => cancelAnimationFrame(animationFrame);
|
|
401
|
+
}, [isExpanded]);
|
|
402
|
+
return /* @__PURE__ */ jsxs("div", { style: getHUDContainerStyle(isExpanded), onClick: () => setIsExpanded(!isExpanded), children: [
|
|
403
|
+
/* @__PURE__ */ jsx(HUDHeader, { isExpanded }),
|
|
404
|
+
isExpanded && /* @__PURE__ */ jsxs("div", { style: { padding: "10px 14px 15px 14px" }, children: [
|
|
405
|
+
/* @__PURE__ */ jsx("canvas", { ref: canvasRef, style: { display: "block" } }),
|
|
406
|
+
/* @__PURE__ */ jsx(HUDFooter, {})
|
|
407
|
+
] })
|
|
408
|
+
] });
|
|
409
|
+
};
|
|
410
|
+
function updateCanvasSize(canvas, w, h, dpr) {
|
|
411
|
+
const targetW = Math.floor(w * dpr);
|
|
412
|
+
const targetH = Math.floor(h * dpr);
|
|
413
|
+
if (canvas.width !== targetW || canvas.height !== targetH) {
|
|
414
|
+
canvas.width = targetW;
|
|
415
|
+
canvas.height = targetH;
|
|
416
|
+
canvas.style.width = `${w}px`;
|
|
417
|
+
canvas.style.height = `${h}px`;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
function renderEmptyState(ctx) {
|
|
421
|
+
ctx.fillStyle = HUD_THEME.textDim;
|
|
422
|
+
ctx.font = "11px Inter, sans-serif";
|
|
423
|
+
ctx.fillText("Waiting for state transitions...", HUD_DIMENSIONS.PADDING, 30);
|
|
424
|
+
}
|
|
425
|
+
function renderMatrix(ctx, entries) {
|
|
426
|
+
entries.forEach(([label, vector], rowIndex) => {
|
|
427
|
+
const y = rowIndex * HUD_DIMENSIONS.ROW_HEIGHT + HUD_DIMENSIONS.PADDING;
|
|
428
|
+
const stateName = label.split(" -> ")[1] || label;
|
|
429
|
+
const isRedundant = redundantLabels.has(label);
|
|
430
|
+
vector.forEach((bit, colIndex) => {
|
|
431
|
+
const x = colIndex * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.PADDING;
|
|
432
|
+
ctx.fillStyle = bit === 1 ? isRedundant ? HUD_THEME.error : HUD_THEME.success : HUD_THEME.grid;
|
|
433
|
+
const w = HUD_DIMENSIONS.COL_WIDTH - 1.5;
|
|
434
|
+
const h = HUD_DIMENSIONS.ROW_HEIGHT - 4;
|
|
435
|
+
if (ctx.roundRect) {
|
|
436
|
+
ctx.beginPath();
|
|
437
|
+
ctx.roundRect(x, y, w, h, HUD_DIMENSIONS.RADIUS);
|
|
438
|
+
ctx.fill();
|
|
439
|
+
} else {
|
|
440
|
+
ctx.fillRect(x, y, w, h);
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
const textX = HUD_DIMENSIONS.WINDOW_SIZE * HUD_DIMENSIONS.COL_WIDTH + HUD_DIMENSIONS.PADDING + 10;
|
|
444
|
+
ctx.fillStyle = isRedundant ? HUD_THEME.error : HUD_THEME.text;
|
|
445
|
+
ctx.font = `${isRedundant ? "600" : "400"} 11px Inter, Menlo, monospace`;
|
|
446
|
+
const cleanName = isRedundant ? `! ${stateName}` : stateName;
|
|
447
|
+
const truncatedName = cleanName.length > 18 ? cleanName.substring(0, 16) + ".." : cleanName;
|
|
448
|
+
ctx.fillText(truncatedName, textX, y + 9);
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
var HUDHeader = ({ isExpanded }) => /* @__PURE__ */ jsxs("div", { style: {
|
|
452
|
+
padding: "10px 14px",
|
|
453
|
+
backgroundColor: isExpanded ? HUD_THEME.header : "transparent",
|
|
454
|
+
color: isExpanded ? "white" : HUD_THEME.header,
|
|
455
|
+
fontWeight: 600,
|
|
456
|
+
fontSize: "11px",
|
|
457
|
+
letterSpacing: "0.05em",
|
|
458
|
+
display: "flex",
|
|
459
|
+
justifyContent: "space-between",
|
|
460
|
+
alignItems: "center",
|
|
461
|
+
transition: "background 0.3s"
|
|
462
|
+
}, children: [
|
|
463
|
+
/* @__PURE__ */ jsx("span", { children: isExpanded ? "STATE BASIS MATRIX" : "\u{1F4D0} BASIS ACTIVE" }),
|
|
464
|
+
isExpanded && /* @__PURE__ */ jsx("span", { style: { opacity: 0.8, fontSize: "9px" }, children: "R50" })
|
|
465
|
+
] });
|
|
466
|
+
var HUDFooter = () => /* @__PURE__ */ jsxs("div", { style: {
|
|
467
|
+
marginTop: "12px",
|
|
468
|
+
paddingTop: "8px",
|
|
469
|
+
borderTop: `1px solid ${HUD_THEME.grid}`,
|
|
470
|
+
color: HUD_THEME.textDim,
|
|
471
|
+
fontSize: "9px",
|
|
472
|
+
display: "flex",
|
|
473
|
+
justifyContent: "space-between"
|
|
474
|
+
}, children: [
|
|
475
|
+
/* @__PURE__ */ jsx("span", { children: "LINEAR DEPENDENCY AUDIT" }),
|
|
476
|
+
/* @__PURE__ */ jsx("span", { children: "THRESHOLD 0.88" })
|
|
477
|
+
] });
|
|
478
|
+
|
|
479
|
+
// src/context.tsx
|
|
480
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
325
481
|
var BasisContext = createContext({ debug: false });
|
|
326
482
|
var isWeb2 = typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
327
483
|
var BasisProvider = ({ children, debug = true }) => {
|
|
@@ -331,28 +487,15 @@ var BasisProvider = ({ children, debug = true }) => {
|
|
|
331
487
|
window._basis_debug = debug;
|
|
332
488
|
}
|
|
333
489
|
}, [debug]);
|
|
334
|
-
return /* @__PURE__ */
|
|
490
|
+
return /* @__PURE__ */ jsxs2(BasisContext.Provider, { value: { debug }, children: [
|
|
335
491
|
children,
|
|
336
|
-
debug && isWeb2 && /* @__PURE__ */
|
|
337
|
-
position: "fixed",
|
|
338
|
-
bottom: 10,
|
|
339
|
-
right: 10,
|
|
340
|
-
background: "black",
|
|
341
|
-
color: "#0f0",
|
|
342
|
-
padding: "5px 10px",
|
|
343
|
-
fontSize: "10px",
|
|
344
|
-
fontFamily: "monospace",
|
|
345
|
-
border: "1px solid #0f0",
|
|
346
|
-
zIndex: 99999,
|
|
347
|
-
borderRadius: "4px",
|
|
348
|
-
pointerEvents: "none"
|
|
349
|
-
}, children: "BASIS_ENGINE: ACTIVE" })
|
|
492
|
+
debug && isWeb2 && /* @__PURE__ */ jsx2(BasisHUD, {})
|
|
350
493
|
] });
|
|
351
494
|
};
|
|
352
495
|
var useBasisConfig = () => useContext(BasisContext);
|
|
353
496
|
|
|
354
497
|
// src/hooks.ts
|
|
355
|
-
import * as
|
|
498
|
+
import * as React3 from "react";
|
|
356
499
|
import {
|
|
357
500
|
useState as reactUseState,
|
|
358
501
|
useEffect as reactUseEffect,
|
|
@@ -368,7 +511,7 @@ import {
|
|
|
368
511
|
useDeferredValue as reactUseDeferredValue,
|
|
369
512
|
use as reactUse
|
|
370
513
|
} from "react";
|
|
371
|
-
function
|
|
514
|
+
function useState2(initialState, label) {
|
|
372
515
|
const [val, setVal] = reactUseState(initialState);
|
|
373
516
|
const effectiveLabel = label || "anonymous_state";
|
|
374
517
|
reactUseEffect(() => {
|
|
@@ -380,7 +523,7 @@ function useState(initialState, label) {
|
|
|
380
523
|
}, [effectiveLabel, setVal]);
|
|
381
524
|
return [val, setter];
|
|
382
525
|
}
|
|
383
|
-
function
|
|
526
|
+
function useRef2(initialValue, _label) {
|
|
384
527
|
return reactUseRef(initialValue);
|
|
385
528
|
}
|
|
386
529
|
function useReducer(reducer, initialArg, init, label) {
|
|
@@ -453,10 +596,10 @@ function createContext2(defaultValue, label) {
|
|
|
453
596
|
return context;
|
|
454
597
|
}
|
|
455
598
|
var useContext2 = reactUseContext;
|
|
456
|
-
var useId2 = (label) =>
|
|
457
|
-
var useDebugValue2 =
|
|
458
|
-
var useImperativeHandle2 =
|
|
459
|
-
var useInsertionEffect2 =
|
|
599
|
+
var useId2 = (label) => React3.useId();
|
|
600
|
+
var useDebugValue2 = React3.useDebugValue;
|
|
601
|
+
var useImperativeHandle2 = React3.useImperativeHandle;
|
|
602
|
+
var useInsertionEffect2 = React3.useInsertionEffect;
|
|
460
603
|
var useSyncExternalStore = reactUseSyncExternalStore;
|
|
461
604
|
function use(usable) {
|
|
462
605
|
return reactUse(usable);
|
|
@@ -467,7 +610,7 @@ function useOptimistic2(passthrough, reducer, label) {
|
|
|
467
610
|
registerVariable(effectiveLabel);
|
|
468
611
|
return () => unregisterVariable(effectiveLabel);
|
|
469
612
|
}, [effectiveLabel]);
|
|
470
|
-
const [state, reactAddOptimistic] =
|
|
613
|
+
const [state, reactAddOptimistic] = React3.useOptimistic(passthrough, reducer);
|
|
471
614
|
const addOptimistic = reactUseCallback((payload) => {
|
|
472
615
|
if (recordUpdate(effectiveLabel)) {
|
|
473
616
|
reactAddOptimistic(payload);
|
|
@@ -479,7 +622,7 @@ function useActionState2(action, initialState, permalink, label) {
|
|
|
479
622
|
const isLabelAsThirdArg = typeof permalink === "string" && label === void 0;
|
|
480
623
|
const actualPermalink = isLabelAsThirdArg ? void 0 : permalink;
|
|
481
624
|
const effectiveLabel = isLabelAsThirdArg ? permalink : label || "anonymous_action_state";
|
|
482
|
-
const [state, reactDispatch, isPending] =
|
|
625
|
+
const [state, reactDispatch, isPending] = React3.useActionState(
|
|
483
626
|
action,
|
|
484
627
|
initialState,
|
|
485
628
|
actualPermalink
|
|
@@ -565,8 +708,8 @@ export {
|
|
|
565
708
|
useMemo,
|
|
566
709
|
useOptimistic2 as useOptimistic,
|
|
567
710
|
useReducer,
|
|
568
|
-
useRef,
|
|
569
|
-
useState,
|
|
711
|
+
useRef2 as useRef,
|
|
712
|
+
useState2 as useState,
|
|
570
713
|
useSyncExternalStore,
|
|
571
714
|
useTransition,
|
|
572
715
|
version2 as version
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/core/logger.ts","../src/core/math.ts","../src/core/constants.ts","../src/engine.ts","../src/context.tsx","../src/hooks.ts"],"sourcesContent":["// src/index.ts\n\nimport * as ReactNamespace from 'react';\nimport * as ReactDOMNamespace from 'react-dom';\n\nimport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, __testEngine__ \n} from './engine';\n\nimport { BasisProvider, useBasisConfig } from './context';\n\nimport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, __test__, \n use,\n useOptimistic,\n useActionState\n} from './hooks';\n\n// 1. BASIS EXPORTS\nexport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, \n __testEngine__, BasisProvider, useBasisConfig, __test__ \n};\n\n// 2. WRAPPED & REACT 19 HOOKS EXPORTS\nexport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, use, useOptimistic, useActionState \n};\n\nexport const Children = ReactNamespace.Children;\nexport const Component = ReactNamespace.Component;\nexport const Fragment = ReactNamespace.Fragment;\nexport const Profiler = ReactNamespace.Profiler;\nexport const PureComponent = ReactNamespace.PureComponent;\nexport const StrictMode = ReactNamespace.StrictMode;\nexport const Suspense = ReactNamespace.Suspense;\nexport const cloneElement = ReactNamespace.cloneElement;\nexport const createRef = ReactNamespace.createRef;\nexport const forwardRef = ReactNamespace.forwardRef;\nexport const isValidElement = ReactNamespace.isValidElement;\nexport const lazy = ReactNamespace.lazy;\nexport const memo = ReactNamespace.memo;\nexport const startTransition = ReactNamespace.startTransition;\nexport const version = ReactNamespace.version;\n\n// 4. REACT DOM PROXY\nconst RD: any = ReactDOMNamespace;\nexport const createPortal = RD.createPortal;\nexport const flushSync = RD.flushSync;\n\n// 5. NAMESPACE & DEFAULT\nexport { ReactNamespace as React };\nexport default ReactNamespace;\n\n// 6. TYPES (TypeScript-only)\nexport type {\n ReactNode, ReactElement, ReactPortal, FC, ComponentType,\n ComponentProps, ComponentPropsWithoutRef, ComponentPropsWithRef,\n ElementType, JSX, CSSProperties, Ref, RefObject, MutableRefObject,\n Dispatch, SetStateAction, Reducer, ChangeEvent, FormEvent,\n MouseEvent, KeyboardEvent, FocusEvent, PointerEvent, TouchEvent,\n DragEvent, SVGProps, InputHTMLAttributes, ButtonHTMLAttributes,\n AnchorHTMLAttributes, HTMLAttributes, HTMLProps, DetailedHTMLProps,\n PropsWithChildren, Attributes, Key, EffectCallback, DependencyList\n} from 'react';","// src/core/logger.ts\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n math: \"color: #636e72; font-style: italic; font-family: serif;\",\n\n codeBlock: `\n background: #1e1e1e; \n color: #9cdcfe; \n padding: 8px 12px; \n display: block; \n margin: 4px 0; \n border-left: 3px solid #00b894; \n font-family: 'Fira Code', monospace; \n line-height: 1.4; \n border-radius: 0 3px 3px 0;\n `,\n\n dim: \"color: #e84393; font-weight: bold;\",\n bold: \"font-weight: bold;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return {\n file: parts[0] || \"Unknown\",\n name: parts[1] || label\n };\n};\n\nconst logBasis = (message: string, ...styles: string[]) => {\n if (isWeb) {\n console.log(message, ...styles);\n } else {\n console.log(message.replace(/%c/g, ''));\n }\n};\n\nexport const displayBootLog = (windowSize: number) => {\n logBasis(\n `%cBasis%cAuditor%c Monitoring State Space | Window: ${windowSize} ticks`,\n STYLES.basis,\n STYLES.version,\n \"color: #636e72; font-style: italic; margin-left: 8px;\"\n );\n};\n\nexport const displayRedundancyAlert = (labelA: string, labelB: string, sim: number, totalDimensions: number) => {\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n const isCrossFile = infoA.file !== infoB.file;\n\n if (isWeb) {\n console.group(`%c π BASIS | DIMENSION COLLAPSE DETECTED `, STYLES.headerRed);\n console.log(`%cπ Location: %c${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`, STYLES.bold, STYLES.location);\n console.log(\n `%cAnalysis:%c Vectors %c${infoA.name}%c and %c${infoB.name}%c are collinear (redundant).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cHow to fix:%c Project %c${infoB.name}%c as a derived value:\n%c// π οΈ Basis Fix: Remove useState, use useMemo\nconst ${infoB.name} = useMemo(() => deriveFrom(${infoA.name}), [${infoA.name}]);%c`,\n \"color: #00b894; font-weight: bold;\", \"\",\n \"color: #e84393; font-weight: bold;\", \"\",\n STYLES.codeBlock, \"\"\n );\n console.groupCollapsed(`%c π¬ Proof Details `, \"color: #636e72; font-size: 10px; cursor: pointer;\");\n console.table({\n \"Similarity\": `${(sim * 100).toFixed(2)}%`,\n \"Linear Dependency\": \"TRUE\",\n \"Rank\": totalDimensions - 1\n });\n console.groupEnd();\n console.groupEnd();\n } else {\n console.log(`[BASIS] REDUNDANCY DETECTED: ${infoA.name} <-> ${infoB.name} (${(sim * 100).toFixed(0)}% similarity)`);\n console.log(`Location: ${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`);\n }\n};\n\nexport const displayCausalHint = (targetLabel: string, sourceLabel: string) => {\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n\n const isCrossFile = target.file !== source.file;\n const locationPath = isCrossFile\n ? `${source.file} β ${target.file}`\n : target.file;\n\n if (isWeb) {\n console.groupCollapsed(`%c π‘ BASIS | CAUSALITY (Sequential Update) `, STYLES.headerBlue);\n console.log(`%cπ Location: %c${locationPath}`, STYLES.bold, STYLES.location);\n console.log(\n `%cSequence:%c %c${source.name}%c β Effect β %c${target.name}%c`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cObservation:%c Variable %c${target.name}%c is being manually synchronized. This creates a %c\"Double Render Cycle\"%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", \"color: #d63031; font-weight: bold;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS] CAUSALITY: ${source.name} β ${target.name} (Double Render Cycle)`);\n }\n};\n\nexport const displayInfiniteLoop = (label: string) => {\n const info = parseLabel(label);\n if (isWeb) {\n console.group(`%c π BASIS CRITICAL | CIRCUIT BREAKER `, STYLES.headerRed);\n console.error(\n `Infinite oscillation detected on: %c${info.name}%c\\nExecution halted to prevent browser thread lock.`,\n \"color: white; background: #d63031; padding: 2px 4px; border-radius: 3px;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS CRITICAL] INFINITE LOOP ON: ${info.name}. Execution halted.`);\n }\n};\n\nexport const displayHealthReport = (\n history: Map<string, number[]>,\n similarityFn: (A: number[], B: number[]) => number,\n threshold: number\n) => {\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, vecA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n entries.forEach(([labelB, vecB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = similarityFn(vecA, vecB);\n if (sim > threshold) {\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) {\n clusters.push(currentCluster);\n } else {\n independentCount++;\n }\n });\n\n const systemRank = independentCount + clusters.length;\n const efficiency = (systemRank / totalVars) * 100;\n\n if (isWeb) {\n console.group(`%c π BASIS | SYSTEM HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cBasis Efficiency: %c${efficiency.toFixed(1)}% %c(Rank: ${systemRank}/${totalVars})`,\n STYLES.bold,\n `color: ${efficiency > 85 ? '#00b894' : '#d63031'}; font-size: 16px; font-weight: bold;`,\n \"color: #636e72; font-style: italic;\"\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Redundancy Clusters:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n clusters.forEach((cluster, idx) => {\n const names = cluster.map(l => parseLabel(l).name).join(' β· ');\n console.log(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace;\");\n });\n } else {\n console.log(\"%cβ¨ All state variables are linearly independent. Your Basis is optimal.\", \"color: #00b894; font-weight: bold; margin-top: 10px;\");\n }\n\n if (totalVars > 0 && totalVars < 15) {\n console.groupCollapsed(\"%cView Full Correlation Matrix\", \"color: #636e72; font-size: 11px;\");\n const matrix: any = {};\n entries.forEach(([labelA]) => {\n const nameA = parseLabel(labelA).name;\n matrix[nameA] = {};\n entries.forEach(([labelB]) => {\n const nameB = parseLabel(labelB).name;\n const sim = similarityFn(history.get(labelA)!, history.get(labelB)!);\n matrix[nameA][nameB] = sim > threshold ? `β ${(sim * 100).toFixed(0)}%` : `β
`;\n });\n });\n console.table(matrix);\n console.groupEnd();\n }\n console.groupEnd();\n } else {\n console.log(`[BASIS HEALTH] Efficiency: ${efficiency.toFixed(1)}% (Rank: ${systemRank}/${totalVars})`);\n if (clusters.length > 0) {\n console.log(`Redundancy Clusters: ${clusters.length}`);\n }\n }\n};","// src/core/math.ts\n\nexport const calculateCosineSimilarity = (A: number[], B: number[]): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return magA && magB ? dot / (Math.sqrt(magA) * Math.sqrt(magB)) : 0;\n};","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 25;\nexport const LOOP_WINDOW_MS = 500;\nexport const ANALYSIS_INTERVAL = 5;","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { calculateCosineSimilarity } from './core/math';\nimport { \n WINDOW_SIZE, \n SIMILARITY_THRESHOLD, \n LOOP_THRESHOLD, \n LOOP_WINDOW_MS, \n ANALYSIS_INTERVAL \n} from './core/constants';\n\nexport interface BasisConfig {\n debug: boolean;\n}\n\nexport let config: BasisConfig = {\n debug: false,\n};\n\nlet booted = false;\n\nexport const configureBasis = (newConfig: Partial<BasisConfig>) => {\n config = { ...config, ...newConfig };\n\n if (config.debug && !booted) {\n UI.displayBootLog(WINDOW_SIZE);\n booted = true;\n }\n};\n\nexport const history = new Map<string, number[]>();\nexport const currentTickBatch = new Set<string>();\nlet updateLog: { label: string; ts: number }[] = [];\nlet currentEffectSource: string | null = null; \nlet tick = 0;\nlet isBatching = false;\n\nconst analyzeBasis = () => {\n if (!config.debug) return;\n\n const entries = Array.from(history.entries());\n if (entries.length < 2) return;\n\n entries.forEach(([labelA, vecA], i) => {\n entries.slice(i + 1).forEach(([labelB, vecB]) => {\n const sim = calculateCosineSimilarity(vecA, vecB);\n \n if (sim > SIMILARITY_THRESHOLD) {\n UI.displayRedundancyAlert(labelA, labelB, sim, history.size);\n }\n });\n });\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!config.debug) {\n console.warn(\"[Basis] Cannot generate report. Debug mode is OFF.\");\n return;\n }\n UI.displayHealthReport(history, calculateCosineSimilarity, threshold);\n};\n\nexport const beginEffectTracking = (label: string) => { currentEffectSource = label; };\nexport const endEffectTracking = () => { currentEffectSource = null; };\n\nexport const registerVariable = (label: string) => {\n if (!config.debug) return; \n\n if (!history.has(label)) {\n history.set(label, new Array(WINDOW_SIZE).fill(0));\n }\n};\n\nexport const unregisterVariable = (label: string) => {\n history.delete(label);\n};\n\nexport const recordUpdate = (label: string): boolean => {\n if (!config.debug) return true;\n\n const now = Date.now();\n\n updateLog.push({ label, ts: now });\n updateLog = updateLog.filter(e => now - e.ts < LOOP_WINDOW_MS);\n if (updateLog.filter(e => e.label === label).length > LOOP_THRESHOLD) {\n UI.displayInfiniteLoop(label);\n return false;\n }\n\n if (currentEffectSource && currentEffectSource !== label) {\n UI.displayCausalHint(label, currentEffectSource);\n }\n\n currentTickBatch.add(label);\n\n if (!isBatching) {\n isBatching = true;\n setTimeout(() => {\n tick++;\n history.forEach((vec, l) => {\n vec.shift();\n vec.push(currentTickBatch.has(l) ? 1 : 0);\n });\n\n currentTickBatch.clear();\n isBatching = false;\n \n if (tick % ANALYSIS_INTERVAL === 0) {\n analyzeBasis();\n }\n }, 20);\n }\n\n return true;\n};\n\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n}\n\nexport const __testEngine__ = {\n config,\n configureBasis,\n history,\n currentTickBatch,\n registerVariable,\n recordUpdate,\n printBasisHealthReport,\n beginEffectTracking,\n endEffectTracking,\n};","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useEffect, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\n\nconst BasisContext = createContext({ debug: false });\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n \n useLayoutEffect(() => {\n configureBasis({ debug });\n\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n \n {(debug && isWeb) && (\n <div style={{ \n position: 'fixed', bottom: 10, right: 10, background: 'black', color: '#0f0', \n padding: '5px 10px', fontSize: '10px', fontFamily: 'monospace', \n border: '1px solid #0f0', zIndex: 99999, borderRadius: '4px', pointerEvents: 'none'\n }}>\n BASIS_ENGINE: ACTIVE\n </div>\n )}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/hooks.ts\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore, \n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n use as reactUse,\n useOptimistic as reactUseOptimistic,\n useActionState as reactUseActionState\n} from 'react';\n\nimport { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, config } from './engine';\nimport * as engine from './engine';\n\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\nexport function useState<S>(initialState: S | (() => S), label?: string): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = label || 'anonymous_state';\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const setter = reactUseCallback((newValue: any) => { if (recordUpdate(effectiveLabel)) setVal(newValue); }, [effectiveLabel, setVal]);\n return [val, setter];\n}\n\nexport function useRef<T>(initialValue: T): React.RefObject<T>;\nexport function useRef<T>(initialValue: T | null): React.RefObject<T>;\nexport function useRef<T = undefined>(): React.MutableRefObject<T | undefined>;\nexport function useRef<T>(initialValue?: T, _label?: string): any { return reactUseRef(initialValue); }\n\nexport function useReducer<R extends React.Reducer<any, any>, I>(reducer: R, initialArg: I, init?: any, label?: string): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const effectiveLabel = typeof init === 'string' ? init : (label || 'anonymous_reducer');\n const reactInit = typeof init === 'function' ? init : undefined;\n const [state, dispatch] = reactUseReducer(reducer, initialArg, reactInit);\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const basisDispatch = reactUseCallback((action: any) => { if (recordUpdate(effectiveLabel)) dispatch(action); }, [effectiveLabel, dispatch]);\n return [state, basisDispatch] as any;\n}\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = label || 'anonymous_projection';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Valid Projection: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: any[]) => any>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = label || 'anonymous_callback';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Stable Callback: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useTransition(_label?: string): [boolean, (callback: () => void) => void] {\n const [isPending, startTransition] = reactUseTransition();\n const effectiveLabel = _label || 'anonymous_transition';\n const basisStartTransition = (callback: () => void) => {\n if (config.debug) console.log(`%c [Basis] Transition Started: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\");\n startTransition(callback);\n };\n return [isPending, basisStartTransition];\n}\n\nexport function useDeferredValue<T>(value: T, initialValueOrLabel?: T | string, label?: string): T {\n const isLabelAsSecondArg = typeof initialValueOrLabel === 'string' && label === undefined;\n const actualInitialValue = isLabelAsSecondArg ? undefined : initialValueOrLabel as T;\n const effectiveLabel = isLabelAsSecondArg ? (initialValueOrLabel as string) : (label || 'anonymous_deferred');\n const deferredValue = reactUseDeferredValue(value, actualInitialValue);\n reactUseEffect(() => { if (config.debug && value !== deferredValue) console.log(`%c [Basis] Value Deferred: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\"); }, [value, deferredValue, effectiveLabel]);\n return deferredValue;\n}\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue);\n if (label) (context as any)._basis_label = label;\n return context;\n}\n\nexport const useContext = reactUseContext;\nexport const useId = (label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = (reactUseSyncExternalStore as any);\n\nexport function use<T>(usable: React.Usable<T>): T {\n return reactUse(usable);\n}\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = label || 'anonymous_optimistic';\n \n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = (React as any).useOptimistic(passthrough, reducer) as [S, (p: P) => void];\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n \n const isLabelAsThirdArg = typeof permalink === 'string' && label === undefined;\n const actualPermalink = isLabelAsThirdArg ? undefined : permalink;\n const effectiveLabel = isLabelAsThirdArg ? (permalink as string) : (label || 'anonymous_action_state');\n\n const [state, reactDispatch, isPending] = (React as any).useActionState(\n action, \n initialState, \n actualPermalink\n ) as [State, (p: Payload) => void, boolean];\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\nexport const __test__ = { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, history: (engine as any).history, currentTickBatch: (engine as any).currentTickBatch };"],"mappings":"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","names":["history","isWeb","React","useEffect","useLayoutEffect","startTransition","createContext","useContext","useId","useDebugValue","useImperativeHandle","useInsertionEffect","useOptimistic","useActionState","Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createRef","forwardRef","isValidElement","lazy","memo","startTransition","version"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/logger.ts","../src/core/math.ts","../src/core/constants.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts","../src/hooks.ts"],"sourcesContent":["// src/index.ts\n\nimport * as ReactNamespace from 'react';\nimport * as ReactDOMNamespace from 'react-dom';\n\nimport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, __testEngine__ \n} from './engine';\n\nimport { BasisProvider, useBasisConfig } from './context';\n\nimport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, __test__, \n use,\n useOptimistic,\n useActionState\n} from './hooks';\n\n// 1. BASIS EXPORTS\nexport { \n history, currentTickBatch, config, configureBasis, \n registerVariable, unregisterVariable, recordUpdate, \n printBasisHealthReport, beginEffectTracking, endEffectTracking, \n __testEngine__, BasisProvider, useBasisConfig, __test__ \n};\n\n// 2. WRAPPED & REACT 19 HOOKS EXPORTS\nexport { \n useState, useReducer, useMemo, useCallback, useEffect, \n useLayoutEffect, useRef, createContext, useContext, useId, \n useDebugValue, useImperativeHandle, useInsertionEffect, \n useSyncExternalStore, useTransition, useDeferredValue, use, useOptimistic, useActionState \n};\n\nexport const Children = ReactNamespace.Children;\nexport const Component = ReactNamespace.Component;\nexport const Fragment = ReactNamespace.Fragment;\nexport const Profiler = ReactNamespace.Profiler;\nexport const PureComponent = ReactNamespace.PureComponent;\nexport const StrictMode = ReactNamespace.StrictMode;\nexport const Suspense = ReactNamespace.Suspense;\nexport const cloneElement = ReactNamespace.cloneElement;\nexport const createRef = ReactNamespace.createRef;\nexport const forwardRef = ReactNamespace.forwardRef;\nexport const isValidElement = ReactNamespace.isValidElement;\nexport const lazy = ReactNamespace.lazy;\nexport const memo = ReactNamespace.memo;\nexport const startTransition = ReactNamespace.startTransition;\nexport const version = ReactNamespace.version;\n\n// 4. REACT DOM PROXY\nconst RD: any = ReactDOMNamespace;\nexport const createPortal = RD.createPortal;\nexport const flushSync = RD.flushSync;\n\n// 5. NAMESPACE & DEFAULT\nexport { ReactNamespace as React };\nexport default ReactNamespace;\n\n// 6. TYPES (TypeScript-only)\nexport type {\n ReactNode, ReactElement, ReactPortal, FC, ComponentType,\n ComponentProps, ComponentPropsWithoutRef, ComponentPropsWithRef,\n ElementType, JSX, CSSProperties, Ref, RefObject, MutableRefObject,\n Dispatch, SetStateAction, Reducer, ChangeEvent, FormEvent,\n MouseEvent, KeyboardEvent, FocusEvent, PointerEvent, TouchEvent,\n DragEvent, SVGProps, InputHTMLAttributes, ButtonHTMLAttributes,\n AnchorHTMLAttributes, HTMLAttributes, HTMLProps, DetailedHTMLProps,\n PropsWithChildren, Attributes, Key, EffectCallback, DependencyList\n} from 'react';","// src/core/logger.ts\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst STYLES = {\n basis: \"background: #6c5ce7; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;\",\n version: \"background: #a29bfe; color: #2d3436; padding: 2px 6px; border-radius: 3px; margin-left: -4px;\",\n\n headerRed: \"background: #d63031; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerBlue: \"background: #0984e3; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n headerGreen: \"background: #00b894; color: white; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n\n label: \"background: #dfe6e9; color: #2d3436; padding: 0 4px; border-radius: 3px; font-family: monospace; font-weight: bold; border: 1px solid #b2bec3;\",\n location: \"color: #0984e3; font-family: monospace; font-weight: bold;\",\n math: \"color: #636e72; font-style: italic; font-family: serif;\",\n\n codeBlock: `\n background: #1e1e1e; \n color: #9cdcfe; \n padding: 8px 12px; \n display: block; \n margin: 4px 0; \n border-left: 3px solid #00b894; \n font-family: 'Fira Code', monospace; \n line-height: 1.4; \n border-radius: 0 3px 3px 0;\n `,\n\n dim: \"color: #e84393; font-weight: bold;\",\n bold: \"font-weight: bold;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return {\n file: parts[0] || \"Unknown\",\n name: parts[1] || label\n };\n};\n\nconst logBasis = (message: string, ...styles: string[]) => {\n if (isWeb) {\n console.log(message, ...styles);\n } else {\n console.log(message.replace(/%c/g, ''));\n }\n};\n\nexport const displayBootLog = (windowSize: number) => {\n logBasis(\n `%cBasis%cAuditor%c Monitoring State Space | Window: ${windowSize} ticks`,\n STYLES.basis,\n STYLES.version,\n \"color: #636e72; font-style: italic; margin-left: 8px;\"\n );\n};\n\nexport const displayRedundancyAlert = (labelA: string, labelB: string, sim: number, totalDimensions: number) => {\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n const isCrossFile = infoA.file !== infoB.file;\n\n if (isWeb) {\n console.group(`%c π BASIS | DIMENSION COLLAPSE DETECTED `, STYLES.headerRed);\n console.log(`%cπ Location: %c${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`, STYLES.bold, STYLES.location);\n console.log(\n `%cAnalysis:%c Vectors %c${infoA.name}%c and %c${infoB.name}%c are collinear (redundant).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cHow to fix:%c Project %c${infoB.name}%c as a derived value:\n%c// π οΈ Basis Fix: Remove useState, use useMemo\nconst ${infoB.name} = useMemo(() => deriveFrom(${infoA.name}), [${infoA.name}]);%c`,\n \"color: #00b894; font-weight: bold;\", \"\",\n \"color: #e84393; font-weight: bold;\", \"\",\n STYLES.codeBlock, \"\"\n );\n console.groupCollapsed(`%c π¬ Proof Details `, \"color: #636e72; font-size: 10px; cursor: pointer;\");\n console.table({\n \"Similarity\": `${(sim * 100).toFixed(2)}%`,\n \"Linear Dependency\": \"TRUE\",\n \"Rank\": totalDimensions - 1\n });\n console.groupEnd();\n console.groupEnd();\n } else {\n console.log(`[BASIS] REDUNDANCY DETECTED: ${infoA.name} <-> ${infoB.name} (${(sim * 100).toFixed(0)}% similarity)`);\n console.log(`Location: ${isCrossFile ? `${infoA.file} & ${infoB.file}` : infoA.file}`);\n }\n};\n\nexport const displayCausalHint = (targetLabel: string, sourceLabel: string) => {\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n\n const isCrossFile = target.file !== source.file;\n const locationPath = isCrossFile\n ? `${source.file} β ${target.file}`\n : target.file;\n\n if (isWeb) {\n console.groupCollapsed(`%c π‘ BASIS | CAUSALITY (Sequential Update) `, STYLES.headerBlue);\n console.log(`%cπ Location: %c${locationPath}`, STYLES.bold, STYLES.location);\n console.log(\n `%cSequence:%c %c${source.name}%c β Effect β %c${target.name}%c`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cObservation:%c Variable %c${target.name}%c is being manually synchronized. This creates a %c\"Double Render Cycle\"%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", \"color: #d63031; font-weight: bold;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS] CAUSALITY: ${source.name} β ${target.name} (Double Render Cycle)`);\n }\n};\n\nexport const displayInfiniteLoop = (label: string) => {\n const info = parseLabel(label);\n if (isWeb) {\n console.group(`%c π BASIS CRITICAL | CIRCUIT BREAKER `, STYLES.headerRed);\n console.error(\n `Infinite oscillation detected on: %c${info.name}%c\\nExecution halted to prevent browser thread lock.`,\n \"color: white; background: #d63031; padding: 2px 4px; border-radius: 3px;\", \"\"\n );\n console.groupEnd();\n } else {\n console.log(`[BASIS CRITICAL] INFINITE LOOP ON: ${info.name}. Execution halted.`);\n }\n};\n\nexport const displayHealthReport = (\n history: Map<string, number[]>,\n similarityFn: (A: number[], B: number[]) => number,\n threshold: number\n) => {\n const entries = Array.from(history.entries());\n const totalVars = entries.length;\n if (totalVars === 0) return;\n\n const clusters: string[][] = [];\n const processed = new Set<string>();\n let independentCount = 0;\n\n entries.forEach(([labelA, vecA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n entries.forEach(([labelB, vecB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = similarityFn(vecA, vecB);\n if (sim > threshold) {\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) {\n clusters.push(currentCluster);\n } else {\n independentCount++;\n }\n });\n\n const systemRank = independentCount + clusters.length;\n const efficiency = (systemRank / totalVars) * 100;\n\n if (isWeb) {\n console.group(`%c π BASIS | SYSTEM HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cBasis Efficiency: %c${efficiency.toFixed(1)}% %c(Rank: ${systemRank}/${totalVars})`,\n STYLES.bold,\n `color: ${efficiency > 85 ? '#00b894' : '#d63031'}; font-size: 16px; font-weight: bold;`,\n \"color: #636e72; font-style: italic;\"\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Redundancy Clusters:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n clusters.forEach((cluster, idx) => {\n const names = cluster.map(l => parseLabel(l).name).join(' β· ');\n console.log(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace;\");\n });\n } else {\n console.log(\"%cβ¨ All state variables are linearly independent. Your Basis is optimal.\", \"color: #00b894; font-weight: bold; margin-top: 10px;\");\n }\n\n if (totalVars > 0 && totalVars < 15) {\n console.groupCollapsed(\"%cView Full Correlation Matrix\", \"color: #636e72; font-size: 11px;\");\n const matrix: any = {};\n entries.forEach(([labelA]) => {\n const nameA = parseLabel(labelA).name;\n matrix[nameA] = {};\n entries.forEach(([labelB]) => {\n const nameB = parseLabel(labelB).name;\n const sim = similarityFn(history.get(labelA)!, history.get(labelB)!);\n matrix[nameA][nameB] = sim > threshold ? `β ${(sim * 100).toFixed(0)}%` : `β
`;\n });\n });\n console.table(matrix);\n console.groupEnd();\n }\n console.groupEnd();\n } else {\n console.log(`[BASIS HEALTH] Efficiency: ${efficiency.toFixed(1)}% (Rank: ${systemRank}/${totalVars})`);\n if (clusters.length > 0) {\n console.log(`Redundancy Clusters: ${clusters.length}`);\n }\n }\n};","// src/core/math.ts\n\nexport const calculateCosineSimilarity = (A: number[], B: number[]): number => {\n let dot = 0, magA = 0, magB = 0;\n for (let i = 0; i < A.length; i++) {\n dot += A[i] * B[i];\n magA += A[i] * A[i];\n magB += B[i] * B[i];\n }\n return magA && magB ? dot / (Math.sqrt(magA) * Math.sqrt(magB)) : 0;\n};","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 25;\nexport const LOOP_WINDOW_MS = 500;\nexport const ANALYSIS_INTERVAL = 5;","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { calculateCosineSimilarity } from './core/math';\nimport { \n WINDOW_SIZE, \n SIMILARITY_THRESHOLD, \n LOOP_THRESHOLD, \n LOOP_WINDOW_MS, \n ANALYSIS_INTERVAL \n} from './core/constants';\n\nexport let redundantLabels = new Set<string>();\n\nexport interface BasisConfig {\n debug: boolean;\n}\n\nexport let config: BasisConfig = {\n debug: false,\n};\n\nlet booted = false;\n\nexport const configureBasis = (newConfig: Partial<BasisConfig>) => {\n config = { ...config, ...newConfig };\n\n if (config.debug && !booted) {\n UI.displayBootLog(WINDOW_SIZE);\n booted = true;\n }\n};\n\nexport const history = new Map<string, number[]>();\nexport const currentTickBatch = new Set<string>();\nlet updateLog: { label: string; ts: number }[] = [];\nlet currentEffectSource: string | null = null; \nlet tick = 0;\nlet isBatching = false;\n\nconst analyzeBasis = () => {\n if (!config.debug) return;\n\n const entries = Array.from(history.entries());\n if (entries.length < 2) return;\n\n const newRedundant = new Set<string>();\n\n entries.forEach(([labelA, vecA], i) => {\n entries.slice(i + 1).forEach(([labelB, vecB]) => {\n const sim = calculateCosineSimilarity(vecA, vecB);\n \n if (sim > SIMILARITY_THRESHOLD) {\n newRedundant.add(labelA);\n newRedundant.add(labelB);\n UI.displayRedundancyAlert(labelA, labelB, sim, history.size);\n }\n });\n });\n\n redundantLabels = newRedundant;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!config.debug) {\n console.warn(\"[Basis] Cannot generate report. Debug mode is OFF.\");\n return;\n }\n UI.displayHealthReport(history, calculateCosineSimilarity, threshold);\n};\n\nexport const beginEffectTracking = (label: string) => { currentEffectSource = label; };\nexport const endEffectTracking = () => { currentEffectSource = null; };\n\nexport const registerVariable = (label: string) => {\n if (!config.debug) return; \n\n if (!history.has(label)) {\n history.set(label, new Array(WINDOW_SIZE).fill(0));\n }\n};\n\nexport const unregisterVariable = (label: string) => {\n history.delete(label);\n};\n\nexport const recordUpdate = (label: string): boolean => {\n if (!config.debug) return true;\n\n const now = Date.now();\n\n updateLog.push({ label, ts: now });\n updateLog = updateLog.filter(e => now - e.ts < LOOP_WINDOW_MS);\n if (updateLog.filter(e => e.label === label).length > LOOP_THRESHOLD) {\n UI.displayInfiniteLoop(label);\n return false;\n }\n\n if (currentEffectSource && currentEffectSource !== label) {\n UI.displayCausalHint(label, currentEffectSource);\n }\n\n currentTickBatch.add(label);\n\n if (!isBatching) {\n isBatching = true;\n setTimeout(() => {\n tick++;\n history.forEach((vec, l) => {\n vec.shift();\n vec.push(currentTickBatch.has(l) ? 1 : 0);\n });\n\n currentTickBatch.clear();\n isBatching = false;\n \n if (tick % ANALYSIS_INTERVAL === 0) {\n analyzeBasis();\n }\n }, 20);\n }\n\n return true;\n};\n\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n}\n\nexport const __testEngine__ = {\n config,\n configureBasis,\n history,\n currentTickBatch,\n registerVariable,\n recordUpdate,\n printBasisHealthReport,\n beginEffectTracking,\n endEffectTracking,\n};","// src/context.tsx\n\nimport React, { createContext, useContext, ReactNode, useLayoutEffect } from 'react';\nimport { configureBasis } from './engine';\nimport { BasisHUD } from './ui/BasisHUD';\n\nconst BasisContext = createContext({ debug: false });\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface BasisProviderProps {\n children: ReactNode;\n debug?: boolean;\n}\n\nexport const BasisProvider: React.FC<BasisProviderProps> = ({ children, debug = true }) => {\n useLayoutEffect(() => {\n configureBasis({ debug });\n if (isWeb) {\n (window as any)._basis_debug = debug;\n }\n }, [debug]);\n\n return (\n <BasisContext.Provider value={{ debug }}>\n {children}\n {(debug && isWeb) && <BasisHUD />}\n </BasisContext.Provider>\n );\n};\n\nexport const useBasisConfig = () => useContext(BasisContext);","// src/ui/BasisHUD.tsx\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { history, redundantLabels } from '../engine';\nimport { HUD_DIMENSIONS as DIM, getHUDContainerStyle, HUD_THEME as THEME } from './config';\n\nexport const BasisHUD: React.FC = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!isExpanded) return;\n\n let animationFrame: number;\n\n const draw = () => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const entries = Array.from(history.entries());\n const dpr = window.devicePixelRatio || 1;\n\n const rawWidth = (DIM.WINDOW_SIZE * DIM.COL_WIDTH) + DIM.LABEL_WIDTH + (DIM.PADDING * 2);\n const rawHeight = Math.max(entries.length * DIM.ROW_HEIGHT + (DIM.PADDING * 2), 60);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) {\n renderEmptyState(ctx);\n } else {\n renderMatrix(ctx, entries);\n }\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n draw();\n return () => cancelAnimationFrame(animationFrame);\n }, [isExpanded]);\n\n return (\n <div style={getHUDContainerStyle(isExpanded)} onClick={() => setIsExpanded(!isExpanded)}>\n <HUDHeader isExpanded={isExpanded} />\n {isExpanded && (\n <div style={{ padding: '10px 14px 15px 14px' }}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n <HUDFooter />\n </div>\n )}\n </div>\n );\n};\n\nfunction updateCanvasSize(canvas: HTMLCanvasElement, w: number, h: number, dpr: number) {\n const targetW = Math.floor(w * dpr);\n const targetH = Math.floor(h * dpr);\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n canvas.style.width = `${w}px`;\n canvas.style.height = `${h}px`;\n }\n}\n\nfunction renderEmptyState(ctx: CanvasRenderingContext2D) {\n ctx.fillStyle = THEME.textDim;\n ctx.font = '11px Inter, sans-serif';\n ctx.fillText('Waiting for state transitions...', DIM.PADDING, 30);\n}\n\nfunction renderMatrix(ctx: CanvasRenderingContext2D, entries: [string, number[]][]) {\n entries.forEach(([label, vector], rowIndex) => {\n const y = rowIndex * DIM.ROW_HEIGHT + DIM.PADDING;\n const stateName = label.split(' -> ')[1] || label;\n const isRedundant = redundantLabels.has(label);\n\n vector.forEach((bit, colIndex) => {\n const x = colIndex * DIM.COL_WIDTH + DIM.PADDING;\n ctx.fillStyle = bit === 1 ? (isRedundant ? THEME.error : THEME.success) : THEME.grid;\n\n const w = DIM.COL_WIDTH - 1.5;\n const h = DIM.ROW_HEIGHT - 4;\n\n if (ctx.roundRect) {\n ctx.beginPath();\n ctx.roundRect(x, y, w, h, DIM.RADIUS);\n ctx.fill();\n } else {\n ctx.fillRect(x, y, w, h);\n }\n });\n\n const textX = (DIM.WINDOW_SIZE * DIM.COL_WIDTH) + DIM.PADDING + 10;\n ctx.fillStyle = isRedundant ? THEME.error : THEME.text;\n ctx.font = `${isRedundant ? '600' : '400'} 11px Inter, Menlo, monospace`;\n \n const cleanName = isRedundant ? `! ${stateName}` : stateName;\n const truncatedName = cleanName.length > 18 ? cleanName.substring(0, 16) + '..' : cleanName;\n ctx.fillText(truncatedName, textX, y + 9);\n });\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div style={{ \n padding: '10px 14px', \n backgroundColor: isExpanded ? THEME.header : 'transparent', \n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600, fontSize: '11px', letterSpacing: '0.05em',\n display: 'flex', justifyContent: 'space-between', alignItems: 'center',\n transition: 'background 0.3s'\n }}>\n <span>{isExpanded ? 'STATE BASIS MATRIX' : 'π BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>R50</span>}\n </div>\n);\n\nconst HUDFooter: React.FC = () => (\n <div style={{ \n marginTop: '12px', paddingTop: '8px', borderTop: `1px solid ${THEME.grid}`,\n color: THEME.textDim, fontSize: '9px', display: 'flex', justifyContent: 'space-between'\n }}>\n <span>LINEAR DEPENDENCY AUDIT</span>\n <span>THRESHOLD 0.88</span>\n </div>\n);\n","// src/ui/config.ts\n\nimport { WINDOW_SIZE } from '../core/constants';\n\nexport const HUD_DIMENSIONS = {\n WINDOW_SIZE,\n ROW_HEIGHT: 16,\n COL_WIDTH: 5,\n LABEL_WIDTH: 100,\n PADDING: 10,\n RADIUS: 1.5,\n};\n\nexport const HUD_THEME = {\n bg: 'rgba(15, 23, 42, 0.95)',\n border: '#334155',\n header: '#8b5cf6',\n text: '#f1f5f9',\n textDim: '#94a3b8',\n success: '#10b981',\n error: '#ef4444',\n grid: '#1e293b',\n};\n\nexport const getHUDContainerStyle = (isExpanded: boolean): React.CSSProperties => ({\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n backgroundColor: HUD_THEME.bg,\n border: `1px solid ${HUD_THEME.border}`,\n borderRadius: '12px',\n backdropFilter: 'blur(8px)',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n zIndex: 999999,\n overflow: 'hidden',\n width: isExpanded ? '380px' : '130px',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n cursor: 'pointer',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n});","// src/hooks.ts\nimport * as React from 'react';\nimport {\n useState as reactUseState,\n useEffect as reactUseEffect,\n useMemo as reactUseMemo,\n useReducer as reactUseReducer,\n useContext as reactUseContext,\n useSyncExternalStore as reactUseSyncExternalStore, \n createContext as reactCreateContext,\n useRef as reactUseRef,\n useLayoutEffect as reactUseLayoutEffect,\n useCallback as reactUseCallback,\n useTransition as reactUseTransition,\n useDeferredValue as reactUseDeferredValue,\n use as reactUse,\n useOptimistic as reactUseOptimistic,\n useActionState as reactUseActionState\n} from 'react';\n\nimport { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, config } from './engine';\nimport * as engine from './engine';\n\ntype GetReducerState<R extends React.Reducer<any, any>> = R extends React.Reducer<infer S, any> ? S : never;\ntype GetReducerAction<R extends React.Reducer<any, any>> = R extends React.Reducer<any, infer A> ? A : never;\n\nexport function useState<S>(initialState: S | (() => S), label?: string): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = label || 'anonymous_state';\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const setter = reactUseCallback((newValue: any) => { if (recordUpdate(effectiveLabel)) setVal(newValue); }, [effectiveLabel, setVal]);\n return [val, setter];\n}\n\nexport function useRef<T>(initialValue: T): React.RefObject<T>;\nexport function useRef<T>(initialValue: T | null): React.RefObject<T>;\nexport function useRef<T = undefined>(): React.MutableRefObject<T | undefined>;\nexport function useRef<T>(initialValue?: T, _label?: string): any { return reactUseRef(initialValue); }\n\nexport function useReducer<R extends React.Reducer<any, any>, I>(reducer: R, initialArg: I, init?: any, label?: string): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const effectiveLabel = typeof init === 'string' ? init : (label || 'anonymous_reducer');\n const reactInit = typeof init === 'function' ? init : undefined;\n const [state, dispatch] = reactUseReducer(reducer, initialArg, reactInit);\n reactUseEffect(() => { registerVariable(effectiveLabel); return () => unregisterVariable(effectiveLabel); }, [effectiveLabel]);\n const basisDispatch = reactUseCallback((action: any) => { if (recordUpdate(effectiveLabel)) dispatch(action); }, [effectiveLabel, dispatch]);\n return [state, basisDispatch] as any;\n}\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = label || 'anonymous_projection';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Valid Projection: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: any[]) => any>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = label || 'anonymous_callback';\n reactUseEffect(() => { if (config.debug) console.log(`%c [Basis] Stable Callback: \"${effectiveLabel}\" `, \"color: #2ecc71; font-weight: bold;\"); }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string) {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => { beginEffectTracking(effectiveLabel); const cleanup = effect(); endEffectTracking(); return cleanup; }, deps);\n}\n\nexport function useTransition(_label?: string): [boolean, (callback: () => void) => void] {\n const [isPending, startTransition] = reactUseTransition();\n const effectiveLabel = _label || 'anonymous_transition';\n const basisStartTransition = (callback: () => void) => {\n if (config.debug) console.log(`%c [Basis] Transition Started: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\");\n startTransition(callback);\n };\n return [isPending, basisStartTransition];\n}\n\nexport function useDeferredValue<T>(value: T, initialValueOrLabel?: T | string, label?: string): T {\n const isLabelAsSecondArg = typeof initialValueOrLabel === 'string' && label === undefined;\n const actualInitialValue = isLabelAsSecondArg ? undefined : initialValueOrLabel as T;\n const effectiveLabel = isLabelAsSecondArg ? (initialValueOrLabel as string) : (label || 'anonymous_deferred');\n const deferredValue = reactUseDeferredValue(value, actualInitialValue);\n reactUseEffect(() => { if (config.debug && value !== deferredValue) console.log(`%c [Basis] Value Deferred: \"${effectiveLabel}\" `, \"color: #e67e22; font-weight: bold;\"); }, [value, deferredValue, effectiveLabel]);\n return deferredValue;\n}\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue);\n if (label) (context as any)._basis_label = label;\n return context;\n}\n\nexport const useContext = reactUseContext;\nexport const useId = (label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = (reactUseSyncExternalStore as any);\n\nexport function use<T>(usable: React.Usable<T>): T {\n return reactUse(usable);\n}\n\nexport function useOptimistic<S, P>(\n passthrough: S,\n reducer?: (state: S, payload: P) => S,\n label?: string\n): [S, (payload: P) => void] {\n const effectiveLabel = label || 'anonymous_optimistic';\n \n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = (React as any).useOptimistic(passthrough, reducer) as [S, (p: P) => void];\n\n const addOptimistic = reactUseCallback((payload: P) => {\n if (recordUpdate(effectiveLabel)) {\n reactAddOptimistic(payload);\n }\n }, [effectiveLabel, reactAddOptimistic]);\n\n return [state, addOptimistic];\n}\n\nexport function useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n label?: string\n): [state: State, dispatch: (payload: Payload) => void, isPending: boolean] {\n \n const isLabelAsThirdArg = typeof permalink === 'string' && label === undefined;\n const actualPermalink = isLabelAsThirdArg ? undefined : permalink;\n const effectiveLabel = isLabelAsThirdArg ? (permalink as string) : (label || 'anonymous_action_state');\n\n const [state, reactDispatch, isPending] = (React as any).useActionState(\n action, \n initialState, \n actualPermalink\n ) as [State, (p: Payload) => void, boolean];\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => unregisterVariable(effectiveLabel);\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((payload: Payload) => {\n if (recordUpdate(effectiveLabel)) {\n reactDispatch(payload);\n }\n }, [effectiveLabel, reactDispatch]);\n\n return [state, basisDispatch, isPending];\n}\n\nexport const __test__ = { registerVariable, unregisterVariable, recordUpdate, beginEffectTracking, endEffectTracking, history: (engine as any).history, currentTickBatch: (engine as any).currentTickBatch };"],"mappings":";AAEA,YAAY,oBAAoB;AAChC,YAAY,uBAAuB;;;ACDnC,IAAM,QAAQ,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAE1E,IAAM,SAAS;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EAET,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EAEb,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EAEN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYX,KAAK;AAAA,EACL,MAAM;AACR;AAEA,IAAM,aAAa,CAAC,UAAkB;AACpC,QAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,SAAO;AAAA,IACL,MAAM,MAAM,CAAC,KAAK;AAAA,IAClB,MAAM,MAAM,CAAC,KAAK;AAAA,EACpB;AACF;AAEA,IAAM,WAAW,CAAC,YAAoB,WAAqB;AACzD,MAAI,OAAO;AACT,YAAQ,IAAI,SAAS,GAAG,MAAM;AAAA,EAChC,OAAO;AACL,YAAQ,IAAI,QAAQ,QAAQ,OAAO,EAAE,CAAC;AAAA,EACxC;AACF;AAEO,IAAM,iBAAiB,CAAC,eAAuB;AACpD;AAAA,IACE,uDAAuD,UAAU;AAAA,IACjE,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,EACF;AACF;AAEO,IAAM,yBAAyB,CAAC,QAAgB,QAAgB,KAAa,oBAA4B;AAC9G,QAAM,QAAQ,WAAW,MAAM;AAC/B,QAAM,QAAQ,WAAW,MAAM;AAC/B,QAAM,cAAc,MAAM,SAAS,MAAM;AAEzC,MAAI,OAAO;AACT,YAAQ,MAAM,qDAA8C,OAAO,SAAS;AAC5E,YAAQ,IAAI,2BAAoB,cAAc,GAAG,MAAM,IAAI,MAAM,MAAM,IAAI,KAAK,MAAM,IAAI,IAAI,OAAO,MAAM,OAAO,QAAQ;AAC1H,YAAQ;AAAA,MACN,2BAA2B,MAAM,IAAI,YAAY,MAAM,IAAI;AAAA,MAC3D,OAAO;AAAA,MAAM;AAAA,MAAI,OAAO;AAAA,MAAO;AAAA,MAAI,OAAO;AAAA,MAAO;AAAA,IACnD;AACA,YAAQ;AAAA,MACN,6BAA6B,MAAM,IAAI;AAAA;AAAA,QAErC,MAAM,IAAI,+BAA+B,MAAM,IAAI,OAAO,MAAM,IAAI;AAAA,MACtE;AAAA,MAAsC;AAAA,MACtC;AAAA,MAAsC;AAAA,MACtC,OAAO;AAAA,MAAW;AAAA,IACpB;AACA,YAAQ,eAAe,+BAAwB,mDAAmD;AAClG,YAAQ,MAAM;AAAA,MACZ,cAAc,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,MACvC,qBAAqB;AAAA,MACrB,QAAQ,kBAAkB;AAAA,IAC5B,CAAC;AACD,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA,EACnB,OAAO;AACL,YAAQ,IAAI,gCAAgC,MAAM,IAAI,QAAQ,MAAM,IAAI,MAAM,MAAM,KAAK,QAAQ,CAAC,CAAC,eAAe;AAClH,YAAQ,IAAI,aAAa,cAAc,GAAG,MAAM,IAAI,MAAM,MAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAAA,EACvF;AACF;AAEO,IAAM,oBAAoB,CAAC,aAAqB,gBAAwB;AAC7E,QAAM,SAAS,WAAW,WAAW;AACrC,QAAM,SAAS,WAAW,WAAW;AAErC,QAAM,cAAc,OAAO,SAAS,OAAO;AAC3C,QAAM,eAAe,cACjB,GAAG,OAAO,IAAI,WAAM,OAAO,IAAI,KAC/B,OAAO;AAEX,MAAI,OAAO;AACT,YAAQ,eAAe,uDAAgD,OAAO,UAAU;AACxF,YAAQ,IAAI,2BAAoB,YAAY,IAAI,OAAO,MAAM,OAAO,QAAQ;AAC5E,YAAQ;AAAA,MACN,mBAAmB,OAAO,IAAI,6BAAmB,OAAO,IAAI;AAAA,MAC5D,OAAO;AAAA,MAAM;AAAA,MAAI,OAAO;AAAA,MAAO;AAAA,MAAI,OAAO;AAAA,MAAO;AAAA,IACnD;AACA,YAAQ;AAAA,MACN,+BAA+B,OAAO,IAAI;AAAA,MAC1C,OAAO;AAAA,MAAM;AAAA,MAAI,OAAO;AAAA,MAAO;AAAA,MAAI;AAAA,MAAsC;AAAA,IAC3E;AACA,YAAQ,SAAS;AAAA,EACnB,OAAO;AACL,YAAQ,IAAI,sBAAsB,OAAO,IAAI,WAAM,OAAO,IAAI,wBAAwB;AAAA,EACxF;AACF;AAEO,IAAM,sBAAsB,CAAC,UAAkB;AACpD,QAAM,OAAO,WAAW,KAAK;AAC7B,MAAI,OAAO;AACT,YAAQ,MAAM,kDAA2C,OAAO,SAAS;AACzE,YAAQ;AAAA,MACN,uCAAuC,KAAK,IAAI;AAAA;AAAA,MAChD;AAAA,MAA4E;AAAA,IAC9E;AACA,YAAQ,SAAS;AAAA,EACnB,OAAO;AACL,YAAQ,IAAI,sCAAsC,KAAK,IAAI,qBAAqB;AAAA,EAClF;AACF;AAEO,IAAM,sBAAsB,CACjCA,UACA,cACA,cACG;AACH,QAAM,UAAU,MAAM,KAAKA,SAAQ,QAAQ,CAAC;AAC5C,QAAM,YAAY,QAAQ;AAC1B,MAAI,cAAc,EAAG;AAErB,QAAM,WAAuB,CAAC;AAC9B,QAAM,YAAY,oBAAI,IAAY;AAClC,MAAI,mBAAmB;AAEvB,UAAQ,QAAQ,CAAC,CAAC,QAAQ,IAAI,MAAM;AAClC,QAAI,UAAU,IAAI,MAAM,EAAG;AAC3B,UAAM,iBAAiB,CAAC,MAAM;AAC9B,cAAU,IAAI,MAAM;AACpB,YAAQ,QAAQ,CAAC,CAAC,QAAQ,IAAI,MAAM;AAClC,UAAI,WAAW,UAAU,UAAU,IAAI,MAAM,EAAG;AAChD,YAAM,MAAM,aAAa,MAAM,IAAI;AACnC,UAAI,MAAM,WAAW;AACnB,uBAAe,KAAK,MAAM;AAC1B,kBAAU,IAAI,MAAM;AAAA,MACtB;AAAA,IACF,CAAC;AACD,QAAI,eAAe,SAAS,GAAG;AAC7B,eAAS,KAAK,cAAc;AAAA,IAC9B,OAAO;AACL;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,aAAa,mBAAmB,SAAS;AAC/C,QAAM,aAAc,aAAa,YAAa;AAE9C,MAAI,OAAO;AACT,YAAQ,MAAM,8CAAuC,OAAO,WAAW;AACvE,YAAQ;AAAA,MACN,yBAAyB,WAAW,QAAQ,CAAC,CAAC,cAAc,UAAU,IAAI,SAAS;AAAA,MACnF,OAAO;AAAA,MACP,UAAU,aAAa,KAAK,YAAY,SAAS;AAAA,MACjD;AAAA,IACF;AAEA,QAAI,SAAS,SAAS,GAAG;AACvB,cAAQ,IAAI,cAAc,SAAS,MAAM,yBAAyB,sDAAsD;AACxH,eAAS,QAAQ,CAAC,SAAS,QAAQ;AACjC,cAAM,QAAQ,QAAQ,IAAI,OAAK,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,UAAK;AAC7D,gBAAQ,IAAI,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI,0EAA0E,yBAAyB;AAAA,MAC7I,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,IAAI,iFAA4E,sDAAsD;AAAA,IAChJ;AAEA,QAAI,YAAY,KAAK,YAAY,IAAI;AACnC,cAAQ,eAAe,kCAAkC,kCAAkC;AAC3F,YAAM,SAAc,CAAC;AACrB,cAAQ,QAAQ,CAAC,CAAC,MAAM,MAAM;AAC5B,cAAM,QAAQ,WAAW,MAAM,EAAE;AACjC,eAAO,KAAK,IAAI,CAAC;AACjB,gBAAQ,QAAQ,CAAC,CAAC,MAAM,MAAM;AAC5B,gBAAM,QAAQ,WAAW,MAAM,EAAE;AACjC,gBAAM,MAAM,aAAaA,SAAQ,IAAI,MAAM,GAAIA,SAAQ,IAAI,MAAM,CAAE;AACnE,iBAAO,KAAK,EAAE,KAAK,IAAI,MAAM,YAAY,WAAM,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;AAAA,QAC5E,CAAC;AAAA,MACH,CAAC;AACD,cAAQ,MAAM,MAAM;AACpB,cAAQ,SAAS;AAAA,IACnB;AACA,YAAQ,SAAS;AAAA,EACnB,OAAO;AACL,YAAQ,IAAI,8BAA8B,WAAW,QAAQ,CAAC,CAAC,YAAY,UAAU,IAAI,SAAS,GAAG;AACrG,QAAI,SAAS,SAAS,GAAG;AACvB,cAAQ,IAAI,wBAAwB,SAAS,MAAM,EAAE;AAAA,IACvD;AAAA,EACF;AACF;;;AC7MO,IAAM,4BAA4B,CAAC,GAAa,MAAwB;AAC7E,MAAI,MAAM,GAAG,OAAO,GAAG,OAAO;AAC9B,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,WAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACjB,YAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAClB,YAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,EACpB;AACA,SAAO,QAAQ,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK;AACpE;;;ACRO,IAAM,cAAc;AACpB,IAAM,uBAAuB;AAC7B,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;;;ACM1B,IAAI,kBAAkB,oBAAI,IAAY;AAMtC,IAAI,SAAsB;AAAA,EAC/B,OAAO;AACT;AAEA,IAAI,SAAS;AAEN,IAAM,iBAAiB,CAAC,cAAoC;AACjE,WAAS,EAAE,GAAG,QAAQ,GAAG,UAAU;AAEnC,MAAI,OAAO,SAAS,CAAC,QAAQ;AAC3B,IAAG,eAAe,WAAW;AAC7B,aAAS;AAAA,EACX;AACF;AAEO,IAAM,UAAU,oBAAI,IAAsB;AAC1C,IAAM,mBAAmB,oBAAI,IAAY;AAChD,IAAI,YAA6C,CAAC;AAClD,IAAI,sBAAqC;AACzC,IAAI,OAAO;AACX,IAAI,aAAa;AAEjB,IAAM,eAAe,MAAM;AACzB,MAAI,CAAC,OAAO,MAAO;AAEnB,QAAM,UAAU,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC5C,MAAI,QAAQ,SAAS,EAAG;AAExB,QAAM,eAAe,oBAAI,IAAY;AAErC,UAAQ,QAAQ,CAAC,CAAC,QAAQ,IAAI,GAAG,MAAM;AACrC,YAAQ,MAAM,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,IAAI,MAAM;AAC/C,YAAM,MAAM,0BAA0B,MAAM,IAAI;AAEhD,UAAI,MAAM,sBAAsB;AAC9B,qBAAa,IAAI,MAAM;AACvB,qBAAa,IAAI,MAAM;AACvB,QAAG,uBAAuB,QAAQ,QAAQ,KAAK,QAAQ,IAAI;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,oBAAkB;AACpB;AAEO,IAAM,yBAAyB,CAAC,YAAY,QAAQ;AACzD,MAAI,CAAC,OAAO,OAAO;AACjB,YAAQ,KAAK,oDAAoD;AACjE;AAAA,EACF;AACA,EAAG,oBAAoB,SAAS,2BAA2B,SAAS;AACtE;AAEO,IAAM,sBAAsB,CAAC,UAAkB;AAAE,wBAAsB;AAAO;AAC9E,IAAM,oBAAoB,MAAM;AAAE,wBAAsB;AAAM;AAE9D,IAAM,mBAAmB,CAAC,UAAkB;AACjD,MAAI,CAAC,OAAO,MAAO;AAEnB,MAAI,CAAC,QAAQ,IAAI,KAAK,GAAG;AACvB,YAAQ,IAAI,OAAO,IAAI,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC;AAAA,EACnD;AACF;AAEO,IAAM,qBAAqB,CAAC,UAAkB;AACnD,UAAQ,OAAO,KAAK;AACtB;AAEO,IAAM,eAAe,CAAC,UAA2B;AACtD,MAAI,CAAC,OAAO,MAAO,QAAO;AAE1B,QAAM,MAAM,KAAK,IAAI;AAErB,YAAU,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AACjC,cAAY,UAAU,OAAO,OAAK,MAAM,EAAE,KAAK,cAAc;AAC7D,MAAI,UAAU,OAAO,OAAK,EAAE,UAAU,KAAK,EAAE,SAAS,gBAAgB;AACpE,IAAG,oBAAoB,KAAK;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI,uBAAuB,wBAAwB,OAAO;AACxD,IAAG,kBAAkB,OAAO,mBAAmB;AAAA,EACjD;AAEA,mBAAiB,IAAI,KAAK;AAE1B,MAAI,CAAC,YAAY;AACf,iBAAa;AACb,eAAW,MAAM;AACf;AACA,cAAQ,QAAQ,CAAC,KAAK,MAAM;AAC1B,YAAI,MAAM;AACV,YAAI,KAAK,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,MAC1C,CAAC;AAED,uBAAiB,MAAM;AACvB,mBAAa;AAEb,UAAI,OAAO,sBAAsB,GAAG;AAClC,qBAAa;AAAA,MACf;AAAA,IACF,GAAG,EAAE;AAAA,EACP;AAEA,SAAO;AACT;AAEA,IAAI,OAAO,WAAW,aAAa;AACjC,EAAC,OAAe,mBAAmB;AACrC;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACzIA,SAAgB,eAAe,YAAuB,uBAAuB;;;ACA7E,SAAgB,WAAW,QAAQ,gBAAgB;;;ACE5C,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,IAAM,YAAY;AAAA,EACvB,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AACR;AAEO,IAAM,uBAAuB,CAAC,gBAA8C;AAAA,EACjF,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB,UAAU;AAAA,EAC3B,QAAQ,aAAa,UAAU,MAAM;AAAA,EACrC,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO,aAAa,UAAU;AAAA,EAC9B,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,kBAAkB;AACpB;;;ADSM,cAEE,YAFF;AA3CC,IAAM,WAAqB,MAAM;AACtC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,YAAY,OAA0B,IAAI;AAEhD,YAAU,MAAM;AACd,QAAI,CAAC,WAAY;AAEjB,QAAI;AAEJ,UAAM,OAAO,MAAM;AACjB,YAAM,SAAS,UAAU;AACzB,UAAI,CAAC,OAAQ;AACb,YAAM,MAAM,OAAO,WAAW,IAAI;AAClC,UAAI,CAAC,IAAK;AAEV,YAAM,UAAU,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC5C,YAAM,MAAM,OAAO,oBAAoB;AAEvC,YAAM,WAAY,eAAI,cAAc,eAAI,YAAa,eAAI,cAAe,eAAI,UAAU;AACtF,YAAM,YAAY,KAAK,IAAI,QAAQ,SAAS,eAAI,aAAc,eAAI,UAAU,GAAI,EAAE;AAElF,uBAAiB,QAAQ,UAAU,WAAW,GAAG;AAEjD,UAAI,KAAK;AACT,UAAI,MAAM,KAAK,GAAG;AAClB,UAAI,UAAU,GAAG,GAAG,UAAU,SAAS;AAEvC,UAAI,QAAQ,WAAW,GAAG;AACxB,yBAAiB,GAAG;AAAA,MACtB,OAAO;AACL,qBAAa,KAAK,OAAO;AAAA,MAC3B;AAEA,UAAI,QAAQ;AACZ,uBAAiB,sBAAsB,IAAI;AAAA,IAC7C;AAEA,SAAK;AACL,WAAO,MAAM,qBAAqB,cAAc;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,qBAAC,SAAI,OAAO,qBAAqB,UAAU,GAAG,SAAS,MAAM,cAAc,CAAC,UAAU,GACpF;AAAA,wBAAC,aAAU,YAAwB;AAAA,IAClC,cACC,qBAAC,SAAI,OAAO,EAAE,SAAS,sBAAsB,GAC3C;AAAA,0BAAC,YAAO,KAAK,WAAW,OAAO,EAAE,SAAS,QAAQ,GAAG;AAAA,MACrD,oBAAC,aAAU;AAAA,OACb;AAAA,KAEJ;AAEJ;AAEA,SAAS,iBAAiB,QAA2B,GAAW,GAAW,KAAa;AACtF,QAAM,UAAU,KAAK,MAAM,IAAI,GAAG;AAClC,QAAM,UAAU,KAAK,MAAM,IAAI,GAAG;AAClC,MAAI,OAAO,UAAU,WAAW,OAAO,WAAW,SAAS;AACzD,WAAO,QAAQ;AACf,WAAO,SAAS;AAChB,WAAO,MAAM,QAAQ,GAAG,CAAC;AACzB,WAAO,MAAM,SAAS,GAAG,CAAC;AAAA,EAC5B;AACF;AAEA,SAAS,iBAAiB,KAA+B;AACvD,MAAI,YAAY,UAAM;AACtB,MAAI,OAAO;AACX,MAAI,SAAS,oCAAoC,eAAI,SAAS,EAAE;AAClE;AAEA,SAAS,aAAa,KAA+B,SAA+B;AAClF,UAAQ,QAAQ,CAAC,CAAC,OAAO,MAAM,GAAG,aAAa;AAC7C,UAAM,IAAI,WAAW,eAAI,aAAa,eAAI;AAC1C,UAAM,YAAY,MAAM,MAAM,MAAM,EAAE,CAAC,KAAK;AAC5C,UAAM,cAAc,gBAAgB,IAAI,KAAK;AAE7C,WAAO,QAAQ,CAAC,KAAK,aAAa;AAChC,YAAM,IAAI,WAAW,eAAI,YAAY,eAAI;AACzC,UAAI,YAAY,QAAQ,IAAK,cAAc,UAAM,QAAQ,UAAM,UAAW,UAAM;AAEhF,YAAM,IAAI,eAAI,YAAY;AAC1B,YAAM,IAAI,eAAI,aAAa;AAE3B,UAAI,IAAI,WAAW;AACjB,YAAI,UAAU;AACd,YAAI,UAAU,GAAG,GAAG,GAAG,GAAG,eAAI,MAAM;AACpC,YAAI,KAAK;AAAA,MACX,OAAO;AACL,YAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,MACzB;AAAA,IACF,CAAC;AAED,UAAM,QAAS,eAAI,cAAc,eAAI,YAAa,eAAI,UAAU;AAChE,QAAI,YAAY,cAAc,UAAM,QAAQ,UAAM;AAClD,QAAI,OAAO,GAAG,cAAc,QAAQ,KAAK;AAEzC,UAAM,YAAY,cAAc,KAAK,SAAS,KAAK;AACnD,UAAM,gBAAgB,UAAU,SAAS,KAAK,UAAU,UAAU,GAAG,EAAE,IAAI,OAAO;AAClF,QAAI,SAAS,eAAe,OAAO,IAAI,CAAC;AAAA,EAC1C,CAAC;AACH;AAEA,IAAM,YAA+C,CAAC,EAAE,WAAW,MACjE,qBAAC,SAAI,OAAO;AAAA,EACV,SAAS;AAAA,EACT,iBAAiB,aAAa,UAAM,SAAS;AAAA,EAC7C,OAAO,aAAa,UAAU,UAAM;AAAA,EACpC,YAAY;AAAA,EAAK,UAAU;AAAA,EAAQ,eAAe;AAAA,EAClD,SAAS;AAAA,EAAQ,gBAAgB;AAAA,EAAiB,YAAY;AAAA,EAC9D,YAAY;AACd,GACE;AAAA,sBAAC,UAAM,uBAAa,uBAAuB,0BAAkB;AAAA,EAC5D,cAAc,oBAAC,UAAK,OAAO,EAAE,SAAS,KAAK,UAAU,MAAM,GAAG,iBAAG;AAAA,GACpE;AAGF,IAAM,YAAsB,MAC1B,qBAAC,SAAI,OAAO;AAAA,EACV,WAAW;AAAA,EAAQ,YAAY;AAAA,EAAO,WAAW,aAAa,UAAM,IAAI;AAAA,EACxE,OAAO,UAAM;AAAA,EAAS,UAAU;AAAA,EAAO,SAAS;AAAA,EAAQ,gBAAgB;AAC1E,GACE;AAAA,sBAAC,UAAK,qCAAuB;AAAA,EAC7B,oBAAC,UAAK,4BAAc;AAAA,GACtB;;;AD3GE,SAEuB,OAAAC,MAFvB,QAAAC,aAAA;AAjBJ,IAAM,eAAe,cAAc,EAAE,OAAO,MAAM,CAAC;AACnD,IAAMC,SAAQ,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAOnE,IAAM,gBAA8C,CAAC,EAAE,UAAU,QAAQ,KAAK,MAAM;AACzF,kBAAgB,MAAM;AACpB,mBAAe,EAAE,MAAM,CAAC;AACxB,QAAIA,QAAO;AACT,MAAC,OAAe,eAAe;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,gBAAAD,MAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,MAAM,GACnC;AAAA;AAAA,IACC,SAASC,UAAU,gBAAAF,KAAC,YAAS;AAAA,KACjC;AAEJ;AAEO,IAAM,iBAAiB,MAAM,WAAW,YAAY;;;AG7B3D,YAAYG,YAAW;AACvB;AAAA,EACE,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAAA,EACd,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,OAAO;AAAA,OAGF;AAQA,SAASC,UAAY,cAA6B,OAA8D;AACrH,QAAM,CAAC,KAAK,MAAM,IAAI,cAAc,YAAY;AAChD,QAAM,iBAAiB,SAAS;AAChC,iBAAe,MAAM;AAAE,qBAAiB,cAAc;AAAG,WAAO,MAAM,mBAAmB,cAAc;AAAA,EAAG,GAAG,CAAC,cAAc,CAAC;AAC7H,QAAM,SAAS,iBAAiB,CAAC,aAAkB;AAAE,QAAI,aAAa,cAAc,EAAG,QAAO,QAAQ;AAAA,EAAG,GAAG,CAAC,gBAAgB,MAAM,CAAC;AACpI,SAAO,CAAC,KAAK,MAAM;AACrB;AAKO,SAASC,QAAU,cAAkB,QAAsB;AAAE,SAAO,YAAY,YAAY;AAAG;AAE/F,SAAS,WAAiD,SAAY,YAAe,MAAY,OAA2E;AACjL,QAAM,iBAAiB,OAAO,SAAS,WAAW,OAAQ,SAAS;AACnE,QAAM,YAAY,OAAO,SAAS,aAAa,OAAO;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAI,gBAAgB,SAAS,YAAY,SAAS;AACxE,iBAAe,MAAM;AAAE,qBAAiB,cAAc;AAAG,WAAO,MAAM,mBAAmB,cAAc;AAAA,EAAG,GAAG,CAAC,cAAc,CAAC;AAC7H,QAAM,gBAAgB,iBAAiB,CAAC,WAAgB;AAAE,QAAI,aAAa,cAAc,EAAG,UAAS,MAAM;AAAA,EAAG,GAAG,CAAC,gBAAgB,QAAQ,CAAC;AAC3I,SAAO,CAAC,OAAO,aAAa;AAC9B;AAEO,SAAS,QAAW,SAAkB,MAAwC,OAAmB;AACtG,QAAM,iBAAiB,SAAS;AAChC,iBAAe,MAAM;AAAE,QAAI,OAAO,MAAO,SAAQ,IAAI,iCAAiC,cAAc,MAAM,oCAAoC;AAAA,EAAG,GAAG,CAAC,cAAc,CAAC;AACpK,SAAO,aAAa,SAAS,QAAQ,CAAC,CAAC;AACzC;AAEO,SAAS,YAA+C,UAAa,MAA4B,OAAmB;AACzH,QAAM,iBAAiB,SAAS;AAChC,iBAAe,MAAM;AAAE,QAAI,OAAO,MAAO,SAAQ,IAAI,gCAAgC,cAAc,MAAM,oCAAoC;AAAA,EAAG,GAAG,CAAC,cAAc,CAAC;AACnK,SAAO,iBAAiB,UAAU,IAAI;AACxC;AAEO,SAASC,WAAU,QAA8B,MAA6B,OAAgB;AACnG,QAAM,iBAAiB,SAAS;AAChC,iBAAe,MAAM;AAAE,wBAAoB,cAAc;AAAG,UAAM,UAAU,OAAO;AAAG,sBAAkB;AAAG,WAAO;AAAA,EAAS,GAAG,IAAI;AACpI;AAEO,SAASC,iBAAgB,QAA8B,MAA6B,OAAgB;AACzG,QAAM,iBAAiB,SAAS;AAChC,uBAAqB,MAAM;AAAE,wBAAoB,cAAc;AAAG,UAAM,UAAU,OAAO;AAAG,sBAAkB;AAAG,WAAO;AAAA,EAAS,GAAG,IAAI;AAC1I;AAEO,SAAS,cAAc,QAA4D;AACxF,QAAM,CAAC,WAAWC,gBAAe,IAAI,mBAAmB;AACxD,QAAM,iBAAiB,UAAU;AACjC,QAAM,uBAAuB,CAAC,aAAyB;AACrD,QAAI,OAAO,MAAO,SAAQ,IAAI,mCAAmC,cAAc,MAAM,oCAAoC;AACzH,IAAAA,iBAAgB,QAAQ;AAAA,EAC1B;AACA,SAAO,CAAC,WAAW,oBAAoB;AACzC;AAEO,SAAS,iBAAoB,OAAU,qBAAkC,OAAmB;AACjG,QAAM,qBAAqB,OAAO,wBAAwB,YAAY,UAAU;AAChF,QAAM,qBAAqB,qBAAqB,SAAY;AAC5D,QAAM,iBAAiB,qBAAsB,sBAAkC,SAAS;AACxF,QAAM,gBAAgB,sBAAsB,OAAO,kBAAkB;AACrE,iBAAe,MAAM;AAAE,QAAI,OAAO,SAAS,UAAU,cAAe,SAAQ,IAAI,+BAA+B,cAAc,MAAM,oCAAoC;AAAA,EAAG,GAAG,CAAC,OAAO,eAAe,cAAc,CAAC;AACnN,SAAO;AACT;AAEO,SAASC,eAAiB,cAAiB,OAAkC;AAClF,QAAM,UAAU,mBAAmB,YAAY;AAC/C,MAAI,MAAO,CAAC,QAAgB,eAAe;AAC3C,SAAO;AACT;AAEO,IAAMC,cAAa;AACnB,IAAMC,SAAQ,CAAC,UAAyB,aAAM;AAC9C,IAAMC,iBAAsB;AAC5B,IAAMC,uBAA4B;AAClC,IAAMC,sBAA2B;AACjC,IAAM,uBAAwB;AAE9B,SAAS,IAAO,QAA4B;AACjD,SAAO,SAAS,MAAM;AACxB;AAEO,SAASC,eACd,aACA,SACA,OAC2B;AAC3B,QAAM,iBAAiB,SAAS;AAEhC,iBAAe,MAAM;AACnB,qBAAiB,cAAc;AAC/B,WAAO,MAAM,mBAAmB,cAAc;AAAA,EAChD,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,CAAC,OAAO,kBAAkB,IAAmB,qBAAc,aAAa,OAAO;AAErF,QAAM,gBAAgB,iBAAiB,CAAC,YAAe;AACrD,QAAI,aAAa,cAAc,GAAG;AAChC,yBAAmB,OAAO;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,gBAAgB,kBAAkB,CAAC;AAEvC,SAAO,CAAC,OAAO,aAAa;AAC9B;AAEO,SAASC,gBACd,QACA,cACA,WACA,OAC0E;AAE1E,QAAM,oBAAoB,OAAO,cAAc,YAAY,UAAU;AACrE,QAAM,kBAAkB,oBAAoB,SAAY;AACxD,QAAM,iBAAiB,oBAAqB,YAAwB,SAAS;AAE7E,QAAM,CAAC,OAAO,eAAe,SAAS,IAAmB;AAAA,IACvD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,iBAAe,MAAM;AACnB,qBAAiB,cAAc;AAC/B,WAAO,MAAM,mBAAmB,cAAc;AAAA,EAChD,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,gBAAgB,iBAAiB,CAAC,YAAqB;AAC3D,QAAI,aAAa,cAAc,GAAG;AAChC,oBAAc,OAAO;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,gBAAgB,aAAa,CAAC;AAElC,SAAO,CAAC,OAAO,eAAe,SAAS;AACzC;AAEO,IAAM,WAAW,EAAE,kBAAkB,oBAAoB,cAAc,qBAAqB,mBAAmB,SAAkC,iBAAmD;;;ARzHpM,IAAMC,YAA0B;AAChC,IAAMC,aAA2B;AACjC,IAAMC,YAA0B;AAChC,IAAMC,YAA0B;AAChC,IAAMC,iBAA+B;AACrC,IAAMC,cAA4B;AAClC,IAAMC,YAA0B;AAChC,IAAMC,gBAA8B;AACpC,IAAMC,aAA2B;AACjC,IAAMC,cAA4B;AAClC,IAAMC,kBAAgC;AACtC,IAAMC,QAAsB;AAC5B,IAAMC,QAAsB;AAC5B,IAAMC,mBAAiC;AACvC,IAAMC,WAAyB;AAGtC,IAAM,KAAU;AACT,IAAM,eAAe,GAAG;AACxB,IAAM,YAAY,GAAG;AAI5B,IAAO,gBAAQ;","names":["history","jsx","jsxs","isWeb","React","useState","useRef","useEffect","useLayoutEffect","startTransition","createContext","useContext","useId","useDebugValue","useImperativeHandle","useInsertionEffect","useOptimistic","useActionState","Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createRef","forwardRef","isValidElement","lazy","memo","startTransition","version"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-state-basis",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A linear algebra-powered React architectural tool that detects redundant state and synchronization anti-patterns by modeling state transitions as vectors in a basis.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|