UNPKG

1.62 kBJavaScriptView Raw
1/**
2 * @fileoverview Patch for estraverse
3 * @author Toru Nagashima
4 * @copyright 2015 Toru Nagashima. All rights reserved.
5 * See LICENSE file in root directory for full license.
6 */
7"use strict";
8
9//------------------------------------------------------------------------------
10// Requirements
11//------------------------------------------------------------------------------
12
13var estraverse = require("estraverse"),
14 jsxKeys = require("estraverse-fb/keys");
15
16//------------------------------------------------------------------------------
17// Helers
18//------------------------------------------------------------------------------
19
20var experimentalKeys = {
21 ExperimentalRestProperty: ["argument"],
22 ExperimentalSpreadProperty: ["argument"]
23};
24
25/**
26 * Adds a given keys to Syntax and VisitorKeys of estraverse.
27 *
28 * @param {object} keys - Key definitions to add.
29 * This is an object as map.
30 * Keys are the node type.
31 * Values are an array of property names to visit.
32 * @returns {void}
33 */
34function installKeys(keys) {
35 for (var key in keys) {
36 /* istanbul ignore else */
37 if (keys.hasOwnProperty(key)) {
38 estraverse.Syntax[key] = key;
39 if (keys[key]) {
40 estraverse.VisitorKeys[key] = keys[key];
41 }
42 }
43 }
44}
45
46// Add JSX node types.
47installKeys(jsxKeys);
48// Add Experimental node types.
49installKeys(experimentalKeys);
50
51//------------------------------------------------------------------------------
52// Public Interface
53//------------------------------------------------------------------------------
54
55module.exports = estraverse;