| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.patternLikeCommon = exports.importAttributes = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0;
- var _is = require("../validators/is.js");
- var _isValidIdentifier = require("../validators/isValidIdentifier.js");
- var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
- var _helperStringParser = require("@babel/helper-string-parser");
- var _index = require("../constants/index.js");
- var _utils = require("./utils.js");
- const defineType = (0, _utils.defineAliasedType)("Standardized");
- defineType("ArrayExpression", {
- fields: {
- elements: {
- validate: (0, _utils.arrayOf)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement")),
- default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined
- }
- },
- visitor: ["elements"],
- aliases: ["Expression"]
- });
- defineType("AssignmentExpression", {
- fields: {
- operator: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("string") : Object.assign(function () {
- const identifier = (0, _utils.assertOneOf)(..._index.ASSIGNMENT_OPERATORS);
- const pattern = (0, _utils.assertOneOf)("=");
- return function (node, key, val) {
- const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier;
- validator(node, key, val);
- };
- }(), {
- oneOf: _index.ASSIGNMENT_OPERATORS
- })
- },
- left: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "OptionalMemberExpression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- builder: ["operator", "left", "right"],
- visitor: ["left", "right"],
- aliases: ["Expression"]
- });
- defineType("BinaryExpression", {
- builder: ["operator", "left", "right"],
- fields: {
- operator: {
- validate: (0, _utils.assertOneOf)(..._index.BINARY_OPERATORS)
- },
- left: {
- validate: function () {
- const expression = (0, _utils.assertNodeType)("Expression");
- const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName");
- const validator = Object.assign(function (node, key, val) {
- const validator = node.operator === "in" ? inOp : expression;
- validator(node, key, val);
- }, {
- oneOfNodeTypes: ["Expression", "PrivateName"]
- });
- return validator;
- }()
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- visitor: ["left", "right"],
- aliases: ["Binary", "Expression"]
- });
- defineType("InterpreterDirective", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
- });
- defineType("Directive", {
- visitor: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertNodeType)("DirectiveLiteral")
- }
- }
- });
- defineType("DirectiveLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
- });
- defineType("BlockStatement", {
- builder: ["body", "directives"],
- visitor: ["directives", "body"],
- fields: {
- directives: {
- validate: (0, _utils.arrayOfType)("Directive"),
- default: []
- },
- body: (0, _utils.validateArrayOfType)("Statement")
- },
- aliases: ["Scopable", "BlockParent", "Block", "Statement"]
- });
- defineType("BreakStatement", {
- visitor: ["label"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- }
- },
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
- });
- defineType("CallExpression", {
- visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
- builder: ["callee", "arguments"],
- aliases: ["Expression"],
- fields: Object.assign({
- callee: {
- validate: (0, _utils.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier")
- },
- arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
- typeArguments: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
- optional: true
- }
- }, process.env.BABEL_TYPES_8_BREAKING ? {} : {
- optional: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
- optional: true
- }
- })
- });
- defineType("CatchClause", {
- visitor: ["param", "body"],
- fields: {
- param: {
- validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- },
- aliases: ["Scopable", "BlockParent"]
- });
- defineType("ConditionalExpression", {
- visitor: ["test", "consequent", "alternate"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- consequent: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- alternate: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- aliases: ["Expression", "Conditional"]
- });
- defineType("ContinueStatement", {
- visitor: ["label"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- }
- },
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
- });
- defineType("DebuggerStatement", {
- aliases: ["Statement"]
- });
- defineType("DoWhileStatement", {
- builder: ["test", "body"],
- visitor: ["body", "test"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- },
- aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
- });
- defineType("EmptyStatement", {
- aliases: ["Statement"]
- });
- defineType("ExpressionStatement", {
- visitor: ["expression"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- aliases: ["Statement", "ExpressionWrapper"]
- });
- defineType("File", {
- builder: ["program", "comments", "tokens"],
- visitor: ["program"],
- fields: {
- program: {
- validate: (0, _utils.assertNodeType)("Program")
- },
- comments: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, {
- each: {
- oneOfNodeTypes: ["CommentBlock", "CommentLine"]
- }
- }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")),
- optional: true
- },
- tokens: {
- validate: (0, _utils.assertEach)(Object.assign(() => {}, {
- type: "any"
- })),
- optional: true
- }
- }
- });
- defineType("ForInStatement", {
- visitor: ["left", "right", "body"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
- fields: {
- left: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- defineType("ForStatement", {
- visitor: ["init", "test", "update", "body"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
- fields: {
- init: {
- validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"),
- optional: true
- },
- test: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- update: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- const functionCommon = () => ({
- params: (0, _utils.validateArrayOfType)("FunctionParameter"),
- generator: {
- default: false
- },
- async: {
- default: false
- }
- });
- exports.functionCommon = functionCommon;
- const functionTypeAnnotationCommon = () => ({
- returnType: {
- validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
- optional: true
- },
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
- optional: true
- }
- });
- exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon;
- const functionDeclarationCommon = () => Object.assign({}, functionCommon(), {
- declare: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- id: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- }
- });
- exports.functionDeclarationCommon = functionDeclarationCommon;
- defineType("FunctionDeclaration", {
- builder: ["id", "params", "body", "generator", "async"],
- visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"],
- fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- },
- predicate: {
- validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
- optional: true
- }
- }),
- aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
- validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
- const identifier = (0, _utils.assertNodeType)("Identifier");
- return function (parent, key, node) {
- if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
- identifier(node, "id", node.id);
- }
- };
- }()
- });
- defineType("FunctionExpression", {
- inherits: "FunctionDeclaration",
- aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
- fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
- id: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- },
- predicate: {
- validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
- optional: true
- }
- })
- });
- const patternLikeCommon = () => ({
- typeAnnotation: {
- validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
- optional: true
- },
- optional: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- }
- });
- exports.patternLikeCommon = patternLikeCommon;
- defineType("Identifier", {
- builder: ["name"],
- visitor: ["typeAnnotation", "decorators"],
- aliases: ["Expression", "FunctionParameter", "PatternLike", "LVal", "TSEntityName"],
- fields: Object.assign({}, patternLikeCommon(), {
- name: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
- if (!(0, _isValidIdentifier.default)(val, false)) {
- throw new TypeError(`"${val}" is not a valid identifier name`);
- }
- }, {
- type: "string"
- })) : (0, _utils.assertValueType)("string")
- }
- }),
- validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key, node) {
- const match = /\.(\w+)$/.exec(key.toString());
- if (!match) return;
- const [, parentKey] = match;
- const nonComp = {
- computed: false
- };
- if (parentKey === "property") {
- if ((0, _is.default)("MemberExpression", parent, nonComp)) return;
- if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return;
- } else if (parentKey === "key") {
- if ((0, _is.default)("Property", parent, nonComp)) return;
- if ((0, _is.default)("Method", parent, nonComp)) return;
- } else if (parentKey === "exported") {
- if ((0, _is.default)("ExportSpecifier", parent)) return;
- } else if (parentKey === "imported") {
- if ((0, _is.default)("ImportSpecifier", parent, {
- imported: node
- })) return;
- } else if (parentKey === "meta") {
- if ((0, _is.default)("MetaProperty", parent, {
- meta: node
- })) return;
- }
- if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") {
- throw new TypeError(`"${node.name}" is not a valid identifier`);
- }
- } : undefined
- });
- defineType("IfStatement", {
- visitor: ["test", "consequent", "alternate"],
- aliases: ["Statement", "Conditional"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- consequent: {
- validate: (0, _utils.assertNodeType)("Statement")
- },
- alternate: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- defineType("LabeledStatement", {
- visitor: ["label", "body"],
- aliases: ["Statement"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- defineType("StringLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
- });
- defineType("NumericLiteral", {
- builder: ["value"],
- deprecatedAlias: "NumberLiteral",
- fields: {
- value: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("number"), Object.assign(function (node, key, val) {
- if (1 / val < 0 || !Number.isFinite(val)) {
- const error = new Error("NumericLiterals must be non-negative finite numbers. " + `You can use t.valueToNode(${val}) instead.`);
- {}
- }
- }, {
- type: "number"
- }))
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
- });
- defineType("NullLiteral", {
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
- });
- defineType("BooleanLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("boolean")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
- });
- defineType("RegExpLiteral", {
- builder: ["pattern", "flags"],
- deprecatedAlias: "RegexLiteral",
- aliases: ["Expression", "Pureish", "Literal"],
- fields: {
- pattern: {
- validate: (0, _utils.assertValueType)("string")
- },
- flags: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
- const invalid = /[^dgimsuvy]/.exec(val);
- if (invalid) {
- throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`);
- }
- }, {
- type: "string"
- })) : (0, _utils.assertValueType)("string"),
- default: ""
- }
- }
- });
- defineType("LogicalExpression", {
- builder: ["operator", "left", "right"],
- visitor: ["left", "right"],
- aliases: ["Binary", "Expression"],
- fields: {
- operator: {
- validate: (0, _utils.assertOneOf)(..._index.LOGICAL_OPERATORS)
- },
- left: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("MemberExpression", {
- builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])],
- visitor: ["object", "property"],
- aliases: ["Expression", "LVal", "PatternLike"],
- fields: Object.assign({
- object: {
- validate: (0, _utils.assertNodeType)("Expression", "Super")
- },
- property: {
- validate: function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName");
- const computed = (0, _utils.assertNodeType)("Expression");
- const validator = function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
- return validator;
- }()
- },
- computed: {
- default: false
- }
- }, !process.env.BABEL_TYPES_8_BREAKING ? {
- optional: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- }
- } : {})
- });
- defineType("NewExpression", {
- inherits: "CallExpression"
- });
- defineType("Program", {
- visitor: ["directives", "body"],
- builder: ["body", "directives", "sourceType", "interpreter"],
- fields: {
- sourceType: {
- validate: (0, _utils.assertOneOf)("script", "module"),
- default: "script"
- },
- interpreter: {
- validate: (0, _utils.assertNodeType)("InterpreterDirective"),
- default: null,
- optional: true
- },
- directives: {
- validate: (0, _utils.arrayOfType)("Directive"),
- default: []
- },
- body: (0, _utils.validateArrayOfType)("Statement")
- },
- aliases: ["Scopable", "BlockParent", "Block"]
- });
- defineType("ObjectExpression", {
- visitor: ["properties"],
- aliases: ["Expression"],
- fields: {
- properties: (0, _utils.validateArrayOfType)("ObjectMethod", "ObjectProperty", "SpreadElement")
- }
- });
- defineType("ObjectMethod", {
- builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
- visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
- fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
- kind: Object.assign({
- validate: (0, _utils.assertOneOf)("method", "get", "set")
- }, !process.env.BABEL_TYPES_8_BREAKING ? {
- default: "method"
- } : {}),
- computed: {
- default: false
- },
- key: {
- validate: function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
- const computed = (0, _utils.assertNodeType)("Expression");
- const validator = function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"];
- return validator;
- }()
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- }),
- aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
- });
- defineType("ObjectProperty", {
- builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])],
- fields: {
- computed: {
- default: false
- },
- key: {
- validate: function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName");
- const computed = (0, _utils.assertNodeType)("Expression");
- const validator = Object.assign(function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- }, {
- oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"]
- });
- return validator;
- }()
- },
- value: {
- validate: (0, _utils.assertNodeType)("Expression", "PatternLike")
- },
- shorthand: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, shorthand) {
- if (!shorthand) return;
- if (node.computed) {
- throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
- }
- if (!(0, _is.default)("Identifier", node.key)) {
- throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
- }
- }, {
- type: "boolean"
- })) : (0, _utils.assertValueType)("boolean"),
- default: false
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- }
- },
- visitor: ["decorators", "key", "value"],
- aliases: ["UserWhitespacable", "Property", "ObjectMember"],
- validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
- const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion");
- const expression = (0, _utils.assertNodeType)("Expression");
- return function (parent, key, node) {
- const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression;
- validator(node, "value", node.value);
- };
- }()
- });
- defineType("RestElement", {
- visitor: ["argument", "typeAnnotation"],
- builder: ["argument"],
- aliases: ["FunctionParameter", "PatternLike", "LVal"],
- deprecatedAlias: "RestProperty",
- fields: Object.assign({}, patternLikeCommon(), {
- argument: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression", "RestElement", "AssignmentPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
- }
- }),
- validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key) {
- const match = /(\w+)\[(\d+)\]/.exec(key.toString());
- if (!match) throw new Error("Internal Babel error: malformed key.");
- const [, listKey, index] = match;
- if (parent[listKey].length > +index + 1) {
- throw new TypeError(`RestElement must be last element of ${listKey}`);
- }
- } : undefined
- });
- defineType("ReturnStatement", {
- visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- }
- }
- });
- defineType("SequenceExpression", {
- visitor: ["expressions"],
- fields: {
- expressions: (0, _utils.validateArrayOfType)("Expression")
- },
- aliases: ["Expression"]
- });
- defineType("ParenthesizedExpression", {
- visitor: ["expression"],
- aliases: ["Expression", "ExpressionWrapper"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("SwitchCase", {
- visitor: ["test", "consequent"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- consequent: (0, _utils.validateArrayOfType)("Statement")
- }
- });
- defineType("SwitchStatement", {
- visitor: ["discriminant", "cases"],
- aliases: ["Statement", "BlockParent", "Scopable"],
- fields: {
- discriminant: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- cases: (0, _utils.validateArrayOfType)("SwitchCase")
- }
- });
- defineType("ThisExpression", {
- aliases: ["Expression"]
- });
- defineType("ThrowStatement", {
- visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("TryStatement", {
- visitor: ["block", "handler", "finalizer"],
- aliases: ["Statement"],
- fields: {
- block: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) {
- if (!node.handler && !node.finalizer) {
- throw new TypeError("TryStatement expects either a handler or finalizer, or both");
- }
- }, {
- oneOfNodeTypes: ["BlockStatement"]
- })) : (0, _utils.assertNodeType)("BlockStatement")
- },
- handler: {
- optional: true,
- validate: (0, _utils.assertNodeType)("CatchClause")
- },
- finalizer: {
- optional: true,
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- }
- });
- defineType("UnaryExpression", {
- builder: ["operator", "argument", "prefix"],
- fields: {
- prefix: {
- default: true
- },
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- operator: {
- validate: (0, _utils.assertOneOf)(..._index.UNARY_OPERATORS)
- }
- },
- visitor: ["argument"],
- aliases: ["UnaryLike", "Expression"]
- });
- defineType("UpdateExpression", {
- builder: ["operator", "argument", "prefix"],
- fields: {
- prefix: {
- default: false
- },
- argument: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression")
- },
- operator: {
- validate: (0, _utils.assertOneOf)(..._index.UPDATE_OPERATORS)
- }
- },
- visitor: ["argument"],
- aliases: ["Expression"]
- });
- defineType("VariableDeclaration", {
- builder: ["kind", "declarations"],
- visitor: ["declarations"],
- aliases: ["Statement", "Declaration"],
- fields: {
- declare: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- kind: {
- validate: (0, _utils.assertOneOf)("var", "let", "const", "using", "await using")
- },
- declarations: (0, _utils.validateArrayOfType)("VariableDeclarator")
- },
- validate: process.env.BABEL_TYPES_8_BREAKING ? (() => {
- const withoutInit = (0, _utils.assertNodeType)("Identifier", "Placeholder");
- const constOrLetOrVar = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "Placeholder");
- const usingOrAwaitUsing = (0, _utils.assertNodeType)("Identifier", "VoidPattern", "Placeholder");
- return function (parent, key, node) {
- const {
- kind,
- declarations
- } = node;
- const parentIsForX = (0, _is.default)("ForXStatement", parent, {
- left: node
- });
- if (parentIsForX) {
- if (declarations.length !== 1) {
- throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);
- }
- }
- for (const decl of declarations) {
- if (kind === "const" || kind === "let" || kind === "var") {
- if (!parentIsForX && !decl.init) {
- withoutInit(decl, "id", decl.id);
- } else {
- constOrLetOrVar(decl, "id", decl.id);
- }
- } else {
- usingOrAwaitUsing(decl, "id", decl.id);
- }
- }
- };
- })() : undefined
- });
- defineType("VariableDeclarator", {
- visitor: ["id", "init"],
- fields: {
- id: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "VoidPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "VoidPattern")
- },
- definite: {
- optional: true,
- validate: (0, _utils.assertValueType)("boolean")
- },
- init: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("WhileStatement", {
- visitor: ["test", "body"],
- aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- defineType("WithStatement", {
- visitor: ["object", "body"],
- aliases: ["Statement"],
- fields: {
- object: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
- });
- defineType("AssignmentPattern", {
- visitor: ["left", "right", "decorators"],
- builder: ["left", "right"],
- aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, patternLikeCommon(), {
- left: {
- validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- }
- })
- });
- defineType("ArrayPattern", {
- visitor: ["elements", "typeAnnotation"],
- builder: ["elements"],
- aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, patternLikeCommon(), {
- elements: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike")))
- }
- })
- });
- defineType("ArrowFunctionExpression", {
- builder: ["params", "body", "async"],
- visitor: ["typeParameters", "params", "predicate", "returnType", "body"],
- aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
- fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
- expression: {
- validate: (0, _utils.assertValueType)("boolean")
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement", "Expression")
- },
- predicate: {
- validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
- optional: true
- }
- })
- });
- defineType("ClassBody", {
- visitor: ["body"],
- fields: {
- body: (0, _utils.validateArrayOfType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock")
- }
- });
- defineType("ClassExpression", {
- builder: ["id", "superClass", "body", "decorators"],
- visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"],
- aliases: ["Scopable", "Class", "Expression"],
- fields: {
- id: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- },
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("ClassBody")
- },
- superClass: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Expression")
- },
- ["superTypeParameters"]: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
- optional: true
- },
- implements: {
- validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- mixins: {
- validate: (0, _utils.assertNodeType)("InterfaceExtends"),
- optional: true
- }
- }
- });
- defineType("ClassDeclaration", {
- inherits: "ClassExpression",
- aliases: ["Scopable", "Class", "Statement", "Declaration"],
- fields: {
- id: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- },
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("ClassBody")
- },
- superClass: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Expression")
- },
- ["superTypeParameters"]: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
- optional: true
- },
- implements: {
- validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- mixins: {
- validate: (0, _utils.assertNodeType)("InterfaceExtends"),
- optional: true
- },
- declare: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- abstract: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- }
- },
- validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
- const identifier = (0, _utils.assertNodeType)("Identifier");
- return function (parent, key, node) {
- if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
- identifier(node, "id", node.id);
- }
- };
- }()
- });
- const importAttributes = exports.importAttributes = {
- attributes: {
- optional: true,
- validate: (0, _utils.arrayOfType)("ImportAttribute")
- },
- assertions: {
- deprecated: true,
- optional: true,
- validate: (0, _utils.arrayOfType)("ImportAttribute")
- }
- };
- defineType("ExportAllDeclaration", {
- builder: ["source"],
- visitor: ["source", "attributes", "assertions"],
- aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
- fields: Object.assign({
- source: {
- validate: (0, _utils.assertNodeType)("StringLiteral")
- },
- exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
- }, importAttributes)
- });
- defineType("ExportDefaultDeclaration", {
- visitor: ["declaration"],
- aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
- fields: {
- declaration: (0, _utils.validateType)("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression"),
- exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value"))
- }
- });
- defineType("ExportNamedDeclaration", {
- builder: ["declaration", "specifiers", "source"],
- visitor: ["declaration", "specifiers", "source", "attributes", "assertions"],
- aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
- fields: Object.assign({
- declaration: {
- optional: true,
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) {
- if (val && node.specifiers.length) {
- throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
- }
- if (val && node.source) {
- throw new TypeError("Cannot export a declaration from a source");
- }
- }, {
- oneOfNodeTypes: ["Declaration"]
- })) : (0, _utils.assertNodeType)("Declaration")
- }
- }, importAttributes, {
- specifiers: {
- default: [],
- validate: (0, _utils.arrayOf)(function () {
- const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
- const sourceless = (0, _utils.assertNodeType)("ExportSpecifier");
- if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;
- return Object.assign(function (node, key, val) {
- const validator = node.source ? sourced : sourceless;
- validator(node, key, val);
- }, {
- oneOfNodeTypes: ["ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"]
- });
- }())
- },
- source: {
- validate: (0, _utils.assertNodeType)("StringLiteral"),
- optional: true
- },
- exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
- })
- });
- defineType("ExportSpecifier", {
- visitor: ["local", "exported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- exported: {
- validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
- },
- exportKind: {
- validate: (0, _utils.assertOneOf)("type", "value"),
- optional: true
- }
- }
- });
- defineType("ForOfStatement", {
- visitor: ["left", "right", "body"],
- builder: ["left", "right", "body", "await"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
- fields: {
- left: {
- validate: function () {
- if (!process.env.BABEL_TYPES_8_BREAKING) {
- return (0, _utils.assertNodeType)("VariableDeclaration", "LVal");
- }
- const declaration = (0, _utils.assertNodeType)("VariableDeclaration");
- const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
- return Object.assign(function (node, key, val) {
- if ((0, _is.default)("VariableDeclaration", val)) {
- declaration(node, key, val);
- } else {
- lval(node, key, val);
- }
- }, {
- oneOfNodeTypes: ["VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"]
- });
- }()
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- },
- await: {
- default: false
- }
- }
- });
- defineType("ImportDeclaration", {
- builder: ["specifiers", "source"],
- visitor: ["specifiers", "source", "attributes", "assertions"],
- aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"],
- fields: Object.assign({}, importAttributes, {
- module: {
- optional: true,
- validate: (0, _utils.assertValueType)("boolean")
- },
- phase: {
- default: null,
- validate: (0, _utils.assertOneOf)("source", "defer")
- },
- specifiers: (0, _utils.validateArrayOfType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"),
- source: {
- validate: (0, _utils.assertNodeType)("StringLiteral")
- },
- importKind: {
- validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
- optional: true
- }
- })
- });
- defineType("ImportDefaultSpecifier", {
- visitor: ["local"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
- });
- defineType("ImportNamespaceSpecifier", {
- visitor: ["local"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
- });
- defineType("ImportSpecifier", {
- visitor: ["imported", "local"],
- builder: ["local", "imported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- imported: {
- validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
- },
- importKind: {
- validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
- optional: true
- }
- }
- });
- defineType("ImportExpression", {
- visitor: ["source", "options"],
- aliases: ["Expression"],
- fields: {
- phase: {
- default: null,
- validate: (0, _utils.assertOneOf)("source", "defer")
- },
- source: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- options: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- }
- }
- });
- defineType("MetaProperty", {
- visitor: ["meta", "property"],
- aliases: ["Expression"],
- fields: {
- meta: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) {
- let property;
- switch (val.name) {
- case "function":
- property = "sent";
- break;
- case "new":
- property = "target";
- break;
- case "import":
- property = "meta";
- break;
- }
- if (!(0, _is.default)("Identifier", node.property, {
- name: property
- })) {
- throw new TypeError("Unrecognised MetaProperty");
- }
- }, {
- oneOfNodeTypes: ["Identifier"]
- })) : (0, _utils.assertNodeType)("Identifier")
- },
- property: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
- });
- const classMethodOrPropertyCommon = () => ({
- abstract: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- accessibility: {
- validate: (0, _utils.assertOneOf)("public", "private", "protected"),
- optional: true
- },
- static: {
- default: false
- },
- override: {
- default: false
- },
- computed: {
- default: false
- },
- optional: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- key: {
- validate: (0, _utils.chain)(function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
- const computed = (0, _utils.assertNodeType)("Expression");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression"))
- }
- });
- exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon;
- const classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {
- params: (0, _utils.validateArrayOfType)("FunctionParameter", "TSParameterProperty"),
- kind: {
- validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"),
- default: "method"
- },
- access: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- }
- });
- exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon;
- defineType("ClassMethod", {
- aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
- builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"],
- visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
- fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- })
- });
- defineType("ObjectPattern", {
- visitor: ["decorators", "properties", "typeAnnotation"],
- builder: ["properties"],
- aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, patternLikeCommon(), {
- properties: (0, _utils.validateArrayOfType)("RestElement", "ObjectProperty")
- })
- });
- defineType("SpreadElement", {
- visitor: ["argument"],
- aliases: ["UnaryLike"],
- deprecatedAlias: "SpreadProperty",
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("Super", {
- aliases: ["Expression"]
- });
- defineType("TaggedTemplateExpression", {
- visitor: ["tag", "typeParameters", "quasi"],
- builder: ["tag", "quasi"],
- aliases: ["Expression"],
- fields: {
- tag: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- quasi: {
- validate: (0, _utils.assertNodeType)("TemplateLiteral")
- },
- ["typeParameters"]: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
- optional: true
- }
- }
- });
- defineType("TemplateElement", {
- builder: ["value", "tail"],
- fields: {
- value: {
- validate: (0, _utils.chain)((0, _utils.assertShape)({
- raw: {
- validate: (0, _utils.assertValueType)("string")
- },
- cooked: {
- validate: (0, _utils.assertValueType)("string"),
- optional: true
- }
- }), function templateElementCookedValidator(node) {
- const raw = node.value.raw;
- let unterminatedCalled = false;
- const error = () => {
- throw new Error("Internal @babel/types error.");
- };
- const {
- str,
- firstInvalidLoc
- } = (0, _helperStringParser.readStringContents)("template", raw, 0, 0, 0, {
- unterminated() {
- unterminatedCalled = true;
- },
- strictNumericEscape: error,
- invalidEscapeSequence: error,
- numericSeparatorInEscapeSequence: error,
- unexpectedNumericSeparator: error,
- invalidDigit: error,
- invalidCodePoint: error
- });
- if (!unterminatedCalled) throw new Error("Invalid raw");
- node.value.cooked = firstInvalidLoc ? null : str;
- })
- },
- tail: {
- default: false
- }
- }
- });
- defineType("TemplateLiteral", {
- visitor: ["quasis", "expressions"],
- aliases: ["Expression", "Literal"],
- fields: {
- quasis: (0, _utils.validateArrayOfType)("TemplateElement"),
- expressions: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) {
- if (node.quasis.length !== val.length + 1) {
- throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
- }
- })
- }
- }
- });
- defineType("YieldExpression", {
- builder: ["argument", "delegate"],
- visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"],
- fields: {
- delegate: {
- validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) {
- if (val && !node.argument) {
- throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
- }
- }, {
- type: "boolean"
- })) : (0, _utils.assertValueType)("boolean"),
- default: false
- },
- argument: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("AwaitExpression", {
- builder: ["argument"],
- visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
- });
- defineType("Import", {
- aliases: ["Expression"]
- });
- defineType("BigIntLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
- });
- defineType("ExportNamespaceSpecifier", {
- visitor: ["exported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- exported: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
- });
- defineType("OptionalMemberExpression", {
- builder: ["object", "property", "computed", "optional"],
- visitor: ["object", "property"],
- aliases: ["Expression"],
- fields: {
- object: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- property: {
- validate: function () {
- const normal = (0, _utils.assertNodeType)("Identifier");
- const computed = (0, _utils.assertNodeType)("Expression");
- const validator = Object.assign(function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- }, {
- oneOfNodeTypes: ["Expression", "Identifier"]
- });
- return validator;
- }()
- },
- computed: {
- default: false
- },
- optional: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
- }
- }
- });
- defineType("OptionalCallExpression", {
- visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
- builder: ["callee", "arguments", "optional"],
- aliases: ["Expression"],
- fields: Object.assign({
- callee: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
- optional: {
- validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
- },
- typeArguments: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
- optional: true
- }
- }, {
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
- optional: true
- }
- })
- });
- defineType("ClassProperty", {
- visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
- builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
- aliases: ["Property"],
- fields: Object.assign({}, classMethodOrPropertyCommon(), {
- value: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- definite: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- typeAnnotation: {
- validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- readonly: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- declare: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- variance: {
- validate: (0, _utils.assertNodeType)("Variance"),
- optional: true
- }
- })
- });
- defineType("ClassAccessorProperty", {
- visitor: ["decorators", "key", "typeAnnotation", "value"],
- builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
- aliases: ["Property", "Accessor"],
- fields: Object.assign({}, classMethodOrPropertyCommon(), {
- key: {
- validate: (0, _utils.chain)(function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName");
- const computed = (0, _utils.assertNodeType)("Expression");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName"))
- },
- value: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- definite: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- typeAnnotation: {
- validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- readonly: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- declare: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- variance: {
- validate: (0, _utils.assertNodeType)("Variance"),
- optional: true
- }
- })
- });
- defineType("ClassPrivateProperty", {
- visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
- builder: ["key", "value", "decorators", "static"],
- aliases: ["Property", "Private"],
- fields: {
- key: {
- validate: (0, _utils.assertNodeType)("PrivateName")
- },
- value: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- typeAnnotation: {
- validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.arrayOfType)("Decorator"),
- optional: true
- },
- static: {
- validate: (0, _utils.assertValueType)("boolean"),
- default: false
- },
- readonly: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- optional: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- definite: {
- validate: (0, _utils.assertValueType)("boolean"),
- optional: true
- },
- variance: {
- validate: (0, _utils.assertNodeType)("Variance"),
- optional: true
- }
- }
- });
- defineType("ClassPrivateMethod", {
- builder: ["kind", "key", "params", "body", "static"],
- visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
- aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
- fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
- kind: {
- validate: (0, _utils.assertOneOf)("get", "set", "method"),
- default: "method"
- },
- key: {
- validate: (0, _utils.assertNodeType)("PrivateName")
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- })
- });
- defineType("PrivateName", {
- visitor: ["id"],
- aliases: ["Private"],
- fields: {
- id: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
- });
- defineType("StaticBlock", {
- visitor: ["body"],
- fields: {
- body: (0, _utils.validateArrayOfType)("Statement")
- },
- aliases: ["Scopable", "BlockParent", "FunctionParent"]
- });
- defineType("ImportAttribute", {
- visitor: ["key", "value"],
- fields: {
- key: {
- validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
- },
- value: {
- validate: (0, _utils.assertNodeType)("StringLiteral")
- }
- }
- });
- //# sourceMappingURL=core.js.map
|