react-state-basis 0.4.2 ā 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -322
- package/dist/index.d.mts +30 -23
- package/dist/index.d.ts +30 -23
- package/dist/index.js +347 -325
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +349 -330
- package/dist/index.mjs.map +1 -1
- package/dist/plugin.js +48 -22
- package/dist/production.d.mts +14 -6
- package/dist/production.d.ts +14 -6
- package/dist/production.js +21 -6
- package/dist/production.js.map +1 -1
- package/dist/production.mjs +19 -6
- package/dist/production.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts"],"sourcesContent":["// src/hooks.ts\n\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\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\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 = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((newValue: any) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(newValue);\n }\n }, [effectiveLabel]);\n\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>(\n reducer: R,\n initialArg: I,\n init?: any,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n\n const isLazyInit = typeof init === 'function';\n const providedLabel = isLazyInit ? label : (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = reactUseReducer(\n reducer,\n initialArg,\n isLazyInit ? init : undefined\n );\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel);\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: any) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel]);\n\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 };","// src/core/math.ts\n\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0;\n let magA = 0;\n let magB = 0;\n\n const headOffset = headB - headA + offset;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + headOffset;\n if (iB < 0) iB += L;\n else if (iB >= L) iB -= L;\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n if (magA === 0 || magB === 0) return 0;\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): 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 === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 5000; // 5 seconds suppression between identical alerts\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 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 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 impact: \"background: #f1f2f6; color: #2f3542; padding: 0 4px; border-radius: 3px; font-weight: bold;\",\n subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n actionMemo: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n actionDelete: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n\n // Garbage collection for log times\n if (LAST_LOG_TIMES.size > 100) {\n const cutoff = now - 3600000; // 1 hour\n for (const [k, v] of LAST_LOG_TIMES.entries()) {\n if (v < cutoff) LAST_LOG_TIMES.delete(k);\n }\n }\n return true;\n }\n return false;\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(\n `%cBasis%cAuditor%c | Temporal Analysis Active (Window: ${windowSize})`,\n STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\"\n );\n};\n\nexport const displayRedundancyAlert = (labelA: string, labelB: string, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n console.group(`%c ā BASIS | TWIN STATE DETECTED `, STYLES.headerRed);\n console.log(`%cš Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n console.log(\n `%cThe Rhythm:%c %c${infoA.name}%c and %c${infoB.name}%c are moving in perfect sync.\\n` +\n `%cThis indicates that one is a redundant shadow of the other. Confidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n\n console.log(\n `%cRecommended Fix:%c Derive %c${infoB.name}%c from %c${infoA.name}%c during the render pass.`,\n STYLES.bold, \"\", STYLES.actionMemo, \"\", STYLES.bold, \"\"\n );\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, sourceLabel: string, method: 'math' | 'tracking' = 'math') => {\n const key = `causal-${sourceLabel}-${targetLabel}`;\n if (!isWeb || !shouldLog(key)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n\n console.groupCollapsed(\n `%c ā” BASIS | DOUBLE RENDER CYCLE `,\n STYLES.headerBlue\n );\n console.log(`%cš Location: %c${target.file}`, STYLES.bold, STYLES.location);\n console.log(\n `%cThe Rhythm:%c %c${source.name}%c pulses, then %c${target.name}%c pulses one frame later.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cThe Impact:%c You are forcing %c2 render passes%c for a single logical change.`,\n STYLES.bold, \"\", STYLES.impact, \"\"\n );\n console.log(\n `%cRecommended Fix:%c Remove the useEffect. Calculate %c${target.name}%c as a derived value or projection.`,\n STYLES.bold, \"\", STYLES.actionDelete, \"\"\n );\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n\n console.group(\n `%c ā ļø CRITICAL SYSTEM ALERT | BASIS ENGINE `,\n 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px; font-size: 14px;'\n );\n console.error(\n `%cāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā`,\n 'color: #dc2626; font-weight: bold;'\n );\n console.error(\n `%cINFINITE LOOP DETECTED\\n\\n` +\n `%cVariable: %c${parts[1] || label}\\n` +\n `%cUpdate Frequency: %c${count} updates/sec\\n` +\n `%cExpected Maximum: %c${threshold} updates\\n\\n` +\n `%cāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā`,\n 'color: #dc2626; font-size: 16px; font-weight: bold;',\n 'color: #71717a; font-weight: bold;', `color: white; background: #dc2626; padding: 2px 8px;`,\n 'color: #71717a; font-weight: bold;', `color: #fbbf24; font-weight: bold;`,\n 'color: #71717a; font-weight: bold;', `color: #fbbf24; font-weight: bold;`,\n 'color: #dc2626; font-weight: bold;'\n );\n console.log(\n `%cDIAGNOSTICS:\\n` +\n `1. Check for setState inside the render body.\\n` +\n `2. Verify useEffect dependencies (missing or unstable refs).\\n` +\n `3. Look for circular chains (State A -> B -> A).\\n\\n` +\n `%cSYSTEM ACTION: Update BLOCKED. Fix your code to resume monitoring.`,\n 'color: #71717a;', 'color: #dc2626; font-weight: bold;'\n );\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\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 // Decompose subspaces\n entries.forEach(([labelA, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n if (isWeb) {\n console.group(`%c š BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cSystem Efficiency: %c${healthScore.toFixed(1)}% %c(Basis Vectors: ${systemRank} / Total Hooks: ${totalVars})`,\n STYLES.bold,\n `color: ${healthScore > 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} Entangled 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 console.log(\"%cš” Analysis: These variables are mirrored. Storing them separately creates unnecessary work for React.\", STYLES.subText);\n } else {\n console.log(\"%c⨠All state variables are independent. Your architectural Basis is healthy.\", \"color: #00b894; font-weight: bold; margin-top: 10px;\");\n }\n\n if (totalVars > 0 && totalVars < 20) {\n console.groupCollapsed(\"%cView Full Correlation Matrix\", \"color: #636e72; font-size: 11px;\");\n const matrix: any = {};\n entries.forEach(([labelA, metaA]) => {\n const nameA = parseLabel(labelA).name;\n matrix[nameA] = {};\n entries.forEach(([labelB, metaB]) => {\n const nameB = parseLabel(labelB).name;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n matrix[nameA][nameB] = sim > threshold ? `ā ${(sim * 100).toFixed(0)}%` : `ā
`;\n });\n });\n console.table(matrix);\n console.groupEnd();\n }\n console.groupEnd();\n }\n};","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { calculateSimilarityCircular } from './core/math';\nimport {\n WINDOW_SIZE,\n SIMILARITY_THRESHOLD,\n LOOP_THRESHOLD,\n ANALYSIS_INTERVAL,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\nexport interface StateOptions { label?: string; suppressAll?: boolean; }\ninterface RingBufferMetadata { buffer: Uint8Array; head: number; options: StateOptions; }\ninterface PerformanceMetrics { lastAnalysisTimeMs: number; comparisonCount: number; lastAnalysisTimestamp: number; }\n\ninterface BasisEngineState {\n config: { debug: boolean };\n history: Map<string, RingBufferMetadata>;\n currentTickBatch: Set<string>;\n redundantLabels: Set<string>;\n booted: boolean;\n tick: number;\n isBatching: boolean;\n currentEffectSource: string | null;\n pausedVariables: Set<string>;\n metrics: PerformanceMetrics;\n alertCount: number;\n loopCounters: Map<string, number>;\n lastCleanup: number;\n}\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map(),\n currentTickBatch: new Set(),\n redundantLabels: new Set(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set(),\n metrics: { lastAnalysisTimeMs: 0, comparisonCount: 0, lastAnalysisTimestamp: 0 },\n alertCount: 0,\n loopCounters: new Map(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\nexport const { config, history, redundantLabels, currentTickBatch } = instance;\n\n// Internal registries\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * HEURISTIC ANALYSIS (O(D * N))\n * Runs in idle time to detect architectural debt.\n */\nconst analyzeBasis = () => {\n if (!instance.config.debug) {\n instance.redundantLabels.clear();\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n scheduler(() => {\n const analysisStart = performance.now();\n if (dirtyLabels.size === 0) return;\n\n const allEntries: { label: string; meta: RingBufferMetadata; density: number }[] = [];\n const dirtyEntries: { label: string; meta: RingBufferMetadata; density: number }[] = [];\n\n // Pre-pass\n instance.history.forEach((meta, label) => {\n if (meta.options.suppressAll) return;\n let density = 0;\n for (let k = 0; k < meta.buffer.length; k++) density += meta.buffer[k];\n if (density >= 2) {\n const entry = { label, meta, density };\n allEntries.push(entry);\n if (dirtyLabels.has(label)) dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) {\n dirtyLabels.clear();\n return;\n }\n\n const nextRedundant = new Set<string>();\n let compCount = 0;\n\n // Persist existing redundancy for non-moving parts\n instance.redundantLabels.forEach(l => { if (!dirtyLabels.has(l)) nextRedundant.add(l); });\n\n // Pairwise Reactive Loop\n for (const dirtyEntry of dirtyEntries) {\n for (const otherEntry of allEntries) {\n if (dirtyEntry.label === otherEntry.label) continue;\n\n // Zero Double-Math\n if (dirtyLabels.has(otherEntry.label) && dirtyEntry.label > otherEntry.label) continue;\n\n compCount++;\n const sync = calculateSimilarityCircular(dirtyEntry.meta.buffer, dirtyEntry.meta.head, otherEntry.meta.buffer, otherEntry.meta.head, 0);\n const bA = calculateSimilarityCircular(dirtyEntry.meta.buffer, dirtyEntry.meta.head, otherEntry.meta.buffer, otherEntry.meta.head, 1);\n const aB = calculateSimilarityCircular(dirtyEntry.meta.buffer, dirtyEntry.meta.head, otherEntry.meta.buffer, otherEntry.meta.head, -1);\n const maxSim = Math.max(sync, bA, aB);\n\n if (maxSim > SIMILARITY_THRESHOLD) {\n const bothVolatile = dirtyEntry.density > VOLATILITY_THRESHOLD && otherEntry.density > VOLATILITY_THRESHOLD;\n if (sync === maxSim && !bothVolatile) {\n nextRedundant.add(dirtyEntry.label); nextRedundant.add(otherEntry.label);\n UI.displayRedundancyAlert(dirtyEntry.label, otherEntry.label, sync);\n } else if (bA === maxSim) UI.displayCausalHint(otherEntry.label, dirtyEntry.label, 'math');\n else if (aB === maxSim) UI.displayCausalHint(dirtyEntry.label, otherEntry.label, 'math');\n }\n }\n }\n\n dirtyLabels.clear();\n instance.redundantLabels.clear();\n nextRedundant.forEach(l => instance.redundantLabels.add(l));\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n instance.history.forEach((meta, label) => {\n meta.buffer[meta.head] = instance.currentTickBatch.has(label) ? 1 : 0;\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n if (instance.tick % ANALYSIS_INTERVAL === 0) analyzeBasis();\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: HARD CIRCUIT BREAKER\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n // CAUSAL TRACKING\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n UI.displayCausalHint(label, instance.currentEffectSource, 'tracking');\n }\n\n // PERFORMANCE: ATOMIC BAILOUT\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, { buffer: new Uint8Array(WINDOW_SIZE), head: 0, options: o });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\n/**\n * DISPLAY: window.printBasisReport()\n */\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) {\n console.warn('[Basis] Cannot generate report. Debug mode is OFF.');\n return;\n }\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.4.2 (Ring Buffer)',\n hooks: instance.history.size,\n load: instance.metrics.comparisonCount,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history: instance.history,\n configureBasis,\n registerVariable,\n unregisterVariable,\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 let isMounted = true;\n\n const draw = () => {\n if (!isMounted) return;\n\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\n return () => {\n isMounted = false;\n cancelAnimationFrame(animationFrame);\n };\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, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n // 1. BATCH THE PATHS\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isRedundant = redundantLabels.has(label);\n const { buffer, head } = meta;\n\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n (isRedundant ? errorPath : successPath).rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n // Part 1: Head to End (Old data)\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n // Part 2: Start to Head (New data)\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n // 2. LABELS\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n // We only recalculate density here because it's for UI only\n let density = 0;\n for (let i = 0; i < L; i++) density += buffer[i];\n const isVolatile = density > 25;\n\n ctx.fillStyle = isRedundant ? THEME.error : (isVolatile ? THEME.success : THEME.text);\n ctx.fillText((isRedundant ? \"! \" : isVolatile ? \"~ \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n // 3. EXECUTE ONLY 3 DRAWS\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : 'š BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.4.2</span>}\n </div>\n);\n\nconst HUDFooter: React.FC = () => (\n <div\n style={{\n marginTop: '12px',\n paddingTop: '8px',\n borderTop: `1px solid ${THEME.grid}`,\n color: THEME.textDim,\n fontSize: '9px',\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <span>RING BUFFER ENGINE</span>\n <span>ZERO ALLOC</span>\n </div>\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});"],"mappings":"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","names":["history","useId","useDebugValue","useImperativeHandle","useInsertionEffect","useOptimistic","useActionState","useLayoutEffect","useEffect","useRef","useState","useState","useRef","useEffect","jsx","jsxs","isWeb","useLayoutEffect"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks.ts","../src/core/math.ts","../src/core/logger.ts","../src/core/constants.ts","../src/core/analysis.ts","../src/engine.ts","../src/context.tsx","../src/ui/BasisHUD.tsx","../src/ui/config.ts"],"sourcesContent":["// src/hooks.ts\n\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} from 'react';\n\nimport {\n registerVariable,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking,\n history as engineHistory\n} from './engine';\nimport { SignalRole } from './core/types';\n\n// --- Internal Type Helpers ---\n\nlet anonCount = 0;\nconst getFallbackLabel = (type: string) => `anon_${type}_${anonCount++}`;\n\n/**\n * Standard React Reducer type inference helpers.\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\ninterface BasisContext<T> extends React.Context<T> {\n _basis_label?: string;\n}\n\n/**\n * React 19 Type Definitions for strictness.\n */\ninterface React19Extended {\n useOptimistic<S, P>(passthrough: S, reducer?: (state: S, payload: P) => S): [S, (payload: P) => void];\n useActionState<State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string\n ): [state: State, dispatch: (payload: Payload) => void, isPending: boolean];\n use<T>(usable: React.Usable<T>): T;\n}\n\nconst React19 = React as unknown as React19Extended;\n\n// --- useState ---\n\nexport function useState<S>(\n initialState: S | (() => S),\n label?: string\n): [S, React.Dispatch<React.SetStateAction<S>>] {\n const [val, setVal] = reactUseState(initialState);\n const effectiveLabel = reactUseRef(label || getFallbackLabel('state')).current;\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const setter = reactUseCallback((value: React.SetStateAction<S>) => {\n if (recordUpdate(effectiveLabel)) {\n setVal(value);\n }\n }, [effectiveLabel]);\n\n return [val, setter];\n}\n\n// --- useReducer ---\n\n/**\n * PUBLIC OVERLOAD: Lazy initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initializerArg: I,\n initializer: (arg: I) => GetReducerState<R>,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * PUBLIC OVERLOAD: Direct initialization\n */\nexport function useReducer<R extends React.Reducer<any, any>>(\n reducer: R,\n initialState: GetReducerState<R>,\n initializer?: undefined,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>];\n\n/**\n * FINAL IMPLEMENTATION\n */\nexport function useReducer<R extends React.Reducer<any, any>, I>(\n reducer: R,\n initialArg: I | GetReducerState<R>,\n init?: ((arg: I) => GetReducerState<R>) | string,\n label?: string\n): [GetReducerState<R>, React.Dispatch<GetReducerAction<R>>] {\n const isLazy = typeof init === 'function';\n\n // v0.5.x Label Extraction: prioritize 4th arg, fallback to 3rd if string (Babel behavior)\n const providedLabel = label || (typeof init === 'string' ? init : undefined);\n const effectiveLabel = reactUseRef(providedLabel || getFallbackLabel('reducer')).current;\n\n const [state, dispatch] = isLazy\n ? reactUseReducer(reducer, initialArg as I, init as (arg: I) => GetReducerState<R>)\n : reactUseReducer(reducer, initialArg as GetReducerState<R>);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const basisDispatch = reactUseCallback((action: GetReducerAction<R>) => {\n if (recordUpdate(effectiveLabel)) {\n dispatch(action);\n }\n }, [effectiveLabel, dispatch]);\n\n return [state, basisDispatch];\n}\n\n// --- Context ---\n\nexport function createContext<T>(defaultValue: T, label?: string): React.Context<T> {\n const context = reactCreateContext(defaultValue) as BasisContext<T>;\n const effectiveLabel = label || getFallbackLabel('context');\n\n // Use non-enumerable property to store the Basis label\n Object.defineProperty(context, '_basis_label', {\n value: effectiveLabel,\n writable: false,\n enumerable: false\n });\n\n return context;\n}\n\nexport function useContext<T>(context: React.Context<T>): T {\n const val = reactUseContext(context);\n const label = (context as BasisContext<T>)._basis_label;\n\n reactUseLayoutEffect(() => {\n if (label) {\n registerVariable(label, { role: SignalRole.CONTEXT });\n recordUpdate(label);\n }\n }, [val, label]);\n\n return val;\n}\n\n// --- Projections ---\n\nexport function useMemo<T>(factory: () => T, deps: React.DependencyList | undefined, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('proj')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseMemo(factory, deps || []);\n}\n\nexport function useCallback<T extends (...args: unknown[]) => unknown>(callback: T, deps: React.DependencyList, label?: string): T {\n const effectiveLabel = reactUseRef(label || getFallbackLabel('cb')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.PROJECTION });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n return reactUseCallback(callback, deps);\n}\n\n// --- Effects ---\n\nexport function useEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_effect';\n reactUseEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\nexport function useLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList, label?: string): void {\n const effectiveLabel = label || 'anonymous_layout_effect';\n reactUseLayoutEffect(() => {\n beginEffectTracking(effectiveLabel);\n const destructor = effect();\n endEffectTracking();\n return typeof destructor === 'function' ? destructor : undefined;\n }, deps);\n}\n\n// --- React 19 ---\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 = reactUseRef(label || getFallbackLabel('optimistic')).current;\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\n return () => { unregisterVariable(effectiveLabel); };\n }, [effectiveLabel]);\n\n const [state, reactAddOptimistic] = React19.useOptimistic(passthrough, reducer);\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 isLabelArg = typeof permalink === 'string' && label === undefined;\n const effectiveLabel = reactUseRef(isLabelArg ? (permalink as string) : (label || getFallbackLabel('action_state'))).current;\n const actualPermalink = isLabelArg ? undefined : permalink;\n\n const [state, reactDispatch, isPending] = React19.useActionState(action, initialState, actualPermalink);\n\n reactUseEffect(() => {\n registerVariable(effectiveLabel, { role: SignalRole.LOCAL });\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\n// --- Direct Exports ---\nexport const useRef = reactUseRef;\nexport const useId = React.useId;\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useInsertionEffect = React.useInsertionEffect;\nexport const useSyncExternalStore = reactUseSyncExternalStore;\nexport const useTransition = reactUseTransition;\nexport const useDeferredValue = reactUseDeferredValue;\nexport const use = React19.use;\n\nexport const __test__ = {\n registerVariable,\n history: engineHistory,\n unregisterVariable,\n recordUpdate,\n beginEffectTracking,\n endEffectTracking\n};\n","// src/core/math.ts\n\n/**\n * CIRCULAR SIMILARITY (v0.5.x)\n * Calculates Cosine Similarity across circular buffers.\n * \n * Optimization: Pre-normalizes the circular offset using a single modulo operation \n * outside the hot loop. This ensures the inner loop stays linearized (no division) \n * while remaining robust against extreme lead/lag values.\n */\nexport const calculateSimilarityCircular = (\n bufferA: Uint8Array,\n headA: number,\n bufferB: Uint8Array,\n headB: number,\n offset: number\n): number => {\n const L = bufferA.length;\n let dot = 0, magA = 0, magB = 0;\n\n const baseOffset = ((headB - headA + offset) % L + L) % L;\n\n for (let i = 0; i < L; i++) {\n const valA = bufferA[i];\n\n let iB = i + baseOffset;\n if (iB >= L) {\n iB -= L;\n }\n\n const valB = bufferB[iB];\n\n dot += valA * valB;\n magA += valA * valA;\n magB += valB * valB;\n }\n\n // Prevent Divide-by-Zero (Orthogonal/Idle result)\n if (magA === 0 || magB === 0) return 0;\n\n // Cosine Similarity Formula: (A Ā· B) / (||A|| * ||B||)\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n\nexport const calculateCosineSimilarity = (A: Uint8Array, B: Uint8Array): 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 === 0 || magB === 0) ? 0 : dot / (Math.sqrt(magA) * Math.sqrt(magB));\n};\n","// src/core/logger.ts\n\nimport { calculateCosineSimilarity } from \"./math\";\n\nconst isWeb = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\ninterface RingBufferMetadata {\n buffer: Uint8Array;\n head: number;\n options: any;\n role: 'local' | 'context' | 'proj';\n}\n\nconst LAST_LOG_TIMES = new Map<string, number>();\nconst LOG_COOLDOWN = 3000; // 3 second suppression for identical alerts\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 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 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 subText: \"color: #636e72; font-size: 11px;\",\n bold: \"font-weight: bold;\",\n action: \"color: #00b894; font-weight: bold; border: 1px solid #00b894; padding: 0 4px; border-radius: 3px;\",\n warning: \"color: #d63031; font-weight: bold; border: 1px solid #d63031; padding: 0 4px; border-radius: 3px;\"\n};\n\nconst parseLabel = (label: string) => {\n const parts = label.split(' -> ');\n return { file: parts[0] || \"Unknown\", name: parts[1] || label };\n};\n\nconst shouldLog = (key: string) => {\n const now = Date.now();\n const last = LAST_LOG_TIMES.get(key) || 0;\n if (now - last > LOG_COOLDOWN) {\n LAST_LOG_TIMES.set(key, now);\n return true;\n }\n return false;\n};\n\nexport const displayRedundancyAlert = (labelA: string, metaA: RingBufferMetadata, labelB: string, metaB: RingBufferMetadata, sim: number) => {\n if (!isWeb || !shouldLog(`redundant-${labelA}-${labelB}`)) return;\n\n const infoA = parseLabel(labelA);\n const infoB = parseLabel(labelB);\n\n const isContextMirror = (metaA.role === 'local' && metaB.role === 'context') || (metaB.role === 'local' && metaA.role === 'context');\n const local = metaA.role === 'local' ? infoA : infoB;\n const context = metaA.role === 'context' ? infoA : infoB;\n\n console.group(`%c ā BASIS | ${isContextMirror ? 'CONTEXT MIRRORING' : 'DUPLICATE STATE'} `, STYLES.headerRed);\n console.log(`%cš Location: %c${infoA.file}`, STYLES.bold, STYLES.location);\n\n if (isContextMirror) {\n console.log(\n `%cIssue:%c Local variable %c${local.name}%c is just a copy of Global Context %c${context.name}%c.\\n` +\n `%cConfidence: ${(sim * 100).toFixed(0)}%`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.subText\n );\n console.log(`%cFix:%c Use the context value directly to avoid state drift.`, STYLES.bold, STYLES.warning);\n } else {\n console.log(\n `%cIssue:%c %c${infoA.name}%c and %c${infoB.name}%c are synchronized (${(sim * 100).toFixed(0)}% correlation).`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\"\n );\n console.log(\n `%cFix:%c Merge states or calculate %c${infoB.name}%c from %c${infoA.name}%c via %cuseMemo%c.`,\n STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\", STYLES.action, \"\"\n );\n }\n console.groupEnd();\n};\n\nexport const displayHealthReport = (history: Map<string, RingBufferMetadata>, threshold: number) => {\n if (!isWeb) return;\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, metaA]) => {\n if (processed.has(labelA)) return;\n const currentCluster = [labelA];\n processed.add(labelA);\n\n entries.forEach(([labelB, metaB]) => {\n if (labelA === labelB || processed.has(labelB)) return;\n const sim = calculateCosineSimilarity(metaA.buffer, metaB.buffer);\n if (sim > threshold) {\n if (metaA.role === 'context' && metaB.role === 'context') return;\n currentCluster.push(labelB);\n processed.add(labelB);\n }\n });\n if (currentCluster.length > 1) clusters.push(currentCluster); else independentCount++;\n });\n\n const systemRank = independentCount + clusters.length;\n const healthScore = (systemRank / totalVars) * 100;\n\n console.group(`%c š BASIS | ARCHITECTURAL HEALTH REPORT `, STYLES.headerGreen);\n console.log(\n `%cEfficiency: %c${healthScore.toFixed(1)}% %c(${systemRank}/${totalVars} Sources of Truth)`,\n STYLES.bold, `color: ${healthScore > 85 ? '#00b894' : '#d63031'}; font-weight: bold;`, STYLES.subText\n );\n\n if (clusters.length > 0) {\n console.log(`%cDetected ${clusters.length} Sync Issues:`, \"font-weight: bold; color: #e17055; margin-top: 10px;\");\n\n clusters.forEach((cluster, idx) => {\n const clusterMetas = cluster.map(l => ({ label: l, meta: history.get(l)!, info: parseLabel(l) }));\n const contexts = clusterMetas.filter(c => c.meta.role === 'context');\n const locals = clusterMetas.filter(c => c.meta.role === 'local');\n const names = clusterMetas.map(c => `${c.meta.role === 'context' ? 'Ī© ' : ''}${c.info.name}`).join(' ā· ');\n\n console.group(` %c${idx + 1}%c ${names}`, \"background: #e17055; color: white; border-radius: 50%; padding: 0 5px;\", \"font-family: monospace; font-weight: bold;\");\n\n if (contexts.length > 0) {\n const ctxNames = contexts.map(c => c.info.name).join(', ');\n console.log(`%cDiagnosis:%c Context Mirroring. Variables are copying from %c${ctxNames}%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n console.log(`%cSolution:%c Use the context directly to avoid state drift.`, STYLES.bold, STYLES.action);\n } else {\n const isExplosion = locals.length > 2;\n if (isExplosion) {\n console.log(`%cDiagnosis:%c Boolean Explosion. Multiple states updating in sync.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Combine into a single %cstatus%c string or a %creducer%c.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n } else {\n console.log(`%cDiagnosis:%c Redundant State. Variables always change together.`, STYLES.bold, \"\");\n console.log(`%cSolution:%c Derive one from the other via %cuseMemo%c.`, STYLES.bold, \"\", STYLES.label, \"\");\n }\n }\n console.groupEnd();\n });\n } else {\n console.log(\"%c⨠Your architecture is clean. No redundant state detected.\", \"color: #00b894; font-weight: bold;\");\n }\n console.groupEnd();\n};\n\nexport const displayCausalHint = (targetLabel: string, targetMeta: RingBufferMetadata, sourceLabel: string, sourceMeta: RingBufferMetadata) => {\n if (!isWeb || !shouldLog(`causal-${sourceLabel}-${targetLabel}`)) return;\n\n const target = parseLabel(targetLabel);\n const source = parseLabel(sourceLabel);\n const isContextTrigger = sourceMeta.role === 'context';\n\n console.groupCollapsed(`%c ā” BASIS | ${isContextTrigger ? 'CONTEXT SYNC LEAK' : 'DOUBLE RENDER'} `, STYLES.headerBlue);\n console.log(`%cš Location: %c${target.file}`, STYLES.bold, STYLES.location);\n\n if (isContextTrigger) {\n console.log(`%cIssue:%c Context %c${source.name}%c updated, then local %c${target.name}%c followed 1 frame later.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n console.log(`%cImpact: This forces React to render the component twice for every change.`, STYLES.subText);\n } else {\n console.log(`%cIssue:%c %c${source.name}%c triggers %c${target.name}%c in a separate frame.`, STYLES.bold, \"\", STYLES.label, \"\", STYLES.label, \"\");\n }\n\n console.log(`%cFix:%c Derive %c${target.name}%c during the first render.`, STYLES.bold, STYLES.action, STYLES.label, \"\");\n console.groupEnd();\n};\n\nexport const displayViolentBreaker = (label: string, count: number, threshold: number) => {\n if (!isWeb) return;\n const parts = label.split(' -> ');\n console.group(`%c š BASIS CRITICAL | CIRCUIT BREAKER `, 'background: #dc2626; color: white; font-weight: bold; padding: 8px 16px;');\n console.error(`INFINITE LOOP DETECTED\\nVariable: ${parts[1] || label}\\nFrequency: ${count} updates/sec`);\n console.log(`%cACTION: Update BLOCKED to prevent browser freeze.`, 'color: #dc2626; font-weight: bold;');\n console.groupEnd();\n};\n\nexport const displayBootLog = (windowSize: number) => {\n if (!isWeb) return;\n console.log(`%cBasis%cAuditor%c | v0.5.x Architectural Forensics Active (Window: ${windowSize})`, STYLES.basis, STYLES.version, \"color: #636e72; font-style: italic; margin-left: 8px;\");\n};\n","// src/core/constants.ts\n\nexport const WINDOW_SIZE = 50;\nexport const SIMILARITY_THRESHOLD = 0.88;\nexport const LOOP_THRESHOLD = 150;\nexport const LOOP_WINDOW_MS = 1000;\nexport const ANALYSIS_INTERVAL = 5;\n\nexport const VOLATILITY_THRESHOLD = 25;","// src/core/analysis.ts\n\nimport * as UI from './logger';\nimport { calculateSimilarityCircular } from './math';\nimport { SIMILARITY_THRESHOLD } from './constants';\nimport { SignalRole, Entry } from './types';\n\ninterface Similarities {\n sync: number;\n bA: number;\n aB: number;\n max: number;\n}\n\nconst calculateAllSimilarities = (entryA: Entry, entryB: Entry): Similarities => {\n const sync = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 0);\n const bA = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, 1);\n const aB = calculateSimilarityCircular(entryA.meta.buffer, entryA.meta.head, entryB.meta.buffer, entryB.meta.head, -1);\n return { sync, bA, aB, max: Math.max(sync, bA, aB) };\n};\n\nconst shouldSkipComparison = (entryA: Entry, entryB: Entry, dirtyLabels: Set<string>): boolean => {\n if (entryA.label === entryB.label) return true;\n\n if (dirtyLabels.has(entryB.label) && entryA.label > entryB.label) return true;\n\n return false;\n};\n\nconst detectRedundancy = (entryA: Entry, entryB: Entry, similarities: Similarities, redundantSet: Set<string>): void => {\n const roleA = entryA.meta.role;\n const roleB = entryB.meta.role;\n\n // Context-to-Context correlation is architecturally valid\n if (roleA === SignalRole.CONTEXT && roleB === SignalRole.CONTEXT) return;\n\n // Require 2+ updates for statistical confidence (avoid false positives)\n if (entryA.meta.density < 2 || entryB.meta.density < 2) return;\n\n // Case 1: Local state mirroring Context (U ā© W ā {0})\n if (roleA === SignalRole.LOCAL && roleB === SignalRole.CONTEXT) {\n redundantSet.add(entryA.label); // Mark LOCAL as redundant (context is source of truth)\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n // Case 2: Context mirroring Local (reverse of Case 1)\n else if (roleA === SignalRole.CONTEXT && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryB.label); // Mark LOCAL as redundant\n UI.displayRedundancyAlert(entryB.label, entryB.meta, entryA.label, entryA.meta, similarities.max);\n }\n // Case 3: Duplicate Local State (both in U subspace, but correlated)\n else if (roleA === SignalRole.LOCAL && roleB === SignalRole.LOCAL) {\n redundantSet.add(entryA.label);\n redundantSet.add(entryB.label);\n UI.displayRedundancyAlert(entryA.label, entryA.meta, entryB.label, entryB.meta, similarities.max);\n }\n};\n\nconst detectCausalLeak = (entryA: Entry, entryB: Entry, similarities: Similarities): void => {\n // Skip warnings for high-frequency updates (animations, >VOLATILITY_THRESHOLD updates in buffer)\n // These are intentional and expected to update rapidly\n if (entryA.isVolatile || entryB.isVolatile) return;\n\n // B leads A: B updated, then A updated next frame (B causes A)\n if (similarities.bA === similarities.max) {\n UI.displayCausalHint(entryB.label, entryB.meta, entryA.label, entryA.meta);\n }\n // A leads B: A updated, then B updated next frame (A causes B)\n else if (similarities.aB === similarities.max) {\n UI.displayCausalHint(entryA.label, entryA.meta, entryB.label, entryB.meta);\n }\n};\n\nexport const detectSubspaceOverlap = (\n dirtyEntries: Entry[],\n allEntries: Entry[],\n redundantSet: Set<string>,\n dirtyLabels: Set<string>\n): number => {\n let compCount = 0;\n\n for (const entryA of dirtyEntries) {\n for (const entryB of allEntries) {\n if (shouldSkipComparison(entryA, entryB, dirtyLabels)) continue;\n\n compCount++;\n const similarities = calculateAllSimilarities(entryA, entryB);\n\n if (similarities.max > SIMILARITY_THRESHOLD) {\n detectRedundancy(entryA, entryB, similarities, redundantSet);\n detectCausalLeak(entryA, entryB, similarities);\n }\n }\n }\n\n return compCount;\n};\n","// src/engine.ts\n\nimport * as UI from './core/logger';\nimport { detectSubspaceOverlap } from './core/analysis';\nimport {\n SignalRole,\n StateOptions,\n RingBufferMetadata,\n BasisEngineState,\n Entry\n} from './core/types';\nimport {\n WINDOW_SIZE,\n LOOP_THRESHOLD,\n VOLATILITY_THRESHOLD\n} from './core/constants';\n\n// --- Static Internal State ---\n\nconst BASIS_INSTANCE_KEY = Symbol.for('__basis_engine_instance__');\n\n// Pre-allocated static signal to prevent GC churn in high-frequency causal tracking\nconst NULL_SIGNAL: RingBufferMetadata = {\n role: SignalRole.PROJECTION,\n buffer: new Uint8Array(0),\n head: 0,\n density: 0,\n options: {}\n};\n\n/**\n * GLOBAL SINGLETON HMR BRIDGE\n * Ensures the state history survives Hot Module Replacement cycles.\n */\nconst getGlobalInstance = (): BasisEngineState => {\n const root = globalThis as any;\n if (!root[BASIS_INSTANCE_KEY]) {\n root[BASIS_INSTANCE_KEY] = {\n config: { debug: false },\n history: new Map<string, RingBufferMetadata>(),\n currentTickBatch: new Set<string>(),\n redundantLabels: new Set<string>(),\n booted: false,\n tick: 0,\n isBatching: false,\n currentEffectSource: null,\n pausedVariables: new Set<string>(),\n metrics: {\n lastAnalysisTimeMs: 0,\n comparisonCount: 0,\n lastAnalysisTimestamp: 0,\n systemEntropy: 0\n },\n alertCount: 0,\n loopCounters: new Map<string, number>(),\n lastCleanup: Date.now()\n };\n }\n return root[BASIS_INSTANCE_KEY];\n};\n\nconst instance = getGlobalInstance();\n\nexport const config = instance.config;\nexport const history = instance.history;\nexport const redundantLabels = instance.redundantLabels;\nexport const currentTickBatch = instance.currentTickBatch;\n\nlet currentTickRegistry: Record<string, boolean> = {};\nconst dirtyLabels = new Set<string>();\n\n/**\n * TEMPORAL ENTROPY\n * Quantifies the information density of a specific tick.\n */\nconst calculateTickEntropy = (tickIdx: number) => {\n let activeCount = 0;\n const total = instance.history.size;\n if (total === 0) return 1;\n\n instance.history.forEach((meta: RingBufferMetadata) => {\n if (meta.buffer[tickIdx] === 1) activeCount++;\n });\n return 1 - (activeCount / total);\n};\n\nexport const analyzeBasis = () => {\n if (!instance.config.debug || dirtyLabels.size === 0) {\n return;\n }\n\n const scheduler = (globalThis as any).requestIdleCallback || ((cb: any) => setTimeout(cb, 1));\n\n // 1. ATOMIC SWAP: Capture current dirty state and clear immediately.\n // This ensures updates happening DURING analysis are captured for the next frame.\n const snapshot = new Set(dirtyLabels);\n dirtyLabels.clear();\n\n scheduler(() => {\n const analysisStart = performance.now();\n const allEntries: Entry[] = [];\n const dirtyEntries: Entry[] = [];\n\n // 2. Collect entries based on the snapshot\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n if (meta.options.suppressAll || meta.density === 0) return;\n\n const entry: Entry = {\n label, meta,\n isVolatile: meta.density > VOLATILITY_THRESHOLD\n };\n\n allEntries.push(entry);\n if (snapshot.has(label)) {\n dirtyEntries.push(entry);\n }\n });\n\n if (dirtyEntries.length === 0 || allEntries.length < 2) return;\n\n // 3. PERSISTENCE: Maintain debt markers for signals that weren't in the snapshot\n const nextRedundant = new Set<string>();\n instance.redundantLabels.forEach((l: string) => {\n if (!snapshot.has(l)) {\n nextRedundant.add(l);\n }\n });\n\n // 4. LOGIC PASS: Direct Sum Decomposition\n const compCount = detectSubspaceOverlap(\n dirtyEntries,\n allEntries,\n nextRedundant,\n snapshot\n );\n\n // 5. COMMIT: Update the global engine state\n instance.redundantLabels.clear();\n nextRedundant.forEach((l: string) => {\n instance.redundantLabels.add(l);\n });\n\n instance.metrics.lastAnalysisTimeMs = performance.now() - analysisStart;\n instance.metrics.comparisonCount = compCount;\n instance.metrics.lastAnalysisTimestamp = Date.now();\n });\n};\n\nconst processHeartbeat = () => {\n instance.tick++;\n\n instance.history.forEach((meta: RingBufferMetadata, label: string) => {\n const oldValue = meta.buffer[meta.head];\n const newValue = instance.currentTickBatch.has(label) ? 1 : 0;\n\n // Density Update with drift prevention\n meta.buffer[meta.head] = newValue;\n if (oldValue !== newValue) {\n meta.density += (newValue - oldValue);\n }\n\n meta.head = (meta.head + 1) % WINDOW_SIZE;\n });\n\n const lastHead = (instance.history.size > 0) ? (instance.tick % WINDOW_SIZE) : 0;\n instance.metrics.systemEntropy = calculateTickEntropy(lastHead);\n\n instance.currentTickBatch.clear();\n currentTickRegistry = {};\n instance.isBatching = false;\n\n // Reactive trigger: Audit if signals are dirty\n if (dirtyLabels.size > 0) {\n analyzeBasis();\n }\n};\n\n/**\n * INTERCEPTION LAYER\n * Called by hook proxies to record state pulses.\n */\nexport const recordUpdate = (label: string): boolean => {\n if (!instance.config.debug) return true;\n if (instance.pausedVariables.has(label)) return false;\n\n const now = Date.now();\n if (now - instance.lastCleanup > 1000) {\n instance.loopCounters.clear();\n instance.lastCleanup = now;\n }\n\n const count = (instance.loopCounters.get(label) || 0) + 1;\n instance.loopCounters.set(label, count);\n\n // SECURITY: Hard Circuit Breaker\n if (count > LOOP_THRESHOLD) {\n UI.displayViolentBreaker(label, count, LOOP_THRESHOLD);\n instance.pausedVariables.add(label);\n return false;\n }\n\n if (instance.currentEffectSource && instance.currentEffectSource !== label) {\n const targetMeta = instance.history.get(label);\n const sourceMeta = instance.history.get(instance.currentEffectSource);\n\n if (targetMeta) {\n const sourceDensity = sourceMeta?.density || 0;\n const isVolatile = targetMeta.density > VOLATILITY_THRESHOLD || sourceDensity > VOLATILITY_THRESHOLD;\n\n if (!isVolatile) {\n UI.displayCausalHint(label, targetMeta, instance.currentEffectSource, sourceMeta || NULL_SIGNAL);\n }\n }\n }\n\n // BATCHING: Align updates into a single temporal tick\n if (currentTickRegistry[label]) return true;\n\n currentTickRegistry[label] = true;\n instance.currentTickBatch.add(label);\n dirtyLabels.add(label);\n\n if (!instance.isBatching) {\n instance.isBatching = true;\n requestAnimationFrame(processHeartbeat);\n }\n\n return true;\n};\n\n// --- LIFECYCLE API ---\n\nexport const configureBasis = (c: any) => {\n Object.assign(instance.config, c);\n if (instance.config.debug && !instance.booted) {\n UI.displayBootLog(WINDOW_SIZE);\n instance.booted = true;\n }\n};\n\nexport const registerVariable = (l: string, o: StateOptions = {}) => {\n if (!instance.config.debug || o.suppressAll) return;\n if (!instance.history.has(l)) {\n instance.history.set(l, {\n buffer: new Uint8Array(WINDOW_SIZE),\n head: 0,\n density: 0,\n options: o,\n role: o.role || SignalRole.LOCAL\n });\n }\n};\n\nexport const unregisterVariable = (l: string) => {\n instance.history.delete(l);\n instance.loopCounters.delete(l);\n instance.pausedVariables.delete(l);\n instance.redundantLabels.delete(l);\n};\n\nexport const beginEffectTracking = (l: string) => {\n if (instance.config.debug) instance.currentEffectSource = l;\n};\n\nexport const endEffectTracking = () => {\n instance.currentEffectSource = null;\n};\n\nexport const printBasisHealthReport = (threshold = 0.5) => {\n if (!instance.config.debug) return;\n UI.displayHealthReport(instance.history, threshold);\n};\n\nexport const getBasisMetrics = () => ({\n engine: 'v0.5.x',\n hooks: instance.history.size,\n analysis_ms: instance.metrics.lastAnalysisTimeMs.toFixed(3),\n entropy: instance.metrics.systemEntropy.toFixed(3)\n});\n\n// Global Attachments\nif (typeof window !== 'undefined') {\n (window as any).printBasisReport = printBasisHealthReport;\n (window as any).getBasisMetrics = getBasisMetrics;\n}\n\nexport const __testEngine__ = {\n instance,\n history,\n configureBasis,\n registerVariable,\n unregisterVariable,\n recordUpdate,\n printBasisHealthReport,\n analyzeBasis,\n beginEffectTracking,\n endEffectTracking\n};\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 isMounted = true;\n let animationFrame: number | null = null;\n\n const draw = () => {\n if (!isMounted) {\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n return;\n }\n\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 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, 80);\n\n updateCanvasSize(canvas, rawWidth, rawHeight, dpr);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, rawWidth, rawHeight);\n\n if (entries.length === 0) renderEmptyState(ctx);\n else renderMatrix(ctx, entries);\n\n ctx.restore();\n animationFrame = requestAnimationFrame(draw);\n };\n\n // Kick off the animation loop\n animationFrame = requestAnimationFrame(draw);\n\n return () => {\n isMounted = false;\n if (animationFrame !== null) {\n cancelAnimationFrame(animationFrame);\n }\n };\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 </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, any][]) {\n const L = DIM.WINDOW_SIZE;\n const colW = DIM.COL_WIDTH;\n const rowH = DIM.ROW_HEIGHT;\n const pad = DIM.PADDING;\n const cellW = colW - 1.5;\n const cellH = rowH - 4;\n\n const gridPath = new Path2D();\n const successPath = new Path2D();\n const contextPath = new Path2D();\n const errorPath = new Path2D();\n\n ctx.font = \"11px Inter, Menlo, monospace\";\n\n let rowIndex = 0;\n for (const [label, meta] of entries) {\n const y = rowIndex * rowH + pad;\n const isContext = meta.role === 'context';\n const isRedundant = !isContext && redundantLabels.has(label);\n\n const { buffer, head } = meta;\n let uiPos = 0;\n\n const addToPath = (val: number, xIdx: number) => {\n const x = xIdx * colW + pad;\n if (val === 1) {\n if (isContext) contextPath.rect(x, y, cellW, cellH);\n else if (isRedundant) errorPath.rect(x, y, cellW, cellH);\n else successPath.rect(x, y, cellW, cellH);\n } else {\n gridPath.rect(x, y, cellW, cellH);\n }\n };\n\n for (let i = head; i < L; i++) addToPath(buffer[i], uiPos++);\n for (let i = 0; i < head; i++) addToPath(buffer[i], uiPos++);\n\n const stateName = label.split(' -> ')[1] || label;\n const textX = (L * colW) + pad + 10;\n\n ctx.fillStyle = isContext ? THEME.header : (isRedundant ? THEME.error : THEME.text);\n ctx.fillText((isContext ? \"Ī© \" : isRedundant ? \"! \" : \"\") + stateName, textX, y + 9);\n\n rowIndex++;\n }\n\n ctx.fillStyle = THEME.grid; ctx.fill(gridPath);\n ctx.fillStyle = THEME.success; ctx.fill(successPath);\n ctx.fillStyle = THEME.header; ctx.fill(contextPath);\n ctx.fillStyle = THEME.error; ctx.fill(errorPath);\n}\n\nconst HUDHeader: React.FC<{ isExpanded: boolean }> = ({ isExpanded }) => (\n <div\n style={{\n padding: '10px 14px',\n backgroundColor: isExpanded ? THEME.header : 'transparent',\n color: isExpanded ? 'white' : THEME.header,\n fontWeight: 600,\n fontSize: '11px',\n letterSpacing: '0.05em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'background 0.3s',\n }}\n >\n <span>{isExpanded ? 'STATE BASIS MATRIX' : 'š BASIS ACTIVE'}</span>\n {isExpanded && <span style={{ opacity: 0.8, fontSize: '9px' }}>v0.5.x</span>}\n </div>\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});"],"mappings":"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","names":["history","dirtyLabels","useId","useDebugValue","useImperativeHandle","useInsertionEffect","createContext","useContext","useLayoutEffect","useEffect","useRef","useState","useState","useRef","useEffect","jsx","jsxs","createContext","isWeb","useLayoutEffect","useContext"]}
|
package/dist/plugin.js
CHANGED
|
@@ -4,24 +4,37 @@
|
|
|
4
4
|
var path = require("path");
|
|
5
5
|
module.exports = function(babel) {
|
|
6
6
|
const { types: t } = babel;
|
|
7
|
-
const
|
|
7
|
+
const LOCAL_HOOKS = [
|
|
8
8
|
"useState",
|
|
9
9
|
"useReducer",
|
|
10
|
+
"useOptimistic",
|
|
11
|
+
"useActionState",
|
|
12
|
+
"useTransition",
|
|
13
|
+
"useDeferredValue"
|
|
14
|
+
];
|
|
15
|
+
const PROJECTION_HOOKS = [
|
|
10
16
|
"useMemo",
|
|
11
|
-
"useCallback"
|
|
17
|
+
"useCallback"
|
|
18
|
+
];
|
|
19
|
+
const CONTEXT_HOOKS = [
|
|
20
|
+
"createContext",
|
|
21
|
+
"useContext"
|
|
22
|
+
];
|
|
23
|
+
const SYSTEM_HOOKS = [
|
|
12
24
|
"useEffect",
|
|
13
25
|
"useLayoutEffect",
|
|
26
|
+
"useInsertionEffect",
|
|
14
27
|
"useRef",
|
|
15
28
|
"useId",
|
|
16
29
|
"useDebugValue",
|
|
17
30
|
"useImperativeHandle",
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
"useSyncExternalStore"
|
|
32
|
+
];
|
|
33
|
+
const AUDITED_HOOKS = [
|
|
34
|
+
...LOCAL_HOOKS,
|
|
35
|
+
...PROJECTION_HOOKS,
|
|
36
|
+
...CONTEXT_HOOKS,
|
|
37
|
+
...SYSTEM_HOOKS
|
|
25
38
|
];
|
|
26
39
|
const isIgnoredFile = (comments) => comments && comments.some((c) => /@?basis-ignore/.test(c.value));
|
|
27
40
|
return {
|
|
@@ -32,10 +45,6 @@ module.exports = function(babel) {
|
|
|
32
45
|
state.basisDisabled = true;
|
|
33
46
|
}
|
|
34
47
|
},
|
|
35
|
-
/**
|
|
36
|
-
* Splits 'react' imports. Standard features (forwardRef, memo) stay in React.
|
|
37
|
-
* Audited hooks are redirected to react-state-basis.
|
|
38
|
-
*/
|
|
39
48
|
ImportDeclaration(p, state) {
|
|
40
49
|
if (state.basisDisabled) return;
|
|
41
50
|
const source = p.node.source.value;
|
|
@@ -51,11 +60,8 @@ module.exports = function(babel) {
|
|
|
51
60
|
});
|
|
52
61
|
if (basisSpecifiers.length > 0) {
|
|
53
62
|
p.insertBefore(t.importDeclaration(basisSpecifiers, t.stringLiteral("react-state-basis")));
|
|
54
|
-
if (reactSpecifiers.length === 0)
|
|
55
|
-
|
|
56
|
-
} else {
|
|
57
|
-
p.node.specifiers = reactSpecifiers;
|
|
58
|
-
}
|
|
63
|
+
if (reactSpecifiers.length === 0) p.remove();
|
|
64
|
+
else p.node.specifiers = reactSpecifiers;
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
67
|
},
|
|
@@ -83,14 +89,34 @@ module.exports = function(babel) {
|
|
|
83
89
|
}
|
|
84
90
|
const uniqueLabel = `${fileName} -> ${varName}`;
|
|
85
91
|
const args = p.node.arguments;
|
|
86
|
-
if ([
|
|
92
|
+
if ([
|
|
93
|
+
"useState",
|
|
94
|
+
"useRef",
|
|
95
|
+
"useId",
|
|
96
|
+
"useDebugValue",
|
|
97
|
+
"useDeferredValue",
|
|
98
|
+
"useTransition",
|
|
99
|
+
"useOptimistic",
|
|
100
|
+
"createContext"
|
|
101
|
+
].includes(calleeName)) {
|
|
87
102
|
if (args.length === 0) args.push(t.identifier("undefined"));
|
|
88
103
|
if (args.length === 1) args.push(t.stringLiteral(uniqueLabel));
|
|
89
|
-
} else if ([
|
|
104
|
+
} else if ([
|
|
105
|
+
"useEffect",
|
|
106
|
+
"useMemo",
|
|
107
|
+
"useLayoutEffect",
|
|
108
|
+
"useInsertionEffect",
|
|
109
|
+
"useCallback"
|
|
110
|
+
].includes(calleeName)) {
|
|
90
111
|
if (args.length === 1) args.push(t.identifier("undefined"));
|
|
91
112
|
if (args.length === 2) args.push(t.stringLiteral(uniqueLabel));
|
|
92
|
-
} else if ([
|
|
93
|
-
|
|
113
|
+
} else if ([
|
|
114
|
+
"useReducer",
|
|
115
|
+
"useActionState",
|
|
116
|
+
"useSyncExternalStore",
|
|
117
|
+
"useImperativeHandle"
|
|
118
|
+
].includes(calleeName)) {
|
|
119
|
+
while (args.length < 3) args.push(t.identifier("undefined"));
|
|
94
120
|
if (args.length === 3) args.push(t.stringLiteral(uniqueLabel));
|
|
95
121
|
}
|
|
96
122
|
}
|
package/dist/production.d.mts
CHANGED
|
@@ -7,12 +7,15 @@ declare const BasisProvider: FC<{
|
|
|
7
7
|
debug?: boolean;
|
|
8
8
|
}>;
|
|
9
9
|
declare const useState: <T>(initialState: T | (() => T), _label?: string) => [T, React.Dispatch<React.SetStateAction<T>>];
|
|
10
|
+
declare function useReducer(reducer: any, initialArg: any, init?: any, _label?: string): [any, React.ActionDispatch<React.AnyActionArg>];
|
|
11
|
+
declare const createContext: <T>(defaultValue: T, _label?: string) => React.Context<T>;
|
|
12
|
+
declare const useContext: typeof React.useContext;
|
|
10
13
|
declare const useEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
14
|
+
declare const useLayoutEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
15
|
+
declare const useInsertionEffect: typeof React.useInsertionEffect;
|
|
11
16
|
declare const useMemo: <T>(factory: () => T, deps?: DependencyList, _label?: string) => T;
|
|
12
17
|
declare const useCallback: <T extends (...args: any[]) => any>(callback: T, deps?: DependencyList, _label?: string) => T;
|
|
13
|
-
declare const useReducer: (reducer: any, initArg: any, init?: any, _label?: string) => [unknown, React.ActionDispatch<React.AnyActionArg>];
|
|
14
18
|
declare const useRef: <T>(initialValue: T, _label?: string) => React.RefObject<T>;
|
|
15
|
-
declare const useLayoutEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
16
19
|
declare const useTransition: (_label?: string) => [boolean, React.TransitionStartFunction];
|
|
17
20
|
declare const useDeferredValue: <T>(value: T, _label?: string) => T;
|
|
18
21
|
declare const useOptimistic: <S, P>(passthrough: S, reducer?: (state: S, payload: P) => S, _label?: string) => any;
|
|
@@ -20,11 +23,8 @@ declare const useActionState: <State, Payload>(action: (state: State, payload: P
|
|
|
20
23
|
declare const useId: (_label?: string) => string;
|
|
21
24
|
declare const useDebugValue: typeof React.useDebugValue;
|
|
22
25
|
declare const useImperativeHandle: typeof React.useImperativeHandle;
|
|
23
|
-
declare const useInsertionEffect: typeof React.useInsertionEffect;
|
|
24
26
|
declare const useSyncExternalStore: typeof React.useSyncExternalStore;
|
|
25
27
|
declare const use: any;
|
|
26
|
-
declare const createContext: typeof React.createContext;
|
|
27
|
-
declare const useContext: typeof React.useContext;
|
|
28
28
|
|
|
29
29
|
declare const registerVariable: () => void;
|
|
30
30
|
declare const unregisterVariable: () => void;
|
|
@@ -33,5 +33,13 @@ declare const beginEffectTracking: () => void;
|
|
|
33
33
|
declare const endEffectTracking: () => void;
|
|
34
34
|
declare const printBasisHealthReport: () => void;
|
|
35
35
|
declare const configureBasis: () => void;
|
|
36
|
+
declare const getBasisMetrics: () => {
|
|
37
|
+
engine: string;
|
|
38
|
+
hooks: number;
|
|
39
|
+
analysis_ms: string;
|
|
40
|
+
};
|
|
41
|
+
declare const config: {
|
|
42
|
+
debug: boolean;
|
|
43
|
+
};
|
|
36
44
|
|
|
37
|
-
export { BasisProvider, beginEffectTracking, configureBasis, createContext, endEffectTracking, printBasisHealthReport, recordUpdate, registerVariable, unregisterVariable, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition };
|
|
45
|
+
export { BasisProvider, beginEffectTracking, config, configureBasis, createContext, endEffectTracking, getBasisMetrics, printBasisHealthReport, recordUpdate, registerVariable, unregisterVariable, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition };
|
package/dist/production.d.ts
CHANGED
|
@@ -7,12 +7,15 @@ declare const BasisProvider: FC<{
|
|
|
7
7
|
debug?: boolean;
|
|
8
8
|
}>;
|
|
9
9
|
declare const useState: <T>(initialState: T | (() => T), _label?: string) => [T, React.Dispatch<React.SetStateAction<T>>];
|
|
10
|
+
declare function useReducer(reducer: any, initialArg: any, init?: any, _label?: string): [any, React.ActionDispatch<React.AnyActionArg>];
|
|
11
|
+
declare const createContext: <T>(defaultValue: T, _label?: string) => React.Context<T>;
|
|
12
|
+
declare const useContext: typeof React.useContext;
|
|
10
13
|
declare const useEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
14
|
+
declare const useLayoutEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
15
|
+
declare const useInsertionEffect: typeof React.useInsertionEffect;
|
|
11
16
|
declare const useMemo: <T>(factory: () => T, deps?: DependencyList, _label?: string) => T;
|
|
12
17
|
declare const useCallback: <T extends (...args: any[]) => any>(callback: T, deps?: DependencyList, _label?: string) => T;
|
|
13
|
-
declare const useReducer: (reducer: any, initArg: any, init?: any, _label?: string) => [unknown, React.ActionDispatch<React.AnyActionArg>];
|
|
14
18
|
declare const useRef: <T>(initialValue: T, _label?: string) => React.RefObject<T>;
|
|
15
|
-
declare const useLayoutEffect: (effect: EffectCallback, deps?: DependencyList, _label?: string) => void;
|
|
16
19
|
declare const useTransition: (_label?: string) => [boolean, React.TransitionStartFunction];
|
|
17
20
|
declare const useDeferredValue: <T>(value: T, _label?: string) => T;
|
|
18
21
|
declare const useOptimistic: <S, P>(passthrough: S, reducer?: (state: S, payload: P) => S, _label?: string) => any;
|
|
@@ -20,11 +23,8 @@ declare const useActionState: <State, Payload>(action: (state: State, payload: P
|
|
|
20
23
|
declare const useId: (_label?: string) => string;
|
|
21
24
|
declare const useDebugValue: typeof React.useDebugValue;
|
|
22
25
|
declare const useImperativeHandle: typeof React.useImperativeHandle;
|
|
23
|
-
declare const useInsertionEffect: typeof React.useInsertionEffect;
|
|
24
26
|
declare const useSyncExternalStore: typeof React.useSyncExternalStore;
|
|
25
27
|
declare const use: any;
|
|
26
|
-
declare const createContext: typeof React.createContext;
|
|
27
|
-
declare const useContext: typeof React.useContext;
|
|
28
28
|
|
|
29
29
|
declare const registerVariable: () => void;
|
|
30
30
|
declare const unregisterVariable: () => void;
|
|
@@ -33,5 +33,13 @@ declare const beginEffectTracking: () => void;
|
|
|
33
33
|
declare const endEffectTracking: () => void;
|
|
34
34
|
declare const printBasisHealthReport: () => void;
|
|
35
35
|
declare const configureBasis: () => void;
|
|
36
|
+
declare const getBasisMetrics: () => {
|
|
37
|
+
engine: string;
|
|
38
|
+
hooks: number;
|
|
39
|
+
analysis_ms: string;
|
|
40
|
+
};
|
|
41
|
+
declare const config: {
|
|
42
|
+
debug: boolean;
|
|
43
|
+
};
|
|
36
44
|
|
|
37
|
-
export { BasisProvider, beginEffectTracking, configureBasis, createContext, endEffectTracking, printBasisHealthReport, recordUpdate, registerVariable, unregisterVariable, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition };
|
|
45
|
+
export { BasisProvider, beginEffectTracking, config, configureBasis, createContext, endEffectTracking, getBasisMetrics, printBasisHealthReport, recordUpdate, registerVariable, unregisterVariable, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition };
|
package/dist/production.js
CHANGED
|
@@ -32,9 +32,11 @@ var production_exports = {};
|
|
|
32
32
|
__export(production_exports, {
|
|
33
33
|
BasisProvider: () => BasisProvider,
|
|
34
34
|
beginEffectTracking: () => beginEffectTracking,
|
|
35
|
+
config: () => config,
|
|
35
36
|
configureBasis: () => configureBasis,
|
|
36
37
|
createContext: () => createContext2,
|
|
37
38
|
endEffectTracking: () => endEffectTracking,
|
|
39
|
+
getBasisMetrics: () => getBasisMetrics,
|
|
38
40
|
printBasisHealthReport: () => printBasisHealthReport,
|
|
39
41
|
recordUpdate: () => recordUpdate,
|
|
40
42
|
registerVariable: () => registerVariable,
|
|
@@ -66,24 +68,29 @@ var BasisProvider = ({ children }) => {
|
|
|
66
68
|
return React.createElement(React.Fragment, null, children);
|
|
67
69
|
};
|
|
68
70
|
var useState2 = (initialState, _label) => React.useState(initialState);
|
|
71
|
+
function useReducer2(reducer, initialArg, init, _label) {
|
|
72
|
+
return typeof init === "function" ? React.useReducer(reducer, initialArg, init) : React.useReducer(reducer, initialArg);
|
|
73
|
+
}
|
|
74
|
+
var createContext2 = (defaultValue, _label) => React.createContext(defaultValue);
|
|
75
|
+
var useContext2 = React.useContext;
|
|
69
76
|
var useEffect2 = (effect, deps, _label) => React.useEffect(effect, deps);
|
|
77
|
+
var useLayoutEffect2 = (effect, deps, _label) => React.useLayoutEffect(effect, deps);
|
|
78
|
+
var useInsertionEffect2 = React.useInsertionEffect;
|
|
70
79
|
var useMemo2 = (factory, deps, _label) => React.useMemo(factory, deps);
|
|
71
80
|
var useCallback2 = (callback, deps, _label) => React.useCallback(callback, deps);
|
|
72
|
-
var useReducer2 = (reducer, initArg, init, _label) => React.useReducer(reducer, initArg, init);
|
|
73
81
|
var useRef2 = (initialValue, _label) => React.useRef(initialValue);
|
|
74
|
-
var useLayoutEffect2 = (effect, deps, _label) => React.useLayoutEffect(effect, deps);
|
|
75
82
|
var useTransition2 = (_label) => React.useTransition();
|
|
76
83
|
var useDeferredValue2 = (value, _label) => React.useDeferredValue(value);
|
|
77
84
|
var useOptimistic2 = (passthrough, reducer, _label) => React.useOptimistic(passthrough, reducer);
|
|
78
|
-
var useActionState2 = (action, initialState, permalink, _label) =>
|
|
85
|
+
var useActionState2 = (action, initialState, permalink, _label) => {
|
|
86
|
+
const actualPermalink = typeof permalink === "string" && _label === void 0 ? void 0 : permalink;
|
|
87
|
+
return React.useActionState(action, initialState, actualPermalink);
|
|
88
|
+
};
|
|
79
89
|
var useId2 = (_label) => React.useId();
|
|
80
90
|
var useDebugValue2 = React.useDebugValue;
|
|
81
91
|
var useImperativeHandle2 = React.useImperativeHandle;
|
|
82
|
-
var useInsertionEffect2 = React.useInsertionEffect;
|
|
83
92
|
var useSyncExternalStore2 = React.useSyncExternalStore;
|
|
84
93
|
var use2 = React.use;
|
|
85
|
-
var createContext2 = React.createContext;
|
|
86
|
-
var useContext2 = React.useContext;
|
|
87
94
|
|
|
88
95
|
// src/production.ts
|
|
89
96
|
var registerVariable = () => {
|
|
@@ -99,13 +106,21 @@ var printBasisHealthReport = () => {
|
|
|
99
106
|
};
|
|
100
107
|
var configureBasis = () => {
|
|
101
108
|
};
|
|
109
|
+
var getBasisMetrics = () => ({
|
|
110
|
+
engine: "production",
|
|
111
|
+
hooks: 0,
|
|
112
|
+
analysis_ms: "0"
|
|
113
|
+
});
|
|
114
|
+
var config = { debug: false };
|
|
102
115
|
// Annotate the CommonJS export names for ESM import in node:
|
|
103
116
|
0 && (module.exports = {
|
|
104
117
|
BasisProvider,
|
|
105
118
|
beginEffectTracking,
|
|
119
|
+
config,
|
|
106
120
|
configureBasis,
|
|
107
121
|
createContext,
|
|
108
122
|
endEffectTracking,
|
|
123
|
+
getBasisMetrics,
|
|
109
124
|
printBasisHealthReport,
|
|
110
125
|
recordUpdate,
|
|
111
126
|
registerVariable,
|
package/dist/production.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/production.ts","../src/production-hooks.ts"],"sourcesContent":["// src/production.ts\n\nexport * from './production-hooks';\n\nexport const registerVariable = () => { };\nexport const unregisterVariable = () => { };\nexport const recordUpdate = () => true;\nexport const beginEffectTracking = () => { };\nexport const endEffectTracking = () => { };\nexport const printBasisHealthReport = () => { };\nexport const configureBasis = () => { };\n\nexport type { ReactNode, FC } from 'react';","// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{ children: ReactNode; debug?: boolean }> = ({ children }) => {\n return React.createElement(React.Fragment, null, children);\n};\n\nexport const useState = <T>(initialState: T | (() => T), _label?: string)
|
|
1
|
+
{"version":3,"sources":["../src/production.ts","../src/production-hooks.ts"],"sourcesContent":["// src/production.ts\n\nexport * from './production-hooks';\n\n// No-op Kernel exports\nexport const registerVariable = () => { };\nexport const unregisterVariable = () => { };\nexport const recordUpdate = () => true;\nexport const beginEffectTracking = () => { };\nexport const endEffectTracking = () => { };\nexport const printBasisHealthReport = () => { };\nexport const configureBasis = () => { };\n\n// Static Mock for Metrics\nexport const getBasisMetrics = () => ({\n engine: 'production',\n hooks: 0,\n analysis_ms: '0'\n});\n\nexport const config = { debug: false };\n\nexport type { ReactNode, FC } from 'react';","// src/production-hooks.ts\n\nimport * as React from 'react';\nimport type { FC, ReactNode, DependencyList, EffectCallback } from 'react';\n\nexport const BasisProvider: FC<{ children: ReactNode; debug?: boolean }> = ({ children }) => {\n return React.createElement(React.Fragment, null, children);\n};\n\nexport const useState = <T>(initialState: T | (() => T), _label?: string) =>\n React.useState(initialState);\n\nexport function useReducer(reducer: any, initialArg: any, init?: any, _label?: string) {\n return typeof init === 'function'\n ? React.useReducer(reducer, initialArg, init)\n : React.useReducer(reducer, initialArg);\n}\n\nexport const createContext = <T>(defaultValue: T, _label?: string) =>\n React.createContext(defaultValue);\n\nexport const useContext = React.useContext;\n\nexport const useEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useEffect(effect, deps as DependencyList);\n\nexport const useLayoutEffect = (effect: EffectCallback, deps?: DependencyList, _label?: string) =>\n React.useLayoutEffect(effect, deps as DependencyList);\n\nexport const useInsertionEffect = React.useInsertionEffect;\n\nexport const useMemo = <T>(factory: () => T, deps?: DependencyList, _label?: string) =>\n React.useMemo(factory, deps as DependencyList);\n\nexport const useCallback = <T extends (...args: any[]) => any>(callback: T, deps?: DependencyList, _label?: string) =>\n React.useCallback(callback, deps as DependencyList);\n\nexport const useRef = <T>(initialValue: T, _label?: string) =>\n React.useRef(initialValue);\n\nexport const useTransition = (_label?: string) => React.useTransition();\nexport const useDeferredValue = <T>(value: T, _label?: string) => React.useDeferredValue(value);\n\nexport const useOptimistic = <S, P>(passthrough: S, reducer?: (state: S, payload: P) => S, _label?: string) =>\n (React as any).useOptimistic(passthrough, reducer);\n\nexport const useActionState = <State, Payload>(\n action: (state: State, payload: Payload) => Promise<State> | State,\n initialState: State,\n permalink?: string,\n _label?: string\n) => {\n const actualPermalink = typeof permalink === 'string' && _label === undefined ? undefined : permalink;\n return (React as any).useActionState(action, initialState, actualPermalink);\n};\n\nexport const useId = (_label?: string) => React.useId();\nexport const useDebugValue = React.useDebugValue;\nexport const useImperativeHandle = React.useImperativeHandle;\nexport const useSyncExternalStore = React.useSyncExternalStore;\nexport const use = (React as any).use;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,qBAAAC;AAAA;AAAA;;;ACEA,YAAuB;AAGhB,IAAM,gBAA8D,CAAC,EAAE,SAAS,MAAM;AACzF,SAAa,oBAAoB,gBAAU,MAAM,QAAQ;AAC7D;AAEO,IAAMC,YAAW,CAAI,cAA6B,WAC/C,eAAS,YAAY;AAExB,SAASC,YAAW,SAAc,YAAiB,MAAY,QAAiB;AACnF,SAAO,OAAO,SAAS,aACX,iBAAW,SAAS,YAAY,IAAI,IACpC,iBAAW,SAAS,UAAU;AAC9C;AAEO,IAAMC,iBAAgB,CAAI,cAAiB,WACxC,oBAAc,YAAY;AAE7B,IAAMC,cAAmB;AAEzB,IAAMC,aAAY,CAAC,QAAwB,MAAuB,WAC/D,gBAAU,QAAQ,IAAsB;AAE3C,IAAMC,mBAAkB,CAAC,QAAwB,MAAuB,WACrE,sBAAgB,QAAQ,IAAsB;AAEjD,IAAMC,sBAA2B;AAEjC,IAAMC,WAAU,CAAI,SAAkB,MAAuB,WAC1D,cAAQ,SAAS,IAAsB;AAE1C,IAAMC,eAAc,CAAoC,UAAa,MAAuB,WACzF,kBAAY,UAAU,IAAsB;AAE/C,IAAMC,UAAS,CAAI,cAAiB,WACjC,aAAO,YAAY;AAEtB,IAAMC,iBAAgB,CAAC,WAA0B,oBAAc;AAC/D,IAAMC,oBAAmB,CAAI,OAAU,WAA0B,uBAAiB,KAAK;AAEvF,IAAMC,iBAAgB,CAAO,aAAgB,SAAuC,WACxE,oBAAc,aAAa,OAAO;AAE9C,IAAMC,kBAAiB,CAC1B,QACA,cACA,WACA,WACC;AACD,QAAM,kBAAkB,OAAO,cAAc,YAAY,WAAW,SAAY,SAAY;AAC5F,SAAsB,qBAAe,QAAQ,cAAc,eAAe;AAC9E;AAEO,IAAMC,SAAQ,CAAC,WAA0B,YAAM;AAC/C,IAAMC,iBAAsB;AAC5B,IAAMC,uBAA4B;AAClC,IAAMC,wBAA6B;AACnC,IAAMC,OAAqB;;;ADvD3B,IAAM,mBAAmB,MAAM;AAAE;AACjC,IAAM,qBAAqB,MAAM;AAAE;AACnC,IAAM,eAAe,MAAM;AAC3B,IAAM,sBAAsB,MAAM;AAAE;AACpC,IAAM,oBAAoB,MAAM;AAAE;AAClC,IAAM,yBAAyB,MAAM;AAAE;AACvC,IAAM,iBAAiB,MAAM;AAAE;AAG/B,IAAM,kBAAkB,OAAO;AAAA,EAClC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AACjB;AAEO,IAAM,SAAS,EAAE,OAAO,MAAM;","names":["createContext","use","useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition","useState","useReducer","createContext","useContext","useEffect","useLayoutEffect","useInsertionEffect","useMemo","useCallback","useRef","useTransition","useDeferredValue","useOptimistic","useActionState","useId","useDebugValue","useImperativeHandle","useSyncExternalStore","use"]}
|