UNPKG

1.23 kBPlain TextView Raw
1import { TraceMode, die, getAtom, globalState } from "../internal"
2
3export function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void
4export function trace(thing?: any, enterBreakPoint?: boolean): void
5export function trace(enterBreakPoint?: boolean): void
6export function trace(...args: any[]): void {
7 if (!__DEV__) die(`trace() is not available in production builds`)
8 let enterBreakPoint = false
9 if (typeof args[args.length - 1] === "boolean") enterBreakPoint = args.pop()
10 const derivation = getAtomFromArgs(args)
11 if (!derivation) {
12 return die(
13 `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`
14 )
15 }
16 if (derivation.isTracing_ === TraceMode.NONE) {
17 console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)
18 }
19 derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG
20}
21
22function getAtomFromArgs(args): any {
23 switch (args.length) {
24 case 0:
25 return globalState.trackingDerivation
26 case 1:
27 return getAtom(args[0])
28 case 2:
29 return getAtom(args[0], args[1])
30 }
31}