stackedy
Roll your own stack traces and control program execution through AST manipulation.
examples
simple custom stacktrace
example/simple/run.js:
var stackedy = ;var fs = ; var src = fs;var stack = ; stack;
output:
Error: moo
in stax.js at line 2
in stax.js, h() at line 1
in stax.js, g() at line 0
in stax.js, f() at line 4
methods
var stackedy = ;
var stack = stackedy(src='', opts={})
Create a new stack object.
stack.include(src, opts={})
Include a source file body src
into the current bundle.
opts.filename
will augment the stack with filename information.
opts.postFilter
transforms the source after transformation.
opts.preFilter
transforms the source before transformation.
stack.run(context={}, opts)
Execute the compiled source with the given context using vm.runInNewContext()
.
opts.stoppable
defaults to true
and controls whether the execution can be
stopped with .stop()
.
opts.runner(src, context)
is the function used to run the transformed source.
It defaults to vm.runInNewContext
.
opts.global
is the context to use when this
is null
, such as window
in a
browser environment.
stack.compile(context={}, opts)
Compile the sources into a single file with the transformations in place.
Returns an object with source, augmented context, current and others.
opts.stoppable
controls whether the execution can be stopped with .stop()
.