@tinacms/app 0.0.28 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/appFiles/node_modules/.package-lock.json +10 -10
  2. package/appFiles/node_modules/@babel/generator/lib/generators/base.js.map +1 -1
  3. package/appFiles/node_modules/@babel/generator/lib/generators/classes.js +1 -1
  4. package/appFiles/node_modules/@babel/generator/lib/generators/classes.js.map +1 -1
  5. package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js +9 -15
  6. package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js.map +1 -1
  7. package/appFiles/node_modules/@babel/generator/lib/generators/methods.js +9 -24
  8. package/appFiles/node_modules/@babel/generator/lib/generators/methods.js.map +1 -1
  9. package/appFiles/node_modules/@babel/generator/lib/generators/modules.js +6 -14
  10. package/appFiles/node_modules/@babel/generator/lib/generators/modules.js.map +1 -1
  11. package/appFiles/node_modules/@babel/generator/lib/generators/statements.js +1 -16
  12. package/appFiles/node_modules/@babel/generator/lib/generators/statements.js.map +1 -1
  13. package/appFiles/node_modules/@babel/generator/lib/printer.js +89 -80
  14. package/appFiles/node_modules/@babel/generator/lib/printer.js.map +1 -1
  15. package/appFiles/node_modules/@babel/generator/package.json +3 -3
  16. package/appFiles/node_modules/@babel/parser/lib/index.js +1 -1
  17. package/appFiles/node_modules/@babel/parser/lib/index.js.map +1 -1
  18. package/appFiles/node_modules/@babel/parser/package.json +1 -1
  19. package/appFiles/node_modules/@babel/parser/typings/babel-parser.d.ts +92 -80
  20. package/appFiles/node_modules/@babel/parser/typings/babel-parser.source.d.ts +151 -0
  21. package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js +0 -3
  22. package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js.map +1 -1
  23. package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js +0 -303
  24. package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js.map +1 -1
  25. package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -4
  26. package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +1 -1
  27. package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -11
  28. package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +1 -1
  29. package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js +0 -253
  30. package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js.map +1 -1
  31. package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  32. package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +1 -1
  33. package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -7
  34. package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +1 -1
  35. package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -5
  36. package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +1 -1
  37. package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js +0 -5
  38. package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js.map +1 -1
  39. package/appFiles/node_modules/@babel/types/lib/clone/clone.js +0 -2
  40. package/appFiles/node_modules/@babel/types/lib/clone/clone.js.map +1 -1
  41. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -2
  42. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js.map +1 -1
  43. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -2
  44. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +1 -1
  45. package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js +4 -22
  46. package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js.map +1 -1
  47. package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -2
  48. package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +1 -1
  49. package/appFiles/node_modules/@babel/types/lib/comments/addComment.js +0 -2
  50. package/appFiles/node_modules/@babel/types/lib/comments/addComment.js.map +1 -1
  51. package/appFiles/node_modules/@babel/types/lib/comments/addComments.js +0 -3
  52. package/appFiles/node_modules/@babel/types/lib/comments/addComments.js.map +1 -1
  53. package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -2
  54. package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +1 -1
  55. package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -2
  56. package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +1 -1
  57. package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -2
  58. package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +1 -1
  59. package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -4
  60. package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js.map +1 -1
  61. package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js +0 -3
  62. package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js.map +1 -1
  63. package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  64. package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js.map +1 -1
  65. package/appFiles/node_modules/@babel/types/lib/constants/index.js.map +1 -1
  66. package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -2
  67. package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js.map +1 -1
  68. package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +2 -12
  69. package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +1 -1
  70. package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -2
  71. package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +1 -1
  72. package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js +0 -7
  73. package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js.map +1 -1
  74. package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js +2 -4
  75. package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js.map +1 -1
  76. package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js +0 -4
  77. package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js.map +1 -1
  78. package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js +2 -6
  79. package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js.map +1 -1
  80. package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -7
  81. package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +1 -1
  82. package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -3
  83. package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +1 -1
  84. package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js +1 -7
  85. package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js.map +1 -1
  86. package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js +2 -18
  87. package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js.map +1 -1
  88. package/appFiles/node_modules/@babel/types/lib/definitions/core.js +33 -61
  89. package/appFiles/node_modules/@babel/types/lib/definitions/core.js.map +1 -1
  90. package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js +3 -1
  91. package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js.map +1 -1
  92. package/appFiles/node_modules/@babel/types/lib/definitions/flow.js +1 -3
  93. package/appFiles/node_modules/@babel/types/lib/definitions/flow.js.map +1 -1
  94. package/appFiles/node_modules/@babel/types/lib/definitions/index.js +0 -18
  95. package/appFiles/node_modules/@babel/types/lib/definitions/index.js.map +1 -1
  96. package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  97. package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js.map +1 -1
  98. package/appFiles/node_modules/@babel/types/lib/definitions/misc.js +0 -2
  99. package/appFiles/node_modules/@babel/types/lib/definitions/misc.js.map +1 -1
  100. package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js +0 -5
  101. package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js.map +1 -1
  102. package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js +4 -15
  103. package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js.map +1 -1
  104. package/appFiles/node_modules/@babel/types/lib/definitions/utils.js +1 -65
  105. package/appFiles/node_modules/@babel/types/lib/definitions/utils.js.map +1 -1
  106. package/appFiles/node_modules/@babel/types/lib/index.d.ts +0 -1
  107. package/appFiles/node_modules/@babel/types/lib/index.js +1 -75
  108. package/appFiles/node_modules/@babel/types/lib/index.js.map +1 -1
  109. package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -2
  110. package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +1 -1
  111. package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +3 -12
  112. package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +1 -1
  113. package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js +0 -4
  114. package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js.map +1 -1
  115. package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -4
  116. package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +1 -1
  117. package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js +3 -8
  118. package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js.map +1 -1
  119. package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -3
  120. package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +1 -1
  121. package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +1 -10
  122. package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +1 -1
  123. package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +4 -14
  124. package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +1 -1
  125. package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -3
  126. package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +1 -1
  127. package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js +0 -7
  128. package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js.map +1 -1
  129. package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js +2 -5
  130. package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js.map +1 -1
  131. package/appFiles/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  132. package/appFiles/node_modules/@babel/types/lib/utils/inherit.js.map +1 -1
  133. package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +1 -8
  134. package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +1 -1
  135. package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js +2 -4
  136. package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js.map +1 -1
  137. package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -2
  138. package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +1 -1
  139. package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js +0 -906
  140. package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js.map +1 -1
  141. package/appFiles/node_modules/@babel/types/lib/validators/is.js +0 -8
  142. package/appFiles/node_modules/@babel/types/lib/validators/is.js.map +1 -1
  143. package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js +4 -8
  144. package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js.map +1 -1
  145. package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -3
  146. package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +1 -1
  147. package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js +0 -5
  148. package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js.map +1 -1
  149. package/appFiles/node_modules/@babel/types/lib/validators/isLet.js +2 -4
  150. package/appFiles/node_modules/@babel/types/lib/validators/isLet.js.map +1 -1
  151. package/appFiles/node_modules/@babel/types/lib/validators/isNode.js +0 -2
  152. package/appFiles/node_modules/@babel/types/lib/validators/isNode.js.map +1 -1
  153. package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +2 -16
  154. package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +1 -1
  155. package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -4
  156. package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +1 -1
  157. package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js +0 -13
  158. package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js.map +1 -1
  159. package/appFiles/node_modules/@babel/types/lib/validators/isScope.js +0 -3
  160. package/appFiles/node_modules/@babel/types/lib/validators/isScope.js.map +1 -1
  161. package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +2 -3
  162. package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +1 -1
  163. package/appFiles/node_modules/@babel/types/lib/validators/isType.js +1 -5
  164. package/appFiles/node_modules/@babel/types/lib/validators/isType.js.map +1 -1
  165. package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -2
  166. package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +1 -1
  167. package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -4
  168. package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +1 -1
  169. package/appFiles/node_modules/@babel/types/lib/validators/isVar.js +2 -4
  170. package/appFiles/node_modules/@babel/types/lib/validators/isVar.js.map +1 -1
  171. package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -8
  172. package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js.map +1 -1
  173. package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  174. package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +1 -1
  175. package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -2
  176. package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +1 -1
  177. package/appFiles/node_modules/@babel/types/lib/validators/validate.js +0 -4
  178. package/appFiles/node_modules/@babel/types/lib/validators/validate.js.map +1 -1
  179. package/appFiles/node_modules/@babel/types/package.json +3 -3
  180. package/package.json +4 -4
  181. package/appFiles/node_modules/@babel/types/lib/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","chain","assertEach","functionDeclarationCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","initializer","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","literal","unaryExpression","unaryOperator","validator","parent","node","is","argument","oneOfNodeTypes","expression","declare","id","extends","arrayOfType","body","TSTypeExpression","const","global","qualifier","isExport","moduleReference","importKind","params","name","in","out","constraint"],"sources":["../../src/definitions/typescript.ts"],"sourcesContent":["import {\n defineAliasedType,\n arrayOfType,\n assertEach,\n assertNodeType,\n assertOneOf,\n assertValueType,\n chain,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n} from \"./utils\";\nimport {\n functionDeclarationCommon,\n classMethodOrDeclareMethodCommon,\n} from \"./core\";\nimport is from \"../validators/is\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeAnnotation\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeParameterDeclaration\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true,\n },\n});\n\ndefineType(\"TSParameterProperty\", {\n aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\"),\n },\n});\n\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n [\"Identifier\", \"RestElement\"],\n ),\n [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n \"TSConstructSignatureDeclaration\",\n callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: { default: false },\n optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\", \"initializer\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n initializer: validateOptionalType(\"Expression\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"key\",\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n },\n});\n\nconst tsKeywordTypes = [\n \"TSAnyKeyword\",\n \"TSBooleanKeyword\",\n \"TSBigIntKeyword\",\n \"TSIntrinsicKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n });\n}\n\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n});\n\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n};\n\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeParameters\"],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType([\"Identifier\", \"TSThisType\"]),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeParameters\"],\n fields: {\n exprName: validateType([\"TSEntityName\", \"TSImportType\"]),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType([\"TSType\", \"TSNamedTupleMember\"]),\n },\n});\n\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false,\n },\n elementType: validateType(\"TSType\"),\n },\n});\n\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\"),\n },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n operator: validate(assertValueType(\"string\")),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n fields: {\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeParameter: validateType(\"TSTypeParameter\"),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\"),\n },\n});\n\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: (function () {\n const unaryExpression = assertNodeType(\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const unaryOperator = assertOneOf(\"-\");\n\n const literal = assertNodeType(\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n );\n function validator(parent: any, key: string, node: any) {\n // type A = -1 | 1;\n if (is(\"UnaryExpression\", node)) {\n // check operator first\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n // type A = 'foo' | 'bar' | false | 1;\n literal(parent, key, node);\n }\n }\n\n validator.oneOfNodeTypes = [\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n \"UnaryExpression\",\n ];\n\n return validator;\n })(),\n },\n },\n});\n\ndefineType(\"TSExpressionWithTypeArguments\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSInterfaceDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"TSExpressionWithTypeArguments\")),\n body: validateType(\"TSInterfaceBody\"),\n },\n});\n\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"members\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n members: validateArrayOfType(\"TSEnumMember\"),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n global: validateOptional(bool),\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n body: validateType([\"TSModuleBlock\", \"TSModuleDeclaration\"]),\n },\n});\n\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n visitor: [\"argument\", \"qualifier\", \"typeParameters\"],\n fields: {\n argument: validateType(\"StringLiteral\"),\n qualifier: validateOptionalType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n isExport: validate(bool),\n id: validateType(\"Identifier\"),\n moduleReference: validateType([\n \"TSEntityName\",\n \"TSExternalModuleReference\",\n ]),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\"),\n },\n },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSType\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSTypeParameter\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"constraint\", \"default\"],\n fields: {\n name: {\n validate: !process.env.BABEL_8_BREAKING\n ? assertValueType(\"string\")\n : assertNodeType(\"Identifier\"),\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n },\n});\n"],"mappings":";;AAAA;;AAcA;;AAIA;;AAEA,MAAMA,UAAU,GAAG,IAAAC,wBAAA,EAAkB,YAAlB,CAAnB;AAEA,MAAMC,IAAI,GAAG,IAAAC,sBAAA,EAAgB,SAAhB,CAAb;;AAEA,MAAMC,8BAA8B,GAAG,OAAO;EAC5CC,UAAU,EAAE;IACVC,QAAQ,EAGJ,IAAAC,qBAAA,EAAe,kBAAf,EAAmC,MAAnC,CAJM;IAKVC,QAAQ,EAAE;EALA,CADgC;EAQ5CC,cAAc,EAAE;IACdH,QAAQ,EAGJ,IAAAC,qBAAA,EAAe,4BAAf,EAA6C,MAA7C,CAJU;IAKdC,QAAQ,EAAE;EALI;AAR4B,CAAP,CAAvC;;AAiBAR,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,MAAD,CADuB;EAEhCC,OAAO,EAAE,CAAC,WAAD,CAFuB;EAGhCC,MAAM,EAAE;IACNC,aAAa,EAAE;MACbP,QAAQ,EAAE,IAAAQ,kBAAA,EAAY,QAAZ,EAAsB,SAAtB,EAAiC,WAAjC,CADG;MAEbN,QAAQ,EAAE;IAFG,CADT;IAKNO,QAAQ,EAAE;MACRT,QAAQ,EAAE,IAAAH,sBAAA,EAAgB,SAAhB,CADF;MAERK,QAAQ,EAAE;IAFF,CALJ;IASNQ,SAAS,EAAE;MACTV,QAAQ,EAAE,IAAAC,qBAAA,EAAe,YAAf,EAA6B,mBAA7B;IADD,CATL;IAYNU,QAAQ,EAAE;MACRX,QAAQ,EAAE,IAAAH,sBAAA,EAAgB,SAAhB,CADF;MAERK,QAAQ,EAAE;IAFF,CAZJ;IAgBNU,UAAU,EAAE;MACVZ,QAAQ,EAAE,IAAAa,YAAA,EACR,IAAAhB,sBAAA,EAAgB,OAAhB,CADQ,EAER,IAAAiB,iBAAA,EAAW,IAAAb,qBAAA,EAAe,WAAf,CAAX,CAFQ,CADA;MAKVC,QAAQ,EAAE;IALA;EAhBN;AAHwB,CAAxB,CAAV;AA6BAR,UAAU,CAAC,mBAAD,EAAsB;EAC9BU,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,CADqB;EAE9BC,OAAO,EAAE,CAAC,IAAD,EAAO,gBAAP,EAAyB,QAAzB,EAAmC,YAAnC,CAFqB;EAG9BC,MAAM,oBACD,IAAAS,+BAAA,GADC,EAEDjB,8BAA8B,EAF7B;AAHwB,CAAtB,CAAV;AASAJ,UAAU,CAAC,iBAAD,EAAoB;EAC5BW,OAAO,EAAE,CAAC,YAAD,EAAe,KAAf,EAAsB,gBAAtB,EAAwC,QAAxC,EAAkD,YAAlD,CADmB;EAE5BC,MAAM,oBACD,IAAAU,sCAAA,GADC,EAEDlB,8BAA8B,EAF7B;AAFsB,CAApB,CAAV;AAQAJ,UAAU,CAAC,iBAAD,EAAoB;EAC5BU,OAAO,EAAE,CAAC,cAAD,CADmB;EAE5BC,OAAO,EAAE,CAAC,MAAD,EAAS,OAAT,CAFmB;EAG5BC,MAAM,EAAE;IACNW,IAAI,EAAE,IAAAC,mBAAA,EAAa,cAAb,CADA;IAENC,KAAK,EAAE,IAAAD,mBAAA,EAAa,YAAb;EAFD;AAHoB,CAApB,CAAV;;AASA,MAAME,0BAA0B,GAAG,OAAO;EACxCjB,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,4BAArB,CADwB;EAExC,CAA2C,YAA3C,GAA0D,IAAAC,0BAAA,EACxD,CAAC,YAAD,EAAe,aAAf,CADwD,CAFlB;EAKxC,CAA+C,gBAA/C,GACE,IAAAD,2BAAA,EAAqB,kBAArB;AANsC,CAAP,CAAnC;;AASA,MAAME,iCAAiC,GAAG;EACxCnB,OAAO,EAAE,CAAC,eAAD,CAD+B;EAExCC,OAAO,EAAE,CACP,gBADO,EAEmC,YAFnC,EAGuC,gBAHvC,CAF+B;EAOxCC,MAAM,EAAEc,0BAA0B;AAPM,CAA1C;AAUA1B,UAAU,CAAC,4BAAD,EAA+B6B,iCAA/B,CAAV;AACA7B,UAAU,CACR,iCADQ,EAER6B,iCAFQ,CAAV;;AAKA,MAAMC,sBAAsB,GAAG,OAAO;EACpCC,GAAG,EAAE,IAAAP,mBAAA,EAAa,YAAb,CAD+B;EAEpCQ,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAX,CAF0B;EAGpCzB,QAAQ,EAAE,IAAA0B,uBAAA,EAAiBhC,IAAjB;AAH0B,CAAP,CAA/B;;AAMAF,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,eAAD,CADuB;EAEhCC,OAAO,EAAE,CAAC,KAAD,EAAQ,gBAAR,EAA0B,aAA1B,CAFuB;EAGhCC,MAAM,oBACDkB,sBAAsB,EADrB;IAEJf,QAAQ,EAAE,IAAAmB,uBAAA,EAAiBhC,IAAjB,CAFN;IAGJiC,cAAc,EAAE,IAAAR,2BAAA,EAAqB,kBAArB,CAHZ;IAIJS,WAAW,EAAE,IAAAT,2BAAA,EAAqB,YAArB,CAJT;IAKJU,IAAI,EAAE;MACJ/B,QAAQ,EAAE,IAAAQ,kBAAA,EAAY,KAAZ,EAAmB,KAAnB;IADN;EALF;AAH0B,CAAxB,CAAV;AAcAd,UAAU,CAAC,mBAAD,EAAsB;EAC9BU,OAAO,EAAE,CAAC,eAAD,CADqB;EAE9BC,OAAO,EAAE,CACP,KADO,EAEP,gBAFO,EAGmC,YAHnC,EAIuC,gBAJvC,CAFqB;EAQ9BC,MAAM,oBACDc,0BAA0B,EADzB,EAEDI,sBAAsB,EAFrB;IAGJO,IAAI,EAAE;MACJ/B,QAAQ,EAAE,IAAAQ,kBAAA,EAAY,QAAZ,EAAsB,KAAtB,EAA6B,KAA7B;IADN;EAHF;AARwB,CAAtB,CAAV;AAiBAd,UAAU,CAAC,kBAAD,EAAqB;EAC7BU,OAAO,EAAE,CAAC,eAAD,CADoB;EAE7BC,OAAO,EAAE,CAAC,YAAD,EAAe,gBAAf,CAFoB;EAG7BC,MAAM,EAAE;IACNG,QAAQ,EAAE,IAAAmB,uBAAA,EAAiBhC,IAAjB,CADJ;IAENoC,MAAM,EAAE,IAAAJ,uBAAA,EAAiBhC,IAAjB,CAFF;IAGNqC,UAAU,EAAE,IAAAX,0BAAA,EAAoB,YAApB,CAHN;IAINO,cAAc,EAAE,IAAAR,2BAAA,EAAqB,kBAArB;EAJV;AAHqB,CAArB,CAAV;AAWA,MAAMa,cAAc,GAAG,CACrB,cADqB,EAErB,kBAFqB,EAGrB,iBAHqB,EAIrB,oBAJqB,EAKrB,gBALqB,EAMrB,eANqB,EAOrB,iBAPqB,EAQrB,iBARqB,EASrB,iBATqB,EAUrB,iBAVqB,EAWrB,oBAXqB,EAYrB,kBAZqB,EAarB,eAbqB,CAAvB;;AAgBA,KAAK,MAAMC,IAAX,IAAmBD,cAAnB,EAAmC;EACjCxC,UAAU,CAACyC,IAAD,EAAO;IACf/B,OAAO,EAAE,CAAC,QAAD,EAAW,YAAX,CADM;IAEfC,OAAO,EAAE,EAFM;IAGfC,MAAM,EAAE;EAHO,CAAP,CAAV;AAKD;;AAEDZ,UAAU,CAAC,YAAD,EAAe;EACvBU,OAAO,EAAE,CAAC,QAAD,EAAW,YAAX,CADc;EAEvBC,OAAO,EAAE,EAFc;EAGvBC,MAAM,EAAE;AAHe,CAAf,CAAV;AAMA,MAAM8B,WAAW,GAAG;EAClBhC,OAAO,EAAE,CAAC,QAAD,CADS;EAElBC,OAAO,EAAE,CACP,gBADO,EAEmC,YAFnC,EAGuC,gBAHvC;AAFS,CAApB;AASAX,UAAU,CAAC,gBAAD,oBACL0C,WADK;EAER9B,MAAM,EAAEc,0BAA0B;AAF1B,GAAV;AAIA1B,UAAU,CAAC,mBAAD,oBACL0C,WADK;EAER9B,MAAM,oBACDc,0BAA0B,EADzB;IAEJiB,QAAQ,EAAE,IAAAT,uBAAA,EAAiBhC,IAAjB;EAFN;AAFE,GAAV;AAQAF,UAAU,CAAC,iBAAD,EAAoB;EAC5BU,OAAO,EAAE,CAAC,QAAD,CADmB;EAE5BC,OAAO,EAAE,CAAC,UAAD,EAAa,gBAAb,CAFmB;EAG5BC,MAAM,EAAE;IACNgC,QAAQ,EAAE,IAAApB,mBAAA,EAAa,cAAb,CADJ;IAENf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,8BAArB;EAFV;AAHoB,CAApB,CAAV;AASA3B,UAAU,CAAC,iBAAD,EAAoB;EAC5BU,OAAO,EAAE,CAAC,QAAD,CADmB;EAE5BC,OAAO,EAAE,CAAC,eAAD,EAAkB,gBAAlB,CAFmB;EAG5BkC,OAAO,EAAE,CAAC,eAAD,EAAkB,gBAAlB,EAAoC,SAApC,CAHmB;EAI5BjC,MAAM,EAAE;IACNkC,aAAa,EAAE,IAAAtB,mBAAA,EAAa,CAAC,YAAD,EAAe,YAAf,CAAb,CADT;IAENW,cAAc,EAAE,IAAAR,2BAAA,EAAqB,kBAArB,CAFV;IAGNoB,OAAO,EAAE,IAAAb,uBAAA,EAAiBhC,IAAjB;EAHH;AAJoB,CAApB,CAAV;AAWAF,UAAU,CAAC,aAAD,EAAgB;EACxBU,OAAO,EAAE,CAAC,QAAD,CADe;EAExBC,OAAO,EAAE,CAAC,UAAD,EAAa,gBAAb,CAFe;EAGxBC,MAAM,EAAE;IACNoC,QAAQ,EAAE,IAAAxB,mBAAA,EAAa,CAAC,cAAD,EAAiB,cAAjB,CAAb,CADJ;IAENf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,8BAArB;EAFV;AAHgB,CAAhB,CAAV;AASA3B,UAAU,CAAC,eAAD,EAAkB;EAC1BU,OAAO,EAAE,CAAC,QAAD,CADiB;EAE1BC,OAAO,EAAE,CAAC,SAAD,CAFiB;EAG1BC,MAAM,EAAE;IACNqC,OAAO,EAAE,IAAArB,0BAAA,EAAoB,eAApB;EADH;AAHkB,CAAlB,CAAV;AAQA5B,UAAU,CAAC,aAAD,EAAgB;EACxBU,OAAO,EAAE,CAAC,QAAD,CADe;EAExBC,OAAO,EAAE,CAAC,aAAD,CAFe;EAGxBC,MAAM,EAAE;IACNsC,WAAW,EAAE,IAAA1B,mBAAA,EAAa,QAAb;EADP;AAHgB,CAAhB,CAAV;AAQAxB,UAAU,CAAC,aAAD,EAAgB;EACxBU,OAAO,EAAE,CAAC,QAAD,CADe;EAExBC,OAAO,EAAE,CAAC,cAAD,CAFe;EAGxBC,MAAM,EAAE;IACNuC,YAAY,EAAE,IAAAvB,0BAAA,EAAoB,CAAC,QAAD,EAAW,oBAAX,CAApB;EADR;AAHgB,CAAhB,CAAV;AAQA5B,UAAU,CAAC,gBAAD,EAAmB;EAC3BU,OAAO,EAAE,CAAC,QAAD,CADkB;EAE3BC,OAAO,EAAE,CAAC,gBAAD,CAFkB;EAG3BC,MAAM,EAAE;IACNuB,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EADV;AAHmB,CAAnB,CAAV;AAQAxB,UAAU,CAAC,YAAD,EAAe;EACvBU,OAAO,EAAE,CAAC,QAAD,CADc;EAEvBC,OAAO,EAAE,CAAC,gBAAD,CAFc;EAGvBC,MAAM,EAAE;IACNuB,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EADV;AAHe,CAAf,CAAV;AAQAxB,UAAU,CAAC,oBAAD,EAAuB;EAC/BW,OAAO,EAAE,CAAC,OAAD,EAAU,aAAV,CADsB;EAE/BkC,OAAO,EAAE,CAAC,OAAD,EAAU,aAAV,EAAyB,UAAzB,CAFsB;EAG/BjC,MAAM,EAAE;IACNwC,KAAK,EAAE,IAAA5B,mBAAA,EAAa,YAAb,CADD;IAENhB,QAAQ,EAAE;MACRF,QAAQ,EAAEJ,IADF;MAER+B,OAAO,EAAE;IAFD,CAFJ;IAMNiB,WAAW,EAAE,IAAA1B,mBAAA,EAAa,QAAb;EANP;AAHuB,CAAvB,CAAV;AAaA,MAAM6B,mBAAmB,GAAG;EAC1B3C,OAAO,EAAE,CAAC,QAAD,CADiB;EAE1BC,OAAO,EAAE,CAAC,OAAD,CAFiB;EAG1BC,MAAM,EAAE;IACN0C,KAAK,EAAE,IAAA1B,0BAAA,EAAoB,QAApB;EADD;AAHkB,CAA5B;AAQA5B,UAAU,CAAC,aAAD,EAAgBqD,mBAAhB,CAAV;AACArD,UAAU,CAAC,oBAAD,EAAuBqD,mBAAvB,CAAV;AAEArD,UAAU,CAAC,mBAAD,EAAsB;EAC9BU,OAAO,EAAE,CAAC,QAAD,CADqB;EAE9BC,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,EAA6B,UAA7B,EAAyC,WAAzC,CAFqB;EAG9BC,MAAM,EAAE;IACN2C,SAAS,EAAE,IAAA/B,mBAAA,EAAa,QAAb,CADL;IAENgC,WAAW,EAAE,IAAAhC,mBAAA,EAAa,QAAb,CAFP;IAGNiC,QAAQ,EAAE,IAAAjC,mBAAA,EAAa,QAAb,CAHJ;IAINkC,SAAS,EAAE,IAAAlC,mBAAA,EAAa,QAAb;EAJL;AAHsB,CAAtB,CAAV;AAWAxB,UAAU,CAAC,aAAD,EAAgB;EACxBU,OAAO,EAAE,CAAC,QAAD,CADe;EAExBC,OAAO,EAAE,CAAC,eAAD,CAFe;EAGxBC,MAAM,EAAE;IACN+C,aAAa,EAAE,IAAAnC,mBAAA,EAAa,iBAAb;EADT;AAHgB,CAAhB,CAAV;AAQAxB,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,QAAD,CADuB;EAEhCC,OAAO,EAAE,CAAC,gBAAD,CAFuB;EAGhCC,MAAM,EAAE;IACNuB,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EADV;AAHwB,CAAxB,CAAV;AAQAxB,UAAU,CAAC,gBAAD,EAAmB;EAC3BU,OAAO,EAAE,CAAC,QAAD,CADkB;EAE3BC,OAAO,EAAE,CAAC,gBAAD,CAFkB;EAG3BC,MAAM,EAAE;IACNgD,QAAQ,EAAE,IAAAtD,eAAA,EAAS,IAAAH,sBAAA,EAAgB,QAAhB,CAAT,CADJ;IAENgC,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EAFV;AAHmB,CAAnB,CAAV;AASAxB,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,QAAD,CADuB;EAEhCC,OAAO,EAAE,CAAC,YAAD,EAAe,WAAf,CAFuB;EAGhCC,MAAM,EAAE;IACNiD,UAAU,EAAE,IAAArC,mBAAA,EAAa,QAAb,CADN;IAENsC,SAAS,EAAE,IAAAtC,mBAAA,EAAa,QAAb;EAFL;AAHwB,CAAxB,CAAV;AASAxB,UAAU,CAAC,cAAD,EAAiB;EACzBU,OAAO,EAAE,CAAC,QAAD,CADgB;EAEzBC,OAAO,EAAE,CAAC,eAAD,EAAkB,gBAAlB,EAAoC,UAApC,CAFgB;EAGzBC,MAAM,EAAE;IACNG,QAAQ,EAAE,IAAAmB,uBAAA,EAAiB,IAAApB,kBAAA,EAAY,IAAZ,EAAkB,KAAlB,EAAyB,GAAzB,EAA8B,GAA9B,CAAjB,CADJ;IAEN6C,aAAa,EAAE,IAAAnC,mBAAA,EAAa,iBAAb,CAFT;IAGNhB,QAAQ,EAAE,IAAA0B,uBAAA,EAAiB,IAAApB,kBAAA,EAAY,IAAZ,EAAkB,KAAlB,EAAyB,GAAzB,EAA8B,GAA9B,CAAjB,CAHJ;IAINqB,cAAc,EAAE,IAAAR,2BAAA,EAAqB,QAArB,CAJV;IAKNoC,QAAQ,EAAE,IAAApC,2BAAA,EAAqB,QAArB;EALJ;AAHiB,CAAjB,CAAV;AAYA3B,UAAU,CAAC,eAAD,EAAkB;EAC1BU,OAAO,EAAE,CAAC,QAAD,EAAW,YAAX,CADiB;EAE1BC,OAAO,EAAE,CAAC,SAAD,CAFiB;EAG1BC,MAAM,EAAE;IACNoD,OAAO,EAAE;MACP1D,QAAQ,EAAG,YAAY;QACrB,MAAM2D,eAAe,GAAG,IAAA1D,qBAAA,EACtB,gBADsB,EAEtB,eAFsB,CAAxB;QAIA,MAAM2D,aAAa,GAAG,IAAApD,kBAAA,EAAY,GAAZ,CAAtB;QAEA,MAAMkD,OAAO,GAAG,IAAAzD,qBAAA,EACd,gBADc,EAEd,eAFc,EAGd,gBAHc,EAId,eAJc,EAKd,iBALc,CAAhB;;QAOA,SAAS4D,SAAT,CAAmBC,MAAnB,EAAgCrC,GAAhC,EAA6CsC,IAA7C,EAAwD;UAEtD,IAAI,IAAAC,WAAA,EAAG,iBAAH,EAAsBD,IAAtB,CAAJ,EAAiC;YAE/BH,aAAa,CAACG,IAAD,EAAO,UAAP,EAAmBA,IAAI,CAACT,QAAxB,CAAb;YACAK,eAAe,CAACI,IAAD,EAAO,UAAP,EAAmBA,IAAI,CAACE,QAAxB,CAAf;UACD,CAJD,MAIO;YAELP,OAAO,CAACI,MAAD,EAASrC,GAAT,EAAcsC,IAAd,CAAP;UACD;QACF;;QAEDF,SAAS,CAACK,cAAV,GAA2B,CACzB,gBADyB,EAEzB,eAFyB,EAGzB,gBAHyB,EAIzB,eAJyB,EAKzB,iBALyB,EAMzB,iBANyB,CAA3B;QASA,OAAOL,SAAP;MACD,CApCS;IADH;EADH;AAHkB,CAAlB,CAAV;AA8CAnE,UAAU,CAAC,+BAAD,EAAkC;EAC1CU,OAAO,EAAE,CAAC,QAAD,CADiC;EAE1CC,OAAO,EAAE,CAAC,YAAD,EAAe,gBAAf,CAFiC;EAG1CC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,cAAb,CADN;IAENf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,8BAArB;EAFV;AAHkC,CAAlC,CAAV;AASA3B,UAAU,CAAC,wBAAD,EAA2B;EAEnCU,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,CAF0B;EAGnCC,OAAO,EAAE,CAAC,IAAD,EAAO,gBAAP,EAAyB,SAAzB,EAAoC,MAApC,CAH0B;EAInCC,MAAM,EAAE;IACN8D,OAAO,EAAE,IAAAxC,uBAAA,EAAiBhC,IAAjB,CADH;IAENyE,EAAE,EAAE,IAAAnD,mBAAA,EAAa,YAAb,CAFE;IAGNf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,4BAArB,CAHV;IAINiD,OAAO,EAAE,IAAA1C,uBAAA,EAAiB,IAAA2C,kBAAA,EAAY,+BAAZ,CAAjB,CAJH;IAKNC,IAAI,EAAE,IAAAtD,mBAAA,EAAa,iBAAb;EALA;AAJ2B,CAA3B,CAAV;AAaAxB,UAAU,CAAC,iBAAD,EAAoB;EAC5BW,OAAO,EAAE,CAAC,MAAD,CADmB;EAE5BC,MAAM,EAAE;IACNkE,IAAI,EAAE,IAAAlD,0BAAA,EAAoB,eAApB;EADA;AAFoB,CAApB,CAAV;AAOA5B,UAAU,CAAC,wBAAD,EAA2B;EACnCU,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,CAD0B;EAEnCC,OAAO,EAAE,CAAC,IAAD,EAAO,gBAAP,EAAyB,gBAAzB,CAF0B;EAGnCC,MAAM,EAAE;IACN8D,OAAO,EAAE,IAAAxC,uBAAA,EAAiBhC,IAAjB,CADH;IAENyE,EAAE,EAAE,IAAAnD,mBAAA,EAAa,YAAb,CAFE;IAGNf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,4BAArB,CAHV;IAINQ,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EAJV;AAH2B,CAA3B,CAAV;AAWAxB,UAAU,CAAC,2BAAD,EAA8B;EACtCU,OAAO,EAAE,CAAC,YAAD,CAD6B;EAEtCC,OAAO,EAAE,CAAC,YAAD,EAAe,gBAAf,CAF6B;EAGtCC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,YAAb,CADN;IAENf,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,8BAArB;EAFV;AAH8B,CAA9B,CAAV;AASA,MAAMoD,gBAAgB,GAAG;EACvBrE,OAAO,EAAE,CAAC,YAAD,EAAe,MAAf,EAAuB,aAAvB,CADc;EAEvBC,OAAO,EAAE,CAAC,YAAD,EAAe,gBAAf,CAFc;EAGvBC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,YAAb,CADN;IAENW,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb;EAFV;AAHe,CAAzB;AASAxB,UAAU,CAAC,gBAAD,EAAmB+E,gBAAnB,CAAV;AACA/E,UAAU,CAAC,uBAAD,EAA0B+E,gBAA1B,CAAV;AAEA/E,UAAU,CAAC,iBAAD,EAAoB;EAC5BU,OAAO,EAAE,CAAC,YAAD,EAAe,MAAf,EAAuB,aAAvB,CADmB;EAE5BC,OAAO,EAAE,CAAC,gBAAD,EAAmB,YAAnB,CAFmB;EAG5BC,MAAM,EAAE;IACNuB,cAAc,EAAE,IAAAX,mBAAA,EAAa,QAAb,CADV;IAENiD,UAAU,EAAE,IAAAjD,mBAAA,EAAa,YAAb;EAFN;AAHoB,CAApB,CAAV;AASAxB,UAAU,CAAC,mBAAD,EAAsB;EAE9BU,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,CAFqB;EAG9BC,OAAO,EAAE,CAAC,IAAD,EAAO,SAAP,CAHqB;EAI9BC,MAAM,EAAE;IACN8D,OAAO,EAAE,IAAAxC,uBAAA,EAAiBhC,IAAjB,CADH;IAEN8E,KAAK,EAAE,IAAA9C,uBAAA,EAAiBhC,IAAjB,CAFD;IAGNyE,EAAE,EAAE,IAAAnD,mBAAA,EAAa,YAAb,CAHE;IAINyB,OAAO,EAAE,IAAArB,0BAAA,EAAoB,cAApB,CAJH;IAKNQ,WAAW,EAAE,IAAAT,2BAAA,EAAqB,YAArB;EALP;AAJsB,CAAtB,CAAV;AAaA3B,UAAU,CAAC,cAAD,EAAiB;EACzBW,OAAO,EAAE,CAAC,IAAD,EAAO,aAAP,CADgB;EAEzBC,MAAM,EAAE;IACN+D,EAAE,EAAE,IAAAnD,mBAAA,EAAa,CAAC,YAAD,EAAe,eAAf,CAAb,CADE;IAENY,WAAW,EAAE,IAAAT,2BAAA,EAAqB,YAArB;EAFP;AAFiB,CAAjB,CAAV;AAQA3B,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,WAAD,EAAc,aAAd,CADuB;EAEhCC,OAAO,EAAE,CAAC,IAAD,EAAO,MAAP,CAFuB;EAGhCC,MAAM,EAAE;IACN8D,OAAO,EAAE,IAAAxC,uBAAA,EAAiBhC,IAAjB,CADH;IAEN+E,MAAM,EAAE,IAAA/C,uBAAA,EAAiBhC,IAAjB,CAFF;IAGNyE,EAAE,EAAE,IAAAnD,mBAAA,EAAa,CAAC,YAAD,EAAe,eAAf,CAAb,CAHE;IAINsD,IAAI,EAAE,IAAAtD,mBAAA,EAAa,CAAC,eAAD,EAAkB,qBAAlB,CAAb;EAJA;AAHwB,CAAxB,CAAV;AAWAxB,UAAU,CAAC,eAAD,EAAkB;EAC1BU,OAAO,EAAE,CAAC,UAAD,EAAa,OAAb,EAAsB,aAAtB,EAAqC,gBAArC,CADiB;EAE1BC,OAAO,EAAE,CAAC,MAAD,CAFiB;EAG1BC,MAAM,EAAE;IACNkE,IAAI,EAAE,IAAAlD,0BAAA,EAAoB,WAApB;EADA;AAHkB,CAAlB,CAAV;AAQA5B,UAAU,CAAC,cAAD,EAAiB;EACzBU,OAAO,EAAE,CAAC,QAAD,CADgB;EAEzBC,OAAO,EAAE,CAAC,UAAD,EAAa,WAAb,EAA0B,gBAA1B,CAFgB;EAGzBC,MAAM,EAAE;IACN2D,QAAQ,EAAE,IAAA/C,mBAAA,EAAa,eAAb,CADJ;IAEN0D,SAAS,EAAE,IAAAvD,2BAAA,EAAqB,cAArB,CAFL;IAGNlB,cAAc,EAAE,IAAAkB,2BAAA,EAAqB,8BAArB;EAHV;AAHiB,CAAjB,CAAV;AAUA3B,UAAU,CAAC,2BAAD,EAA8B;EACtCU,OAAO,EAAE,CAAC,WAAD,CAD6B;EAEtCC,OAAO,EAAE,CAAC,IAAD,EAAO,iBAAP,CAF6B;EAGtCC,MAAM,EAAE;IACNuE,QAAQ,EAAE,IAAA7E,eAAA,EAASJ,IAAT,CADJ;IAENyE,EAAE,EAAE,IAAAnD,mBAAA,EAAa,YAAb,CAFE;IAGN4D,eAAe,EAAE,IAAA5D,mBAAA,EAAa,CAC5B,cAD4B,EAE5B,2BAF4B,CAAb,CAHX;IAON6D,UAAU,EAAE;MACV/E,QAAQ,EAAE,IAAAQ,kBAAA,EAAY,MAAZ,EAAoB,OAApB,CADA;MAEVN,QAAQ,EAAE;IAFA;EAPN;AAH8B,CAA9B,CAAV;AAiBAR,UAAU,CAAC,2BAAD,EAA8B;EACtCW,OAAO,EAAE,CAAC,YAAD,CAD6B;EAEtCC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,eAAb;EADN;AAF8B,CAA9B,CAAV;AAOAxB,UAAU,CAAC,qBAAD,EAAwB;EAChCU,OAAO,EAAE,CAAC,YAAD,EAAe,MAAf,EAAuB,aAAvB,CADuB;EAEhCC,OAAO,EAAE,CAAC,YAAD,CAFuB;EAGhCC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,YAAb;EADN;AAHwB,CAAxB,CAAV;AAQAxB,UAAU,CAAC,oBAAD,EAAuB;EAC/BU,OAAO,EAAE,CAAC,WAAD,CADsB;EAE/BC,OAAO,EAAE,CAAC,YAAD,CAFsB;EAG/BC,MAAM,EAAE;IACN6D,UAAU,EAAE,IAAAjD,mBAAA,EAAa,YAAb;EADN;AAHuB,CAAvB,CAAV;AAQAxB,UAAU,CAAC,8BAAD,EAAiC;EACzCU,OAAO,EAAE,CAAC,WAAD,CADgC;EAEzCC,OAAO,EAAE,CAAC,IAAD,CAFgC;EAGzCC,MAAM,EAAE;IACN+D,EAAE,EAAE,IAAAnD,mBAAA,EAAa,YAAb;EADE;AAHiC,CAAjC,CAAV;AAQAxB,UAAU,CAAC,kBAAD,EAAqB;EAC7BW,OAAO,EAAE,CAAC,gBAAD,CADoB;EAE7BC,MAAM,EAAE;IACNuB,cAAc,EAAE;MACd7B,QAAQ,EAAE,IAAAC,qBAAA,EAAe,QAAf;IADI;EADV;AAFqB,CAArB,CAAV;AASAP,UAAU,CAAC,8BAAD,EAAiC;EACzCW,OAAO,EAAE,CAAC,QAAD,CADgC;EAEzCC,MAAM,EAAE;IACN0E,MAAM,EAAE;MACNhF,QAAQ,EAAE,IAAAa,YAAA,EACR,IAAAhB,sBAAA,EAAgB,OAAhB,CADQ,EAER,IAAAiB,iBAAA,EAAW,IAAAb,qBAAA,EAAe,QAAf,CAAX,CAFQ;IADJ;EADF;AAFiC,CAAjC,CAAV;AAYAP,UAAU,CAAC,4BAAD,EAA+B;EACvCW,OAAO,EAAE,CAAC,QAAD,CAD8B;EAEvCC,MAAM,EAAE;IACN0E,MAAM,EAAE;MACNhF,QAAQ,EAAE,IAAAa,YAAA,EACR,IAAAhB,sBAAA,EAAgB,OAAhB,CADQ,EAER,IAAAiB,iBAAA,EAAW,IAAAb,qBAAA,EAAe,iBAAf,CAAX,CAFQ;IADJ;EADF;AAF+B,CAA/B,CAAV;AAYAP,UAAU,CAAC,iBAAD,EAAoB;EAC5B6C,OAAO,EAAE,CAAC,YAAD,EAAe,SAAf,EAA0B,MAA1B,CADmB;EAE5BlC,OAAO,EAAE,CAAC,YAAD,EAAe,SAAf,CAFmB;EAG5BC,MAAM,EAAE;IACN2E,IAAI,EAAE;MACJjF,QAAQ,EACJ,IAAAH,sBAAA,EAAgB,QAAhB;IAFA,CADA;IAMNqF,EAAE,EAAE;MACFlF,QAAQ,EAAE,IAAAH,sBAAA,EAAgB,SAAhB,CADR;MAEFK,QAAQ,EAAE;IAFR,CANE;IAUNiF,GAAG,EAAE;MACHnF,QAAQ,EAAE,IAAAH,sBAAA,EAAgB,SAAhB,CADP;MAEHK,QAAQ,EAAE;IAFP,CAVC;IAcNkF,UAAU,EAAE;MACVpF,QAAQ,EAAE,IAAAC,qBAAA,EAAe,QAAf,CADA;MAEVC,QAAQ,EAAE;IAFA,CAdN;IAkBNyB,OAAO,EAAE;MACP3B,QAAQ,EAAE,IAAAC,qBAAA,EAAe,QAAf,CADH;MAEPC,QAAQ,EAAE;IAFH;EAlBH;AAHoB,CAApB,CAAV"}
