@routier/core 0.0.4 → 0.0.6

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities/index.js","sources":["webpack://@routier/core/./src/capabilities/Capability.ts","webpack://@routier/core/./src/capabilities/PerformanceCapability.ts","webpack://@routier/core/./src/capabilities/TracingCapability.ts","webpack://@routier/core/./src/capabilities/performance/PerformanceTracker.ts","webpack://@routier/core/./src/capabilities/tracing/CallTraceManager.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/capabilities/index.ts"],"sourcesContent":["import { ExplorationOptions, MethodInfo } from \"./types\";\n\nexport abstract class Capability {\n\n protected isValidObject(obj: unknown): obj is object {\n return typeof obj === \"object\" && obj !== null;\n }\n\n protected getObjectName(obj: unknown): string {\n return (obj as any)?.constructor?.name || 'root';\n }\n\n protected exploreObjectMethods(\n obj: unknown,\n callback: (methodInfo: MethodInfo) => void,\n options: ExplorationOptions = {}\n ): void {\n if (!this.isValidObject(obj)) {\n return;\n }\n\n const {\n maxDepth = 10,\n includeNonEnumerable = false,\n filter = () => true\n } = options;\n\n const rootName = this.getObjectName(obj);\n const visited = new Set<object>();\n\n // Explore root methods\n this.exploreRootMethods(obj, callback, filter);\n\n // Explore nested methods\n this.exploreNestedMethods(obj, callback, filter, [rootName], visited, maxDepth, includeNonEnumerable);\n }\n\n protected exploreRootMethods(\n obj: object,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean\n ): void {\n const methodNames = this.extractMethodNames(obj);\n\n for (const methodName of methodNames) {\n const methodInfo: MethodInfo = {\n methodName,\n instance: obj,\n methodPath: [String(methodName)],\n parent: null\n };\n\n if (filter(methodInfo)) {\n callback(methodInfo);\n }\n }\n }\n\n protected extractMethodNames(obj: unknown): (string | symbol)[] {\n const methodNames = new Set<string | symbol>();\n let prototype = obj;\n\n while (prototype && prototype !== Object.prototype) {\n const allKeys = [\n ...Object.getOwnPropertyNames(prototype),\n ...Object.getOwnPropertySymbols(prototype),\n ];\n\n for (const key of allKeys) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\n if (this.isCallableMethod(descriptor, key)) {\n methodNames.add(key);\n }\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n return Array.from(methodNames);\n }\n\n protected isCallableMethod(descriptor: PropertyDescriptor | undefined, key: string | symbol): boolean {\n return (\n descriptor?.value &&\n typeof descriptor.value === 'function' &&\n key !== 'constructor' &&\n key !== 'undefined'\n );\n }\n\n protected isCustomClassInstance(value: unknown): boolean {\n if (value === null || (typeof value !== \"object\" && typeof value !== \"function\")) {\n return false;\n }\n\n const objectTag = Object.prototype.toString.call(value);\n // Most built-ins have distinct tags; user classes default to \"[object Object]\"\n // Caveat: Symbol.toStringTag can spoof this.\n return objectTag === \"[object Object]\";\n }\n\n protected shouldProcessProperty(property: unknown): boolean {\n return (\n this.isCustomClassInstance(property) &&\n property?.constructor.name !== \"Object\"\n );\n }\n\n protected exploreNestedMethods(\n obj: unknown,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean,\n initialPath: string[],\n visited: Set<object>,\n maxDepth: number,\n includeNonEnumerable: boolean\n ): void {\n if (visited.has(obj as object) || initialPath.length > maxDepth) {\n return;\n }\n\n visited.add(obj as object);\n\n if (!this.isValidObject(obj)) {\n return;\n }\n\n const properties = includeNonEnumerable\n ? Object.getOwnPropertyNames(obj)\n : Object.keys(obj);\n\n for (const propertyName of properties) {\n const property = (obj as any)[propertyName];\n\n if (!this.shouldProcessProperty(property)) {\n continue;\n }\n\n const newPath = [...initialPath, propertyName];\n\n // Explore methods on this property\n this.explorePropertyMethods(property, callback, filter, newPath, obj);\n\n // Recursively explore nested objects\n this.exploreNestedMethods(\n property,\n callback,\n filter,\n newPath,\n visited,\n maxDepth,\n includeNonEnumerable\n );\n }\n }\n\n private explorePropertyMethods(\n property: any,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean,\n methodPath: string[],\n parent: any\n ): void {\n const methodNames = this.extractMethodNames(property);\n\n for (const methodName of methodNames) {\n const fullMethodPath = [...methodPath, String(methodName)];\n const methodInfo: MethodInfo = {\n methodName,\n instance: property,\n methodPath: fullMethodPath,\n parent\n };\n\n if (filter(methodInfo)) {\n callback(methodInfo);\n }\n }\n }\n\n protected stringifyValue(value: unknown, maxDepth: number = 3, currentDepth: number = 0): string {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n\n const type = typeof value;\n\n switch (type) {\n case 'string':\n return `\"${value}\"`;\n case 'number':\n case 'boolean':\n return String(value);\n case 'function':\n return `[Function: ${this.getFunctionName(value as Function)}]`;\n case 'object':\n if (currentDepth >= maxDepth) {\n return '[Max Depth Reached]';\n }\n return this.stringifyObject(value, maxDepth, currentDepth);\n default:\n return `[${type}]`;\n }\n }\n\n protected getFunctionName(fn: Function): string {\n const name = fn.name;\n return name || 'anonymous';\n }\n\n protected stringifyObject(obj: any, maxDepth: number, currentDepth: number): string {\n if (obj === null) return 'null';\n\n // Handle special object types\n if (obj instanceof Date) {\n return `Date(${obj.toISOString()})`;\n }\n\n if (obj instanceof Error) {\n return `Error(${obj.message})`;\n }\n\n if (obj instanceof RegExp) {\n return obj.toString();\n }\n\n if (Array.isArray(obj)) {\n return this.stringifyArray(obj, maxDepth, currentDepth);\n }\n\n if (obj.constructor && obj.constructor.name !== 'Object') {\n return this.stringifyClassInstance(obj, maxDepth, currentDepth);\n }\n\n return this.stringifyPlainObject(obj, maxDepth, currentDepth);\n }\n\n protected stringifyArray(arr: any[], maxDepth: number, currentDepth: number): string {\n if (arr.length === 0) return '[]';\n\n const items = arr.slice(0, 5).map(item =>\n this.stringifyValue(item, maxDepth, currentDepth + 1)\n );\n\n const suffix = arr.length > 5 ? `... (+${arr.length - 5} more)` : '';\n return `[${items.join(', ')}${suffix}]`;\n }\n\n protected stringifyClassInstance(obj: any, maxDepth: number, currentDepth: number): string {\n const className = obj.constructor.name;\n const properties = this.getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return `${className} {}`;\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n // For primitive values, don't increase depth\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${this.stringifyValue(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `${className} { ${props.join(', ')}${suffix} }`;\n }\n\n protected stringifyPlainObject(obj: any, maxDepth: number, currentDepth: number): string {\n const properties = this.getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return '{}';\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n // For primitive values, don't increase depth\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${this.stringifyValue(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `{ ${props.join(', ')}${suffix} }`;\n }\n\n protected getObjectProperties(obj: any): Record<string, any> {\n const properties: Record<string, any> = {};\n\n // Get enumerable properties\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n properties[key] = obj[key];\n }\n }\n\n return properties;\n }\n\n abstract apply(instance: unknown): void;\n}","import { Capability } from \"./Capability\";\nimport { PerformanceTracker } from \"./performance/PerformanceTracker\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { MethodInfo, MethodMetadata, MethodWrapper, PerformanceMetrics } from \"./types\";\n\nexport type PerformanceCapabilityOptions = {\n log?: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics\n ) => void;\n shouldLog: (methodName: string | symbol, metadata: MethodMetadata) => boolean\n}\n\nexport class PerformanceCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private performanceTracker: PerformanceTracker;\n private log: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics,\n isCompleted: boolean\n ) => void;\n private shouldLog?: (methodName: string | symbol, metadata: MethodMetadata) => boolean;\n\n constructor(options?: PerformanceCapabilityOptions) {\n super();\n this.log = options?.log ?? ((\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics,\n isCompleted: boolean\n ) => {\n\n if (isCompleted) {\n if (!performanceMetrics.duration) return;\n\n const deltaFromStart = this.performanceTracker.getDeltaFromOperationStart(operationId, performanceMetrics.endTime || performanceMetrics.startTime);\n\n console.log(`[${type} ${operationId}] ${methodName} COMPLETED`, {\n methodPath,\n performance: {\n deltaFromStart: this.performanceTracker.formatDuration(deltaFromStart),\n executionTime: this.performanceTracker.formatDuration(performanceMetrics.duration),\n timeToNextCall: performanceMetrics.timeToNextCall ?\n this.performanceTracker.formatDuration(performanceMetrics.timeToNextCall) : 'N/A'\n }\n });\n return;\n }\n\n const deltaFromStart = this.performanceTracker.getDeltaFromOperationStart(operationId, performanceMetrics.startTime);\n\n console.log(`[${type} ${operationId}] ${methodName}`, {\n methodPath,\n performance: {\n deltaFromStart: this.performanceTracker.formatDuration(deltaFromStart)\n }\n });\n });\n this.shouldLog = options?.shouldLog ?? (() => true);\n this.callTraceManager = new CallTraceManager();\n this.performanceTracker = new PerformanceTracker();\n }\n\n private createPerformanceInterceptor(\n originalMethod: Function,\n methodName: string,\n methodPath: string,\n instance: any\n ): Function {\n return (...args: any[]) => {\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n const startTime = this.performanceTracker.startMethodTiming(operationId, methodPath);\n this.log('ORIGIN', operationId, methodName, methodPath, { startTime }, false);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n\n // Record that the previous method is about to call this one\n const callTrace = this.callTraceManager.getCurrentTrace();\n const previousMethodPath = callTrace[callTrace.length - 2];\n if (previousMethodPath) {\n this.performanceTracker.recordNextMethodStart(operationId, previousMethodPath);\n }\n\n const startTime = this.performanceTracker.startMethodTiming(operationId, methodPath);\n this.log('CHILD', operationId, methodName, methodPath, { startTime }, false);\n }\n\n try {\n const result = originalMethod.apply(instance, args);\n return result;\n } finally {\n // End performance tracking\n const performanceMetrics = this.performanceTracker.endMethodTiming(operationId, methodPath);\n\n // Log completion with performance metrics\n this.log(isNewOperation ? 'ORIGIN' : 'CHILD', operationId, methodName, methodPath, performanceMetrics, true);\n\n if (isNewOperation) {\n this.callTraceManager.endOperation();\n this.performanceTracker.cleanupOperation(operationId);\n }\n }\n };\n }\n\n override apply(instance: unknown): void {\n if (!this.isValidObject(instance)) {\n return;\n }\n\n // Create a performance wrapper\n const wrapper: MethodWrapper = {\n wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => {\n return this.createPerformanceInterceptor(\n originalMethod,\n String(methodInfo.methodName),\n methodInfo.methodPath.join(' → '),\n methodInfo.instance\n );\n }\n };\n\n // Use the generic interception utility\n this.exploreObjectMethods(instance, (methodInfo) => {\n const originalMethod = methodInfo.instance[methodInfo.methodName].bind(methodInfo.instance);\n const wrappedMethod = wrapper.wrapMethod(originalMethod, methodInfo);\n methodInfo.instance[methodInfo.methodName] = wrappedMethod;\n }, {});\n }\n}","import { Capability } from \"./Capability\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { MethodInfo, MethodMetadata, MethodWrapper } from \"./types\";\n\nexport type TracingCapabilityOptions = {\n log?: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => void;\n shouldLog: (methodName: string | symbol, metadata: MethodMetadata) => boolean\n}\n\nexport class TracingCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private log: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => void;\n private shouldLogMethod?: (methodName: string | symbol, metadata: MethodMetadata) => boolean;\n\n constructor(options?: TracingCapabilityOptions) {\n super();\n this.log = options?.log ?? ((\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n _callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => {\n const stringifiedArgs = args.map(arg => this.stringifyValue(arg, 4));\n\n const logData: any = {\n methodPath,\n callStack: formattedCallTrace,\n args: stringifiedArgs\n };\n\n console.log(`[${type} ${operationId}] ${methodName}`, logData);\n });\n this.shouldLogMethod = options?.shouldLog ?? (() => true);\n this.callTraceManager = new CallTraceManager();\n }\n\n private createTracingInterceptor(\n originalMethod: Function,\n methodName: string,\n methodPath: string,\n instance: any\n ): Function {\n return (...args: any[]) => {\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n let callTrace: string[];\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n callTrace = this.callTraceManager.addMethodToTrace(methodPath);\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n this.log('ORIGIN', operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n callTrace = this.callTraceManager.addMethodToTrace(methodPath);\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n this.log('CHILD', operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n }\n\n try {\n const result = originalMethod.apply(instance, args);\n return result;\n } finally {\n if (isNewOperation) {\n this.callTraceManager.endOperation();\n } else {\n this.callTraceManager.removeMethodFromTrace();\n }\n }\n };\n }\n\n\n override apply(instance: unknown): void {\n if (!this.isValidObject(instance)) {\n return;\n }\n\n const logMethodCall = (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => {\n\n if (this.log) {\n this.log(type, operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n return;\n }\n\n const stringifiedArgs = args.map(arg => this.stringifyValue(arg, 4));\n\n const logData: any = {\n methodPath,\n callStack: formattedCallTrace,\n args: stringifiedArgs\n };\n\n console.log(`[${type} ${operationId}] ${methodName}`, logData);\n }\n\n // Create a tracing wrapper\n const wrapper: MethodWrapper = {\n wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => {\n const metadata: MethodMetadata = {\n parent: methodInfo.parent,\n instance: methodInfo.instance,\n methodPath: methodInfo.methodPath\n };\n\n const shouldLog = this.shouldLogMethod(methodInfo.methodName, metadata);\n if (!shouldLog) {\n return originalMethod; // Return unwrapped method if not logging\n }\n\n return this.createTracingInterceptor(\n originalMethod,\n String(methodInfo.methodName),\n methodInfo.methodPath.join(' → '),\n methodInfo.instance\n );\n }\n }\n\n // Use the generic interception utility\n this.exploreObjectMethods(instance, (methodInfo) => {\n const originalMethod = methodInfo.instance[methodInfo.methodName].bind(methodInfo.instance);\n const wrappedMethod = wrapper.wrapMethod(originalMethod, methodInfo);\n methodInfo.instance[methodInfo.methodName] = wrappedMethod;\n }, {});\n }\n}","import { PerformanceMetrics } from \"../types\";\n\nexport class PerformanceTracker {\n private methodTimings = new Map<string, { startTime: number; nextMethodStartTime?: number }>();\n private operationStartTimes = new Map<string, number>();\n\n startMethodTiming(operationId: string, methodPath: string): number {\n const startTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n\n // Track operation start time for delta calculations\n if (!this.operationStartTimes.has(operationId)) {\n this.operationStartTimes.set(operationId, startTime);\n }\n\n this.methodTimings.set(key, { startTime });\n return startTime;\n }\n\n recordNextMethodStart(operationId: string, methodPath: string): void {\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n if (timing) {\n timing.nextMethodStartTime = performance.now();\n }\n }\n\n endMethodTiming(operationId: string, methodPath: string): PerformanceMetrics {\n const endTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n\n if (!timing) {\n return { startTime: endTime };\n }\n\n const duration = endTime - timing.startTime;\n const timeToNextCall = timing.nextMethodStartTime ?\n timing.nextMethodStartTime - timing.startTime : undefined;\n\n // Clean up\n this.methodTimings.delete(key);\n\n return {\n startTime: timing.startTime,\n endTime,\n duration,\n nextMethodStartTime: timing.nextMethodStartTime,\n timeToNextCall\n };\n }\n\n formatDuration(milliseconds: number): string {\n if (milliseconds < 1) {\n return `${(milliseconds * 1000).toFixed(1)}μs`;\n } else if (milliseconds < 1000) {\n return `${milliseconds.toFixed(2)}ms`;\n } else {\n return `${(milliseconds / 1000).toFixed(2)}s`;\n }\n }\n\n getDeltaFromOperationStart(operationId: string, currentTime: number): number {\n const operationStartTime = this.operationStartTimes.get(operationId);\n return operationStartTime ? currentTime - operationStartTime : 0;\n }\n\n cleanupOperation(operationId: string): void {\n this.operationStartTimes.delete(operationId);\n }\n}","import { uuid } from \"../../utilities\";\n\nexport class CallTraceManager {\n private activeOperationId: string | null = null;\n private activeCallStack: string[] = [];\n\n startNewOperation(): string {\n const operationId = uuid();\n this.activeOperationId = operationId;\n this.activeCallStack = [];\n return operationId;\n }\n\n isNewOperation(): boolean {\n return this.activeOperationId === null;\n }\n\n getActiveOperationId(): string {\n if (!this.activeOperationId) {\n throw new Error('No active operation context');\n }\n return this.activeOperationId;\n }\n\n addMethodToTrace(methodPath: string): string[] {\n if (this.isNewOperation()) {\n this.activeCallStack = [methodPath];\n } else {\n this.activeCallStack.push(methodPath);\n }\n return [...this.activeCallStack];\n }\n\n removeMethodFromTrace(): void {\n if (!this.isNewOperation()) {\n this.activeCallStack.pop();\n }\n }\n\n endOperation(): void {\n this.activeOperationId = null;\n this.activeCallStack = [];\n }\n\n formatMethodPaths(methodPaths: string[]): string[] {\n return methodPaths.map(path => path.replace(/ → /g, '.'));\n }\n\n getCurrentTrace(): string[] {\n return [...this.activeCallStack];\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nexport const uuidv4 = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { Capability } from './Capability';\nexport { PerformanceCapability } from './PerformanceCapability';\nexport { TracingCapability } from './TracingCapability';\nexport * from './types';"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PerformanceMetrics } from "../types";
2
+ export declare class PerformanceTracker {
3
+ private methodTimings;
4
+ private operationStartTimes;
5
+ startMethodTiming(operationId: string, methodPath: string): number;
6
+ recordNextMethodStart(operationId: string, methodPath: string): void;
7
+ endMethodTiming(operationId: string, methodPath: string): PerformanceMetrics;
8
+ formatDuration(milliseconds: number): string;
9
+ getDeltaFromOperationStart(operationId: string, currentTime: number): number;
10
+ cleanupOperation(operationId: string): void;
11
+ }
@@ -0,0 +1,12 @@
1
+ export declare class CallTraceManager {
2
+ private activeOperationId;
3
+ private activeCallStack;
4
+ startNewOperation(): string;
5
+ isNewOperation(): boolean;
6
+ getActiveOperationId(): string;
7
+ addMethodToTrace(methodPath: string): string[];
8
+ removeMethodFromTrace(): void;
9
+ endOperation(): void;
10
+ formatMethodPaths(methodPaths: string[]): string[];
11
+ getCurrentTrace(): string[];
12
+ }
@@ -0,0 +1,26 @@
1
+ export interface MethodInfo {
2
+ readonly methodName: string | symbol;
3
+ readonly instance: any;
4
+ readonly methodPath: string[];
5
+ readonly parent: any;
6
+ }
7
+ export interface ExplorationOptions {
8
+ readonly maxDepth?: number;
9
+ readonly includeNonEnumerable?: boolean;
10
+ readonly filter?: (methodInfo: MethodInfo) => boolean;
11
+ }
12
+ export interface MethodWrapper {
13
+ readonly wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => Function;
14
+ }
15
+ export interface MethodMetadata {
16
+ readonly parent: any | null;
17
+ readonly instance: any;
18
+ readonly methodPath: string[];
19
+ }
20
+ export interface PerformanceMetrics {
21
+ readonly startTime: number;
22
+ readonly endTime?: number;
23
+ readonly duration?: number;
24
+ readonly nextMethodStartTime?: number;
25
+ readonly timeToNextCall?: number;
26
+ }