ast-types
Version:
Esprima-compatible implementation of the Mozilla JS Parser API
55 lines • 1.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var types_1 = tslib_1.__importDefault(require("./types"));
var path_visitor_1 = tslib_1.__importDefault(require("./path-visitor"));
var equiv_1 = tslib_1.__importDefault(require("./equiv"));
var path_1 = tslib_1.__importDefault(require("./path"));
var node_path_1 = tslib_1.__importDefault(require("./node-path"));
var shared_1 = require("./shared");
function default_1(plugins) {
var fork = createFork();
var types = fork.use(types_1.default);
plugins.forEach(fork.use);
types.finalize();
var PathVisitor = fork.use(path_visitor_1.default);
return {
Type: types.Type,
builtInTypes: types.builtInTypes,
namedTypes: types.namedTypes,
builders: types.builders,
defineMethod: types.defineMethod,
getFieldNames: types.getFieldNames,
getFieldValue: types.getFieldValue,
eachField: types.eachField,
someField: types.someField,
getSupertypeNames: types.getSupertypeNames,
getBuilderName: types.getBuilderName,
astNodesAreEquivalent: fork.use(equiv_1.default),
finalize: types.finalize,
Path: fork.use(path_1.default),
NodePath: fork.use(node_path_1.default),
PathVisitor: PathVisitor,
use: fork.use,
visit: PathVisitor.visit,
};
}
exports.default = default_1;
;
function createFork() {
var used = [];
var usedResult = [];
function use(plugin) {
var idx = used.indexOf(plugin);
if (idx === -1) {
idx = used.length;
used.push(plugin);
usedResult[idx] = plugin(fork);
}
return usedResult[idx];
}
var fork = { use: use };
return fork;
}
(0, shared_1.maybeSetModuleExports)(function () { return module; });
//# sourceMappingURL=fork.js.map