1
+ {"version":3,"names":["defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","chain","assertEach","functionDeclarationCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","initializer","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","literal","unaryExpression","unaryOperator","validator","parent","node","is","argument","oneOfNodeTypes","expression","declare","id","extends","arrayOfType","body","TSTypeExpression","const","global","qualifier","isExport","moduleReference","importKind","params","name","in","out","constraint"],"sources":["../../src/definitions/typescript.ts"],"sourcesContent":["import {\n defineAliasedType,\n arrayOfType,\n assertEach,\n assertNodeType,\n assertOneOf,\n assertValueType,\n chain,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n} from \"./utils\";\nimport {\n functionDeclarationCommon,\n classMethodOrDeclareMethodCommon,\n} from \"./core\";\nimport is from \"../validators/is\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeAnnotation\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeParameterDeclaration\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true,\n },\n});\n\ndefineType(\"TSParameterProperty\", {\n aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\"),\n },\n});\n\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n [\"Identifier\", \"RestElement\"],\n ),\n [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n \"TSConstructSignatureDeclaration\",\n callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: { default: false },\n optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\", \"initializer\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n initializer: validateOptionalType(\"Expression\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"key\",\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n },\n});\n\nconst tsKeywordTypes = [\n \"TSAnyKeyword\",\n \"TSBooleanKeyword\",\n \"TSBigIntKeyword\",\n \"TSIntrinsicKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n });\n}\n\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n});\n\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n};\n\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeParameters\"],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType([\"Identifier\", \"TSThisType\"]),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeParameters\"],\n fields: {\n exprName: validateType([\"TSEntityName\", \"TSImportType\"]),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType([\"TSType\", \"TSNamedTupleMember\"]),\n },\n});\n\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false,\n },\n elementType: validateType(\"TSType\"),\n },\n});\n\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\"),\n },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n operator: validate(assertValueType(\"string\")),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n fields: {\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeParameter: validateType(\"TSTypeParameter\"),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\"),\n },\n});\n\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: (function () {\n const unaryExpression = assertNodeType(\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const unaryOperator = assertOneOf(\"-\");\n\n const literal = assertNodeType(\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n );\n function validator(parent: any, key: string, node: any) {\n // type A = -1 | 1;\n if (is(\"UnaryExpression\", node)) {\n // check operator first\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n // type A = 'foo' | 'bar' | false | 1;\n literal(parent, key, node);\n }\n }\n\n validator.oneOfNodeTypes = [\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n \"UnaryExpression\",\n ];\n\n return validator;\n })(),\n },\n },\n});\n\ndefineType(\"TSExpressionWithTypeArguments\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSInterfaceDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"TSExpressionWithTypeArguments\")),\n body: validateType(\"TSInterfaceBody\"),\n },\n});\n\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"members\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n members: validateArrayOfType(\"TSEnumMember\"),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n global: validateOptional(bool),\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n body: validateType([\"TSModuleBlock\", \"TSModuleDeclaration\"]),\n },\n});\n\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n visitor: [\"argument\", \"qualifier\", \"typeParameters\"],\n fields: {\n argument: validateType(\"StringLiteral\"),\n qualifier: validateOptionalType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n isExport: validate(bool),\n id: validateType(\"Identifier\"),\n moduleReference: validateType([\n \"TSEntityName\",\n \"TSExternalModuleReference\",\n ]),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\"),\n },\n },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSType\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSTypeParameter\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"constraint\", \"default\"],\n fields: {\n name: {\n validate: !process.env.BABEL_8_BREAKING\n ? assertValueType(\"string\")\n : assertNodeType(\"Identifier\"),\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n },\n});\n"],"mappings":"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"}
@@ -22,11 +22,8 @@ exports.validateArrayOfType = validateArrayOfType;
22
22
  exports.validateOptional = validateOptional;
23
23
  exports.validateOptionalType = validateOptionalType;
24
24
  exports.validateType = validateType;
25
-
26
25
  var _is = require("../validators/is");
27
-
28
26
  var _validate = require("../validators/validate");
29
-
30
27
  const VISITOR_KEYS = {};
31
28
  exports.VISITOR_KEYS = VISITOR_KEYS;
32
29
  const ALIAS_KEYS = {};
@@ -41,7 +38,6 @@ const DEPRECATED_KEYS = {};
41
38
  exports.DEPRECATED_KEYS = DEPRECATED_KEYS;
42
39
  const NODE_PARENT_VALIDATIONS = {};
43
40
  exports.NODE_PARENT_VALIDATIONS = NODE_PARENT_VALIDATIONS;
44
-
45
41
  function getType(val) {
46
42
  if (Array.isArray(val)) {
47
43
  return "array";
@@ -51,51 +47,41 @@ function getType(val) {
51
47
  return typeof val;
52
48
  }
53
49
  }
54
-
55
50
  function validate(validate) {
56
51
  return {
57
52
  validate
58
53
  };
59
54
  }
60
-
61
55
  function typeIs(typeName) {
62
56
  return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType(...typeName);
63
57
  }
64
-
65
58
  function validateType(typeName) {
66
59
  return validate(typeIs(typeName));
67
60
  }
68
-
69
61
  function validateOptional(validate) {
70
62
  return {
71
63
  validate,
72
64
  optional: true
73
65
  };
74
66
  }
75
-
76
67
  function validateOptionalType(typeName) {
77
68
  return {
78
69
  validate: typeIs(typeName),
79
70
  optional: true
80
71
  };
81
72
  }
82
-
83
73
  function arrayOf(elementType) {
84
74
  return chain(assertValueType("array"), assertEach(elementType));
85
75
  }
86
-
87
76
  function arrayOfType(typeName) {
88
77
  return arrayOf(typeIs(typeName));
89
78
  }
90
-
91
79
  function validateArrayOfType(typeName) {
92
80
  return validate(arrayOfType(typeName));
93
81
  }
94
-
95
82
  function assertEach(callback) {
96
83
  function validator(node, key, val) {
97
84
  if (!Array.isArray(val)) return;
98
-
99
85
  for (let i = 0; i < val.length; i++) {
100
86
  const subkey = `${key}[${i}]`;
101
87
  const v = val[i];
@@ -103,22 +89,18 @@ function assertEach(callback) {
103
89
  if (process.env.BABEL_TYPES_8_BREAKING) (0, _validate.validateChild)(node, subkey, v);
104
90
  }
105
91
  }
106
-
107
92
  validator.each = callback;
108
93
  return validator;
109
94
  }
110
-
111
95
  function assertOneOf(...values) {
112
96
  function validate(node, key, val) {
113
97
  if (values.indexOf(val) < 0) {
114
98
  throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);
115
99
  }
116
100
  }
117
-
118
101
  validate.oneOf = values;
119
102
  return validate;
120
103
  }
121
-
122
104
  function assertNodeType(...types) {
123
105
  function validate(node, key, val) {
124
106
  for (const type of types) {
@@ -127,14 +109,11 @@ function assertNodeType(...types) {
127
109
  return;
128
110
  }
129
111
  }
130
-
131
112
  throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
132
113
  }
133
-
134
114
  validate.oneOfNodeTypes = types;
135
115
  return validate;
136
116
  }
137
-
138
117
  function assertNodeOrValueType(...types) {
139
118
  function validate(node, key, val) {
140
119
  for (const type of types) {
@@ -143,31 +122,24 @@ function assertNodeOrValueType(...types) {
143
122
  return;
144
123
  }
145
124
  }
146
-
147
125
  throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
148
126
  }
149
-
150
127
  validate.oneOfNodeOrValueTypes = types;
151
128
  return validate;
152
129
  }
153
-
154
130
  function assertValueType(type) {
155
131
  function validate(node, key, val) {
156
132
  const valid = getType(val) === type;
157
-
158
133
  if (!valid) {
159
134
  throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);
160
135
  }
161
136
  }
162
-
163
137
  validate.type = type;
164
138
  return validate;
165
139
  }
166
-
167
140
  function assertShape(shape) {
168
141
  function validate(node, key, val) {
169
142
  const errors = [];
170
-
171
143
  for (const property of Object.keys(shape)) {
172
144
  try {
173
145
  (0, _validate.validateField)(node, property, val[property], shape[property]);
@@ -176,107 +148,83 @@ function assertShape(shape) {
176
148
  errors.push(error.message);
177
149
  continue;
178
150
  }
179
-
180
151
  throw error;
181
152
  }
182
153
  }
183
-
184
154
  if (errors.length) {
185
155
  throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`);
186
156
  }
187
157
  }
188
-
189
158
  validate.shapeOf = shape;
190
159
  return validate;
191
160
  }
192
-
193
161
  function assertOptionalChainStart() {
194
162
  function validate(node) {
195
163
  var _current;
196
-
197
164
  let current = node;
198
-
199
165
  while (node) {
200
166
  const {
201
167
  type
202
168
  } = current;
203
-
204
169
  if (type === "OptionalCallExpression") {
205
170
  if (current.optional) return;
206
171
  current = current.callee;
207
172
  continue;
208
173
  }
209
-
210
174
  if (type === "OptionalMemberExpression") {
211
175
  if (current.optional) return;
212
176
  current = current.object;
213
177
  continue;
214
178
  }
215
-
216
179
  break;
217
180
  }
218
-
219
181
  throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`);
220
182
  }
221
-
222
183
  return validate;
223
184
  }
224
-
225
185
  function chain(...fns) {
226
186
  function validate(...args) {
227
187
  for (const fn of fns) {
228
188
  fn(...args);
229
189
  }
230
190
  }
231
-
232
191
  validate.chainOf = fns;
233
-
234
192
  if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
235
193
  throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`);
236
194
  }
237
-
238
195
  return validate;
239
196
  }
240
-
241
197
  const validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"];
242
198
  const validFieldKeys = ["default", "optional", "validate"];
199
+ const store = {};
243
200
 
244
201
  function defineAliasedType(...aliases) {
245
202
  return (type, opts = {}) => {
246
203
  let defined = opts.aliases;
247
-
248
204
  if (!defined) {
249
205
  var _store$opts$inherits$, _defined;
250
-
251
206
  if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
252
207
  (_defined = defined) != null ? _defined : defined = [];
253
208
  opts.aliases = defined;
254
209
  }
255
-
256
210
  const additional = aliases.filter(a => !defined.includes(a));
257
211
  defined.unshift(...additional);
258
212
  return defineType(type, opts);
259
213
  };
260
214
  }
261
-
262
215
  function defineType(type, opts = {}) {
263
216
  const inherits = opts.inherits && store[opts.inherits] || {};
264
217
  let fields = opts.fields;
265
-
266
218
  if (!fields) {
267
219
  fields = {};
268
-
269
220
  if (inherits.fields) {
270
221
  const keys = Object.getOwnPropertyNames(inherits.fields);
271
-
272
222
  for (const key of keys) {
273
223
  const field = inherits.fields[key];
274
224
  const def = field.default;
275
-
276
225
  if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
277
226
  throw new Error("field defaults can only be primitives or empty arrays currently");
278
227
  }
279
-
280
228
  fields[key] = {
281
229
  default: Array.isArray(def) ? [] : def,
282
230
  optional: field.optional,
@@ -285,17 +233,14 @@ function defineType(type, opts = {}) {
285
233
  }
286
234
  }
287
235
  }
288
-
289
236
  const visitor = opts.visitor || inherits.visitor || [];
290
237
  const aliases = opts.aliases || inherits.aliases || [];
291
238
  const builder = opts.builder || inherits.builder || opts.visitor || [];
292
-
293
239
  for (const k of Object.keys(opts)) {
294
240
  if (validTypeOpts.indexOf(k) === -1) {
295
241
  throw new Error(`Unknown type option "${k}" on ${type}`);
296
242
  }
297
243
  }
298
-
299
244
  if (opts.deprecatedAlias) {
300
245
  DEPRECATED_KEYS[opts.deprecatedAlias] = type;
301
246
  }
@@ -303,27 +248,22 @@ function defineType(type, opts = {}) {
303
248
  for (const key of visitor.concat(builder)) {
304
249
  fields[key] = fields[key] || {};
305
250
  }
306
-
307
251
  for (const key of Object.keys(fields)) {
308
252
  const field = fields[key];
309
-
310
253
  if (field.default !== undefined && builder.indexOf(key) === -1) {
311
254
  field.optional = true;
312
255
  }
313
-
314
256
  if (field.default === undefined) {
315
257
  field.default = null;
316
258
  } else if (!field.validate && field.default != null) {
317
259
  field.validate = assertValueType(getType(field.default));
318
260
  }
319
-
320
261
  for (const k of Object.keys(field)) {
321
262
  if (validFieldKeys.indexOf(k) === -1) {
322
263
  throw new Error(`Unknown field key "${k}" on ${type}.${key}`);
323
264
  }
324
265
  }
325
266
  }
326
-
327
267
  VISITOR_KEYS[type] = opts.visitor = visitor;
328
268
  BUILDER_KEYS[type] = opts.builder = builder;
329
269
  NODE_FIELDS[type] = opts.fields = fields;
@@ -332,14 +272,10 @@ function defineType(type, opts = {}) {
332
272
  FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];
333
273
  FLIPPED_ALIAS_KEYS[alias].push(type);
334
274
  });
335
-
336
275
  if (opts.validate) {
337
276
  NODE_PARENT_VALIDATIONS[type] = opts.validate;
338
277
  }
339
-
340
278
  store[type] = opts;
341
279
  }
342
280
 
343
- const store = {};
344
-
345
281
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VISITOR_KEYS","ALIAS_KEYS","FLIPPED_ALIAS_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","NODE_PARENT_VALIDATIONS","getType","val","Array","isArray","validate","typeIs","typeName","assertNodeType","validateType","validateOptional","optional","validateOptionalType","arrayOf","elementType","chain","assertValueType","assertEach","arrayOfType","validateArrayOfType","callback","validator","node","key","i","length","subkey","v","process","env","BABEL_TYPES_8_BREAKING","validateChild","each","assertOneOf","values","indexOf","TypeError","JSON","stringify","oneOf","types","type","is","oneOfNodeTypes","assertNodeOrValueType","oneOfNodeOrValueTypes","valid","assertShape","shape","errors","property","Object","keys","validateField","error","push","message","join","shapeOf","assertOptionalChainStart","current","callee","object","fns","args","fn","chainOf","Error","validTypeOpts","validFieldKeys","defineAliasedType","aliases","opts","defined","inherits","store","slice","additional","filter","a","includes","unshift","defineType","fields","getOwnPropertyNames","field","def","default","visitor","builder","k","deprecatedAlias","concat","undefined","forEach","alias"],"sources":["../../src/definitions/utils.ts"],"sourcesContent":["import is from \"../validators/is\";\nimport { validateField, validateChild } from \"../validators/validate\";\nimport type * as t from \"..\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator> = {};\n\nfunction getType(val: any) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions = {\n [x: string]: FieldOptions;\n};\n\ntype DefineTypeOpts = {\n fields?: FieldDefinitions;\n visitor?: Array<string>;\n aliases?: Array<string>;\n builder?: Array<string>;\n inherits?: NodeTypes;\n deprecatedAlias?: string;\n validate?: Validator;\n};\n\nexport type Validator = (\n | { type: PrimitiveTypes }\n | { each: Validator }\n | { chainOf: Validator[] }\n | { oneOf: any[] }\n | { oneOfNodeTypes: NodeTypes[] }\n | { oneOfNodeOrValueTypes: (NodeTypes | PrimitiveTypes)[] }\n | { shapeOf: { [x: string]: FieldOptions } }\n | {}\n) &\n ((node: t.Node, key: string, val: any) => void);\n\nexport type FieldOptions = {\n default?: string | number | boolean | [];\n optional?: boolean;\n validate?: Validator;\n};\n\nexport function validate(validate: Validator): FieldOptions {\n return { validate };\n}\n\nexport function typeIs(typeName: NodeTypes | NodeTypes[]) {\n return typeof typeName === \"string\"\n ? assertNodeType(typeName)\n : assertNodeType(...typeName);\n}\n\nexport function validateType(typeName: NodeTypes | NodeTypes[]) {\n return validate(typeIs(typeName));\n}\n\nexport function validateOptional(validate: Validator): FieldOptions {\n return { validate, optional: true };\n}\n\nexport function validateOptionalType(\n typeName: NodeTypes | NodeTypes[],\n): FieldOptions {\n return { validate: typeIs(typeName), optional: true };\n}\n\nexport function arrayOf(elementType: Validator): Validator {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return arrayOf(typeIs(typeName));\n}\n\nexport function validateArrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return validate(arrayOfType(typeName));\n}\n\nexport function assertEach(callback: Validator): Validator {\n function validator(node: t.Node, key: string, val: any) {\n if (!Array.isArray(val)) return;\n\n for (let i = 0; i < val.length; i++) {\n const subkey = `${key}[${i}]`;\n const v = val[i];\n callback(node, subkey, v);\n if (process.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\n\nexport function assertOneOf(...values: Array<any>): Validator {\n function validate(node: any, key: string, val: any) {\n if (values.indexOf(val) < 0) {\n throw new TypeError(\n `Property ${key} expected value to be one of ${JSON.stringify(\n values,\n )} but got ${JSON.stringify(val)}`,\n );\n }\n }\n\n validate.oneOf = values;\n\n return validate;\n}\n\nexport function assertNodeType(...types: NodeTypes[]): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeTypes = types;\n\n return validate;\n}\n\nexport function assertNodeOrValueType(\n ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (getType(val) === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeOrValueTypes = types;\n\n return validate;\n}\n\nexport function assertValueType(type: PrimitiveTypes): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const valid = getType(val) === type;\n\n if (!valid) {\n throw new TypeError(\n `Property ${key} expected type of ${type} but got ${getType(val)}`,\n );\n }\n }\n\n validate.type = type;\n\n return validate;\n}\n\nexport function assertShape(shape: { [x: string]: FieldOptions }): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const errors = [];\n for (const property of Object.keys(shape)) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected to have the following:\\n${errors.join(\"\\n\")}`,\n );\n }\n }\n\n validate.shapeOf = shape;\n\n return validate;\n}\n\nexport function assertOptionalChainStart(): Validator {\n function validate(node: t.Node) {\n let current = node;\n while (node) {\n const { type } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n\n break;\n }\n\n throw new TypeError(\n `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n );\n }\n\n return validate;\n}\n\nexport function chain(...fns: Array<Validator>): Validator {\n function validate(...args: Parameters<Validator>) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n\n if (\n fns.length >= 2 &&\n \"type\" in fns[0] &&\n fns[0].type === \"array\" &&\n !(\"each\" in fns[1])\n ) {\n throw new Error(\n `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n );\n }\n\n return validate;\n}\n\nconst validTypeOpts = [\n \"aliases\",\n \"builder\",\n \"deprecatedAlias\",\n \"fields\",\n \"inherits\",\n \"visitor\",\n \"validate\",\n];\nconst validFieldKeys = [\"default\", \"optional\", \"validate\"];\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n return (type: string, opts: DefineTypeOpts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n return defineType(type, opts);\n };\n}\n\nexport default function defineType(type: string, opts: DefineTypeOpts = {}) {\n const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (\n Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n ) {\n throw new Error(\n \"field defaults can only be primitives or empty arrays currently\",\n );\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n validate: field.validate,\n };\n }\n }\n }\n\n const visitor: Array<string> = opts.visitor || inherits.visitor || [];\n const aliases: Array<string> = opts.aliases || inherits.aliases || [];\n const builder: Array<string> =\n opts.builder || inherits.builder || opts.visitor || [];\n\n for (const k of Object.keys(opts)) {\n if (validTypeOpts.indexOf(k) === -1) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type as NodeTypesWithoutComment;\n }\n\n // ensure all field keys are represented in `fields`\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n\n if (field.default !== undefined && builder.indexOf(key) === -1) {\n field.optional = true;\n }\n if (field.default === undefined) {\n field.default = null;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n\n for (const k of Object.keys(field)) {\n if (validFieldKeys.indexOf(k) === -1) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type as NodeTypesWithoutComment);\n });\n\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n\n store[type] = opts;\n}\n\nconst store = {} as Record<string, DefineTypeOpts>;\n"],"mappings":"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"}
1
+ {"version":3,"names":["VISITOR_KEYS","ALIAS_KEYS","FLIPPED_ALIAS_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","NODE_PARENT_VALIDATIONS","getType","val","Array","isArray","validate","typeIs","typeName","assertNodeType","validateType","validateOptional","optional","validateOptionalType","arrayOf","elementType","chain","assertValueType","assertEach","arrayOfType","validateArrayOfType","callback","validator","node","key","i","length","subkey","v","process","env","BABEL_TYPES_8_BREAKING","validateChild","each","assertOneOf","values","indexOf","TypeError","JSON","stringify","oneOf","types","type","is","oneOfNodeTypes","assertNodeOrValueType","oneOfNodeOrValueTypes","valid","assertShape","shape","errors","property","Object","keys","validateField","error","push","message","join","shapeOf","assertOptionalChainStart","current","callee","object","fns","args","fn","chainOf","Error","validTypeOpts","validFieldKeys","store","defineAliasedType","aliases","opts","defined","inherits","slice","additional","filter","a","includes","unshift","defineType","fields","getOwnPropertyNames","field","def","default","visitor","builder","k","deprecatedAlias","concat","undefined","forEach","alias"],"sources":["../../src/definitions/utils.ts"],"sourcesContent":["import is from \"../validators/is\";\nimport { validateField, validateChild } from \"../validators/validate\";\nimport type * as t from \"..\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator> = {};\n\nfunction getType(val: any) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions = {\n [x: string]: FieldOptions;\n};\n\ntype DefineTypeOpts = {\n fields?: FieldDefinitions;\n visitor?: Array<string>;\n aliases?: Array<string>;\n builder?: Array<string>;\n inherits?: NodeTypes;\n deprecatedAlias?: string;\n validate?: Validator;\n};\n\nexport type Validator = (\n | { type: PrimitiveTypes }\n | { each: Validator }\n | { chainOf: Validator[] }\n | { oneOf: any[] }\n | { oneOfNodeTypes: NodeTypes[] }\n | { oneOfNodeOrValueTypes: (NodeTypes | PrimitiveTypes)[] }\n | { shapeOf: { [x: string]: FieldOptions } }\n | {}\n) &\n ((node: t.Node, key: string, val: any) => void);\n\nexport type FieldOptions = {\n default?: string | number | boolean | [];\n optional?: boolean;\n validate?: Validator;\n};\n\nexport function validate(validate: Validator): FieldOptions {\n return { validate };\n}\n\nexport function typeIs(typeName: NodeTypes | NodeTypes[]) {\n return typeof typeName === \"string\"\n ? assertNodeType(typeName)\n : assertNodeType(...typeName);\n}\n\nexport function validateType(typeName: NodeTypes | NodeTypes[]) {\n return validate(typeIs(typeName));\n}\n\nexport function validateOptional(validate: Validator): FieldOptions {\n return { validate, optional: true };\n}\n\nexport function validateOptionalType(\n typeName: NodeTypes | NodeTypes[],\n): FieldOptions {\n return { validate: typeIs(typeName), optional: true };\n}\n\nexport function arrayOf(elementType: Validator): Validator {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return arrayOf(typeIs(typeName));\n}\n\nexport function validateArrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return validate(arrayOfType(typeName));\n}\n\nexport function assertEach(callback: Validator): Validator {\n function validator(node: t.Node, key: string, val: any) {\n if (!Array.isArray(val)) return;\n\n for (let i = 0; i < val.length; i++) {\n const subkey = `${key}[${i}]`;\n const v = val[i];\n callback(node, subkey, v);\n if (process.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\n\nexport function assertOneOf(...values: Array<any>): Validator {\n function validate(node: any, key: string, val: any) {\n if (values.indexOf(val) < 0) {\n throw new TypeError(\n `Property ${key} expected value to be one of ${JSON.stringify(\n values,\n )} but got ${JSON.stringify(val)}`,\n );\n }\n }\n\n validate.oneOf = values;\n\n return validate;\n}\n\nexport function assertNodeType(...types: NodeTypes[]): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeTypes = types;\n\n return validate;\n}\n\nexport function assertNodeOrValueType(\n ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (getType(val) === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeOrValueTypes = types;\n\n return validate;\n}\n\nexport function assertValueType(type: PrimitiveTypes): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const valid = getType(val) === type;\n\n if (!valid) {\n throw new TypeError(\n `Property ${key} expected type of ${type} but got ${getType(val)}`,\n );\n }\n }\n\n validate.type = type;\n\n return validate;\n}\n\nexport function assertShape(shape: { [x: string]: FieldOptions }): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const errors = [];\n for (const property of Object.keys(shape)) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected to have the following:\\n${errors.join(\"\\n\")}`,\n );\n }\n }\n\n validate.shapeOf = shape;\n\n return validate;\n}\n\nexport function assertOptionalChainStart(): Validator {\n function validate(node: t.Node) {\n let current = node;\n while (node) {\n const { type } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n\n break;\n }\n\n throw new TypeError(\n `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n );\n }\n\n return validate;\n}\n\nexport function chain(...fns: Array<Validator>): Validator {\n function validate(...args: Parameters<Validator>) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n\n if (\n fns.length >= 2 &&\n \"type\" in fns[0] &&\n fns[0].type === \"array\" &&\n !(\"each\" in fns[1])\n ) {\n throw new Error(\n `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n );\n }\n\n return validate;\n}\n\nconst validTypeOpts = [\n \"aliases\",\n \"builder\",\n \"deprecatedAlias\",\n \"fields\",\n \"inherits\",\n \"visitor\",\n \"validate\",\n];\nconst validFieldKeys = [\"default\", \"optional\", \"validate\"];\n\nconst store = {} as Record<string, DefineTypeOpts>;\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n return (type: string, opts: DefineTypeOpts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n return defineType(type, opts);\n };\n}\n\nexport default function defineType(type: string, opts: DefineTypeOpts = {}) {\n const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (\n Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n ) {\n throw new Error(\n \"field defaults can only be primitives or empty arrays currently\",\n );\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n validate: field.validate,\n };\n }\n }\n }\n\n const visitor: Array<string> = opts.visitor || inherits.visitor || [];\n const aliases: Array<string> = opts.aliases || inherits.aliases || [];\n const builder: Array<string> =\n opts.builder || inherits.builder || opts.visitor || [];\n\n for (const k of Object.keys(opts)) {\n if (validTypeOpts.indexOf(k) === -1) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type as NodeTypesWithoutComment;\n }\n\n // ensure all field keys are represented in `fields`\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n\n if (field.default !== undefined && builder.indexOf(key) === -1) {\n field.optional = true;\n }\n if (field.default === undefined) {\n field.default = null;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n\n for (const k of Object.keys(field)) {\n if (validFieldKeys.indexOf(k) === -1) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type as NodeTypesWithoutComment);\n });\n\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n\n store[type] = opts;\n}\n"],"mappings":"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"}