333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[![power-assert][power-assert-banner]][power-assert-url]
 
[![Build Status][travis-image]][travis-url]
[![NPM version][npm-image]][npm-url]
[![License][license-image]][license-url]
 
 
EventEmitter of `powerAssertContext` object provided by power-assert at runtime.
 
 
API
---------------------------------------
 
### var traversal = new ContextTraversal(powerAssertContext);
 
Create `EventEmitter` of `powerAssertContext` object, having structure below.
 
```javascript
{
    source: {
        content: 'assert(foo === bar)',
        filepath: 'test/some_test.js',
        line: 1,
        ast: '### JSON representation of AST nodes ###',
        tokens: '### JSON representation of AST tokens ###',
        visitorKeys: '### JSON representation of AST visitor keys ###'
    },
    args: [
        {
            value: false,
            events: [
                {
                    value: "FOO",
                    espath: "arguments/0/left"
                },
                {
                    value: "BAR",
                    espath: "arguments/0/right"
                },
                {
                    value: false,
                    espath: "arguments/0"
                }
            ]
        }
    ]
}
```
 
### traversal.traverse()
 
Fire events while traversing AST tree in `powerAssertContext`.
 
 
### events
 
 
#### traversal.on('start', function (powerAssertContext) {})
 
Called once when traversal starts. Argument is the `powerAssertContext` object under traversal.
 
#### traversal.on('data', function (esNode) {})
 
Called for each Node of AST in `powerAssertContext`. Argument is a `EsNode` object, having structure below.
 
```javascript
{
    espath: 'arguments/0',
    parent: '### parent esNode reference unless root ###',
    key: 0,
    node: {
        type: 'BinaryExpression',
        operator: '===',
        left: { type: 'Identifier', name: 'foo', range: [ 7, 10 ] },
        right: { type: 'Identifier', name: 'bar', range: [ 15, 18 ] },
        range: [ 7, 18 ]
    },
    code: 'foo === bar',
    value: false,
    isCaptured: true,
    range: [ 11, 14 ]  // range of operator
};
```
 
```javascript
{
    espath: 'arguments/0/right',
    parent: '### parent esNode reference unless root ###',
    key: 'right',
    node: { type: 'Identifier', name: 'bar', range: [ 15, 18 ] },
    code: 'bar',
    value: 'BAR',
    isCaptured: true,
    range: [ 15, 18 ]
};
```
 
#### traversal.on('end', function () {})
 
Called once when traversal ends.
 
 
 
INSTALL
---------------------------------------
 
```sh
$ npm install --save-dev power-assert-context-traversal
```
 
 
AUTHOR
---------------------------------------
* [Takuto Wada](https://github.com/twada)
 
 
LICENSE
---------------------------------------
Licensed under the [MIT](https://github.com/twada/power-assert-runtime/blob/master/LICENSE) license.
 
 
[power-assert-url]: https://github.com/power-assert-js/power-assert
[power-assert-banner]: https://raw.githubusercontent.com/power-assert-js/power-assert-js-logo/master/banner/banner-official-fullcolor.png
 
[travis-url]: https://travis-ci.org/twada/power-assert-runtime
[travis-image]: https://secure.travis-ci.org/twada/power-assert-runtime.svg?branch=master
 
[npm-url]: https://npmjs.org/package/power-assert-context-traversal
[npm-image]: https://badge.fury.io/js/power-assert-context-traversal.svg
 
[license-url]: https://github.com/twada/power-assert-runtime/blob/master/LICENSE
[license-image]: https://img.shields.io/badge/license-MIT-brightgreen.svg