"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
|