@signaltree/guardrails 4.0.12 → 4.0.15

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/guardrails.ts","../../src/lib/rules.ts","../../src/factories/index.ts"],"names":["isFunction","value","isString","isObjectLike","resolveEnabledFlag","option","undefined","supportsMiddleware","tree","candidate","addTap","removeTap","tryStructuredClone","cloneFn","globalThis","structuredClone","isDevEnvironment","__DEV__","process","env","ngDevMode","Boolean","MAX_TIMING_SAMPLES","RECOMPUTATION_WINDOW_MS","withGuardrails","config","enabled","console","warn","stats","createRuntimeStats","context","issues","hotPaths","currentUpdate","suppressed","timings","hotPathData","Map","issueMap","signalUsage","memoryHistory","recomputationLog","disposed","middlewareId","treeId","Math","random","toString","slice","middleware","createGuardrailsMiddleware","stopMonitoring","startMonitoring","teardown","originalDestroy","destroy","bind","createAPI","updateCount","totalUpdateTime","avgUpdateTime","p50UpdateTime","p95UpdateTime","p99UpdateTime","maxUpdateTime","recomputationCount","recomputationsPerSecond","signalCount","signalRetention","unreadSignalCount","memoryGrowthRate","hotPathCount","violationCount","id","before","action","payload","state","metadata","extractMetadata","shouldSuppressUpdate","details","collectUpdateDetails","startTime","performance","now","detail","analyzePreUpdate","after","_action","_payload","_previousState","newState","pending","duration","max","timestamp","Date","recomputations","length","updateTimingStats","index","entries","latest","getValueAtPath","segments","diffRatio","calculateDiffRatio","oldValue","analyzePostUpdate","trackHotPath","path","trackSignalUsage","updateSignalStats","recordRecomputations","updatePercentiles","sorted","sort","a","b","floor","newValue","isComparableRecord","Object","is","oldKeys","Set","keys","newKeys","allKeys","changed","key","has","size","customRules","rule","evaluateRule","isPrimary","budgets","addIssue","type","severity","message","toFixed","count","minDiff","analysis","minDiffForParentReplace","warnParentReplace","pathKey","Array","isArray","join","windowMs","data","get","lastUpdate","durations","set","push","threshold","updatesPerSecond","p95","avg","reduce","sum","d","updateHotPath","heatScore","min","downstreamEffects","avgDuration","p95Duration","entry","updates","lastSeen","retentionWindow","memoryLeaks","checkInterval","historyWindow","staleCount","values","filter","baseline","growth","i","hotPath","existing","find","h","assign","topN","ruleContext","handleFailure","name","result","test","Promise","then","outcome","catch","error","issue","reporting","aggregateWarnings","mode","Error","suppressGuardrails","suppression","respectMetadata","autoSuppress","intent","source","some","interval","setInterval","clearInterval","checkMemory","maybeReport","retentionThreshold","growthThreshold","growthRate","exceedsRetention","exceedsGrowth","report","generateReport","customReporter","reportToConsole","clear","verbose","group","logIssues","logHotPaths","logVerboseStats","groupEnd","prefix","getSeverityPrefix","countSuffix","log","hp","memoryCurrent","memoryLimit","maxMemory","recomputationCurrent","recomputationLimit","maxRecomputations","updateTime","createBudgetItem","memory","from","recommendations","generateRecommendations","current","limit","usage","status","getReport","getStats","suppress","fn","was","dispose","finalReport","stateSnapshot","visit","currentState","captureValue","child","segment","isPlainObject","proto","getPrototypeOf","prototype","shift","rules","noDeepNesting","maxDepth","description","ctx","tags","noFunctionsInState","noCacheInPersistence","includes","maxPayloadSize","maxKB","JSON","stringify","kb","noSensitiveData","sensitiveKeys","toLowerCase","isGuardrailsConfig","resolveGuardrailsConfig","guardrails","createFeatureTree","signalTree","initial","options","isDev","isTest","enhancers","guardrailsConfig","enhancer","with","createAngularFeatureTree","createAppShellTree","createPerformanceTree","createFormTree","formName","createCacheTree","createTestTree","overrides"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * SignalTree Guardrails Enhancer v1.1\n * Development-only performance monitoring and anti-pattern detection\n * @packageDocumentation\n */\n\nimport type { Middleware, SignalTree } from '@signaltree/core';\n\nimport type {\n GuardrailsConfig,\n GuardrailsAPI,\n GuardrailsReport,\n RuntimeStats,\n GuardrailIssue,\n HotPath,\n UpdateMetadata,\n RuleContext,\n BudgetStatus,\n BudgetItem,\n GuardrailRule,\n} from './types';\n\n// Dev environment detection\ndeclare const __DEV__: boolean | undefined;\ndeclare const ngDevMode: boolean | undefined;\ndeclare const process:\n | {\n env?: Record<string, string | undefined>;\n }\n | undefined;\n\ntype EnabledOption = boolean | (() => boolean);\n\ntype MiddlewareCapableTree<T extends Record<string, unknown>> =\n SignalTree<T> & {\n addTap: (middleware: Middleware<T>) => void;\n removeTap: (id: string) => void;\n };\n\nfunction isFunction<T extends (...args: never[]) => unknown>(\n value: unknown\n): value is T {\n return typeof value === 'function';\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isObjectLike(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction resolveEnabledFlag(option?: EnabledOption): boolean {\n if (option === undefined) {\n return true;\n }\n if (isFunction<() => boolean>(option)) {\n try {\n return option();\n } catch {\n return true;\n }\n }\n return option;\n}\n\nfunction supportsMiddleware<T extends Record<string, unknown>>(\n tree: SignalTree<T>\n): tree is MiddlewareCapableTree<T> {\n const candidate = tree as Partial<MiddlewareCapableTree<T>>;\n return isFunction(candidate.addTap) && isFunction(candidate.removeTap);\n}\n\nfunction tryStructuredClone<T>(value: T): T {\n const cloneFn = (\n globalThis as typeof globalThis & {\n structuredClone?: <U>(input: U) => U;\n }\n ).structuredClone;\n\n if (isFunction(cloneFn)) {\n try {\n return cloneFn(value);\n } catch {\n // Fall through to return original value.\n }\n }\n\n return value;\n}\n\nfunction isDevEnvironment(): boolean {\n if (__DEV__ !== undefined) return __DEV__;\n if (process?.env?.['NODE_ENV'] === 'production') return false;\n if (ngDevMode != null) return Boolean(ngDevMode);\n return true;\n}\n\ninterface UpdateDetail {\n path: string;\n segments: string[];\n newValue: unknown;\n oldValue: unknown;\n}\n\ninterface PendingUpdate {\n action: string;\n startTime: number;\n metadata?: UpdateMetadata;\n details: UpdateDetail[];\n}\n\ninterface GuardrailsContext<\n T extends Record<string, unknown> = Record<string, unknown>\n> {\n tree: SignalTree<T>;\n config: GuardrailsConfig<T>;\n stats: RuntimeStats;\n issues: GuardrailIssue[];\n hotPaths: HotPath[];\n currentUpdate: PendingUpdate | null;\n suppressed: boolean;\n timings: number[];\n hotPathData: Map<\n string,\n { count: number; lastUpdate: number; durations: number[] }\n >;\n issueMap: Map<string, GuardrailIssue>;\n signalUsage: Map<string, { updates: number; lastSeen: number }>;\n memoryHistory: Array<{ timestamp: number; count: number }>;\n recomputationLog: number[];\n middlewareId?: string;\n disposed: boolean;\n}\n\nconst MAX_TIMING_SAMPLES = 1000;\nconst RECOMPUTATION_WINDOW_MS = 1000;\n\n/**\n * Creates a guardrails enhancer for dev-only monitoring\n */\nexport function withGuardrails<T extends Record<string, unknown>>(\n config: GuardrailsConfig<T> = {}\n): (tree: SignalTree<T>) => SignalTree<T> {\n return (tree: SignalTree<T>) => {\n const enabled = resolveEnabledFlag(config.enabled);\n\n if (!isDevEnvironment() || !enabled) {\n return tree;\n }\n\n if (!supportsMiddleware(tree)) {\n console.warn(\n '[Guardrails] Tree does not expose middleware hooks; guardrails disabled.'\n );\n return tree;\n }\n\n const stats = createRuntimeStats();\n const context: GuardrailsContext<T> = {\n tree,\n config,\n stats,\n issues: [],\n hotPaths: [],\n currentUpdate: null,\n suppressed: false,\n timings: [],\n hotPathData: new Map(),\n issueMap: new Map(),\n signalUsage: new Map(),\n memoryHistory: [],\n recomputationLog: [],\n disposed: false,\n };\n\n const middlewareId = `guardrails:${config.treeId ?? 'tree'}:${Math.random()\n .toString(36)\n .slice(2)}`;\n context.middlewareId = middlewareId;\n\n const middleware = createGuardrailsMiddleware(context);\n tree.addTap(middleware);\n\n const stopMonitoring = startMonitoring(context);\n\n const teardown = () => {\n if (context.disposed) return;\n context.disposed = true;\n stopMonitoring();\n try {\n tree.removeTap(middlewareId);\n } catch {\n // ignore if removal fails\n }\n };\n\n const originalDestroy = tree.destroy?.bind(tree);\n tree.destroy = () => {\n teardown();\n if (originalDestroy) {\n originalDestroy();\n }\n };\n\n (tree as unknown as Record<string, unknown>)['__guardrails'] = createAPI(\n context,\n teardown\n );\n\n return tree;\n };\n}\n\nfunction createRuntimeStats(): RuntimeStats {\n return {\n updateCount: 0,\n totalUpdateTime: 0,\n avgUpdateTime: 0,\n p50UpdateTime: 0,\n p95UpdateTime: 0,\n p99UpdateTime: 0,\n maxUpdateTime: 0,\n recomputationCount: 0,\n recomputationsPerSecond: 0,\n signalCount: 0,\n signalRetention: 0,\n unreadSignalCount: 0,\n memoryGrowthRate: 0,\n hotPathCount: 0,\n violationCount: 0,\n };\n}\n\nfunction createGuardrailsMiddleware<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): Middleware<T> {\n return {\n id: context.middlewareId ?? 'guardrails',\n before: (action: string, payload: unknown, state: T): boolean => {\n if (context.suppressed) {\n context.currentUpdate = null;\n return !context.disposed;\n }\n\n const metadata = extractMetadata(payload);\n if (shouldSuppressUpdate(context, metadata)) {\n context.currentUpdate = null;\n return !context.disposed;\n }\n\n const details = collectUpdateDetails(payload, state);\n context.currentUpdate = {\n action,\n startTime: performance.now(),\n metadata,\n details,\n };\n\n for (const detail of details) {\n analyzePreUpdate(context, detail, metadata);\n }\n\n return !context.disposed;\n },\n after: (\n _action: string,\n _payload: unknown,\n _previousState: T,\n newState: T\n ): void => {\n const pending = context.currentUpdate;\n if (!pending) return;\n\n const duration = Math.max(0, performance.now() - pending.startTime);\n const timestamp = Date.now();\n const recomputations = Math.max(0, pending.details.length - 1);\n updateTimingStats(context, duration);\n\n for (const [index, detail] of pending.details.entries()) {\n const latest = getValueAtPath(newState, detail.segments);\n const diffRatio = calculateDiffRatio(detail.oldValue, latest);\n analyzePostUpdate(context, detail, duration, diffRatio, index === 0);\n trackHotPath(context, detail.path, duration);\n trackSignalUsage(context, detail.path, timestamp);\n }\n\n updateSignalStats(context, timestamp);\n recordRecomputations(context, recomputations, timestamp);\n\n context.currentUpdate = null;\n },\n };\n}\n\nfunction updatePercentiles<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): void {\n if (context.timings.length === 0) return;\n\n const sorted = [...context.timings].sort((a, b) => a - b);\n context.stats.p50UpdateTime = sorted[Math.floor(sorted.length * 0.5)] || 0;\n context.stats.p95UpdateTime = sorted[Math.floor(sorted.length * 0.95)] || 0;\n context.stats.p99UpdateTime = sorted[Math.floor(sorted.length * 0.99)] || 0;\n}\n\nfunction calculateDiffRatio(oldValue: unknown, newValue: unknown): number {\n if (!isComparableRecord(oldValue) || !isComparableRecord(newValue)) {\n return Object.is(oldValue, newValue) ? 0 : 1;\n }\n if (oldValue === newValue) return 0;\n\n const oldKeys = new Set(Object.keys(oldValue));\n const newKeys = new Set(Object.keys(newValue));\n const allKeys = new Set([...oldKeys, ...newKeys]);\n\n let changed = 0;\n for (const key of allKeys) {\n if (\n !oldKeys.has(key) ||\n !newKeys.has(key) ||\n oldValue[key] !== newValue[key]\n ) {\n changed++;\n }\n }\n\n return allKeys.size === 0 ? 0 : changed / allKeys.size;\n}\n\nfunction analyzePreUpdate<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n detail: UpdateDetail,\n metadata?: UpdateMetadata\n): void {\n if (!context.config.customRules) return;\n\n for (const rule of context.config.customRules) {\n evaluateRule(context, rule, {\n path: detail.segments,\n value: detail.newValue,\n oldValue: detail.oldValue,\n metadata,\n tree: context.tree,\n stats: context.stats,\n });\n }\n}\n\nfunction analyzePostUpdate<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n detail: UpdateDetail,\n duration: number,\n diffRatio: number,\n isPrimary: boolean\n): void {\n if (\n isPrimary &&\n context.config.budgets?.maxUpdateTime &&\n duration > context.config.budgets.maxUpdateTime\n ) {\n addIssue(context, {\n type: 'budget',\n severity: 'error',\n message: `Update took ${duration.toFixed(2)}ms (budget: ${\n context.config.budgets.maxUpdateTime\n }ms)`,\n path: detail.path,\n count: 1,\n });\n }\n\n const minDiff = context.config.analysis?.minDiffForParentReplace ?? 0.8;\n if (context.config.analysis?.warnParentReplace && diffRatio > minDiff) {\n addIssue(context, {\n type: 'analysis',\n severity: 'warning',\n message: `High diff ratio (${(diffRatio * 100).toFixed(\n 0\n )}%) - consider scoped updates`,\n path: detail.path,\n count: 1,\n diffRatio,\n });\n }\n}\n\nfunction trackHotPath<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n path: string,\n duration: number\n): void {\n if (!context.config.hotPaths?.enabled) return;\n\n const pathKey = Array.isArray(path) ? path.join('.') : path;\n const now = Date.now();\n const windowMs = context.config.hotPaths.windowMs || 1000;\n\n let data = context.hotPathData.get(pathKey);\n if (!data) {\n data = { count: 0, lastUpdate: now, durations: [] };\n context.hotPathData.set(pathKey, data);\n }\n\n // Reset if outside window\n if (now - data.lastUpdate > windowMs) {\n data.count = 0;\n data.durations = [];\n }\n\n data.count++;\n data.durations.push(duration);\n data.lastUpdate = now;\n\n // Check threshold\n const threshold = context.config.hotPaths.threshold || 10;\n const updatesPerSecond = (data.count / windowMs) * 1000;\n\n if (updatesPerSecond > threshold) {\n const sorted = [...data.durations].sort((a, b) => a - b);\n const p95 = sorted[Math.floor(sorted.length * 0.95)] || 0;\n const avg =\n data.durations.reduce((sum, d) => sum + d, 0) / data.durations.length;\n\n updateHotPath(context, {\n path: pathKey,\n updatesPerSecond,\n heatScore: Math.min(100, (updatesPerSecond / threshold) * 50),\n downstreamEffects: 0, // Would need dev hooks\n avgDuration: avg,\n p95Duration: p95,\n });\n }\n}\n\nfunction trackSignalUsage<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n path: string,\n timestamp: number\n): void {\n const key = Array.isArray(path) ? path.join('.') : path;\n const entry = context.signalUsage.get(key) ?? {\n updates: 0,\n lastSeen: timestamp,\n };\n entry.updates += 1;\n entry.lastSeen = timestamp;\n context.signalUsage.set(key, entry);\n}\n\nfunction updateSignalStats<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n timestamp: number\n): void {\n const retentionWindow = context.config.memoryLeaks?.checkInterval ?? 5000;\n const historyWindow = Math.max(retentionWindow, 1000);\n\n const signalCount = context.signalUsage.size;\n context.stats.signalCount = signalCount;\n\n const staleCount = [...context.signalUsage.values()].filter(\n (entry) => timestamp - entry.lastSeen > retentionWindow\n ).length;\n context.stats.signalRetention = staleCount;\n context.stats.unreadSignalCount = 0;\n\n context.memoryHistory.push({ timestamp, count: signalCount });\n context.memoryHistory = context.memoryHistory.filter(\n (entry) => timestamp - entry.timestamp <= historyWindow\n );\n\n const baseline = context.memoryHistory[0]?.count ?? signalCount;\n const growth =\n baseline === 0 ? 0 : (signalCount - baseline) / Math.max(1, baseline);\n context.stats.memoryGrowthRate = growth;\n}\n\nfunction recordRecomputations<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n count: number,\n timestamp: number\n): void {\n if (count > 0) {\n context.stats.recomputationCount += count;\n for (let i = 0; i < count; i++) {\n context.recomputationLog.push(timestamp);\n }\n }\n\n if (context.recomputationLog.length) {\n context.recomputationLog = context.recomputationLog.filter(\n (value) => timestamp - value <= RECOMPUTATION_WINDOW_MS\n );\n }\n\n context.stats.recomputationsPerSecond = context.recomputationLog.length;\n}\n\nfunction updateHotPath<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n hotPath: HotPath\n): void {\n const existing = context.hotPaths.find((h) => h.path === hotPath.path);\n if (existing) {\n Object.assign(existing, hotPath);\n } else {\n context.hotPaths.push(hotPath);\n const topN = context.config.hotPaths?.topN || 5;\n if (context.hotPaths.length > topN) {\n context.hotPaths.sort((a, b) => b.heatScore - a.heatScore);\n context.hotPaths.length = topN;\n }\n }\n context.stats.hotPathCount = context.hotPaths.length;\n}\n\nfunction evaluateRule<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n rule: GuardrailRule<T>,\n ruleContext: RuleContext<T>\n): void {\n const handleFailure = () => {\n const message =\n typeof rule.message === 'function'\n ? rule.message(ruleContext)\n : rule.message;\n\n addIssue(context, {\n type: 'rule',\n severity: rule.severity || 'warning',\n message,\n path: ruleContext.path.join('.'),\n count: 1,\n metadata: { rule: rule.name },\n });\n };\n\n try {\n const result = rule.test(ruleContext);\n if (result instanceof Promise) {\n result\n .then((outcome) => {\n if (!outcome) {\n handleFailure();\n }\n })\n .catch((error) => {\n console.warn(`[Guardrails] Rule ${rule.name} rejected:`, error);\n });\n return;\n }\n\n if (!result) {\n handleFailure();\n }\n } catch (error) {\n // Rule threw, log but don't halt\n console.warn(`[Guardrails] Rule ${rule.name} threw error:`, error);\n }\n}\n\nfunction addIssue<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n issue: GuardrailIssue\n): void {\n if (context.suppressed) return;\n\n // Aggregate similar issues\n if (context.config.reporting?.aggregateWarnings !== false) {\n const key = `${issue.type}:${issue.path}:${issue.message}`;\n const existing = context.issueMap.get(key);\n if (existing) {\n existing.count++;\n return;\n }\n context.issueMap.set(key, issue);\n }\n\n context.issues.push(issue);\n context.stats.violationCount++;\n\n // Throw mode\n if (context.config.mode === 'throw') {\n throw new Error(`[Guardrails] ${issue.message}`);\n }\n}\n\nfunction shouldSuppressUpdate<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n metadata?: UpdateMetadata\n): boolean {\n if (context.suppressed) return true;\n if (!metadata) return false;\n\n if (\n metadata.suppressGuardrails &&\n context.config.suppression?.respectMetadata !== false\n ) {\n return true;\n }\n\n const autoSuppress = new Set<string>(\n context.config.suppression?.autoSuppress ?? []\n );\n\n return [metadata.intent, metadata.source].some(\n (value) => isString(value) && autoSuppress.has(value)\n );\n}\n\nfunction startMonitoring<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): () => void {\n const interval = setInterval(() => {\n if (context.disposed) {\n clearInterval(interval);\n return;\n }\n checkMemory(context);\n maybeReport(context);\n }, context.config.reporting?.interval || 5000);\n\n return () => clearInterval(interval);\n}\n\nfunction checkMemory<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): void {\n if (!context.config.memoryLeaks?.enabled) return;\n\n const now = Date.now();\n const retentionWindow = context.config.memoryLeaks?.checkInterval ?? 5000;\n const retentionThreshold =\n context.config.memoryLeaks?.retentionThreshold ?? 100;\n const growthThreshold = context.config.memoryLeaks?.growthRate ?? 0.2;\n\n const staleCount = [...context.signalUsage.values()].filter(\n (entry) => now - entry.lastSeen > retentionWindow\n ).length;\n context.stats.signalRetention = staleCount;\n\n const exceedsRetention = context.stats.signalRetention > retentionThreshold;\n const exceedsGrowth = context.stats.memoryGrowthRate > growthThreshold;\n\n if (exceedsRetention || exceedsGrowth) {\n addIssue(context, {\n type: 'memory',\n severity: 'warning',\n message: `Potential memory leak detected (signals: ${\n context.stats.signalCount\n }, growth ${(context.stats.memoryGrowthRate * 100).toFixed(1)}%)`,\n path: 'root',\n count: 1,\n metadata: {\n signalCount: context.stats.signalCount,\n growth: context.stats.memoryGrowthRate,\n },\n });\n }\n}\n\nfunction maybeReport<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): void {\n if (context.config.reporting?.console === false) return;\n\n const report = generateReport(context);\n\n if (context.config.reporting?.customReporter) {\n context.config.reporting.customReporter(report);\n }\n\n if (context.config.reporting?.console && context.issues.length > 0) {\n reportToConsole(report, context.config.reporting.console === 'verbose');\n }\n\n // Clear issues after reporting\n context.issues = [];\n context.issueMap.clear();\n}\n\nfunction reportToConsole(report: GuardrailsReport, verbose: boolean): void {\n console.group('[Guardrails] Performance Report');\n logIssues(report.issues);\n logHotPaths(report.hotPaths);\n if (verbose) {\n logVerboseStats(report);\n }\n console.groupEnd();\n}\n\nfunction logIssues(issues: GuardrailIssue[]): void {\n if (issues.length === 0) return;\n console.warn(`${issues.length} issues detected:`);\n for (const issue of issues) {\n const prefix = getSeverityPrefix(issue.severity);\n const countSuffix = issue.count > 1 ? ` (x${issue.count})` : '';\n const message = `${prefix} [${issue.type}] ${issue.message}${countSuffix}`;\n console.log(` ${message}`);\n }\n}\n\nfunction logHotPaths(hotPaths: HotPath[]): void {\n if (hotPaths.length === 0) return;\n console.log(`\\nHot Paths (${hotPaths.length}):`);\n for (const hp of hotPaths) {\n const entry = ` đŸ”Ĩ ${hp.path}: ${hp.updatesPerSecond.toFixed(\n 1\n )}/s (heat: ${hp.heatScore.toFixed(0)})`;\n console.log(entry);\n }\n}\n\nfunction logVerboseStats(report: GuardrailsReport): void {\n console.log('\\nStats:', report.stats);\n console.log('Budgets:', report.budgets);\n}\n\nfunction getSeverityPrefix(severity: GuardrailIssue['severity']): string {\n if (severity === 'error') return '❌';\n if (severity === 'warning') return 'âš ī¸';\n return 'â„šī¸';\n}\n\nfunction generateReport<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): GuardrailsReport {\n const memoryCurrent = context.stats.signalCount;\n const memoryLimit = context.config.budgets?.maxMemory ?? 50;\n const recomputationCurrent = context.stats.recomputationsPerSecond;\n const recomputationLimit = context.config.budgets?.maxRecomputations ?? 100;\n\n const budgets: BudgetStatus = {\n updateTime: createBudgetItem(\n context.stats.avgUpdateTime,\n context.config.budgets?.maxUpdateTime || 16\n ),\n memory: createBudgetItem(memoryCurrent, memoryLimit),\n recomputations: createBudgetItem(recomputationCurrent, recomputationLimit),\n };\n\n return {\n timestamp: Date.now(),\n treeId: context.config.treeId,\n issues: Array.from(context.issueMap.values()),\n hotPaths: context.hotPaths,\n budgets,\n stats: context.stats,\n recommendations: generateRecommendations(context),\n };\n}\n\nfunction createBudgetItem(current: number, limit: number): BudgetItem {\n if (limit <= 0) {\n return {\n current,\n limit,\n usage: 0,\n status: 'ok',\n };\n }\n\n const usage = (current / limit) * 100;\n const threshold = 80;\n let status: BudgetItem['status'];\n if (usage > 100) {\n status = 'exceeded';\n } else if (usage > threshold) {\n status = 'warning';\n } else {\n status = 'ok';\n }\n return {\n current,\n limit,\n usage,\n status,\n };\n}\n\nfunction generateRecommendations<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>\n): string[] {\n const recommendations: string[] = [];\n\n if (context.hotPaths.length > 0) {\n recommendations.push(\n 'Consider batching or debouncing updates to hot paths'\n );\n }\n\n if (context.stats.avgUpdateTime > 10) {\n recommendations.push('Average update time is high - review update logic');\n }\n\n return recommendations;\n}\n\nfunction createAPI<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n teardown: () => void\n): GuardrailsAPI {\n return {\n getReport: () => generateReport(context),\n getStats: () => context.stats,\n suppress: (fn: () => void) => {\n const was = context.suppressed;\n context.suppressed = true;\n try {\n fn();\n } finally {\n context.suppressed = was;\n }\n },\n dispose: () => {\n teardown();\n const finalReport = generateReport(context);\n if (context.config.reporting?.console !== false) {\n console.log('[Guardrails] Final report on disposal:', finalReport);\n }\n if (context.config.reporting?.customReporter) {\n context.config.reporting.customReporter(finalReport);\n }\n },\n };\n}\n\nfunction extractMetadata(payload: unknown): UpdateMetadata | undefined {\n if (!isObjectLike(payload)) return undefined;\n const candidate = (payload as Record<string, unknown>)['metadata'];\n return isObjectLike(candidate) ? (candidate as UpdateMetadata) : undefined;\n}\n\nfunction collectUpdateDetails(\n payload: unknown,\n stateSnapshot: unknown\n): UpdateDetail[] {\n const details: UpdateDetail[] = [];\n\n const visit = (value: unknown, segments: string[], currentState: unknown) => {\n const path = segments.length ? segments.join('.') : 'root';\n const oldValue = captureValue(currentState);\n\n if (isObjectLike(value)) {\n details.push({\n path,\n segments: [...segments],\n newValue: value,\n oldValue,\n });\n for (const [key, child] of Object.entries(value)) {\n visit(\n child,\n [...segments, key],\n isObjectLike(currentState)\n ? (currentState as Record<string, unknown>)[key]\n : undefined\n );\n }\n return;\n }\n\n details.push({ path, segments: [...segments], newValue: value, oldValue });\n };\n\n if (isObjectLike(payload)) {\n visit(payload, [], stateSnapshot);\n } else {\n details.push({\n path: 'root',\n segments: [],\n newValue: payload,\n oldValue: captureValue(stateSnapshot),\n });\n }\n\n if (details.length === 0) {\n details.push({\n path: 'root',\n segments: [],\n newValue: payload,\n oldValue: captureValue(stateSnapshot),\n });\n }\n\n return details;\n}\n\nfunction getValueAtPath(source: unknown, segments: string[]): unknown {\n let current = source;\n for (const segment of segments) {\n if (!isObjectLike(current)) {\n return undefined;\n }\n current = (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n\nfunction captureValue<T>(value: T): T {\n return tryStructuredClone(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object') return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction updateTimingStats<T extends Record<string, unknown>>(\n context: GuardrailsContext<T>,\n duration: number\n): void {\n context.timings.push(duration);\n if (context.timings.length > MAX_TIMING_SAMPLES) {\n context.timings.shift();\n }\n\n context.stats.updateCount++;\n context.stats.totalUpdateTime += duration;\n context.stats.avgUpdateTime =\n context.stats.totalUpdateTime / context.stats.updateCount;\n context.stats.maxUpdateTime = Math.max(context.stats.maxUpdateTime, duration);\n\n updatePercentiles(context);\n}\n\nfunction isComparableRecord(value: unknown): value is Record<string, unknown> {\n return isPlainObject(value);\n}\n","/**\n * Prebuilt Guardrail Rules\n * @packageDocumentation\n */\n\nimport type { GuardrailRule } from './types';\n\nexport const rules = {\n /**\n * Prevents deep nesting beyond specified depth\n */\n noDeepNesting: (maxDepth = 5): GuardrailRule => ({\n name: 'no-deep-nesting',\n description: `Prevents nesting deeper than ${maxDepth} levels`,\n test: (ctx) => ctx.path.length <= maxDepth,\n message: (ctx) => `Path too deep: ${ctx.path.join('.')} (${ctx.path.length} levels, max: ${maxDepth})`,\n severity: 'warning',\n tags: ['architecture', 'complexity'],\n }),\n \n /**\n * Prevents storing functions in state (breaks serialization)\n */\n noFunctionsInState: (): GuardrailRule => ({\n name: 'no-functions',\n description: 'Functions break serialization',\n test: (ctx) => typeof ctx.value !== 'function',\n message: 'Functions cannot be stored in state (breaks serialization)',\n severity: 'error',\n tags: ['serialization', 'data'],\n }),\n \n /**\n * Prevents cache from being persisted\n */\n noCacheInPersistence: (): GuardrailRule => ({\n name: 'no-cache-persistence',\n description: 'Prevent cache from being persisted',\n test: (ctx) => {\n if (ctx.metadata?.source === 'serialization' && ctx.path.includes('cache')) {\n return false;\n }\n return true;\n },\n message: 'Cache should not be persisted',\n severity: 'warning',\n tags: ['persistence', 'cache'],\n }),\n \n /**\n * Limits payload size\n */\n maxPayloadSize: (maxKB = 100): GuardrailRule => ({\n name: 'max-payload-size',\n description: `Limit payload size to ${maxKB}KB`,\n test: (ctx) => {\n try {\n const size = JSON.stringify(ctx.value).length;\n return size < maxKB * 1024;\n } catch {\n return true; // Can't serialize, let it pass\n }\n },\n message: (ctx) => {\n const size = JSON.stringify(ctx.value).length;\n const kb = (size / 1024).toFixed(1);\n return `Payload size ${kb}KB exceeds limit of ${maxKB}KB`;\n },\n severity: 'warning',\n tags: ['performance', 'data'],\n }),\n \n /**\n * Prevents storing sensitive data\n */\n noSensitiveData: (sensitiveKeys: string[] = ['password', 'token', 'secret', 'apiKey']): GuardrailRule => ({\n name: 'no-sensitive-data',\n description: 'Prevents storing sensitive data',\n test: (ctx) => {\n return !ctx.path.some(segment => \n sensitiveKeys.some(key => \n typeof segment === 'string' && segment.toLowerCase().includes(key.toLowerCase())\n )\n );\n },\n message: (ctx) => `Sensitive data detected in path: ${ctx.path.join('.')}`,\n severity: 'error',\n tags: ['security', 'data'],\n }),\n};\n","/**\n * Factory Patterns for SignalTree with Guardrails\n * @packageDocumentation\n */\n\nimport type { SignalTree, TreeConfig } from '@signaltree/core';\n\nimport { withGuardrails } from '../lib/guardrails';\nimport { rules } from '../lib/rules';\nimport type { GuardrailsConfig } from '../lib/types';\n\ndeclare const ngDevMode: boolean | undefined;\n\ninterface GlobalProcess {\n env?: Record<string, string | undefined>;\n}\n\ndeclare const process: GlobalProcess | undefined;\n\ntype SignalTreeFactory<T extends Record<string, unknown>> = (\n initial: T,\n config?: TreeConfig\n) => SignalTree<T>;\n\ntype EnhancerFn<T extends Record<string, unknown>> = (\n tree: SignalTree<T>\n) => SignalTree<T>;\n\ninterface FeatureTreeOptions<T extends Record<string, unknown>> {\n name: string;\n env?: 'development' | 'test' | 'staging' | 'production';\n persistence?: boolean | Record<string, unknown>;\n guardrails?: boolean | GuardrailsConfig;\n devtools?: boolean;\n enhancers?: EnhancerFn<T>[];\n}\n\nfunction isGuardrailsConfig<T extends Record<string, unknown>>(\n value: unknown\n): value is GuardrailsConfig<T> {\n return Boolean(value) && typeof value === 'object';\n}\n\nfunction resolveGuardrailsConfig<T extends Record<string, unknown>>(\n guardrails: FeatureTreeOptions<T>['guardrails']\n): GuardrailsConfig<T> | undefined {\n if (guardrails === false) {\n return undefined;\n }\n\n if (isGuardrailsConfig<T>(guardrails)) {\n return guardrails;\n }\n\n return {\n budgets: { maxUpdateTime: 16, maxRecomputations: 100 },\n hotPaths: { enabled: true, threshold: 10 },\n reporting: { console: true },\n } as GuardrailsConfig<T>;\n}\n\n/**\n * Framework-agnostic factory for creating feature trees with guardrails\n */\nexport function createFeatureTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T,\n options: FeatureTreeOptions<T>\n): SignalTree<T> {\n const env = options.env ?? process?.env?.['NODE_ENV'] ?? 'production';\n\n const isDev = env === 'development';\n const isTest = env === 'test';\n\n const enhancers: EnhancerFn<T>[] = [];\n\n if (isDev || isTest) {\n const guardrailsConfig = resolveGuardrailsConfig<T>(options.guardrails);\n if (guardrailsConfig) {\n enhancers.push(withGuardrails(guardrailsConfig));\n }\n }\n\n if (options.enhancers?.length) {\n enhancers.push(...options.enhancers);\n }\n\n let tree = signalTree(initial);\n for (const enhancer of enhancers) {\n tree = tree.with(enhancer);\n }\n\n return tree;\n}\n\n/**\n * Angular-specific factory\n */\nexport function createAngularFeatureTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T,\n options: Omit<FeatureTreeOptions<T>, 'env'>\n): SignalTree<T> {\n const isDev = Boolean(ngDevMode);\n\n return createFeatureTree(signalTree, initial, {\n ...options,\n env: isDev ? 'development' : 'production',\n });\n}\n\n/**\n * App shell tree with strict budgets\n */\nexport function createAppShellTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T\n): SignalTree<T> {\n return createFeatureTree(signalTree, initial, {\n name: 'app-shell',\n guardrails: {\n budgets: {\n maxUpdateTime: 4,\n maxMemory: 20,\n },\n hotPaths: { threshold: 5 },\n customRules: [rules.noDeepNesting(3)],\n },\n });\n}\n\n/**\n * Performance tree for real-time scenarios\n */\nexport function createPerformanceTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T,\n name: string\n): SignalTree<T> {\n return createFeatureTree(signalTree, initial, {\n name,\n persistence: false,\n guardrails: {\n budgets: {\n maxUpdateTime: 8,\n maxRecomputations: 200,\n },\n hotPaths: { threshold: 50 },\n memoryLeaks: { enabled: false },\n reporting: { interval: 10000 },\n },\n });\n}\n\n/**\n * Form tree with validation rules\n */\nexport function createFormTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T,\n formName: string\n): SignalTree<T> {\n return createFeatureTree(signalTree, initial, {\n name: `form-${formName}`,\n guardrails: {\n customRules: [\n rules.noDeepNesting(4),\n rules.maxPayloadSize(50),\n rules.noSensitiveData(),\n ],\n },\n });\n}\n\n/**\n * Cache tree with relaxed rules\n */\nexport function createCacheTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T\n): SignalTree<T> {\n return createFeatureTree(signalTree, initial, {\n name: 'cache',\n persistence: false,\n guardrails: {\n mode: 'silent',\n memoryLeaks: { enabled: false },\n },\n devtools: false,\n });\n}\n\n/**\n * Test tree with strict enforcement\n */\nexport function createTestTree<T extends Record<string, unknown>>(\n signalTree: SignalTreeFactory<T>,\n initial: T,\n overrides?: Partial<GuardrailsConfig>\n): SignalTree<T> {\n return createFeatureTree(signalTree, initial, {\n name: 'test',\n env: 'test',\n guardrails: {\n mode: 'throw',\n budgets: {\n maxUpdateTime: 5,\n maxRecomputations: 50,\n },\n customRules: [rules.noFunctionsInState(), rules.noDeepNesting(4)],\n ...overrides,\n },\n });\n}\n"]}