/* This file is a part of @mdn/browser-compat-data
 * See LICENSE file for more information. */

import iterSupport from './iter-support.js';
import query from './query.js';
import walk from './walk.js';
import normalizePath from './normalize-path.js';

export { iterSupport, normalizePath, query, walk };
