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.

esprima.js 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 es7_1 = __importDefault(require("./es7"));
  7. var types_1 = __importDefault(require("../lib/types"));
  8. var shared_1 = __importDefault(require("../lib/shared"));
  9. function default_1(fork) {
  10. fork.use(es7_1.default);
  11. var types = fork.use(types_1.default);
  12. var defaults = fork.use(shared_1.default).defaults;
  13. var def = types.Type.def;
  14. var or = types.Type.or;
  15. def("VariableDeclaration")
  16. .field("declarations", [or(def("VariableDeclarator"), def("Identifier") // Esprima deviation.
  17. )]);
  18. def("Property")
  19. .field("value", or(def("Expression"), def("Pattern") // Esprima deviation.
  20. ));
  21. def("ArrayPattern")
  22. .field("elements", [or(def("Pattern"), def("SpreadElement"), null)]);
  23. def("ObjectPattern")
  24. .field("properties", [or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"), def("SpreadProperty") // Used by Esprima.
  25. )]);
  26. // Like ModuleSpecifier, except type:"ExportSpecifier" and buildable.
  27. // export {<id [as name]>} [from ...];
  28. def("ExportSpecifier")
  29. .bases("ModuleSpecifier")
  30. .build("id", "name");
  31. // export <*> from ...;
  32. def("ExportBatchSpecifier")
  33. .bases("Specifier")
  34. .build();
  35. def("ExportDeclaration")
  36. .bases("Declaration")
  37. .build("default", "declaration", "specifiers", "source")
  38. .field("default", Boolean)
  39. .field("declaration", or(def("Declaration"), def("Expression"), // Implies default.
  40. null))
  41. .field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray)
  42. .field("source", or(def("Literal"), null), defaults["null"]);
  43. def("Block")
  44. .bases("Comment")
  45. .build("value", /*optional:*/ "leading", "trailing");
  46. def("Line")
  47. .bases("Comment")
  48. .build("value", /*optional:*/ "leading", "trailing");
  49. }
  50. exports.default = default_1;
  51. module.exports = exports["default"];