summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js')
-rw-r--r--deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js b/deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js
new file mode 100644
index 0000000000..a27e38f742
--- /dev/null
+++ b/deps/npm/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/ast-types/def/esprima.js
@@ -0,0 +1,96 @@
+require("./es7");
+
+var types = require("../lib/types");
+var defaults = require("../lib/shared").defaults;
+var def = types.Type.def;
+var or = types.Type.or;
+
+def("VariableDeclaration")
+ .field("declarations", [or(
+ def("VariableDeclarator"),
+ def("Identifier") // Esprima deviation.
+ )]);
+
+def("Property")
+ .field("value", or(
+ def("Expression"),
+ def("Pattern") // Esprima deviation.
+ ));
+
+def("ArrayPattern")
+ .field("elements", [or(
+ def("Pattern"),
+ def("SpreadElement"),
+ null
+ )]);
+
+def("ObjectPattern")
+ .field("properties", [or(
+ def("Property"),
+ def("PropertyPattern"),
+ def("SpreadPropertyPattern"),
+ def("SpreadProperty") // Used by Esprima.
+ )]);
+
+// Like ModuleSpecifier, except type:"ExportSpecifier" and buildable.
+// export {<id [as name]>} [from ...];
+def("ExportSpecifier")
+ .bases("ModuleSpecifier")
+ .build("id", "name");
+
+// export <*> from ...;
+def("ExportBatchSpecifier")
+ .bases("Specifier")
+ .build();
+
+// Like ModuleSpecifier, except type:"ImportSpecifier" and buildable.
+// import {<id [as name]>} from ...;
+def("ImportSpecifier")
+ .bases("ModuleSpecifier")
+ .build("id", "name");
+
+// import <* as id> from ...;
+def("ImportNamespaceSpecifier")
+ .bases("ModuleSpecifier")
+ .build("id");
+
+// import <id> from ...;
+def("ImportDefaultSpecifier")
+ .bases("ModuleSpecifier")
+ .build("id");
+
+def("ExportDeclaration")
+ .bases("Declaration")
+ .build("default", "declaration", "specifiers", "source")
+ .field("default", Boolean)
+ .field("declaration", or(
+ def("Declaration"),
+ def("Expression"), // Implies default.
+ null
+ ))
+ .field("specifiers", [or(
+ def("ExportSpecifier"),
+ def("ExportBatchSpecifier")
+ )], defaults.emptyArray)
+ .field("source", or(
+ def("Literal"),
+ null
+ ), defaults["null"]);
+
+def("ImportDeclaration")
+ .bases("Declaration")
+ .build("specifiers", "source")
+ .field("specifiers", [or(
+ def("ImportSpecifier"),
+ def("ImportNamespaceSpecifier"),
+ def("ImportDefaultSpecifier")
+ )], defaults.emptyArray)
+ .field("source", def("Literal"));
+
+def("Block")
+ .bases("Comment")
+ .build("value", /*optional:*/ "leading", "trailing");
+
+def("Line")
+ .bases("Comment")
+ .build("value", /*optional:*/ "leading", "trailing");