source: frontend/node_modules/webpack/lib/util/traverseDestructuringAssignmentProperties.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
9/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
10
11/**
12 * Deep first traverse the properties of a destructuring assignment.
13 * @param {DestructuringAssignmentProperties} properties destructuring assignment properties
14 * @param {((stack: DestructuringAssignmentProperty[]) => void) | undefined=} onLeftNode on left node callback
15 * @param {((stack: DestructuringAssignmentProperty[]) => void) | undefined=} enterNode enter node callback
16 * @param {((stack: DestructuringAssignmentProperty[]) => void) | undefined=} exitNode exit node callback
17 * @param {DestructuringAssignmentProperty[] | undefined=} stack stack of the walking nodes
18 */
19function traverseDestructuringAssignmentProperties(
20 properties,
21 onLeftNode,
22 enterNode,
23 exitNode,
24 stack = []
25) {
26 for (const property of properties) {
27 stack.push(property);
28 if (enterNode) enterNode(stack);
29 if (property.pattern) {
30 traverseDestructuringAssignmentProperties(
31 property.pattern,
32 onLeftNode,
33 enterNode,
34 exitNode,
35 stack
36 );
37 } else if (onLeftNode) {
38 onLeftNode(stack);
39 }
40 if (exitNode) exitNode(stack);
41 stack.pop();
42 }
43}
44
45module.exports = traverseDestructuringAssignmentProperties;
Note: See TracBrowser for help on using the repository browser.