diff options
Diffstat (limited to 'node_modules/estree-walker/dist/estree-walker.umd.js')
| -rw-r--r-- | node_modules/estree-walker/dist/estree-walker.umd.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/node_modules/estree-walker/dist/estree-walker.umd.js b/node_modules/estree-walker/dist/estree-walker.umd.js new file mode 100644 index 0000000..f070f17 --- /dev/null +++ b/node_modules/estree-walker/dist/estree-walker.umd.js @@ -0,0 +1,65 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.estreeWalker = {}))); +}(this, (function (exports) { 'use strict'; + + function walk(ast, { enter, leave }) { + visit(ast, null, enter, leave); + } + + let shouldSkip = false; + const context = { skip: () => shouldSkip = true }; + + const childKeys = {}; + + const toString = Object.prototype.toString; + + function isArray(thing) { + return toString.call(thing) === '[object Array]'; + } + + function visit(node, parent, enter, leave, prop, index) { + if (!node) return; + + if (enter) { + const _shouldSkip = shouldSkip; + shouldSkip = false; + enter.call(context, node, parent, prop, index); + const skipped = shouldSkip; + shouldSkip = _shouldSkip; + + if (skipped) return; + } + + const keys = node.type && childKeys[node.type] || ( + childKeys[node.type] = Object.keys(node).filter(key => typeof node[key] === 'object') + ); + + for (let i = 0; i < keys.length; i += 1) { + const key = keys[i]; + const value = node[key]; + + if (isArray(value)) { + for (let j = 0; j < value.length; j += 1) { + value[j] && value[j].type && visit(value[j], node, enter, leave, key, j); + } + } + + else if (value && value.type) { + visit(value, node, enter, leave, key, null); + } + } + + if (leave) { + leave(node, parent, prop, index); + } + } + + exports.walk = walk; + exports.childKeys = childKeys; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=estree-walker.umd.js.map |
