You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fork.js 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";;
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. var types_1 = __importDefault(require("./lib/types"));
  7. var path_visitor_1 = __importDefault(require("./lib/path-visitor"));
  8. var equiv_1 = __importDefault(require("./lib/equiv"));
  9. var path_1 = __importDefault(require("./lib/path"));
  10. var node_path_1 = __importDefault(require("./lib/node-path"));
  11. function default_1(defs) {
  12. var fork = createFork();
  13. var types = fork.use(types_1.default);
  14. defs.forEach(fork.use);
  15. types.finalize();
  16. var PathVisitor = fork.use(path_visitor_1.default);
  17. return {
  18. Type: types.Type,
  19. builtInTypes: types.builtInTypes,
  20. namedTypes: types.namedTypes,
  21. builders: types.builders,
  22. defineMethod: types.defineMethod,
  23. getFieldNames: types.getFieldNames,
  24. getFieldValue: types.getFieldValue,
  25. eachField: types.eachField,
  26. someField: types.someField,
  27. getSupertypeNames: types.getSupertypeNames,
  28. getBuilderName: types.getBuilderName,
  29. astNodesAreEquivalent: fork.use(equiv_1.default),
  30. finalize: types.finalize,
  31. Path: fork.use(path_1.default),
  32. NodePath: fork.use(node_path_1.default),
  33. PathVisitor: PathVisitor,
  34. use: fork.use,
  35. visit: PathVisitor.visit,
  36. };
  37. }
  38. exports.default = default_1;
  39. function createFork() {
  40. var used = [];
  41. var usedResult = [];
  42. function use(plugin) {
  43. var idx = used.indexOf(plugin);
  44. if (idx === -1) {
  45. idx = used.length;
  46. used.push(plugin);
  47. usedResult[idx] = plugin(fork);
  48. }
  49. return usedResult[idx];
  50. }
  51. var fork = { use: use };
  52. return fork;
  53. }
  54. module.exports = exports["default"];